Use bool in read_index_from_section
[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-common.h"
34 #include "bfd.h"
35 #include "elf-bfd.h"
36 #include "symtab.h"
37 #include "gdbtypes.h"
38 #include "objfiles.h"
39 #include "dwarf2.h"
40 #include "buildsym.h"
41 #include "demangle.h"
42 #include "gdb-demangle.h"
43 #include "expression.h"
44 #include "filenames.h"  /* for DOSish file names */
45 #include "macrotab.h"
46 #include "language.h"
47 #include "complaints.h"
48 #include "bcache.h"
49 #include "dwarf2expr.h"
50 #include "dwarf2loc.h"
51 #include "cp-support.h"
52 #include "hashtab.h"
53 #include "command.h"
54 #include "gdbcmd.h"
55 #include "block.h"
56 #include "addrmap.h"
57 #include "typeprint.h"
58 #include "psympriv.h"
59 #include <sys/stat.h>
60 #include "completer.h"
61 #include "vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "filestuff.h"
72 #include "build-id.h"
73 #include "namespace.h"
74 #include "common/gdb_unlinker.h"
75 #include "common/function-view.h"
76 #include "common/gdb_optional.h"
77 #include "common/underlying.h"
78 #include "common/byte-vector.h"
79 #include "common/hash_enum.h"
80 #include "filename-seen-cache.h"
81 #include "producer.h"
82 #include <fcntl.h>
83 #include <sys/types.h>
84 #include <algorithm>
85 #include <unordered_set>
86 #include <unordered_map>
87 #include "selftest.h"
88 #include <cmath>
89 #include <set>
90 #include <forward_list>
91 #include "rust-lang.h"
92 #include "common/pathstuff.h"
93
94 /* When == 1, print basic high level tracing messages.
95    When > 1, be more verbose.
96    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
97 static unsigned int dwarf_read_debug = 0;
98
99 /* When non-zero, dump DIEs after they are read in.  */
100 static unsigned int dwarf_die_debug = 0;
101
102 /* When non-zero, dump line number entries as they are read in.  */
103 static unsigned int dwarf_line_debug = 0;
104
105 /* When non-zero, cross-check physname against demangler.  */
106 static int check_physname = 0;
107
108 /* When non-zero, do not reject deprecated .gdb_index sections.  */
109 static int use_deprecated_index_sections = 0;
110
111 static const struct objfile_data *dwarf2_objfile_data_key;
112
113 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
114
115 static int dwarf2_locexpr_index;
116 static int dwarf2_loclist_index;
117 static int dwarf2_locexpr_block_index;
118 static int dwarf2_loclist_block_index;
119
120 /* An index into a (C++) symbol name component in a symbol name as
121    recorded in the mapped_index's symbol table.  For each C++ symbol
122    in the symbol table, we record one entry for the start of each
123    component in the symbol in a table of name components, and then
124    sort the table, in order to be able to binary search symbol names,
125    ignoring leading namespaces, both completion and regular look up.
126    For example, for symbol "A::B::C", we'll have an entry that points
127    to "A::B::C", another that points to "B::C", and another for "C".
128    Note that function symbols in GDB index have no parameter
129    information, just the function/method names.  You can convert a
130    name_component to a "const char *" using the
131    'mapped_index::symbol_name_at(offset_type)' method.  */
132
133 struct name_component
134 {
135   /* Offset in the symbol name where the component starts.  Stored as
136      a (32-bit) offset instead of a pointer to save memory and improve
137      locality on 64-bit architectures.  */
138   offset_type name_offset;
139
140   /* The symbol's index in the symbol and constant pool tables of a
141      mapped_index.  */
142   offset_type idx;
143 };
144
145 /* Base class containing bits shared by both .gdb_index and
146    .debug_name indexes.  */
147
148 struct mapped_index_base
149 {
150   /* The name_component table (a sorted vector).  See name_component's
151      description above.  */
152   std::vector<name_component> name_components;
153
154   /* How NAME_COMPONENTS is sorted.  */
155   enum case_sensitivity name_components_casing;
156
157   /* Return the number of names in the symbol table.  */
158   virtual size_t symbol_name_count () const = 0;
159
160   /* Get the name of the symbol at IDX in the symbol table.  */
161   virtual const char *symbol_name_at (offset_type idx) const = 0;
162
163   /* Return whether the name at IDX in the symbol table should be
164      ignored.  */
165   virtual bool symbol_name_slot_invalid (offset_type idx) const
166   {
167     return false;
168   }
169
170   /* Build the symbol name component sorted vector, if we haven't
171      yet.  */
172   void build_name_components ();
173
174   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
175      possible matches for LN_NO_PARAMS in the name component
176      vector.  */
177   std::pair<std::vector<name_component>::const_iterator,
178             std::vector<name_component>::const_iterator>
179     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
180
181   /* Prevent deleting/destroying via a base class pointer.  */
182 protected:
183   ~mapped_index_base() = default;
184 };
185
186 /* A description of the mapped index.  The file format is described in
187    a comment by the code that writes the index.  */
188 struct mapped_index final : public mapped_index_base
189 {
190   /* A slot/bucket in the symbol table hash.  */
191   struct symbol_table_slot
192   {
193     const offset_type name;
194     const offset_type vec;
195   };
196
197   /* Index data format version.  */
198   int version;
199
200   /* The total length of the buffer.  */
201   off_t total_size;
202
203   /* The address table data.  */
204   gdb::array_view<const gdb_byte> address_table;
205
206   /* The symbol table, implemented as a hash table.  */
207   gdb::array_view<symbol_table_slot> symbol_table;
208
209   /* A pointer to the constant pool.  */
210   const char *constant_pool;
211
212   bool symbol_name_slot_invalid (offset_type idx) const override
213   {
214     const auto &bucket = this->symbol_table[idx];
215     return bucket.name == 0 && bucket.vec;
216   }
217
218   /* Convenience method to get at the name of the symbol at IDX in the
219      symbol table.  */
220   const char *symbol_name_at (offset_type idx) const override
221   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
222
223   size_t symbol_name_count () const override
224   { return this->symbol_table.size (); }
225 };
226
227 /* A description of the mapped .debug_names.
228    Uninitialized map has CU_COUNT 0.  */
229 struct mapped_debug_names final : public mapped_index_base
230 {
231   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
232   : dwarf2_per_objfile (dwarf2_per_objfile_)
233   {}
234
235   struct dwarf2_per_objfile *dwarf2_per_objfile;
236   bfd_endian dwarf5_byte_order;
237   bool dwarf5_is_dwarf64;
238   bool augmentation_is_gdb;
239   uint8_t offset_size;
240   uint32_t cu_count = 0;
241   uint32_t tu_count, bucket_count, name_count;
242   const gdb_byte *cu_table_reordered, *tu_table_reordered;
243   const uint32_t *bucket_table_reordered, *hash_table_reordered;
244   const gdb_byte *name_table_string_offs_reordered;
245   const gdb_byte *name_table_entry_offs_reordered;
246   const gdb_byte *entry_pool;
247
248   struct index_val
249   {
250     ULONGEST dwarf_tag;
251     struct attr
252     {
253       /* Attribute name DW_IDX_*.  */
254       ULONGEST dw_idx;
255
256       /* Attribute form DW_FORM_*.  */
257       ULONGEST form;
258
259       /* Value if FORM is DW_FORM_implicit_const.  */
260       LONGEST implicit_const;
261     };
262     std::vector<attr> attr_vec;
263   };
264
265   std::unordered_map<ULONGEST, index_val> abbrev_map;
266
267   const char *namei_to_name (uint32_t namei) const;
268
269   /* Implementation of the mapped_index_base virtual interface, for
270      the name_components cache.  */
271
272   const char *symbol_name_at (offset_type idx) const override
273   { return namei_to_name (idx); }
274
275   size_t symbol_name_count () const override
276   { return this->name_count; }
277 };
278
279 /* See dwarf2read.h.  */
280
281 dwarf2_per_objfile *
282 get_dwarf2_per_objfile (struct objfile *objfile)
283 {
284   return ((struct dwarf2_per_objfile *)
285           objfile_data (objfile, dwarf2_objfile_data_key));
286 }
287
288 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
289
290 void
291 set_dwarf2_per_objfile (struct objfile *objfile,
292                         struct dwarf2_per_objfile *dwarf2_per_objfile)
293 {
294   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
295   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
296 }
297
298 /* Default names of the debugging sections.  */
299
300 /* Note that if the debugging section has been compressed, it might
301    have a name like .zdebug_info.  */
302
303 static const struct dwarf2_debug_sections dwarf2_elf_names =
304 {
305   { ".debug_info", ".zdebug_info" },
306   { ".debug_abbrev", ".zdebug_abbrev" },
307   { ".debug_line", ".zdebug_line" },
308   { ".debug_loc", ".zdebug_loc" },
309   { ".debug_loclists", ".zdebug_loclists" },
310   { ".debug_macinfo", ".zdebug_macinfo" },
311   { ".debug_macro", ".zdebug_macro" },
312   { ".debug_str", ".zdebug_str" },
313   { ".debug_line_str", ".zdebug_line_str" },
314   { ".debug_ranges", ".zdebug_ranges" },
315   { ".debug_rnglists", ".zdebug_rnglists" },
316   { ".debug_types", ".zdebug_types" },
317   { ".debug_addr", ".zdebug_addr" },
318   { ".debug_frame", ".zdebug_frame" },
319   { ".eh_frame", NULL },
320   { ".gdb_index", ".zgdb_index" },
321   { ".debug_names", ".zdebug_names" },
322   { ".debug_aranges", ".zdebug_aranges" },
323   23
324 };
325
326 /* List of DWO/DWP sections.  */
327
328 static const struct dwop_section_names
329 {
330   struct dwarf2_section_names abbrev_dwo;
331   struct dwarf2_section_names info_dwo;
332   struct dwarf2_section_names line_dwo;
333   struct dwarf2_section_names loc_dwo;
334   struct dwarf2_section_names loclists_dwo;
335   struct dwarf2_section_names macinfo_dwo;
336   struct dwarf2_section_names macro_dwo;
337   struct dwarf2_section_names str_dwo;
338   struct dwarf2_section_names str_offsets_dwo;
339   struct dwarf2_section_names types_dwo;
340   struct dwarf2_section_names cu_index;
341   struct dwarf2_section_names tu_index;
342 }
343 dwop_section_names =
344 {
345   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
346   { ".debug_info.dwo", ".zdebug_info.dwo" },
347   { ".debug_line.dwo", ".zdebug_line.dwo" },
348   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
349   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
350   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
351   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
352   { ".debug_str.dwo", ".zdebug_str.dwo" },
353   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
354   { ".debug_types.dwo", ".zdebug_types.dwo" },
355   { ".debug_cu_index", ".zdebug_cu_index" },
356   { ".debug_tu_index", ".zdebug_tu_index" },
357 };
358
359 /* local data types */
360
361 /* The data in a compilation unit header, after target2host
362    translation, looks like this.  */
363 struct comp_unit_head
364 {
365   unsigned int length;
366   short version;
367   unsigned char addr_size;
368   unsigned char signed_addr_p;
369   sect_offset abbrev_sect_off;
370
371   /* Size of file offsets; either 4 or 8.  */
372   unsigned int offset_size;
373
374   /* Size of the length field; either 4 or 12.  */
375   unsigned int initial_length_size;
376
377   enum dwarf_unit_type unit_type;
378
379   /* Offset to the first byte of this compilation unit header in the
380      .debug_info section, for resolving relative reference dies.  */
381   sect_offset sect_off;
382
383   /* Offset to first die in this cu from the start of the cu.
384      This will be the first byte following the compilation unit header.  */
385   cu_offset first_die_cu_offset;
386
387   /* 64-bit signature of this type unit - it is valid only for
388      UNIT_TYPE DW_UT_type.  */
389   ULONGEST signature;
390
391   /* For types, offset in the type's DIE of the type defined by this TU.  */
392   cu_offset type_cu_offset_in_tu;
393 };
394
395 /* Type used for delaying computation of method physnames.
396    See comments for compute_delayed_physnames.  */
397 struct delayed_method_info
398 {
399   /* The type to which the method is attached, i.e., its parent class.  */
400   struct type *type;
401
402   /* The index of the method in the type's function fieldlists.  */
403   int fnfield_index;
404
405   /* The index of the method in the fieldlist.  */
406   int index;
407
408   /* The name of the DIE.  */
409   const char *name;
410
411   /*  The DIE associated with this method.  */
412   struct die_info *die;
413 };
414
415 /* Internal state when decoding a particular compilation unit.  */
416 struct dwarf2_cu
417 {
418   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
419   ~dwarf2_cu ();
420
421   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
422
423   /* The header of the compilation unit.  */
424   struct comp_unit_head header {};
425
426   /* Base address of this compilation unit.  */
427   CORE_ADDR base_address = 0;
428
429   /* Non-zero if base_address has been set.  */
430   int base_known = 0;
431
432   /* The language we are debugging.  */
433   enum language language = language_unknown;
434   const struct language_defn *language_defn = nullptr;
435
436   const char *producer = nullptr;
437
438   /* The generic symbol table building routines have separate lists for
439      file scope symbols and all all other scopes (local scopes).  So
440      we need to select the right one to pass to add_symbol_to_list().
441      We do it by keeping a pointer to the correct list in list_in_scope.
442
443      FIXME: The original dwarf code just treated the file scope as the
444      first local scope, and all other local scopes as nested local
445      scopes, and worked fine.  Check to see if we really need to
446      distinguish these in buildsym.c.  */
447   struct pending **list_in_scope = nullptr;
448
449   /* Hash table holding all the loaded partial DIEs
450      with partial_die->offset.SECT_OFF as hash.  */
451   htab_t partial_dies = nullptr;
452
453   /* Storage for things with the same lifetime as this read-in compilation
454      unit, including partial DIEs.  */
455   auto_obstack comp_unit_obstack;
456
457   /* When multiple dwarf2_cu structures are living in memory, this field
458      chains them all together, so that they can be released efficiently.
459      We will probably also want a generation counter so that most-recently-used
460      compilation units are cached...  */
461   struct dwarf2_per_cu_data *read_in_chain = nullptr;
462
463   /* Backlink to our per_cu entry.  */
464   struct dwarf2_per_cu_data *per_cu;
465
466   /* How many compilation units ago was this CU last referenced?  */
467   int last_used = 0;
468
469   /* A hash table of DIE cu_offset for following references with
470      die_info->offset.sect_off as hash.  */
471   htab_t die_hash = nullptr;
472
473   /* Full DIEs if read in.  */
474   struct die_info *dies = nullptr;
475
476   /* A set of pointers to dwarf2_per_cu_data objects for compilation
477      units referenced by this one.  Only set during full symbol processing;
478      partial symbol tables do not have dependencies.  */
479   htab_t dependencies = nullptr;
480
481   /* Header data from the line table, during full symbol processing.  */
482   struct line_header *line_header = nullptr;
483   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
484      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
485      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
486      to the line header as long as this DIE is being processed.  See
487      process_die_scope.  */
488   die_info *line_header_die_owner = nullptr;
489
490   /* A list of methods which need to have physnames computed
491      after all type information has been read.  */
492   std::vector<delayed_method_info> method_list;
493
494   /* To be copied to symtab->call_site_htab.  */
495   htab_t call_site_htab = nullptr;
496
497   /* Non-NULL if this CU came from a DWO file.
498      There is an invariant here that is important to remember:
499      Except for attributes copied from the top level DIE in the "main"
500      (or "stub") file in preparation for reading the DWO file
501      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
502      Either there isn't a DWO file (in which case this is NULL and the point
503      is moot), or there is and either we're not going to read it (in which
504      case this is NULL) or there is and we are reading it (in which case this
505      is non-NULL).  */
506   struct dwo_unit *dwo_unit = nullptr;
507
508   /* The DW_AT_addr_base attribute if present, zero otherwise
509      (zero is a valid value though).
510      Note this value comes from the Fission stub CU/TU's DIE.  */
511   ULONGEST addr_base = 0;
512
513   /* The DW_AT_ranges_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      Also note that the value is zero in the non-DWO case so this value can
517      be used without needing to know whether DWO files are in use or not.
518      N.B. This does not apply to DW_AT_ranges appearing in
519      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
520      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
521      DW_AT_ranges_base *would* have to be applied, and we'd have to care
522      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
523   ULONGEST ranges_base = 0;
524
525   /* When reading debug info generated by older versions of rustc, we
526      have to rewrite some union types to be struct types with a
527      variant part.  This rewriting must be done after the CU is fully
528      read in, because otherwise at the point of rewriting some struct
529      type might not have been fully processed.  So, we keep a list of
530      all such types here and process them after expansion.  */
531   std::vector<struct type *> rust_unions;
532
533   /* Mark used when releasing cached dies.  */
534   unsigned int mark : 1;
535
536   /* This CU references .debug_loc.  See the symtab->locations_valid field.
537      This test is imperfect as there may exist optimized debug code not using
538      any location list and still facing inlining issues if handled as
539      unoptimized code.  For a future better test see GCC PR other/32998.  */
540   unsigned int has_loclist : 1;
541
542   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
543      if all the producer_is_* fields are valid.  This information is cached
544      because profiling CU expansion showed excessive time spent in
545      producer_is_gxx_lt_4_6.  */
546   unsigned int checked_producer : 1;
547   unsigned int producer_is_gxx_lt_4_6 : 1;
548   unsigned int producer_is_gcc_lt_4_3 : 1;
549   unsigned int producer_is_icc_lt_14 : 1;
550
551   /* When set, the file that we're processing is known to have
552      debugging info for C++ namespaces.  GCC 3.3.x did not produce
553      this information, but later versions do.  */
554
555   unsigned int processing_has_namespace_info : 1;
556
557   struct partial_die_info *find_partial_die (sect_offset sect_off);
558 };
559
560 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
561    This includes type_unit_group and quick_file_names.  */
562
563 struct stmt_list_hash
564 {
565   /* The DWO unit this table is from or NULL if there is none.  */
566   struct dwo_unit *dwo_unit;
567
568   /* Offset in .debug_line or .debug_line.dwo.  */
569   sect_offset line_sect_off;
570 };
571
572 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
573    an object of this type.  */
574
575 struct type_unit_group
576 {
577   /* dwarf2read.c's main "handle" on a TU symtab.
578      To simplify things we create an artificial CU that "includes" all the
579      type units using this stmt_list so that the rest of the code still has
580      a "per_cu" handle on the symtab.
581      This PER_CU is recognized by having no section.  */
582 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
583   struct dwarf2_per_cu_data per_cu;
584
585   /* The TUs that share this DW_AT_stmt_list entry.
586      This is added to while parsing type units to build partial symtabs,
587      and is deleted afterwards and not used again.  */
588   VEC (sig_type_ptr) *tus;
589
590   /* The compunit symtab.
591      Type units in a group needn't all be defined in the same source file,
592      so we create an essentially anonymous symtab as the compunit symtab.  */
593   struct compunit_symtab *compunit_symtab;
594
595   /* The data used to construct the hash key.  */
596   struct stmt_list_hash hash;
597
598   /* The number of symtabs from the line header.
599      The value here must match line_header.num_file_names.  */
600   unsigned int num_symtabs;
601
602   /* The symbol tables for this TU (obtained from the files listed in
603      DW_AT_stmt_list).
604      WARNING: The order of entries here must match the order of entries
605      in the line header.  After the first TU using this type_unit_group, the
606      line header for the subsequent TUs is recreated from this.  This is done
607      because we need to use the same symtabs for each TU using the same
608      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
609      there's no guarantee the line header doesn't have duplicate entries.  */
610   struct symtab **symtabs;
611 };
612
613 /* These sections are what may appear in a (real or virtual) DWO file.  */
614
615 struct dwo_sections
616 {
617   struct dwarf2_section_info abbrev;
618   struct dwarf2_section_info line;
619   struct dwarf2_section_info loc;
620   struct dwarf2_section_info loclists;
621   struct dwarf2_section_info macinfo;
622   struct dwarf2_section_info macro;
623   struct dwarf2_section_info str;
624   struct dwarf2_section_info str_offsets;
625   /* In the case of a virtual DWO file, these two are unused.  */
626   struct dwarf2_section_info info;
627   VEC (dwarf2_section_info_def) *types;
628 };
629
630 /* CUs/TUs in DWP/DWO files.  */
631
632 struct dwo_unit
633 {
634   /* Backlink to the containing struct dwo_file.  */
635   struct dwo_file *dwo_file;
636
637   /* The "id" that distinguishes this CU/TU.
638      .debug_info calls this "dwo_id", .debug_types calls this "signature".
639      Since signatures came first, we stick with it for consistency.  */
640   ULONGEST signature;
641
642   /* The section this CU/TU lives in, in the DWO file.  */
643   struct dwarf2_section_info *section;
644
645   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
646   sect_offset sect_off;
647   unsigned int length;
648
649   /* For types, offset in the type's DIE of the type defined by this TU.  */
650   cu_offset type_offset_in_tu;
651 };
652
653 /* include/dwarf2.h defines the DWP section codes.
654    It defines a max value but it doesn't define a min value, which we
655    use for error checking, so provide one.  */
656
657 enum dwp_v2_section_ids
658 {
659   DW_SECT_MIN = 1
660 };
661
662 /* Data for one DWO file.
663
664    This includes virtual DWO files (a virtual DWO file is a DWO file as it
665    appears in a DWP file).  DWP files don't really have DWO files per se -
666    comdat folding of types "loses" the DWO file they came from, and from
667    a high level view DWP files appear to contain a mass of random types.
668    However, to maintain consistency with the non-DWP case we pretend DWP
669    files contain virtual DWO files, and we assign each TU with one virtual
670    DWO file (generally based on the line and abbrev section offsets -
671    a heuristic that seems to work in practice).  */
672
673 struct dwo_file
674 {
675   /* The DW_AT_GNU_dwo_name attribute.
676      For virtual DWO files the name is constructed from the section offsets
677      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
678      from related CU+TUs.  */
679   const char *dwo_name;
680
681   /* The DW_AT_comp_dir attribute.  */
682   const char *comp_dir;
683
684   /* The bfd, when the file is open.  Otherwise this is NULL.
685      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
686   bfd *dbfd;
687
688   /* The sections that make up this DWO file.
689      Remember that for virtual DWO files in DWP V2, these are virtual
690      sections (for lack of a better name).  */
691   struct dwo_sections sections;
692
693   /* The CUs in the file.
694      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
695      an extension to handle LLVM's Link Time Optimization output (where
696      multiple source files may be compiled into a single object/dwo pair). */
697   htab_t cus;
698
699   /* Table of TUs in the file.
700      Each element is a struct dwo_unit.  */
701   htab_t tus;
702 };
703
704 /* These sections are what may appear in a DWP file.  */
705
706 struct dwp_sections
707 {
708   /* These are used by both DWP version 1 and 2.  */
709   struct dwarf2_section_info str;
710   struct dwarf2_section_info cu_index;
711   struct dwarf2_section_info tu_index;
712
713   /* These are only used by DWP version 2 files.
714      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
715      sections are referenced by section number, and are not recorded here.
716      In DWP version 2 there is at most one copy of all these sections, each
717      section being (effectively) comprised of the concatenation of all of the
718      individual sections that exist in the version 1 format.
719      To keep the code simple we treat each of these concatenated pieces as a
720      section itself (a virtual section?).  */
721   struct dwarf2_section_info abbrev;
722   struct dwarf2_section_info info;
723   struct dwarf2_section_info line;
724   struct dwarf2_section_info loc;
725   struct dwarf2_section_info macinfo;
726   struct dwarf2_section_info macro;
727   struct dwarf2_section_info str_offsets;
728   struct dwarf2_section_info types;
729 };
730
731 /* These sections are what may appear in a virtual DWO file in DWP version 1.
732    A virtual DWO file is a DWO file as it appears in a DWP file.  */
733
734 struct virtual_v1_dwo_sections
735 {
736   struct dwarf2_section_info abbrev;
737   struct dwarf2_section_info line;
738   struct dwarf2_section_info loc;
739   struct dwarf2_section_info macinfo;
740   struct dwarf2_section_info macro;
741   struct dwarf2_section_info str_offsets;
742   /* Each DWP hash table entry records one CU or one TU.
743      That is recorded here, and copied to dwo_unit.section.  */
744   struct dwarf2_section_info info_or_types;
745 };
746
747 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
748    In version 2, the sections of the DWO files are concatenated together
749    and stored in one section of that name.  Thus each ELF section contains
750    several "virtual" sections.  */
751
752 struct virtual_v2_dwo_sections
753 {
754   bfd_size_type abbrev_offset;
755   bfd_size_type abbrev_size;
756
757   bfd_size_type line_offset;
758   bfd_size_type line_size;
759
760   bfd_size_type loc_offset;
761   bfd_size_type loc_size;
762
763   bfd_size_type macinfo_offset;
764   bfd_size_type macinfo_size;
765
766   bfd_size_type macro_offset;
767   bfd_size_type macro_size;
768
769   bfd_size_type str_offsets_offset;
770   bfd_size_type str_offsets_size;
771
772   /* Each DWP hash table entry records one CU or one TU.
773      That is recorded here, and copied to dwo_unit.section.  */
774   bfd_size_type info_or_types_offset;
775   bfd_size_type info_or_types_size;
776 };
777
778 /* Contents of DWP hash tables.  */
779
780 struct dwp_hash_table
781 {
782   uint32_t version, nr_columns;
783   uint32_t nr_units, nr_slots;
784   const gdb_byte *hash_table, *unit_table;
785   union
786   {
787     struct
788     {
789       const gdb_byte *indices;
790     } v1;
791     struct
792     {
793       /* This is indexed by column number and gives the id of the section
794          in that column.  */
795 #define MAX_NR_V2_DWO_SECTIONS \
796   (1 /* .debug_info or .debug_types */ \
797    + 1 /* .debug_abbrev */ \
798    + 1 /* .debug_line */ \
799    + 1 /* .debug_loc */ \
800    + 1 /* .debug_str_offsets */ \
801    + 1 /* .debug_macro or .debug_macinfo */)
802       int section_ids[MAX_NR_V2_DWO_SECTIONS];
803       const gdb_byte *offsets;
804       const gdb_byte *sizes;
805     } v2;
806   } section_pool;
807 };
808
809 /* Data for one DWP file.  */
810
811 struct dwp_file
812 {
813   /* Name of the file.  */
814   const char *name;
815
816   /* File format version.  */
817   int version;
818
819   /* The bfd.  */
820   bfd *dbfd;
821
822   /* Section info for this file.  */
823   struct dwp_sections sections;
824
825   /* Table of CUs in the file.  */
826   const struct dwp_hash_table *cus;
827
828   /* Table of TUs in the file.  */
829   const struct dwp_hash_table *tus;
830
831   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
832   htab_t loaded_cus;
833   htab_t loaded_tus;
834
835   /* Table to map ELF section numbers to their sections.
836      This is only needed for the DWP V1 file format.  */
837   unsigned int num_sections;
838   asection **elf_sections;
839 };
840
841 /* This represents a '.dwz' file.  */
842
843 struct dwz_file
844 {
845   /* A dwz file can only contain a few sections.  */
846   struct dwarf2_section_info abbrev;
847   struct dwarf2_section_info info;
848   struct dwarf2_section_info str;
849   struct dwarf2_section_info line;
850   struct dwarf2_section_info macro;
851   struct dwarf2_section_info gdb_index;
852   struct dwarf2_section_info debug_names;
853
854   /* The dwz's BFD.  */
855   bfd *dwz_bfd;
856 };
857
858 /* Struct used to pass misc. parameters to read_die_and_children, et
859    al.  which are used for both .debug_info and .debug_types dies.
860    All parameters here are unchanging for the life of the call.  This
861    struct exists to abstract away the constant parameters of die reading.  */
862
863 struct die_reader_specs
864 {
865   /* The bfd of die_section.  */
866   bfd* abfd;
867
868   /* The CU of the DIE we are parsing.  */
869   struct dwarf2_cu *cu;
870
871   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
872   struct dwo_file *dwo_file;
873
874   /* The section the die comes from.
875      This is either .debug_info or .debug_types, or the .dwo variants.  */
876   struct dwarf2_section_info *die_section;
877
878   /* die_section->buffer.  */
879   const gdb_byte *buffer;
880
881   /* The end of the buffer.  */
882   const gdb_byte *buffer_end;
883
884   /* The value of the DW_AT_comp_dir attribute.  */
885   const char *comp_dir;
886
887   /* The abbreviation table to use when reading the DIEs.  */
888   struct abbrev_table *abbrev_table;
889 };
890
891 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
892 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
893                                       const gdb_byte *info_ptr,
894                                       struct die_info *comp_unit_die,
895                                       int has_children,
896                                       void *data);
897
898 /* A 1-based directory index.  This is a strong typedef to prevent
899    accidentally using a directory index as a 0-based index into an
900    array/vector.  */
901 enum class dir_index : unsigned int {};
902
903 /* Likewise, a 1-based file name index.  */
904 enum class file_name_index : unsigned int {};
905
906 struct file_entry
907 {
908   file_entry () = default;
909
910   file_entry (const char *name_, dir_index d_index_,
911               unsigned int mod_time_, unsigned int length_)
912     : name (name_),
913       d_index (d_index_),
914       mod_time (mod_time_),
915       length (length_)
916   {}
917
918   /* Return the include directory at D_INDEX stored in LH.  Returns
919      NULL if D_INDEX is out of bounds.  */
920   const char *include_dir (const line_header *lh) const;
921
922   /* The file name.  Note this is an observing pointer.  The memory is
923      owned by debug_line_buffer.  */
924   const char *name {};
925
926   /* The directory index (1-based).  */
927   dir_index d_index {};
928
929   unsigned int mod_time {};
930
931   unsigned int length {};
932
933   /* True if referenced by the Line Number Program.  */
934   bool included_p {};
935
936   /* The associated symbol table, if any.  */
937   struct symtab *symtab {};
938 };
939
940 /* The line number information for a compilation unit (found in the
941    .debug_line section) begins with a "statement program header",
942    which contains the following information.  */
943 struct line_header
944 {
945   line_header ()
946     : offset_in_dwz {}
947   {}
948
949   /* Add an entry to the include directory table.  */
950   void add_include_dir (const char *include_dir);
951
952   /* Add an entry to the file name table.  */
953   void add_file_name (const char *name, dir_index d_index,
954                       unsigned int mod_time, unsigned int length);
955
956   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
957      is out of bounds.  */
958   const char *include_dir_at (dir_index index) const
959   {
960     /* Convert directory index number (1-based) to vector index
961        (0-based).  */
962     size_t vec_index = to_underlying (index) - 1;
963
964     if (vec_index >= include_dirs.size ())
965       return NULL;
966     return include_dirs[vec_index];
967   }
968
969   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
970      is out of bounds.  */
971   file_entry *file_name_at (file_name_index index)
972   {
973     /* Convert file name index number (1-based) to vector index
974        (0-based).  */
975     size_t vec_index = to_underlying (index) - 1;
976
977     if (vec_index >= file_names.size ())
978       return NULL;
979     return &file_names[vec_index];
980   }
981
982   /* Const version of the above.  */
983   const file_entry *file_name_at (unsigned int index) const
984   {
985     if (index >= file_names.size ())
986       return NULL;
987     return &file_names[index];
988   }
989
990   /* Offset of line number information in .debug_line section.  */
991   sect_offset sect_off {};
992
993   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
994   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
995
996   unsigned int total_length {};
997   unsigned short version {};
998   unsigned int header_length {};
999   unsigned char minimum_instruction_length {};
1000   unsigned char maximum_ops_per_instruction {};
1001   unsigned char default_is_stmt {};
1002   int line_base {};
1003   unsigned char line_range {};
1004   unsigned char opcode_base {};
1005
1006   /* standard_opcode_lengths[i] is the number of operands for the
1007      standard opcode whose value is i.  This means that
1008      standard_opcode_lengths[0] is unused, and the last meaningful
1009      element is standard_opcode_lengths[opcode_base - 1].  */
1010   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1011
1012   /* The include_directories table.  Note these are observing
1013      pointers.  The memory is owned by debug_line_buffer.  */
1014   std::vector<const char *> include_dirs;
1015
1016   /* The file_names table.  */
1017   std::vector<file_entry> file_names;
1018
1019   /* The start and end of the statement program following this
1020      header.  These point into dwarf2_per_objfile->line_buffer.  */
1021   const gdb_byte *statement_program_start {}, *statement_program_end {};
1022 };
1023
1024 typedef std::unique_ptr<line_header> line_header_up;
1025
1026 const char *
1027 file_entry::include_dir (const line_header *lh) const
1028 {
1029   return lh->include_dir_at (d_index);
1030 }
1031
1032 /* When we construct a partial symbol table entry we only
1033    need this much information.  */
1034 struct partial_die_info : public allocate_on_obstack
1035   {
1036     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1037
1038     /* Disable assign but still keep copy ctor, which is needed
1039        load_partial_dies.   */
1040     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1041
1042     /* Adjust the partial die before generating a symbol for it.  This
1043        function may set the is_external flag or change the DIE's
1044        name.  */
1045     void fixup (struct dwarf2_cu *cu);
1046
1047     /* Read a minimal amount of information into the minimal die
1048        structure.  */
1049     const gdb_byte *read (const struct die_reader_specs *reader,
1050                           const struct abbrev_info &abbrev,
1051                           const gdb_byte *info_ptr);
1052
1053     /* Offset of this DIE.  */
1054     const sect_offset sect_off;
1055
1056     /* DWARF-2 tag for this DIE.  */
1057     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1058
1059     /* Assorted flags describing the data found in this DIE.  */
1060     const unsigned int has_children : 1;
1061
1062     unsigned int is_external : 1;
1063     unsigned int is_declaration : 1;
1064     unsigned int has_type : 1;
1065     unsigned int has_specification : 1;
1066     unsigned int has_pc_info : 1;
1067     unsigned int may_be_inlined : 1;
1068
1069     /* This DIE has been marked DW_AT_main_subprogram.  */
1070     unsigned int main_subprogram : 1;
1071
1072     /* Flag set if the SCOPE field of this structure has been
1073        computed.  */
1074     unsigned int scope_set : 1;
1075
1076     /* Flag set if the DIE has a byte_size attribute.  */
1077     unsigned int has_byte_size : 1;
1078
1079     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1080     unsigned int has_const_value : 1;
1081
1082     /* Flag set if any of the DIE's children are template arguments.  */
1083     unsigned int has_template_arguments : 1;
1084
1085     /* Flag set if fixup has been called on this die.  */
1086     unsigned int fixup_called : 1;
1087
1088     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1089     unsigned int is_dwz : 1;
1090
1091     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1092     unsigned int spec_is_dwz : 1;
1093
1094     /* The name of this DIE.  Normally the value of DW_AT_name, but
1095        sometimes a default name for unnamed DIEs.  */
1096     const char *name = nullptr;
1097
1098     /* The linkage name, if present.  */
1099     const char *linkage_name = nullptr;
1100
1101     /* The scope to prepend to our children.  This is generally
1102        allocated on the comp_unit_obstack, so will disappear
1103        when this compilation unit leaves the cache.  */
1104     const char *scope = nullptr;
1105
1106     /* Some data associated with the partial DIE.  The tag determines
1107        which field is live.  */
1108     union
1109     {
1110       /* The location description associated with this DIE, if any.  */
1111       struct dwarf_block *locdesc;
1112       /* The offset of an import, for DW_TAG_imported_unit.  */
1113       sect_offset sect_off;
1114     } d {};
1115
1116     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1117     CORE_ADDR lowpc = 0;
1118     CORE_ADDR highpc = 0;
1119
1120     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1121        DW_AT_sibling, if any.  */
1122     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1123        could return DW_AT_sibling values to its caller load_partial_dies.  */
1124     const gdb_byte *sibling = nullptr;
1125
1126     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1127        DW_AT_specification (or DW_AT_abstract_origin or
1128        DW_AT_extension).  */
1129     sect_offset spec_offset {};
1130
1131     /* Pointers to this DIE's parent, first child, and next sibling,
1132        if any.  */
1133     struct partial_die_info *die_parent = nullptr;
1134     struct partial_die_info *die_child = nullptr;
1135     struct partial_die_info *die_sibling = nullptr;
1136
1137     friend struct partial_die_info *
1138     dwarf2_cu::find_partial_die (sect_offset sect_off);
1139
1140   private:
1141     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1142     partial_die_info (sect_offset sect_off)
1143       : partial_die_info (sect_off, DW_TAG_padding, 0)
1144     {
1145     }
1146
1147     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1148                       int has_children_)
1149       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1150     {
1151       is_external = 0;
1152       is_declaration = 0;
1153       has_type = 0;
1154       has_specification = 0;
1155       has_pc_info = 0;
1156       may_be_inlined = 0;
1157       main_subprogram = 0;
1158       scope_set = 0;
1159       has_byte_size = 0;
1160       has_const_value = 0;
1161       has_template_arguments = 0;
1162       fixup_called = 0;
1163       is_dwz = 0;
1164       spec_is_dwz = 0;
1165     }
1166   };
1167
1168 /* This data structure holds the information of an abbrev.  */
1169 struct abbrev_info
1170   {
1171     unsigned int number;        /* number identifying abbrev */
1172     enum dwarf_tag tag;         /* dwarf tag */
1173     unsigned short has_children;                /* boolean */
1174     unsigned short num_attrs;   /* number of attributes */
1175     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1176     struct abbrev_info *next;   /* next in chain */
1177   };
1178
1179 struct attr_abbrev
1180   {
1181     ENUM_BITFIELD(dwarf_attribute) name : 16;
1182     ENUM_BITFIELD(dwarf_form) form : 16;
1183
1184     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1185     LONGEST implicit_const;
1186   };
1187
1188 /* Size of abbrev_table.abbrev_hash_table.  */
1189 #define ABBREV_HASH_SIZE 121
1190
1191 /* Top level data structure to contain an abbreviation table.  */
1192
1193 struct abbrev_table
1194 {
1195   explicit abbrev_table (sect_offset off)
1196     : sect_off (off)
1197   {
1198     m_abbrevs =
1199       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1200     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1201   }
1202
1203   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1204
1205   /* Allocate space for a struct abbrev_info object in
1206      ABBREV_TABLE.  */
1207   struct abbrev_info *alloc_abbrev ();
1208
1209   /* Add an abbreviation to the table.  */
1210   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1211
1212   /* Look up an abbrev in the table.
1213      Returns NULL if the abbrev is not found.  */
1214
1215   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1216
1217
1218   /* Where the abbrev table came from.
1219      This is used as a sanity check when the table is used.  */
1220   const sect_offset sect_off;
1221
1222   /* Storage for the abbrev table.  */
1223   auto_obstack abbrev_obstack;
1224
1225 private:
1226
1227   /* Hash table of abbrevs.
1228      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1229      It could be statically allocated, but the previous code didn't so we
1230      don't either.  */
1231   struct abbrev_info **m_abbrevs;
1232 };
1233
1234 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1235
1236 /* Attributes have a name and a value.  */
1237 struct attribute
1238   {
1239     ENUM_BITFIELD(dwarf_attribute) name : 16;
1240     ENUM_BITFIELD(dwarf_form) form : 15;
1241
1242     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1243        field should be in u.str (existing only for DW_STRING) but it is kept
1244        here for better struct attribute alignment.  */
1245     unsigned int string_is_canonical : 1;
1246
1247     union
1248       {
1249         const char *str;
1250         struct dwarf_block *blk;
1251         ULONGEST unsnd;
1252         LONGEST snd;
1253         CORE_ADDR addr;
1254         ULONGEST signature;
1255       }
1256     u;
1257   };
1258
1259 /* This data structure holds a complete die structure.  */
1260 struct die_info
1261   {
1262     /* DWARF-2 tag for this DIE.  */
1263     ENUM_BITFIELD(dwarf_tag) tag : 16;
1264
1265     /* Number of attributes */
1266     unsigned char num_attrs;
1267
1268     /* True if we're presently building the full type name for the
1269        type derived from this DIE.  */
1270     unsigned char building_fullname : 1;
1271
1272     /* True if this die is in process.  PR 16581.  */
1273     unsigned char in_process : 1;
1274
1275     /* Abbrev number */
1276     unsigned int abbrev;
1277
1278     /* Offset in .debug_info or .debug_types section.  */
1279     sect_offset sect_off;
1280
1281     /* The dies in a compilation unit form an n-ary tree.  PARENT
1282        points to this die's parent; CHILD points to the first child of
1283        this node; and all the children of a given node are chained
1284        together via their SIBLING fields.  */
1285     struct die_info *child;     /* Its first child, if any.  */
1286     struct die_info *sibling;   /* Its next sibling, if any.  */
1287     struct die_info *parent;    /* Its parent, if any.  */
1288
1289     /* An array of attributes, with NUM_ATTRS elements.  There may be
1290        zero, but it's not common and zero-sized arrays are not
1291        sufficiently portable C.  */
1292     struct attribute attrs[1];
1293   };
1294
1295 /* Get at parts of an attribute structure.  */
1296
1297 #define DW_STRING(attr)    ((attr)->u.str)
1298 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1299 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1300 #define DW_BLOCK(attr)     ((attr)->u.blk)
1301 #define DW_SND(attr)       ((attr)->u.snd)
1302 #define DW_ADDR(attr)      ((attr)->u.addr)
1303 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1304
1305 /* Blocks are a bunch of untyped bytes.  */
1306 struct dwarf_block
1307   {
1308     size_t size;
1309
1310     /* Valid only if SIZE is not zero.  */
1311     const gdb_byte *data;
1312   };
1313
1314 #ifndef ATTR_ALLOC_CHUNK
1315 #define ATTR_ALLOC_CHUNK 4
1316 #endif
1317
1318 /* Allocate fields for structs, unions and enums in this size.  */
1319 #ifndef DW_FIELD_ALLOC_CHUNK
1320 #define DW_FIELD_ALLOC_CHUNK 4
1321 #endif
1322
1323 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1324    but this would require a corresponding change in unpack_field_as_long
1325    and friends.  */
1326 static int bits_per_byte = 8;
1327
1328 /* When reading a variant or variant part, we track a bit more
1329    information about the field, and store it in an object of this
1330    type.  */
1331
1332 struct variant_field
1333 {
1334   /* If we see a DW_TAG_variant, then this will be the discriminant
1335      value.  */
1336   ULONGEST discriminant_value;
1337   /* If we see a DW_TAG_variant, then this will be set if this is the
1338      default branch.  */
1339   bool default_branch;
1340   /* While reading a DW_TAG_variant_part, this will be set if this
1341      field is the discriminant.  */
1342   bool is_discriminant;
1343 };
1344
1345 struct nextfield
1346 {
1347   int accessibility = 0;
1348   int virtuality = 0;
1349   /* Extra information to describe a variant or variant part.  */
1350   struct variant_field variant {};
1351   struct field field {};
1352 };
1353
1354 struct fnfieldlist
1355 {
1356   const char *name = nullptr;
1357   std::vector<struct fn_field> fnfields;
1358 };
1359
1360 /* The routines that read and process dies for a C struct or C++ class
1361    pass lists of data member fields and lists of member function fields
1362    in an instance of a field_info structure, as defined below.  */
1363 struct field_info
1364   {
1365     /* List of data member and baseclasses fields.  */
1366     std::vector<struct nextfield> fields;
1367     std::vector<struct nextfield> baseclasses;
1368
1369     /* Number of fields (including baseclasses).  */
1370     int nfields = 0;
1371
1372     /* Set if the accesibility of one of the fields is not public.  */
1373     int non_public_fields = 0;
1374
1375     /* Member function fieldlist array, contains name of possibly overloaded
1376        member function, number of overloaded member functions and a pointer
1377        to the head of the member function field chain.  */
1378     std::vector<struct fnfieldlist> fnfieldlists;
1379
1380     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1381        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1382     std::vector<struct decl_field> typedef_field_list;
1383
1384     /* Nested types defined by this class and the number of elements in this
1385        list.  */
1386     std::vector<struct decl_field> nested_types_list;
1387   };
1388
1389 /* One item on the queue of compilation units to read in full symbols
1390    for.  */
1391 struct dwarf2_queue_item
1392 {
1393   struct dwarf2_per_cu_data *per_cu;
1394   enum language pretend_language;
1395   struct dwarf2_queue_item *next;
1396 };
1397
1398 /* The current queue.  */
1399 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1400
1401 /* Loaded secondary compilation units are kept in memory until they
1402    have not been referenced for the processing of this many
1403    compilation units.  Set this to zero to disable caching.  Cache
1404    sizes of up to at least twenty will improve startup time for
1405    typical inter-CU-reference binaries, at an obvious memory cost.  */
1406 static int dwarf_max_cache_age = 5;
1407 static void
1408 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1409                           struct cmd_list_element *c, const char *value)
1410 {
1411   fprintf_filtered (file, _("The upper bound on the age of cached "
1412                             "DWARF compilation units is %s.\n"),
1413                     value);
1414 }
1415 \f
1416 /* local function prototypes */
1417
1418 static const char *get_section_name (const struct dwarf2_section_info *);
1419
1420 static const char *get_section_file_name (const struct dwarf2_section_info *);
1421
1422 static void dwarf2_find_base_address (struct die_info *die,
1423                                       struct dwarf2_cu *cu);
1424
1425 static struct partial_symtab *create_partial_symtab
1426   (struct dwarf2_per_cu_data *per_cu, const char *name);
1427
1428 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1429                                         const gdb_byte *info_ptr,
1430                                         struct die_info *type_unit_die,
1431                                         int has_children, void *data);
1432
1433 static void dwarf2_build_psymtabs_hard
1434   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1435
1436 static void scan_partial_symbols (struct partial_die_info *,
1437                                   CORE_ADDR *, CORE_ADDR *,
1438                                   int, struct dwarf2_cu *);
1439
1440 static void add_partial_symbol (struct partial_die_info *,
1441                                 struct dwarf2_cu *);
1442
1443 static void add_partial_namespace (struct partial_die_info *pdi,
1444                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1445                                    int set_addrmap, struct dwarf2_cu *cu);
1446
1447 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1448                                 CORE_ADDR *highpc, int set_addrmap,
1449                                 struct dwarf2_cu *cu);
1450
1451 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1452                                      struct dwarf2_cu *cu);
1453
1454 static void add_partial_subprogram (struct partial_die_info *pdi,
1455                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1456                                     int need_pc, struct dwarf2_cu *cu);
1457
1458 static void dwarf2_read_symtab (struct partial_symtab *,
1459                                 struct objfile *);
1460
1461 static void psymtab_to_symtab_1 (struct partial_symtab *);
1462
1463 static abbrev_table_up abbrev_table_read_table
1464   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1465    sect_offset);
1466
1467 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1468
1469 static struct partial_die_info *load_partial_dies
1470   (const struct die_reader_specs *, const gdb_byte *, int);
1471
1472 static struct partial_die_info *find_partial_die (sect_offset, int,
1473                                                   struct dwarf2_cu *);
1474
1475 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1476                                        struct attribute *, struct attr_abbrev *,
1477                                        const gdb_byte *);
1478
1479 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1480
1481 static int read_1_signed_byte (bfd *, const gdb_byte *);
1482
1483 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1484
1485 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1486
1487 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1488
1489 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1490                                unsigned int *);
1491
1492 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1493
1494 static LONGEST read_checked_initial_length_and_offset
1495   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1496    unsigned int *, unsigned int *);
1497
1498 static LONGEST read_offset (bfd *, const gdb_byte *,
1499                             const struct comp_unit_head *,
1500                             unsigned int *);
1501
1502 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1503
1504 static sect_offset read_abbrev_offset
1505   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1506    struct dwarf2_section_info *, sect_offset);
1507
1508 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1509
1510 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1511
1512 static const char *read_indirect_string
1513   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1514    const struct comp_unit_head *, unsigned int *);
1515
1516 static const char *read_indirect_line_string
1517   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1518    const struct comp_unit_head *, unsigned int *);
1519
1520 static const char *read_indirect_string_at_offset
1521   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1522    LONGEST str_offset);
1523
1524 static const char *read_indirect_string_from_dwz
1525   (struct objfile *objfile, struct dwz_file *, LONGEST);
1526
1527 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1528
1529 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1530                                               const gdb_byte *,
1531                                               unsigned int *);
1532
1533 static const char *read_str_index (const struct die_reader_specs *reader,
1534                                    ULONGEST str_index);
1535
1536 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1537
1538 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1539                                       struct dwarf2_cu *);
1540
1541 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1542                                                 unsigned int);
1543
1544 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1545                                        struct dwarf2_cu *cu);
1546
1547 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1548                                struct dwarf2_cu *cu);
1549
1550 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1551
1552 static struct die_info *die_specification (struct die_info *die,
1553                                            struct dwarf2_cu **);
1554
1555 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1556                                                 struct dwarf2_cu *cu);
1557
1558 static void dwarf_decode_lines (struct line_header *, const char *,
1559                                 struct dwarf2_cu *, struct partial_symtab *,
1560                                 CORE_ADDR, int decode_mapping);
1561
1562 static void dwarf2_start_subfile (const char *, const char *);
1563
1564 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1565                                                     const char *, const char *,
1566                                                     CORE_ADDR);
1567
1568 static struct symbol *new_symbol (struct die_info *, struct type *,
1569                                   struct dwarf2_cu *, struct symbol * = NULL);
1570
1571 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1572                                 struct dwarf2_cu *);
1573
1574 static void dwarf2_const_value_attr (const struct attribute *attr,
1575                                      struct type *type,
1576                                      const char *name,
1577                                      struct obstack *obstack,
1578                                      struct dwarf2_cu *cu, LONGEST *value,
1579                                      const gdb_byte **bytes,
1580                                      struct dwarf2_locexpr_baton **baton);
1581
1582 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1583
1584 static int need_gnat_info (struct dwarf2_cu *);
1585
1586 static struct type *die_descriptive_type (struct die_info *,
1587                                           struct dwarf2_cu *);
1588
1589 static void set_descriptive_type (struct type *, struct die_info *,
1590                                   struct dwarf2_cu *);
1591
1592 static struct type *die_containing_type (struct die_info *,
1593                                          struct dwarf2_cu *);
1594
1595 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1596                                      struct dwarf2_cu *);
1597
1598 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1599
1600 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1601
1602 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1603
1604 static char *typename_concat (struct obstack *obs, const char *prefix,
1605                               const char *suffix, int physname,
1606                               struct dwarf2_cu *cu);
1607
1608 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1609
1610 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1611
1612 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1613
1614 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1615
1616 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1617
1618 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1619
1620 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1621                                struct dwarf2_cu *, struct partial_symtab *);
1622
1623 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1624    values.  Keep the items ordered with increasing constraints compliance.  */
1625 enum pc_bounds_kind
1626 {
1627   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1628   PC_BOUNDS_NOT_PRESENT,
1629
1630   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1631      were present but they do not form a valid range of PC addresses.  */
1632   PC_BOUNDS_INVALID,
1633
1634   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1635   PC_BOUNDS_RANGES,
1636
1637   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1638   PC_BOUNDS_HIGH_LOW,
1639 };
1640
1641 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1642                                                  CORE_ADDR *, CORE_ADDR *,
1643                                                  struct dwarf2_cu *,
1644                                                  struct partial_symtab *);
1645
1646 static void get_scope_pc_bounds (struct die_info *,
1647                                  CORE_ADDR *, CORE_ADDR *,
1648                                  struct dwarf2_cu *);
1649
1650 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1651                                         CORE_ADDR, struct dwarf2_cu *);
1652
1653 static void dwarf2_add_field (struct field_info *, struct die_info *,
1654                               struct dwarf2_cu *);
1655
1656 static void dwarf2_attach_fields_to_type (struct field_info *,
1657                                           struct type *, struct dwarf2_cu *);
1658
1659 static void dwarf2_add_member_fn (struct field_info *,
1660                                   struct die_info *, struct type *,
1661                                   struct dwarf2_cu *);
1662
1663 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1664                                              struct type *,
1665                                              struct dwarf2_cu *);
1666
1667 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1668
1669 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1670
1671 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1672
1673 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1674
1675 static struct using_direct **using_directives (enum language);
1676
1677 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1678
1679 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1680
1681 static struct type *read_module_type (struct die_info *die,
1682                                       struct dwarf2_cu *cu);
1683
1684 static const char *namespace_name (struct die_info *die,
1685                                    int *is_anonymous, struct dwarf2_cu *);
1686
1687 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1688
1689 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1690
1691 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1692                                                        struct dwarf2_cu *);
1693
1694 static struct die_info *read_die_and_siblings_1
1695   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1696    struct die_info *);
1697
1698 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1699                                                const gdb_byte *info_ptr,
1700                                                const gdb_byte **new_info_ptr,
1701                                                struct die_info *parent);
1702
1703 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1704                                         struct die_info **, const gdb_byte *,
1705                                         int *, int);
1706
1707 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1708                                       struct die_info **, const gdb_byte *,
1709                                       int *);
1710
1711 static void process_die (struct die_info *, struct dwarf2_cu *);
1712
1713 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1714                                              struct obstack *);
1715
1716 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1717
1718 static const char *dwarf2_full_name (const char *name,
1719                                      struct die_info *die,
1720                                      struct dwarf2_cu *cu);
1721
1722 static const char *dwarf2_physname (const char *name, struct die_info *die,
1723                                     struct dwarf2_cu *cu);
1724
1725 static struct die_info *dwarf2_extension (struct die_info *die,
1726                                           struct dwarf2_cu **);
1727
1728 static const char *dwarf_tag_name (unsigned int);
1729
1730 static const char *dwarf_attr_name (unsigned int);
1731
1732 static const char *dwarf_form_name (unsigned int);
1733
1734 static const char *dwarf_bool_name (unsigned int);
1735
1736 static const char *dwarf_type_encoding_name (unsigned int);
1737
1738 static struct die_info *sibling_die (struct die_info *);
1739
1740 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1741
1742 static void dump_die_for_error (struct die_info *);
1743
1744 static void dump_die_1 (struct ui_file *, int level, int max_level,
1745                         struct die_info *);
1746
1747 /*static*/ void dump_die (struct die_info *, int max_level);
1748
1749 static void store_in_ref_table (struct die_info *,
1750                                 struct dwarf2_cu *);
1751
1752 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1753
1754 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1755
1756 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1757                                                const struct attribute *,
1758                                                struct dwarf2_cu **);
1759
1760 static struct die_info *follow_die_ref (struct die_info *,
1761                                         const struct attribute *,
1762                                         struct dwarf2_cu **);
1763
1764 static struct die_info *follow_die_sig (struct die_info *,
1765                                         const struct attribute *,
1766                                         struct dwarf2_cu **);
1767
1768 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1769                                          struct dwarf2_cu *);
1770
1771 static struct type *get_DW_AT_signature_type (struct die_info *,
1772                                               const struct attribute *,
1773                                               struct dwarf2_cu *);
1774
1775 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1776
1777 static void read_signatured_type (struct signatured_type *);
1778
1779 static int attr_to_dynamic_prop (const struct attribute *attr,
1780                                  struct die_info *die, struct dwarf2_cu *cu,
1781                                  struct dynamic_prop *prop);
1782
1783 /* memory allocation interface */
1784
1785 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1786
1787 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1788
1789 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1790
1791 static int attr_form_is_block (const struct attribute *);
1792
1793 static int attr_form_is_section_offset (const struct attribute *);
1794
1795 static int attr_form_is_constant (const struct attribute *);
1796
1797 static int attr_form_is_ref (const struct attribute *);
1798
1799 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1800                                    struct dwarf2_loclist_baton *baton,
1801                                    const struct attribute *attr);
1802
1803 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1804                                          struct symbol *sym,
1805                                          struct dwarf2_cu *cu,
1806                                          int is_block);
1807
1808 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1809                                      const gdb_byte *info_ptr,
1810                                      struct abbrev_info *abbrev);
1811
1812 static hashval_t partial_die_hash (const void *item);
1813
1814 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1815
1816 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1817   (sect_offset sect_off, unsigned int offset_in_dwz,
1818    struct dwarf2_per_objfile *dwarf2_per_objfile);
1819
1820 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1821                                    struct die_info *comp_unit_die,
1822                                    enum language pretend_language);
1823
1824 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1825
1826 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1827
1828 static struct type *set_die_type (struct die_info *, struct type *,
1829                                   struct dwarf2_cu *);
1830
1831 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1832
1833 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1834
1835 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1836                                  enum language);
1837
1838 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1839                                     enum language);
1840
1841 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1842                                     enum language);
1843
1844 static void dwarf2_add_dependence (struct dwarf2_cu *,
1845                                    struct dwarf2_per_cu_data *);
1846
1847 static void dwarf2_mark (struct dwarf2_cu *);
1848
1849 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1850
1851 static struct type *get_die_type_at_offset (sect_offset,
1852                                             struct dwarf2_per_cu_data *);
1853
1854 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1855
1856 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1857                              enum language pretend_language);
1858
1859 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1860
1861 /* Class, the destructor of which frees all allocated queue entries.  This
1862    will only have work to do if an error was thrown while processing the
1863    dwarf.  If no error was thrown then the queue entries should have all
1864    been processed, and freed, as we went along.  */
1865
1866 class dwarf2_queue_guard
1867 {
1868 public:
1869   dwarf2_queue_guard () = default;
1870
1871   /* Free any entries remaining on the queue.  There should only be
1872      entries left if we hit an error while processing the dwarf.  */
1873   ~dwarf2_queue_guard ()
1874   {
1875     struct dwarf2_queue_item *item, *last;
1876
1877     item = dwarf2_queue;
1878     while (item)
1879       {
1880         /* Anything still marked queued is likely to be in an
1881            inconsistent state, so discard it.  */
1882         if (item->per_cu->queued)
1883           {
1884             if (item->per_cu->cu != NULL)
1885               free_one_cached_comp_unit (item->per_cu);
1886             item->per_cu->queued = 0;
1887           }
1888
1889         last = item;
1890         item = item->next;
1891         xfree (last);
1892       }
1893
1894     dwarf2_queue = dwarf2_queue_tail = NULL;
1895   }
1896 };
1897
1898 /* The return type of find_file_and_directory.  Note, the enclosed
1899    string pointers are only valid while this object is valid.  */
1900
1901 struct file_and_directory
1902 {
1903   /* The filename.  This is never NULL.  */
1904   const char *name;
1905
1906   /* The compilation directory.  NULL if not known.  If we needed to
1907      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1908      points directly to the DW_AT_comp_dir string attribute owned by
1909      the obstack that owns the DIE.  */
1910   const char *comp_dir;
1911
1912   /* If we needed to build a new string for comp_dir, this is what
1913      owns the storage.  */
1914   std::string comp_dir_storage;
1915 };
1916
1917 static file_and_directory find_file_and_directory (struct die_info *die,
1918                                                    struct dwarf2_cu *cu);
1919
1920 static char *file_full_name (int file, struct line_header *lh,
1921                              const char *comp_dir);
1922
1923 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1924 enum class rcuh_kind { COMPILE, TYPE };
1925
1926 static const gdb_byte *read_and_check_comp_unit_head
1927   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1928    struct comp_unit_head *header,
1929    struct dwarf2_section_info *section,
1930    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1931    rcuh_kind section_kind);
1932
1933 static void init_cutu_and_read_dies
1934   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1935    int use_existing_cu, int keep,
1936    die_reader_func_ftype *die_reader_func, void *data);
1937
1938 static void init_cutu_and_read_dies_simple
1939   (struct dwarf2_per_cu_data *this_cu,
1940    die_reader_func_ftype *die_reader_func, void *data);
1941
1942 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1943
1944 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1945
1946 static struct dwo_unit *lookup_dwo_unit_in_dwp
1947   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1948    struct dwp_file *dwp_file, const char *comp_dir,
1949    ULONGEST signature, int is_debug_types);
1950
1951 static struct dwp_file *get_dwp_file
1952   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1953
1954 static struct dwo_unit *lookup_dwo_comp_unit
1955   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1956
1957 static struct dwo_unit *lookup_dwo_type_unit
1958   (struct signatured_type *, const char *, const char *);
1959
1960 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1961
1962 static void free_dwo_file (struct dwo_file *);
1963
1964 /* A unique_ptr helper to free a dwo_file.  */
1965
1966 struct dwo_file_deleter
1967 {
1968   void operator() (struct dwo_file *df) const
1969   {
1970     free_dwo_file (df);
1971   }
1972 };
1973
1974 /* A unique pointer to a dwo_file.  */
1975
1976 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1977
1978 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
1979
1980 static void check_producer (struct dwarf2_cu *cu);
1981
1982 static void free_line_header_voidp (void *arg);
1983 \f
1984 /* Various complaints about symbol reading that don't abort the process.  */
1985
1986 static void
1987 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1988 {
1989   complaint (&symfile_complaints,
1990              _("statement list doesn't fit in .debug_line section"));
1991 }
1992
1993 static void
1994 dwarf2_debug_line_missing_file_complaint (void)
1995 {
1996   complaint (&symfile_complaints,
1997              _(".debug_line section has line data without a file"));
1998 }
1999
2000 static void
2001 dwarf2_debug_line_missing_end_sequence_complaint (void)
2002 {
2003   complaint (&symfile_complaints,
2004              _(".debug_line section has line "
2005                "program sequence without an end"));
2006 }
2007
2008 static void
2009 dwarf2_complex_location_expr_complaint (void)
2010 {
2011   complaint (&symfile_complaints, _("location expression too complex"));
2012 }
2013
2014 static void
2015 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2016                                               int arg3)
2017 {
2018   complaint (&symfile_complaints,
2019              _("const value length mismatch for '%s', got %d, expected %d"),
2020              arg1, arg2, arg3);
2021 }
2022
2023 static void
2024 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2025 {
2026   complaint (&symfile_complaints,
2027              _("debug info runs off end of %s section"
2028                " [in module %s]"),
2029              get_section_name (section),
2030              get_section_file_name (section));
2031 }
2032
2033 static void
2034 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2035 {
2036   complaint (&symfile_complaints,
2037              _("macro debug info contains a "
2038                "malformed macro definition:\n`%s'"),
2039              arg1);
2040 }
2041
2042 static void
2043 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2044 {
2045   complaint (&symfile_complaints,
2046              _("invalid attribute class or form for '%s' in '%s'"),
2047              arg1, arg2);
2048 }
2049
2050 /* Hash function for line_header_hash.  */
2051
2052 static hashval_t
2053 line_header_hash (const struct line_header *ofs)
2054 {
2055   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2056 }
2057
2058 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2059
2060 static hashval_t
2061 line_header_hash_voidp (const void *item)
2062 {
2063   const struct line_header *ofs = (const struct line_header *) item;
2064
2065   return line_header_hash (ofs);
2066 }
2067
2068 /* Equality function for line_header_hash.  */
2069
2070 static int
2071 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2072 {
2073   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2074   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2075
2076   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2077           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2078 }
2079
2080 \f
2081
2082 /* Read the given attribute value as an address, taking the attribute's
2083    form into account.  */
2084
2085 static CORE_ADDR
2086 attr_value_as_address (struct attribute *attr)
2087 {
2088   CORE_ADDR addr;
2089
2090   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2091     {
2092       /* Aside from a few clearly defined exceptions, attributes that
2093          contain an address must always be in DW_FORM_addr form.
2094          Unfortunately, some compilers happen to be violating this
2095          requirement by encoding addresses using other forms, such
2096          as DW_FORM_data4 for example.  For those broken compilers,
2097          we try to do our best, without any guarantee of success,
2098          to interpret the address correctly.  It would also be nice
2099          to generate a complaint, but that would require us to maintain
2100          a list of legitimate cases where a non-address form is allowed,
2101          as well as update callers to pass in at least the CU's DWARF
2102          version.  This is more overhead than what we're willing to
2103          expand for a pretty rare case.  */
2104       addr = DW_UNSND (attr);
2105     }
2106   else
2107     addr = DW_ADDR (attr);
2108
2109   return addr;
2110 }
2111
2112 /* See declaration.  */
2113
2114 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2115                                         const dwarf2_debug_sections *names)
2116   : objfile (objfile_)
2117 {
2118   if (names == NULL)
2119     names = &dwarf2_elf_names;
2120
2121   bfd *obfd = objfile->obfd;
2122
2123   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2124     locate_sections (obfd, sec, *names);
2125 }
2126
2127 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2128
2129 dwarf2_per_objfile::~dwarf2_per_objfile ()
2130 {
2131   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2132   free_cached_comp_units ();
2133
2134   if (quick_file_names_table)
2135     htab_delete (quick_file_names_table);
2136
2137   if (line_header_hash)
2138     htab_delete (line_header_hash);
2139
2140   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2141     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2142
2143   for (signatured_type *sig_type : all_type_units)
2144     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2145
2146   VEC_free (dwarf2_section_info_def, types);
2147
2148   if (dwo_files != NULL)
2149     free_dwo_files (dwo_files, objfile);
2150   if (dwp_file != NULL)
2151     gdb_bfd_unref (dwp_file->dbfd);
2152
2153   if (dwz_file != NULL && dwz_file->dwz_bfd)
2154     gdb_bfd_unref (dwz_file->dwz_bfd);
2155
2156   if (index_table != NULL)
2157     index_table->~mapped_index ();
2158
2159   /* Everything else should be on the objfile obstack.  */
2160 }
2161
2162 /* See declaration.  */
2163
2164 void
2165 dwarf2_per_objfile::free_cached_comp_units ()
2166 {
2167   dwarf2_per_cu_data *per_cu = read_in_chain;
2168   dwarf2_per_cu_data **last_chain = &read_in_chain;
2169   while (per_cu != NULL)
2170     {
2171       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2172
2173       delete per_cu->cu;
2174       *last_chain = next_cu;
2175       per_cu = next_cu;
2176     }
2177 }
2178
2179 /* A helper class that calls free_cached_comp_units on
2180    destruction.  */
2181
2182 class free_cached_comp_units
2183 {
2184 public:
2185
2186   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2187     : m_per_objfile (per_objfile)
2188   {
2189   }
2190
2191   ~free_cached_comp_units ()
2192   {
2193     m_per_objfile->free_cached_comp_units ();
2194   }
2195
2196   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2197
2198 private:
2199
2200   dwarf2_per_objfile *m_per_objfile;
2201 };
2202
2203 /* Try to locate the sections we need for DWARF 2 debugging
2204    information and return true if we have enough to do something.
2205    NAMES points to the dwarf2 section names, or is NULL if the standard
2206    ELF names are used.  */
2207
2208 int
2209 dwarf2_has_info (struct objfile *objfile,
2210                  const struct dwarf2_debug_sections *names)
2211 {
2212   if (objfile->flags & OBJF_READNEVER)
2213     return 0;
2214
2215   struct dwarf2_per_objfile *dwarf2_per_objfile
2216     = get_dwarf2_per_objfile (objfile);
2217
2218   if (dwarf2_per_objfile == NULL)
2219     {
2220       /* Initialize per-objfile state.  */
2221       dwarf2_per_objfile
2222         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2223                                                                      names);
2224       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2225     }
2226   return (!dwarf2_per_objfile->info.is_virtual
2227           && dwarf2_per_objfile->info.s.section != NULL
2228           && !dwarf2_per_objfile->abbrev.is_virtual
2229           && dwarf2_per_objfile->abbrev.s.section != NULL);
2230 }
2231
2232 /* Return the containing section of virtual section SECTION.  */
2233
2234 static struct dwarf2_section_info *
2235 get_containing_section (const struct dwarf2_section_info *section)
2236 {
2237   gdb_assert (section->is_virtual);
2238   return section->s.containing_section;
2239 }
2240
2241 /* Return the bfd owner of SECTION.  */
2242
2243 static struct bfd *
2244 get_section_bfd_owner (const struct dwarf2_section_info *section)
2245 {
2246   if (section->is_virtual)
2247     {
2248       section = get_containing_section (section);
2249       gdb_assert (!section->is_virtual);
2250     }
2251   return section->s.section->owner;
2252 }
2253
2254 /* Return the bfd section of SECTION.
2255    Returns NULL if the section is not present.  */
2256
2257 static asection *
2258 get_section_bfd_section (const struct dwarf2_section_info *section)
2259 {
2260   if (section->is_virtual)
2261     {
2262       section = get_containing_section (section);
2263       gdb_assert (!section->is_virtual);
2264     }
2265   return section->s.section;
2266 }
2267
2268 /* Return the name of SECTION.  */
2269
2270 static const char *
2271 get_section_name (const struct dwarf2_section_info *section)
2272 {
2273   asection *sectp = get_section_bfd_section (section);
2274
2275   gdb_assert (sectp != NULL);
2276   return bfd_section_name (get_section_bfd_owner (section), sectp);
2277 }
2278
2279 /* Return the name of the file SECTION is in.  */
2280
2281 static const char *
2282 get_section_file_name (const struct dwarf2_section_info *section)
2283 {
2284   bfd *abfd = get_section_bfd_owner (section);
2285
2286   return bfd_get_filename (abfd);
2287 }
2288
2289 /* Return the id of SECTION.
2290    Returns 0 if SECTION doesn't exist.  */
2291
2292 static int
2293 get_section_id (const struct dwarf2_section_info *section)
2294 {
2295   asection *sectp = get_section_bfd_section (section);
2296
2297   if (sectp == NULL)
2298     return 0;
2299   return sectp->id;
2300 }
2301
2302 /* Return the flags of SECTION.
2303    SECTION (or containing section if this is a virtual section) must exist.  */
2304
2305 static int
2306 get_section_flags (const struct dwarf2_section_info *section)
2307 {
2308   asection *sectp = get_section_bfd_section (section);
2309
2310   gdb_assert (sectp != NULL);
2311   return bfd_get_section_flags (sectp->owner, sectp);
2312 }
2313
2314 /* When loading sections, we look either for uncompressed section or for
2315    compressed section names.  */
2316
2317 static int
2318 section_is_p (const char *section_name,
2319               const struct dwarf2_section_names *names)
2320 {
2321   if (names->normal != NULL
2322       && strcmp (section_name, names->normal) == 0)
2323     return 1;
2324   if (names->compressed != NULL
2325       && strcmp (section_name, names->compressed) == 0)
2326     return 1;
2327   return 0;
2328 }
2329
2330 /* See declaration.  */
2331
2332 void
2333 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2334                                      const dwarf2_debug_sections &names)
2335 {
2336   flagword aflag = bfd_get_section_flags (abfd, sectp);
2337
2338   if ((aflag & SEC_HAS_CONTENTS) == 0)
2339     {
2340     }
2341   else if (section_is_p (sectp->name, &names.info))
2342     {
2343       this->info.s.section = sectp;
2344       this->info.size = bfd_get_section_size (sectp);
2345     }
2346   else if (section_is_p (sectp->name, &names.abbrev))
2347     {
2348       this->abbrev.s.section = sectp;
2349       this->abbrev.size = bfd_get_section_size (sectp);
2350     }
2351   else if (section_is_p (sectp->name, &names.line))
2352     {
2353       this->line.s.section = sectp;
2354       this->line.size = bfd_get_section_size (sectp);
2355     }
2356   else if (section_is_p (sectp->name, &names.loc))
2357     {
2358       this->loc.s.section = sectp;
2359       this->loc.size = bfd_get_section_size (sectp);
2360     }
2361   else if (section_is_p (sectp->name, &names.loclists))
2362     {
2363       this->loclists.s.section = sectp;
2364       this->loclists.size = bfd_get_section_size (sectp);
2365     }
2366   else if (section_is_p (sectp->name, &names.macinfo))
2367     {
2368       this->macinfo.s.section = sectp;
2369       this->macinfo.size = bfd_get_section_size (sectp);
2370     }
2371   else if (section_is_p (sectp->name, &names.macro))
2372     {
2373       this->macro.s.section = sectp;
2374       this->macro.size = bfd_get_section_size (sectp);
2375     }
2376   else if (section_is_p (sectp->name, &names.str))
2377     {
2378       this->str.s.section = sectp;
2379       this->str.size = bfd_get_section_size (sectp);
2380     }
2381   else if (section_is_p (sectp->name, &names.line_str))
2382     {
2383       this->line_str.s.section = sectp;
2384       this->line_str.size = bfd_get_section_size (sectp);
2385     }
2386   else if (section_is_p (sectp->name, &names.addr))
2387     {
2388       this->addr.s.section = sectp;
2389       this->addr.size = bfd_get_section_size (sectp);
2390     }
2391   else if (section_is_p (sectp->name, &names.frame))
2392     {
2393       this->frame.s.section = sectp;
2394       this->frame.size = bfd_get_section_size (sectp);
2395     }
2396   else if (section_is_p (sectp->name, &names.eh_frame))
2397     {
2398       this->eh_frame.s.section = sectp;
2399       this->eh_frame.size = bfd_get_section_size (sectp);
2400     }
2401   else if (section_is_p (sectp->name, &names.ranges))
2402     {
2403       this->ranges.s.section = sectp;
2404       this->ranges.size = bfd_get_section_size (sectp);
2405     }
2406   else if (section_is_p (sectp->name, &names.rnglists))
2407     {
2408       this->rnglists.s.section = sectp;
2409       this->rnglists.size = bfd_get_section_size (sectp);
2410     }
2411   else if (section_is_p (sectp->name, &names.types))
2412     {
2413       struct dwarf2_section_info type_section;
2414
2415       memset (&type_section, 0, sizeof (type_section));
2416       type_section.s.section = sectp;
2417       type_section.size = bfd_get_section_size (sectp);
2418
2419       VEC_safe_push (dwarf2_section_info_def, this->types,
2420                      &type_section);
2421     }
2422   else if (section_is_p (sectp->name, &names.gdb_index))
2423     {
2424       this->gdb_index.s.section = sectp;
2425       this->gdb_index.size = bfd_get_section_size (sectp);
2426     }
2427   else if (section_is_p (sectp->name, &names.debug_names))
2428     {
2429       this->debug_names.s.section = sectp;
2430       this->debug_names.size = bfd_get_section_size (sectp);
2431     }
2432   else if (section_is_p (sectp->name, &names.debug_aranges))
2433     {
2434       this->debug_aranges.s.section = sectp;
2435       this->debug_aranges.size = bfd_get_section_size (sectp);
2436     }
2437
2438   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2439       && bfd_section_vma (abfd, sectp) == 0)
2440     this->has_section_at_zero = true;
2441 }
2442
2443 /* A helper function that decides whether a section is empty,
2444    or not present.  */
2445
2446 static int
2447 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2448 {
2449   if (section->is_virtual)
2450     return section->size == 0;
2451   return section->s.section == NULL || section->size == 0;
2452 }
2453
2454 /* See dwarf2read.h.  */
2455
2456 void
2457 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2458 {
2459   asection *sectp;
2460   bfd *abfd;
2461   gdb_byte *buf, *retbuf;
2462
2463   if (info->readin)
2464     return;
2465   info->buffer = NULL;
2466   info->readin = 1;
2467
2468   if (dwarf2_section_empty_p (info))
2469     return;
2470
2471   sectp = get_section_bfd_section (info);
2472
2473   /* If this is a virtual section we need to read in the real one first.  */
2474   if (info->is_virtual)
2475     {
2476       struct dwarf2_section_info *containing_section =
2477         get_containing_section (info);
2478
2479       gdb_assert (sectp != NULL);
2480       if ((sectp->flags & SEC_RELOC) != 0)
2481         {
2482           error (_("Dwarf Error: DWP format V2 with relocations is not"
2483                    " supported in section %s [in module %s]"),
2484                  get_section_name (info), get_section_file_name (info));
2485         }
2486       dwarf2_read_section (objfile, containing_section);
2487       /* Other code should have already caught virtual sections that don't
2488          fit.  */
2489       gdb_assert (info->virtual_offset + info->size
2490                   <= containing_section->size);
2491       /* If the real section is empty or there was a problem reading the
2492          section we shouldn't get here.  */
2493       gdb_assert (containing_section->buffer != NULL);
2494       info->buffer = containing_section->buffer + info->virtual_offset;
2495       return;
2496     }
2497
2498   /* If the section has relocations, we must read it ourselves.
2499      Otherwise we attach it to the BFD.  */
2500   if ((sectp->flags & SEC_RELOC) == 0)
2501     {
2502       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2503       return;
2504     }
2505
2506   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2507   info->buffer = buf;
2508
2509   /* When debugging .o files, we may need to apply relocations; see
2510      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2511      We never compress sections in .o files, so we only need to
2512      try this when the section is not compressed.  */
2513   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2514   if (retbuf != NULL)
2515     {
2516       info->buffer = retbuf;
2517       return;
2518     }
2519
2520   abfd = get_section_bfd_owner (info);
2521   gdb_assert (abfd != NULL);
2522
2523   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2524       || bfd_bread (buf, info->size, abfd) != info->size)
2525     {
2526       error (_("Dwarf Error: Can't read DWARF data"
2527                " in section %s [in module %s]"),
2528              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2529     }
2530 }
2531
2532 /* A helper function that returns the size of a section in a safe way.
2533    If you are positive that the section has been read before using the
2534    size, then it is safe to refer to the dwarf2_section_info object's
2535    "size" field directly.  In other cases, you must call this
2536    function, because for compressed sections the size field is not set
2537    correctly until the section has been read.  */
2538
2539 static bfd_size_type
2540 dwarf2_section_size (struct objfile *objfile,
2541                      struct dwarf2_section_info *info)
2542 {
2543   if (!info->readin)
2544     dwarf2_read_section (objfile, info);
2545   return info->size;
2546 }
2547
2548 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2549    SECTION_NAME.  */
2550
2551 void
2552 dwarf2_get_section_info (struct objfile *objfile,
2553                          enum dwarf2_section_enum sect,
2554                          asection **sectp, const gdb_byte **bufp,
2555                          bfd_size_type *sizep)
2556 {
2557   struct dwarf2_per_objfile *data
2558     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2559                                                   dwarf2_objfile_data_key);
2560   struct dwarf2_section_info *info;
2561
2562   /* We may see an objfile without any DWARF, in which case we just
2563      return nothing.  */
2564   if (data == NULL)
2565     {
2566       *sectp = NULL;
2567       *bufp = NULL;
2568       *sizep = 0;
2569       return;
2570     }
2571   switch (sect)
2572     {
2573     case DWARF2_DEBUG_FRAME:
2574       info = &data->frame;
2575       break;
2576     case DWARF2_EH_FRAME:
2577       info = &data->eh_frame;
2578       break;
2579     default:
2580       gdb_assert_not_reached ("unexpected section");
2581     }
2582
2583   dwarf2_read_section (objfile, info);
2584
2585   *sectp = get_section_bfd_section (info);
2586   *bufp = info->buffer;
2587   *sizep = info->size;
2588 }
2589
2590 /* A helper function to find the sections for a .dwz file.  */
2591
2592 static void
2593 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2594 {
2595   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2596
2597   /* Note that we only support the standard ELF names, because .dwz
2598      is ELF-only (at the time of writing).  */
2599   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2600     {
2601       dwz_file->abbrev.s.section = sectp;
2602       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2603     }
2604   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2605     {
2606       dwz_file->info.s.section = sectp;
2607       dwz_file->info.size = bfd_get_section_size (sectp);
2608     }
2609   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2610     {
2611       dwz_file->str.s.section = sectp;
2612       dwz_file->str.size = bfd_get_section_size (sectp);
2613     }
2614   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2615     {
2616       dwz_file->line.s.section = sectp;
2617       dwz_file->line.size = bfd_get_section_size (sectp);
2618     }
2619   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2620     {
2621       dwz_file->macro.s.section = sectp;
2622       dwz_file->macro.size = bfd_get_section_size (sectp);
2623     }
2624   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2625     {
2626       dwz_file->gdb_index.s.section = sectp;
2627       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2628     }
2629   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2630     {
2631       dwz_file->debug_names.s.section = sectp;
2632       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2633     }
2634 }
2635
2636 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2637    there is no .gnu_debugaltlink section in the file.  Error if there
2638    is such a section but the file cannot be found.  */
2639
2640 static struct dwz_file *
2641 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2642 {
2643   const char *filename;
2644   struct dwz_file *result;
2645   bfd_size_type buildid_len_arg;
2646   size_t buildid_len;
2647   bfd_byte *buildid;
2648
2649   if (dwarf2_per_objfile->dwz_file != NULL)
2650     return dwarf2_per_objfile->dwz_file;
2651
2652   bfd_set_error (bfd_error_no_error);
2653   gdb::unique_xmalloc_ptr<char> data
2654     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2655                                   &buildid_len_arg, &buildid));
2656   if (data == NULL)
2657     {
2658       if (bfd_get_error () == bfd_error_no_error)
2659         return NULL;
2660       error (_("could not read '.gnu_debugaltlink' section: %s"),
2661              bfd_errmsg (bfd_get_error ()));
2662     }
2663
2664   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2665
2666   buildid_len = (size_t) buildid_len_arg;
2667
2668   filename = data.get ();
2669
2670   std::string abs_storage;
2671   if (!IS_ABSOLUTE_PATH (filename))
2672     {
2673       gdb::unique_xmalloc_ptr<char> abs
2674         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2675
2676       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2677       filename = abs_storage.c_str ();
2678     }
2679
2680   /* First try the file name given in the section.  If that doesn't
2681      work, try to use the build-id instead.  */
2682   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2683   if (dwz_bfd != NULL)
2684     {
2685       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2686         dwz_bfd.release ();
2687     }
2688
2689   if (dwz_bfd == NULL)
2690     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2691
2692   if (dwz_bfd == NULL)
2693     error (_("could not find '.gnu_debugaltlink' file for %s"),
2694            objfile_name (dwarf2_per_objfile->objfile));
2695
2696   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2697                            struct dwz_file);
2698   result->dwz_bfd = dwz_bfd.release ();
2699
2700   bfd_map_over_sections (result->dwz_bfd, locate_dwz_sections, result);
2701
2702   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, result->dwz_bfd);
2703   dwarf2_per_objfile->dwz_file = result;
2704   return result;
2705 }
2706 \f
2707 /* DWARF quick_symbols_functions support.  */
2708
2709 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2710    unique line tables, so we maintain a separate table of all .debug_line
2711    derived entries to support the sharing.
2712    All the quick functions need is the list of file names.  We discard the
2713    line_header when we're done and don't need to record it here.  */
2714 struct quick_file_names
2715 {
2716   /* The data used to construct the hash key.  */
2717   struct stmt_list_hash hash;
2718
2719   /* The number of entries in file_names, real_names.  */
2720   unsigned int num_file_names;
2721
2722   /* The file names from the line table, after being run through
2723      file_full_name.  */
2724   const char **file_names;
2725
2726   /* The file names from the line table after being run through
2727      gdb_realpath.  These are computed lazily.  */
2728   const char **real_names;
2729 };
2730
2731 /* When using the index (and thus not using psymtabs), each CU has an
2732    object of this type.  This is used to hold information needed by
2733    the various "quick" methods.  */
2734 struct dwarf2_per_cu_quick_data
2735 {
2736   /* The file table.  This can be NULL if there was no file table
2737      or it's currently not read in.
2738      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2739   struct quick_file_names *file_names;
2740
2741   /* The corresponding symbol table.  This is NULL if symbols for this
2742      CU have not yet been read.  */
2743   struct compunit_symtab *compunit_symtab;
2744
2745   /* A temporary mark bit used when iterating over all CUs in
2746      expand_symtabs_matching.  */
2747   unsigned int mark : 1;
2748
2749   /* True if we've tried to read the file table and found there isn't one.
2750      There will be no point in trying to read it again next time.  */
2751   unsigned int no_file_data : 1;
2752 };
2753
2754 /* Utility hash function for a stmt_list_hash.  */
2755
2756 static hashval_t
2757 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2758 {
2759   hashval_t v = 0;
2760
2761   if (stmt_list_hash->dwo_unit != NULL)
2762     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2763   v += to_underlying (stmt_list_hash->line_sect_off);
2764   return v;
2765 }
2766
2767 /* Utility equality function for a stmt_list_hash.  */
2768
2769 static int
2770 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2771                     const struct stmt_list_hash *rhs)
2772 {
2773   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2774     return 0;
2775   if (lhs->dwo_unit != NULL
2776       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2777     return 0;
2778
2779   return lhs->line_sect_off == rhs->line_sect_off;
2780 }
2781
2782 /* Hash function for a quick_file_names.  */
2783
2784 static hashval_t
2785 hash_file_name_entry (const void *e)
2786 {
2787   const struct quick_file_names *file_data
2788     = (const struct quick_file_names *) e;
2789
2790   return hash_stmt_list_entry (&file_data->hash);
2791 }
2792
2793 /* Equality function for a quick_file_names.  */
2794
2795 static int
2796 eq_file_name_entry (const void *a, const void *b)
2797 {
2798   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2799   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2800
2801   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2802 }
2803
2804 /* Delete function for a quick_file_names.  */
2805
2806 static void
2807 delete_file_name_entry (void *e)
2808 {
2809   struct quick_file_names *file_data = (struct quick_file_names *) e;
2810   int i;
2811
2812   for (i = 0; i < file_data->num_file_names; ++i)
2813     {
2814       xfree ((void*) file_data->file_names[i]);
2815       if (file_data->real_names)
2816         xfree ((void*) file_data->real_names[i]);
2817     }
2818
2819   /* The space for the struct itself lives on objfile_obstack,
2820      so we don't free it here.  */
2821 }
2822
2823 /* Create a quick_file_names hash table.  */
2824
2825 static htab_t
2826 create_quick_file_names_table (unsigned int nr_initial_entries)
2827 {
2828   return htab_create_alloc (nr_initial_entries,
2829                             hash_file_name_entry, eq_file_name_entry,
2830                             delete_file_name_entry, xcalloc, xfree);
2831 }
2832
2833 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2834    have to be created afterwards.  You should call age_cached_comp_units after
2835    processing PER_CU->CU.  dw2_setup must have been already called.  */
2836
2837 static void
2838 load_cu (struct dwarf2_per_cu_data *per_cu)
2839 {
2840   if (per_cu->is_debug_types)
2841     load_full_type_unit (per_cu);
2842   else
2843     load_full_comp_unit (per_cu, language_minimal);
2844
2845   if (per_cu->cu == NULL)
2846     return;  /* Dummy CU.  */
2847
2848   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2849 }
2850
2851 /* Read in the symbols for PER_CU.  */
2852
2853 static void
2854 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2855 {
2856   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2857
2858   /* Skip type_unit_groups, reading the type units they contain
2859      is handled elsewhere.  */
2860   if (IS_TYPE_UNIT_GROUP (per_cu))
2861     return;
2862
2863   /* The destructor of dwarf2_queue_guard frees any entries left on
2864      the queue.  After this point we're guaranteed to leave this function
2865      with the dwarf queue empty.  */
2866   dwarf2_queue_guard q_guard;
2867
2868   if (dwarf2_per_objfile->using_index
2869       ? per_cu->v.quick->compunit_symtab == NULL
2870       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2871     {
2872       queue_comp_unit (per_cu, language_minimal);
2873       load_cu (per_cu);
2874
2875       /* If we just loaded a CU from a DWO, and we're working with an index
2876          that may badly handle TUs, load all the TUs in that DWO as well.
2877          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2878       if (!per_cu->is_debug_types
2879           && per_cu->cu != NULL
2880           && per_cu->cu->dwo_unit != NULL
2881           && dwarf2_per_objfile->index_table != NULL
2882           && dwarf2_per_objfile->index_table->version <= 7
2883           /* DWP files aren't supported yet.  */
2884           && get_dwp_file (dwarf2_per_objfile) == NULL)
2885         queue_and_load_all_dwo_tus (per_cu);
2886     }
2887
2888   process_queue (dwarf2_per_objfile);
2889
2890   /* Age the cache, releasing compilation units that have not
2891      been used recently.  */
2892   age_cached_comp_units (dwarf2_per_objfile);
2893 }
2894
2895 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2896    the objfile from which this CU came.  Returns the resulting symbol
2897    table.  */
2898
2899 static struct compunit_symtab *
2900 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2901 {
2902   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2903
2904   gdb_assert (dwarf2_per_objfile->using_index);
2905   if (!per_cu->v.quick->compunit_symtab)
2906     {
2907       free_cached_comp_units freer (dwarf2_per_objfile);
2908       scoped_restore decrementer = increment_reading_symtab ();
2909       dw2_do_instantiate_symtab (per_cu);
2910       process_cu_includes (dwarf2_per_objfile);
2911     }
2912
2913   return per_cu->v.quick->compunit_symtab;
2914 }
2915
2916 /* See declaration.  */
2917
2918 dwarf2_per_cu_data *
2919 dwarf2_per_objfile::get_cutu (int index)
2920 {
2921   if (index >= this->all_comp_units.size ())
2922     {
2923       index -= this->all_comp_units.size ();
2924       gdb_assert (index < this->all_type_units.size ());
2925       return &this->all_type_units[index]->per_cu;
2926     }
2927
2928   return this->all_comp_units[index];
2929 }
2930
2931 /* See declaration.  */
2932
2933 dwarf2_per_cu_data *
2934 dwarf2_per_objfile::get_cu (int index)
2935 {
2936   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2937
2938   return this->all_comp_units[index];
2939 }
2940
2941 /* See declaration.  */
2942
2943 signatured_type *
2944 dwarf2_per_objfile::get_tu (int index)
2945 {
2946   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2947
2948   return this->all_type_units[index];
2949 }
2950
2951 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2952    objfile_obstack, and constructed with the specified field
2953    values.  */
2954
2955 static dwarf2_per_cu_data *
2956 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2957                           struct dwarf2_section_info *section,
2958                           int is_dwz,
2959                           sect_offset sect_off, ULONGEST length)
2960 {
2961   struct objfile *objfile = dwarf2_per_objfile->objfile;
2962   dwarf2_per_cu_data *the_cu
2963     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2964                      struct dwarf2_per_cu_data);
2965   the_cu->sect_off = sect_off;
2966   the_cu->length = length;
2967   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2968   the_cu->section = section;
2969   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                                    struct dwarf2_per_cu_quick_data);
2971   the_cu->is_dwz = is_dwz;
2972   return the_cu;
2973 }
2974
2975 /* A helper for create_cus_from_index that handles a given list of
2976    CUs.  */
2977
2978 static void
2979 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2980                             const gdb_byte *cu_list, offset_type n_elements,
2981                             struct dwarf2_section_info *section,
2982                             int is_dwz)
2983 {
2984   for (offset_type i = 0; i < n_elements; i += 2)
2985     {
2986       gdb_static_assert (sizeof (ULONGEST) >= 8);
2987
2988       sect_offset sect_off
2989         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2990       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2991       cu_list += 2 * 8;
2992
2993       dwarf2_per_cu_data *per_cu
2994         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
2995                                      sect_off, length);
2996       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
2997     }
2998 }
2999
3000 /* Read the CU list from the mapped index, and use it to create all
3001    the CU objects for this objfile.  */
3002
3003 static void
3004 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3005                        const gdb_byte *cu_list, offset_type cu_list_elements,
3006                        const gdb_byte *dwz_list, offset_type dwz_elements)
3007 {
3008   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3009   dwarf2_per_objfile->all_comp_units.reserve
3010     ((cu_list_elements + dwz_elements) / 2);
3011
3012   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3013                               &dwarf2_per_objfile->info, 0);
3014
3015   if (dwz_elements == 0)
3016     return;
3017
3018   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3019   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3020                               &dwz->info, 1);
3021 }
3022
3023 /* Create the signatured type hash table from the index.  */
3024
3025 static void
3026 create_signatured_type_table_from_index
3027   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3028    struct dwarf2_section_info *section,
3029    const gdb_byte *bytes,
3030    offset_type elements)
3031 {
3032   struct objfile *objfile = dwarf2_per_objfile->objfile;
3033
3034   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3035   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3036
3037   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3038
3039   for (offset_type i = 0; i < elements; i += 3)
3040     {
3041       struct signatured_type *sig_type;
3042       ULONGEST signature;
3043       void **slot;
3044       cu_offset type_offset_in_tu;
3045
3046       gdb_static_assert (sizeof (ULONGEST) >= 8);
3047       sect_offset sect_off
3048         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3049       type_offset_in_tu
3050         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3051                                                 BFD_ENDIAN_LITTLE);
3052       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3053       bytes += 3 * 8;
3054
3055       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3056                                  struct signatured_type);
3057       sig_type->signature = signature;
3058       sig_type->type_offset_in_tu = type_offset_in_tu;
3059       sig_type->per_cu.is_debug_types = 1;
3060       sig_type->per_cu.section = section;
3061       sig_type->per_cu.sect_off = sect_off;
3062       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3063       sig_type->per_cu.v.quick
3064         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3065                           struct dwarf2_per_cu_quick_data);
3066
3067       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3068       *slot = sig_type;
3069
3070       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3071     }
3072
3073   dwarf2_per_objfile->signatured_types = sig_types_hash;
3074 }
3075
3076 /* Create the signatured type hash table from .debug_names.  */
3077
3078 static void
3079 create_signatured_type_table_from_debug_names
3080   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3081    const mapped_debug_names &map,
3082    struct dwarf2_section_info *section,
3083    struct dwarf2_section_info *abbrev_section)
3084 {
3085   struct objfile *objfile = dwarf2_per_objfile->objfile;
3086
3087   dwarf2_read_section (objfile, section);
3088   dwarf2_read_section (objfile, abbrev_section);
3089
3090   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3091   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3092
3093   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3094
3095   for (uint32_t i = 0; i < map.tu_count; ++i)
3096     {
3097       struct signatured_type *sig_type;
3098       void **slot;
3099
3100       sect_offset sect_off
3101         = (sect_offset) (extract_unsigned_integer
3102                          (map.tu_table_reordered + i * map.offset_size,
3103                           map.offset_size,
3104                           map.dwarf5_byte_order));
3105
3106       comp_unit_head cu_header;
3107       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3108                                      abbrev_section,
3109                                      section->buffer + to_underlying (sect_off),
3110                                      rcuh_kind::TYPE);
3111
3112       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3113                                  struct signatured_type);
3114       sig_type->signature = cu_header.signature;
3115       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3116       sig_type->per_cu.is_debug_types = 1;
3117       sig_type->per_cu.section = section;
3118       sig_type->per_cu.sect_off = sect_off;
3119       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3120       sig_type->per_cu.v.quick
3121         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3122                           struct dwarf2_per_cu_quick_data);
3123
3124       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3125       *slot = sig_type;
3126
3127       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3128     }
3129
3130   dwarf2_per_objfile->signatured_types = sig_types_hash;
3131 }
3132
3133 /* Read the address map data from the mapped index, and use it to
3134    populate the objfile's psymtabs_addrmap.  */
3135
3136 static void
3137 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3138                            struct mapped_index *index)
3139 {
3140   struct objfile *objfile = dwarf2_per_objfile->objfile;
3141   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3142   const gdb_byte *iter, *end;
3143   struct addrmap *mutable_map;
3144   CORE_ADDR baseaddr;
3145
3146   auto_obstack temp_obstack;
3147
3148   mutable_map = addrmap_create_mutable (&temp_obstack);
3149
3150   iter = index->address_table.data ();
3151   end = iter + index->address_table.size ();
3152
3153   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3154
3155   while (iter < end)
3156     {
3157       ULONGEST hi, lo, cu_index;
3158       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3159       iter += 8;
3160       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3161       iter += 8;
3162       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3163       iter += 4;
3164
3165       if (lo > hi)
3166         {
3167           complaint (&symfile_complaints,
3168                      _(".gdb_index address table has invalid range (%s - %s)"),
3169                      hex_string (lo), hex_string (hi));
3170           continue;
3171         }
3172
3173       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3174         {
3175           complaint (&symfile_complaints,
3176                      _(".gdb_index address table has invalid CU number %u"),
3177                      (unsigned) cu_index);
3178           continue;
3179         }
3180
3181       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
3182       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
3183       addrmap_set_empty (mutable_map, lo, hi - 1,
3184                          dwarf2_per_objfile->get_cu (cu_index));
3185     }
3186
3187   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3188                                                     &objfile->objfile_obstack);
3189 }
3190
3191 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3192    populate the objfile's psymtabs_addrmap.  */
3193
3194 static void
3195 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3196                              struct dwarf2_section_info *section)
3197 {
3198   struct objfile *objfile = dwarf2_per_objfile->objfile;
3199   bfd *abfd = objfile->obfd;
3200   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3201   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3202                                        SECT_OFF_TEXT (objfile));
3203
3204   auto_obstack temp_obstack;
3205   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3206
3207   std::unordered_map<sect_offset,
3208                      dwarf2_per_cu_data *,
3209                      gdb::hash_enum<sect_offset>>
3210     debug_info_offset_to_per_cu;
3211   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3212     {
3213       const auto insertpair
3214         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3215       if (!insertpair.second)
3216         {
3217           warning (_("Section .debug_aranges in %s has duplicate "
3218                      "debug_info_offset %s, ignoring .debug_aranges."),
3219                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3220           return;
3221         }
3222     }
3223
3224   dwarf2_read_section (objfile, section);
3225
3226   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3227
3228   const gdb_byte *addr = section->buffer;
3229
3230   while (addr < section->buffer + section->size)
3231     {
3232       const gdb_byte *const entry_addr = addr;
3233       unsigned int bytes_read;
3234
3235       const LONGEST entry_length = read_initial_length (abfd, addr,
3236                                                         &bytes_read);
3237       addr += bytes_read;
3238
3239       const gdb_byte *const entry_end = addr + entry_length;
3240       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3241       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3242       if (addr + entry_length > section->buffer + section->size)
3243         {
3244           warning (_("Section .debug_aranges in %s entry at offset %zu "
3245                      "length %s exceeds section length %s, "
3246                      "ignoring .debug_aranges."),
3247                    objfile_name (objfile), entry_addr - section->buffer,
3248                    plongest (bytes_read + entry_length),
3249                    pulongest (section->size));
3250           return;
3251         }
3252
3253       /* The version number.  */
3254       const uint16_t version = read_2_bytes (abfd, addr);
3255       addr += 2;
3256       if (version != 2)
3257         {
3258           warning (_("Section .debug_aranges in %s entry at offset %zu "
3259                      "has unsupported version %d, ignoring .debug_aranges."),
3260                    objfile_name (objfile), entry_addr - section->buffer,
3261                    version);
3262           return;
3263         }
3264
3265       const uint64_t debug_info_offset
3266         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3267       addr += offset_size;
3268       const auto per_cu_it
3269         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3270       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3271         {
3272           warning (_("Section .debug_aranges in %s entry at offset %zu "
3273                      "debug_info_offset %s does not exists, "
3274                      "ignoring .debug_aranges."),
3275                    objfile_name (objfile), entry_addr - section->buffer,
3276                    pulongest (debug_info_offset));
3277           return;
3278         }
3279       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3280
3281       const uint8_t address_size = *addr++;
3282       if (address_size < 1 || address_size > 8)
3283         {
3284           warning (_("Section .debug_aranges in %s entry at offset %zu "
3285                      "address_size %u is invalid, ignoring .debug_aranges."),
3286                    objfile_name (objfile), entry_addr - section->buffer,
3287                    address_size);
3288           return;
3289         }
3290
3291       const uint8_t segment_selector_size = *addr++;
3292       if (segment_selector_size != 0)
3293         {
3294           warning (_("Section .debug_aranges in %s entry at offset %zu "
3295                      "segment_selector_size %u is not supported, "
3296                      "ignoring .debug_aranges."),
3297                    objfile_name (objfile), entry_addr - section->buffer,
3298                    segment_selector_size);
3299           return;
3300         }
3301
3302       /* Must pad to an alignment boundary that is twice the address
3303          size.  It is undocumented by the DWARF standard but GCC does
3304          use it.  */
3305       for (size_t padding = ((-(addr - section->buffer))
3306                              & (2 * address_size - 1));
3307            padding > 0; padding--)
3308         if (*addr++ != 0)
3309           {
3310             warning (_("Section .debug_aranges in %s entry at offset %zu "
3311                        "padding is not zero, ignoring .debug_aranges."),
3312                      objfile_name (objfile), entry_addr - section->buffer);
3313             return;
3314           }
3315
3316       for (;;)
3317         {
3318           if (addr + 2 * address_size > entry_end)
3319             {
3320               warning (_("Section .debug_aranges in %s entry at offset %zu "
3321                          "address list is not properly terminated, "
3322                          "ignoring .debug_aranges."),
3323                        objfile_name (objfile), entry_addr - section->buffer);
3324               return;
3325             }
3326           ULONGEST start = extract_unsigned_integer (addr, address_size,
3327                                                      dwarf5_byte_order);
3328           addr += address_size;
3329           ULONGEST length = extract_unsigned_integer (addr, address_size,
3330                                                       dwarf5_byte_order);
3331           addr += address_size;
3332           if (start == 0 && length == 0)
3333             break;
3334           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3335             {
3336               /* Symbol was eliminated due to a COMDAT group.  */
3337               continue;
3338             }
3339           ULONGEST end = start + length;
3340           start = gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr);
3341           end = gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr);
3342           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3343         }
3344     }
3345
3346   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3347                                                     &objfile->objfile_obstack);
3348 }
3349
3350 /* Find a slot in the mapped index INDEX for the object named NAME.
3351    If NAME is found, set *VEC_OUT to point to the CU vector in the
3352    constant pool and return true.  If NAME cannot be found, return
3353    false.  */
3354
3355 static bool
3356 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3357                           offset_type **vec_out)
3358 {
3359   offset_type hash;
3360   offset_type slot, step;
3361   int (*cmp) (const char *, const char *);
3362
3363   gdb::unique_xmalloc_ptr<char> without_params;
3364   if (current_language->la_language == language_cplus
3365       || current_language->la_language == language_fortran
3366       || current_language->la_language == language_d)
3367     {
3368       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3369          not contain any.  */
3370
3371       if (strchr (name, '(') != NULL)
3372         {
3373           without_params = cp_remove_params (name);
3374
3375           if (without_params != NULL)
3376             name = without_params.get ();
3377         }
3378     }
3379
3380   /* Index version 4 did not support case insensitive searches.  But the
3381      indices for case insensitive languages are built in lowercase, therefore
3382      simulate our NAME being searched is also lowercased.  */
3383   hash = mapped_index_string_hash ((index->version == 4
3384                                     && case_sensitivity == case_sensitive_off
3385                                     ? 5 : index->version),
3386                                    name);
3387
3388   slot = hash & (index->symbol_table.size () - 1);
3389   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3390   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3391
3392   for (;;)
3393     {
3394       const char *str;
3395
3396       const auto &bucket = index->symbol_table[slot];
3397       if (bucket.name == 0 && bucket.vec == 0)
3398         return false;
3399
3400       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3401       if (!cmp (name, str))
3402         {
3403           *vec_out = (offset_type *) (index->constant_pool
3404                                       + MAYBE_SWAP (bucket.vec));
3405           return true;
3406         }
3407
3408       slot = (slot + step) & (index->symbol_table.size () - 1);
3409     }
3410 }
3411
3412 /* A helper function that reads the .gdb_index from SECTION and fills
3413    in MAP.  FILENAME is the name of the file containing the section;
3414    it is used for error reporting.  DEPRECATED_OK is true if it is
3415    ok to use deprecated sections.
3416
3417    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3418    out parameters that are filled in with information about the CU and
3419    TU lists in the section.
3420
3421    Returns 1 if all went well, 0 otherwise.  */
3422
3423 static bool
3424 read_index_from_section (struct objfile *objfile,
3425                          const char *filename,
3426                          bool deprecated_ok,
3427                          struct dwarf2_section_info *section,
3428                          struct mapped_index *map,
3429                          const gdb_byte **cu_list,
3430                          offset_type *cu_list_elements,
3431                          const gdb_byte **types_list,
3432                          offset_type *types_list_elements)
3433 {
3434   const gdb_byte *addr;
3435   offset_type version;
3436   offset_type *metadata;
3437   int i;
3438
3439   if (dwarf2_section_empty_p (section))
3440     return 0;
3441
3442   /* Older elfutils strip versions could keep the section in the main
3443      executable while splitting it for the separate debug info file.  */
3444   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3445     return 0;
3446
3447   dwarf2_read_section (objfile, section);
3448
3449   addr = section->buffer;
3450   /* Version check.  */
3451   version = MAYBE_SWAP (*(offset_type *) addr);
3452   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3453      causes the index to behave very poorly for certain requests.  Version 3
3454      contained incomplete addrmap.  So, it seems better to just ignore such
3455      indices.  */
3456   if (version < 4)
3457     {
3458       static int warning_printed = 0;
3459       if (!warning_printed)
3460         {
3461           warning (_("Skipping obsolete .gdb_index section in %s."),
3462                    filename);
3463           warning_printed = 1;
3464         }
3465       return 0;
3466     }
3467   /* Index version 4 uses a different hash function than index version
3468      5 and later.
3469
3470      Versions earlier than 6 did not emit psymbols for inlined
3471      functions.  Using these files will cause GDB not to be able to
3472      set breakpoints on inlined functions by name, so we ignore these
3473      indices unless the user has done
3474      "set use-deprecated-index-sections on".  */
3475   if (version < 6 && !deprecated_ok)
3476     {
3477       static int warning_printed = 0;
3478       if (!warning_printed)
3479         {
3480           warning (_("\
3481 Skipping deprecated .gdb_index section in %s.\n\
3482 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3483 to use the section anyway."),
3484                    filename);
3485           warning_printed = 1;
3486         }
3487       return 0;
3488     }
3489   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3490      of the TU (for symbols coming from TUs),
3491      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3492      Plus gold-generated indices can have duplicate entries for global symbols,
3493      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3494      These are just performance bugs, and we can't distinguish gdb-generated
3495      indices from gold-generated ones, so issue no warning here.  */
3496
3497   /* Indexes with higher version than the one supported by GDB may be no
3498      longer backward compatible.  */
3499   if (version > 8)
3500     return 0;
3501
3502   map->version = version;
3503   map->total_size = section->size;
3504
3505   metadata = (offset_type *) (addr + sizeof (offset_type));
3506
3507   i = 0;
3508   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3509   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3510                        / 8);
3511   ++i;
3512
3513   *types_list = addr + MAYBE_SWAP (metadata[i]);
3514   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3515                            - MAYBE_SWAP (metadata[i]))
3516                           / 8);
3517   ++i;
3518
3519   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3520   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3521   map->address_table
3522     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3523   ++i;
3524
3525   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3526   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3527   map->symbol_table
3528     = gdb::array_view<mapped_index::symbol_table_slot>
3529        ((mapped_index::symbol_table_slot *) symbol_table,
3530         (mapped_index::symbol_table_slot *) symbol_table_end);
3531
3532   ++i;
3533   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3534
3535   return 1;
3536 }
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_index (struct dwarf2_per_objfile *dwarf2_per_objfile)
3543 {
3544   struct mapped_index local_map, *map;
3545   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3546   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3547   struct dwz_file *dwz;
3548   struct objfile *objfile = dwarf2_per_objfile->objfile;
3549
3550   if (!read_index_from_section (objfile, objfile_name (objfile),
3551                                 use_deprecated_index_sections,
3552                                 &dwarf2_per_objfile->gdb_index, &local_map,
3553                                 &cu_list, &cu_list_elements,
3554                                 &types_list, &types_list_elements))
3555     return 0;
3556
3557   /* Don't use the index if it's empty.  */
3558   if (local_map.symbol_table.empty ())
3559     return 0;
3560
3561   /* If there is a .dwz file, read it so we can get its CU list as
3562      well.  */
3563   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3564   if (dwz != NULL)
3565     {
3566       struct mapped_index dwz_map;
3567       const gdb_byte *dwz_types_ignore;
3568       offset_type dwz_types_elements_ignore;
3569
3570       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3571                                     1,
3572                                     &dwz->gdb_index, &dwz_map,
3573                                     &dwz_list, &dwz_list_elements,
3574                                     &dwz_types_ignore,
3575                                     &dwz_types_elements_ignore))
3576         {
3577           warning (_("could not read '.gdb_index' section from %s; skipping"),
3578                    bfd_get_filename (dwz->dwz_bfd));
3579           return 0;
3580         }
3581     }
3582
3583   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3584                          dwz_list, dwz_list_elements);
3585
3586   if (types_list_elements)
3587     {
3588       struct dwarf2_section_info *section;
3589
3590       /* We can only handle a single .debug_types when we have an
3591          index.  */
3592       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3593         return 0;
3594
3595       section = VEC_index (dwarf2_section_info_def,
3596                            dwarf2_per_objfile->types, 0);
3597
3598       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3599                                                types_list, types_list_elements);
3600     }
3601
3602   create_addrmap_from_index (dwarf2_per_objfile, &local_map);
3603
3604   map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
3605   map = new (map) mapped_index ();
3606   *map = local_map;
3607
3608   dwarf2_per_objfile->index_table = map;
3609   dwarf2_per_objfile->using_index = 1;
3610   dwarf2_per_objfile->quick_file_names_table =
3611     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3612
3613   return 1;
3614 }
3615
3616 /* die_reader_func for dw2_get_file_names.  */
3617
3618 static void
3619 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3620                            const gdb_byte *info_ptr,
3621                            struct die_info *comp_unit_die,
3622                            int has_children,
3623                            void *data)
3624 {
3625   struct dwarf2_cu *cu = reader->cu;
3626   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3627   struct dwarf2_per_objfile *dwarf2_per_objfile
3628     = cu->per_cu->dwarf2_per_objfile;
3629   struct objfile *objfile = dwarf2_per_objfile->objfile;
3630   struct dwarf2_per_cu_data *lh_cu;
3631   struct attribute *attr;
3632   int i;
3633   void **slot;
3634   struct quick_file_names *qfn;
3635
3636   gdb_assert (! this_cu->is_debug_types);
3637
3638   /* Our callers never want to match partial units -- instead they
3639      will match the enclosing full CU.  */
3640   if (comp_unit_die->tag == DW_TAG_partial_unit)
3641     {
3642       this_cu->v.quick->no_file_data = 1;
3643       return;
3644     }
3645
3646   lh_cu = this_cu;
3647   slot = NULL;
3648
3649   line_header_up lh;
3650   sect_offset line_offset {};
3651
3652   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3653   if (attr)
3654     {
3655       struct quick_file_names find_entry;
3656
3657       line_offset = (sect_offset) DW_UNSND (attr);
3658
3659       /* We may have already read in this line header (TU line header sharing).
3660          If we have we're done.  */
3661       find_entry.hash.dwo_unit = cu->dwo_unit;
3662       find_entry.hash.line_sect_off = line_offset;
3663       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3664                              &find_entry, INSERT);
3665       if (*slot != NULL)
3666         {
3667           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3668           return;
3669         }
3670
3671       lh = dwarf_decode_line_header (line_offset, cu);
3672     }
3673   if (lh == NULL)
3674     {
3675       lh_cu->v.quick->no_file_data = 1;
3676       return;
3677     }
3678
3679   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3680   qfn->hash.dwo_unit = cu->dwo_unit;
3681   qfn->hash.line_sect_off = line_offset;
3682   gdb_assert (slot != NULL);
3683   *slot = qfn;
3684
3685   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3686
3687   qfn->num_file_names = lh->file_names.size ();
3688   qfn->file_names =
3689     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3690   for (i = 0; i < lh->file_names.size (); ++i)
3691     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3692   qfn->real_names = NULL;
3693
3694   lh_cu->v.quick->file_names = qfn;
3695 }
3696
3697 /* A helper for the "quick" functions which attempts to read the line
3698    table for THIS_CU.  */
3699
3700 static struct quick_file_names *
3701 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3702 {
3703   /* This should never be called for TUs.  */
3704   gdb_assert (! this_cu->is_debug_types);
3705   /* Nor type unit groups.  */
3706   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3707
3708   if (this_cu->v.quick->file_names != NULL)
3709     return this_cu->v.quick->file_names;
3710   /* If we know there is no line data, no point in looking again.  */
3711   if (this_cu->v.quick->no_file_data)
3712     return NULL;
3713
3714   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3715
3716   if (this_cu->v.quick->no_file_data)
3717     return NULL;
3718   return this_cu->v.quick->file_names;
3719 }
3720
3721 /* A helper for the "quick" functions which computes and caches the
3722    real path for a given file name from the line table.  */
3723
3724 static const char *
3725 dw2_get_real_path (struct objfile *objfile,
3726                    struct quick_file_names *qfn, int index)
3727 {
3728   if (qfn->real_names == NULL)
3729     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3730                                       qfn->num_file_names, const char *);
3731
3732   if (qfn->real_names[index] == NULL)
3733     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3734
3735   return qfn->real_names[index];
3736 }
3737
3738 static struct symtab *
3739 dw2_find_last_source_symtab (struct objfile *objfile)
3740 {
3741   struct dwarf2_per_objfile *dwarf2_per_objfile
3742     = get_dwarf2_per_objfile (objfile);
3743   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3744   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu);
3745
3746   if (cust == NULL)
3747     return NULL;
3748
3749   return compunit_primary_filetab (cust);
3750 }
3751
3752 /* Traversal function for dw2_forget_cached_source_info.  */
3753
3754 static int
3755 dw2_free_cached_file_names (void **slot, void *info)
3756 {
3757   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3758
3759   if (file_data->real_names)
3760     {
3761       int i;
3762
3763       for (i = 0; i < file_data->num_file_names; ++i)
3764         {
3765           xfree ((void*) file_data->real_names[i]);
3766           file_data->real_names[i] = NULL;
3767         }
3768     }
3769
3770   return 1;
3771 }
3772
3773 static void
3774 dw2_forget_cached_source_info (struct objfile *objfile)
3775 {
3776   struct dwarf2_per_objfile *dwarf2_per_objfile
3777     = get_dwarf2_per_objfile (objfile);
3778
3779   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3780                           dw2_free_cached_file_names, NULL);
3781 }
3782
3783 /* Helper function for dw2_map_symtabs_matching_filename that expands
3784    the symtabs and calls the iterator.  */
3785
3786 static int
3787 dw2_map_expand_apply (struct objfile *objfile,
3788                       struct dwarf2_per_cu_data *per_cu,
3789                       const char *name, const char *real_path,
3790                       gdb::function_view<bool (symtab *)> callback)
3791 {
3792   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3793
3794   /* Don't visit already-expanded CUs.  */
3795   if (per_cu->v.quick->compunit_symtab)
3796     return 0;
3797
3798   /* This may expand more than one symtab, and we want to iterate over
3799      all of them.  */
3800   dw2_instantiate_symtab (per_cu);
3801
3802   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3803                                     last_made, callback);
3804 }
3805
3806 /* Implementation of the map_symtabs_matching_filename method.  */
3807
3808 static bool
3809 dw2_map_symtabs_matching_filename
3810   (struct objfile *objfile, const char *name, const char *real_path,
3811    gdb::function_view<bool (symtab *)> callback)
3812 {
3813   const char *name_basename = lbasename (name);
3814   struct dwarf2_per_objfile *dwarf2_per_objfile
3815     = get_dwarf2_per_objfile (objfile);
3816
3817   /* The rule is CUs specify all the files, including those used by
3818      any TU, so there's no need to scan TUs here.  */
3819
3820   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3821     {
3822       /* We only need to look at symtabs not already expanded.  */
3823       if (per_cu->v.quick->compunit_symtab)
3824         continue;
3825
3826       quick_file_names *file_data = dw2_get_file_names (per_cu);
3827       if (file_data == NULL)
3828         continue;
3829
3830       for (int j = 0; j < file_data->num_file_names; ++j)
3831         {
3832           const char *this_name = file_data->file_names[j];
3833           const char *this_real_name;
3834
3835           if (compare_filenames_for_search (this_name, name))
3836             {
3837               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3838                                         callback))
3839                 return true;
3840               continue;
3841             }
3842
3843           /* Before we invoke realpath, which can get expensive when many
3844              files are involved, do a quick comparison of the basenames.  */
3845           if (! basenames_may_differ
3846               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3847             continue;
3848
3849           this_real_name = dw2_get_real_path (objfile, file_data, j);
3850           if (compare_filenames_for_search (this_real_name, name))
3851             {
3852               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3853                                         callback))
3854                 return true;
3855               continue;
3856             }
3857
3858           if (real_path != NULL)
3859             {
3860               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3861               gdb_assert (IS_ABSOLUTE_PATH (name));
3862               if (this_real_name != NULL
3863                   && FILENAME_CMP (real_path, this_real_name) == 0)
3864                 {
3865                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3866                                             callback))
3867                     return true;
3868                   continue;
3869                 }
3870             }
3871         }
3872     }
3873
3874   return false;
3875 }
3876
3877 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3878
3879 struct dw2_symtab_iterator
3880 {
3881   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3882   struct dwarf2_per_objfile *dwarf2_per_objfile;
3883   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3884   int want_specific_block;
3885   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3886      Unused if !WANT_SPECIFIC_BLOCK.  */
3887   int block_index;
3888   /* The kind of symbol we're looking for.  */
3889   domain_enum domain;
3890   /* The list of CUs from the index entry of the symbol,
3891      or NULL if not found.  */
3892   offset_type *vec;
3893   /* The next element in VEC to look at.  */
3894   int next;
3895   /* The number of elements in VEC, or zero if there is no match.  */
3896   int length;
3897   /* Have we seen a global version of the symbol?
3898      If so we can ignore all further global instances.
3899      This is to work around gold/15646, inefficient gold-generated
3900      indices.  */
3901   int global_seen;
3902 };
3903
3904 /* Initialize the index symtab iterator ITER.
3905    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3906    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3907
3908 static void
3909 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3910                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3911                       int want_specific_block,
3912                       int block_index,
3913                       domain_enum domain,
3914                       const char *name)
3915 {
3916   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3917   iter->want_specific_block = want_specific_block;
3918   iter->block_index = block_index;
3919   iter->domain = domain;
3920   iter->next = 0;
3921   iter->global_seen = 0;
3922
3923   mapped_index *index = dwarf2_per_objfile->index_table;
3924
3925   /* index is NULL if OBJF_READNOW.  */
3926   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3927     iter->length = MAYBE_SWAP (*iter->vec);
3928   else
3929     {
3930       iter->vec = NULL;
3931       iter->length = 0;
3932     }
3933 }
3934
3935 /* Return the next matching CU or NULL if there are no more.  */
3936
3937 static struct dwarf2_per_cu_data *
3938 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3939 {
3940   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3941
3942   for ( ; iter->next < iter->length; ++iter->next)
3943     {
3944       offset_type cu_index_and_attrs =
3945         MAYBE_SWAP (iter->vec[iter->next + 1]);
3946       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3947       int want_static = iter->block_index != GLOBAL_BLOCK;
3948       /* This value is only valid for index versions >= 7.  */
3949       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3950       gdb_index_symbol_kind symbol_kind =
3951         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3952       /* Only check the symbol attributes if they're present.
3953          Indices prior to version 7 don't record them,
3954          and indices >= 7 may elide them for certain symbols
3955          (gold does this).  */
3956       int attrs_valid =
3957         (dwarf2_per_objfile->index_table->version >= 7
3958          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3959
3960       /* Don't crash on bad data.  */
3961       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3962                        + dwarf2_per_objfile->all_type_units.size ()))
3963         {
3964           complaint (&symfile_complaints,
3965                      _(".gdb_index entry has bad CU index"
3966                        " [in module %s]"),
3967                      objfile_name (dwarf2_per_objfile->objfile));
3968           continue;
3969         }
3970
3971       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3972
3973       /* Skip if already read in.  */
3974       if (per_cu->v.quick->compunit_symtab)
3975         continue;
3976
3977       /* Check static vs global.  */
3978       if (attrs_valid)
3979         {
3980           if (iter->want_specific_block
3981               && want_static != is_static)
3982             continue;
3983           /* Work around gold/15646.  */
3984           if (!is_static && iter->global_seen)
3985             continue;
3986           if (!is_static)
3987             iter->global_seen = 1;
3988         }
3989
3990       /* Only check the symbol's kind if it has one.  */
3991       if (attrs_valid)
3992         {
3993           switch (iter->domain)
3994             {
3995             case VAR_DOMAIN:
3996               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3997                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3998                   /* Some types are also in VAR_DOMAIN.  */
3999                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4000                 continue;
4001               break;
4002             case STRUCT_DOMAIN:
4003               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4004                 continue;
4005               break;
4006             case LABEL_DOMAIN:
4007               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4008                 continue;
4009               break;
4010             default:
4011               break;
4012             }
4013         }
4014
4015       ++iter->next;
4016       return per_cu;
4017     }
4018
4019   return NULL;
4020 }
4021
4022 static struct compunit_symtab *
4023 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4024                    const char *name, domain_enum domain)
4025 {
4026   struct compunit_symtab *stab_best = NULL;
4027   struct dwarf2_per_objfile *dwarf2_per_objfile
4028     = get_dwarf2_per_objfile (objfile);
4029
4030   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4031
4032   struct dw2_symtab_iterator iter;
4033   struct dwarf2_per_cu_data *per_cu;
4034
4035   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4036
4037   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4038     {
4039       struct symbol *sym, *with_opaque = NULL;
4040       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
4041       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4042       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4043
4044       sym = block_find_symbol (block, name, domain,
4045                                block_find_non_opaque_type_preferred,
4046                                &with_opaque);
4047
4048       /* Some caution must be observed with overloaded functions
4049          and methods, since the index will not contain any overload
4050          information (but NAME might contain it).  */
4051
4052       if (sym != NULL
4053           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4054         return stab;
4055       if (with_opaque != NULL
4056           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4057         stab_best = stab;
4058
4059       /* Keep looking through other CUs.  */
4060     }
4061
4062   return stab_best;
4063 }
4064
4065 static void
4066 dw2_print_stats (struct objfile *objfile)
4067 {
4068   struct dwarf2_per_objfile *dwarf2_per_objfile
4069     = get_dwarf2_per_objfile (objfile);
4070   int total = (dwarf2_per_objfile->all_comp_units.size ()
4071                + dwarf2_per_objfile->all_type_units.size ());
4072   int count = 0;
4073
4074   for (int i = 0; i < total; ++i)
4075     {
4076       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4077
4078       if (!per_cu->v.quick->compunit_symtab)
4079         ++count;
4080     }
4081   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4082   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4083 }
4084
4085 /* This dumps minimal information about the index.
4086    It is called via "mt print objfiles".
4087    One use is to verify .gdb_index has been loaded by the
4088    gdb.dwarf2/gdb-index.exp testcase.  */
4089
4090 static void
4091 dw2_dump (struct objfile *objfile)
4092 {
4093   struct dwarf2_per_objfile *dwarf2_per_objfile
4094     = get_dwarf2_per_objfile (objfile);
4095
4096   gdb_assert (dwarf2_per_objfile->using_index);
4097   printf_filtered (".gdb_index:");
4098   if (dwarf2_per_objfile->index_table != NULL)
4099     {
4100       printf_filtered (" version %d\n",
4101                        dwarf2_per_objfile->index_table->version);
4102     }
4103   else
4104     printf_filtered (" faked for \"readnow\"\n");
4105   printf_filtered ("\n");
4106 }
4107
4108 static void
4109 dw2_relocate (struct objfile *objfile,
4110               const struct section_offsets *new_offsets,
4111               const struct section_offsets *delta)
4112 {
4113   /* There's nothing to relocate here.  */
4114 }
4115
4116 static void
4117 dw2_expand_symtabs_for_function (struct objfile *objfile,
4118                                  const char *func_name)
4119 {
4120   struct dwarf2_per_objfile *dwarf2_per_objfile
4121     = get_dwarf2_per_objfile (objfile);
4122
4123   struct dw2_symtab_iterator iter;
4124   struct dwarf2_per_cu_data *per_cu;
4125
4126   /* Note: It doesn't matter what we pass for block_index here.  */
4127   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4128                         func_name);
4129
4130   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4131     dw2_instantiate_symtab (per_cu);
4132
4133 }
4134
4135 static void
4136 dw2_expand_all_symtabs (struct objfile *objfile)
4137 {
4138   struct dwarf2_per_objfile *dwarf2_per_objfile
4139     = get_dwarf2_per_objfile (objfile);
4140   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4141                      + dwarf2_per_objfile->all_type_units.size ());
4142
4143   for (int i = 0; i < total_units; ++i)
4144     {
4145       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4146
4147       dw2_instantiate_symtab (per_cu);
4148     }
4149 }
4150
4151 static void
4152 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4153                                   const char *fullname)
4154 {
4155   struct dwarf2_per_objfile *dwarf2_per_objfile
4156     = get_dwarf2_per_objfile (objfile);
4157
4158   /* We don't need to consider type units here.
4159      This is only called for examining code, e.g. expand_line_sal.
4160      There can be an order of magnitude (or more) more type units
4161      than comp units, and we avoid them if we can.  */
4162
4163   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4164     {
4165       /* We only need to look at symtabs not already expanded.  */
4166       if (per_cu->v.quick->compunit_symtab)
4167         continue;
4168
4169       quick_file_names *file_data = dw2_get_file_names (per_cu);
4170       if (file_data == NULL)
4171         continue;
4172
4173       for (int j = 0; j < file_data->num_file_names; ++j)
4174         {
4175           const char *this_fullname = file_data->file_names[j];
4176
4177           if (filename_cmp (this_fullname, fullname) == 0)
4178             {
4179               dw2_instantiate_symtab (per_cu);
4180               break;
4181             }
4182         }
4183     }
4184 }
4185
4186 static void
4187 dw2_map_matching_symbols (struct objfile *objfile,
4188                           const char * name, domain_enum domain,
4189                           int global,
4190                           int (*callback) (struct block *,
4191                                            struct symbol *, void *),
4192                           void *data, symbol_name_match_type match,
4193                           symbol_compare_ftype *ordered_compare)
4194 {
4195   /* Currently unimplemented; used for Ada.  The function can be called if the
4196      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4197      does not look for non-Ada symbols this function should just return.  */
4198 }
4199
4200 /* Symbol name matcher for .gdb_index names.
4201
4202    Symbol names in .gdb_index have a few particularities:
4203
4204    - There's no indication of which is the language of each symbol.
4205
4206      Since each language has its own symbol name matching algorithm,
4207      and we don't know which language is the right one, we must match
4208      each symbol against all languages.  This would be a potential
4209      performance problem if it were not mitigated by the
4210      mapped_index::name_components lookup table, which significantly
4211      reduces the number of times we need to call into this matcher,
4212      making it a non-issue.
4213
4214    - Symbol names in the index have no overload (parameter)
4215      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4216      appear as "foo" in the index, for example.
4217
4218      This means that the lookup names passed to the symbol name
4219      matcher functions must have no parameter information either
4220      because (e.g.) symbol search name "foo" does not match
4221      lookup-name "foo(int)" [while swapping search name for lookup
4222      name would match].
4223 */
4224 class gdb_index_symbol_name_matcher
4225 {
4226 public:
4227   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4228   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4229
4230   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4231      Returns true if any matcher matches.  */
4232   bool matches (const char *symbol_name);
4233
4234 private:
4235   /* A reference to the lookup name we're matching against.  */
4236   const lookup_name_info &m_lookup_name;
4237
4238   /* A vector holding all the different symbol name matchers, for all
4239      languages.  */
4240   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4241 };
4242
4243 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4244   (const lookup_name_info &lookup_name)
4245     : m_lookup_name (lookup_name)
4246 {
4247   /* Prepare the vector of comparison functions upfront, to avoid
4248      doing the same work for each symbol.  Care is taken to avoid
4249      matching with the same matcher more than once if/when multiple
4250      languages use the same matcher function.  */
4251   auto &matchers = m_symbol_name_matcher_funcs;
4252   matchers.reserve (nr_languages);
4253
4254   matchers.push_back (default_symbol_name_matcher);
4255
4256   for (int i = 0; i < nr_languages; i++)
4257     {
4258       const language_defn *lang = language_def ((enum language) i);
4259       symbol_name_matcher_ftype *name_matcher
4260         = get_symbol_name_matcher (lang, m_lookup_name);
4261
4262       /* Don't insert the same comparison routine more than once.
4263          Note that we do this linear walk instead of a seemingly
4264          cheaper sorted insert, or use a std::set or something like
4265          that, because relative order of function addresses is not
4266          stable.  This is not a problem in practice because the number
4267          of supported languages is low, and the cost here is tiny
4268          compared to the number of searches we'll do afterwards using
4269          this object.  */
4270       if (name_matcher != default_symbol_name_matcher
4271           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4272               == matchers.end ()))
4273         matchers.push_back (name_matcher);
4274     }
4275 }
4276
4277 bool
4278 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4279 {
4280   for (auto matches_name : m_symbol_name_matcher_funcs)
4281     if (matches_name (symbol_name, m_lookup_name, NULL))
4282       return true;
4283
4284   return false;
4285 }
4286
4287 /* Starting from a search name, return the string that finds the upper
4288    bound of all strings that start with SEARCH_NAME in a sorted name
4289    list.  Returns the empty string to indicate that the upper bound is
4290    the end of the list.  */
4291
4292 static std::string
4293 make_sort_after_prefix_name (const char *search_name)
4294 {
4295   /* When looking to complete "func", we find the upper bound of all
4296      symbols that start with "func" by looking for where we'd insert
4297      the closest string that would follow "func" in lexicographical
4298      order.  Usually, that's "func"-with-last-character-incremented,
4299      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4300      will be UTF-8 multi-byte sequences, but we can't be certain.
4301      Especially mind the 0xff character, which is a valid character in
4302      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4303      rule out compilers allowing it in identifiers.  Note that
4304      conveniently, strcmp/strcasecmp are specified to compare
4305      characters interpreted as unsigned char.  So what we do is treat
4306      the whole string as a base 256 number composed of a sequence of
4307      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4308      to 0, and carries 1 to the following more-significant position.
4309      If the very first character in SEARCH_NAME ends up incremented
4310      and carries/overflows, then the upper bound is the end of the
4311      list.  The string after the empty string is also the empty
4312      string.
4313
4314      Some examples of this operation:
4315
4316        SEARCH_NAME  => "+1" RESULT
4317
4318        "abc"              => "abd"
4319        "ab\xff"           => "ac"
4320        "\xff" "a" "\xff"  => "\xff" "b"
4321        "\xff"             => ""
4322        "\xff\xff"         => ""
4323        ""                 => ""
4324
4325      Then, with these symbols for example:
4326
4327       func
4328       func1
4329       fund
4330
4331      completing "func" looks for symbols between "func" and
4332      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4333      which finds "func" and "func1", but not "fund".
4334
4335      And with:
4336
4337       funcÿ     (Latin1 'ÿ' [0xff])
4338       funcÿ1
4339       fund
4340
4341      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4342      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4343
4344      And with:
4345
4346       ÿÿ        (Latin1 'ÿ' [0xff])
4347       ÿÿ1
4348
4349      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4350      the end of the list.
4351   */
4352   std::string after = search_name;
4353   while (!after.empty () && (unsigned char) after.back () == 0xff)
4354     after.pop_back ();
4355   if (!after.empty ())
4356     after.back () = (unsigned char) after.back () + 1;
4357   return after;
4358 }
4359
4360 /* See declaration.  */
4361
4362 std::pair<std::vector<name_component>::const_iterator,
4363           std::vector<name_component>::const_iterator>
4364 mapped_index_base::find_name_components_bounds
4365   (const lookup_name_info &lookup_name_without_params) const
4366 {
4367   auto *name_cmp
4368     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4369
4370   const char *cplus
4371     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4372
4373   /* Comparison function object for lower_bound that matches against a
4374      given symbol name.  */
4375   auto lookup_compare_lower = [&] (const name_component &elem,
4376                                    const char *name)
4377     {
4378       const char *elem_qualified = this->symbol_name_at (elem.idx);
4379       const char *elem_name = elem_qualified + elem.name_offset;
4380       return name_cmp (elem_name, name) < 0;
4381     };
4382
4383   /* Comparison function object for upper_bound that matches against a
4384      given symbol name.  */
4385   auto lookup_compare_upper = [&] (const char *name,
4386                                    const name_component &elem)
4387     {
4388       const char *elem_qualified = this->symbol_name_at (elem.idx);
4389       const char *elem_name = elem_qualified + elem.name_offset;
4390       return name_cmp (name, elem_name) < 0;
4391     };
4392
4393   auto begin = this->name_components.begin ();
4394   auto end = this->name_components.end ();
4395
4396   /* Find the lower bound.  */
4397   auto lower = [&] ()
4398     {
4399       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4400         return begin;
4401       else
4402         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4403     } ();
4404
4405   /* Find the upper bound.  */
4406   auto upper = [&] ()
4407     {
4408       if (lookup_name_without_params.completion_mode ())
4409         {
4410           /* In completion mode, we want UPPER to point past all
4411              symbols names that have the same prefix.  I.e., with
4412              these symbols, and completing "func":
4413
4414               function        << lower bound
4415               function1
4416               other_function  << upper bound
4417
4418              We find the upper bound by looking for the insertion
4419              point of "func"-with-last-character-incremented,
4420              i.e. "fund".  */
4421           std::string after = make_sort_after_prefix_name (cplus);
4422           if (after.empty ())
4423             return end;
4424           return std::lower_bound (lower, end, after.c_str (),
4425                                    lookup_compare_lower);
4426         }
4427       else
4428         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4429     } ();
4430
4431   return {lower, upper};
4432 }
4433
4434 /* See declaration.  */
4435
4436 void
4437 mapped_index_base::build_name_components ()
4438 {
4439   if (!this->name_components.empty ())
4440     return;
4441
4442   this->name_components_casing = case_sensitivity;
4443   auto *name_cmp
4444     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4445
4446   /* The code below only knows how to break apart components of C++
4447      symbol names (and other languages that use '::' as
4448      namespace/module separator).  If we add support for wild matching
4449      to some language that uses some other operator (E.g., Ada, Go and
4450      D use '.'), then we'll need to try splitting the symbol name
4451      according to that language too.  Note that Ada does support wild
4452      matching, but doesn't currently support .gdb_index.  */
4453   auto count = this->symbol_name_count ();
4454   for (offset_type idx = 0; idx < count; idx++)
4455     {
4456       if (this->symbol_name_slot_invalid (idx))
4457         continue;
4458
4459       const char *name = this->symbol_name_at (idx);
4460
4461       /* Add each name component to the name component table.  */
4462       unsigned int previous_len = 0;
4463       for (unsigned int current_len = cp_find_first_component (name);
4464            name[current_len] != '\0';
4465            current_len += cp_find_first_component (name + current_len))
4466         {
4467           gdb_assert (name[current_len] == ':');
4468           this->name_components.push_back ({previous_len, idx});
4469           /* Skip the '::'.  */
4470           current_len += 2;
4471           previous_len = current_len;
4472         }
4473       this->name_components.push_back ({previous_len, idx});
4474     }
4475
4476   /* Sort name_components elements by name.  */
4477   auto name_comp_compare = [&] (const name_component &left,
4478                                 const name_component &right)
4479     {
4480       const char *left_qualified = this->symbol_name_at (left.idx);
4481       const char *right_qualified = this->symbol_name_at (right.idx);
4482
4483       const char *left_name = left_qualified + left.name_offset;
4484       const char *right_name = right_qualified + right.name_offset;
4485
4486       return name_cmp (left_name, right_name) < 0;
4487     };
4488
4489   std::sort (this->name_components.begin (),
4490              this->name_components.end (),
4491              name_comp_compare);
4492 }
4493
4494 /* Helper for dw2_expand_symtabs_matching that works with a
4495    mapped_index_base instead of the containing objfile.  This is split
4496    to a separate function in order to be able to unit test the
4497    name_components matching using a mock mapped_index_base.  For each
4498    symbol name that matches, calls MATCH_CALLBACK, passing it the
4499    symbol's index in the mapped_index_base symbol table.  */
4500
4501 static void
4502 dw2_expand_symtabs_matching_symbol
4503   (mapped_index_base &index,
4504    const lookup_name_info &lookup_name_in,
4505    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4506    enum search_domain kind,
4507    gdb::function_view<void (offset_type)> match_callback)
4508 {
4509   lookup_name_info lookup_name_without_params
4510     = lookup_name_in.make_ignore_params ();
4511   gdb_index_symbol_name_matcher lookup_name_matcher
4512     (lookup_name_without_params);
4513
4514   /* Build the symbol name component sorted vector, if we haven't
4515      yet.  */
4516   index.build_name_components ();
4517
4518   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4519
4520   /* Now for each symbol name in range, check to see if we have a name
4521      match, and if so, call the MATCH_CALLBACK callback.  */
4522
4523   /* The same symbol may appear more than once in the range though.
4524      E.g., if we're looking for symbols that complete "w", and we have
4525      a symbol named "w1::w2", we'll find the two name components for
4526      that same symbol in the range.  To be sure we only call the
4527      callback once per symbol, we first collect the symbol name
4528      indexes that matched in a temporary vector and ignore
4529      duplicates.  */
4530   std::vector<offset_type> matches;
4531   matches.reserve (std::distance (bounds.first, bounds.second));
4532
4533   for (; bounds.first != bounds.second; ++bounds.first)
4534     {
4535       const char *qualified = index.symbol_name_at (bounds.first->idx);
4536
4537       if (!lookup_name_matcher.matches (qualified)
4538           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4539         continue;
4540
4541       matches.push_back (bounds.first->idx);
4542     }
4543
4544   std::sort (matches.begin (), matches.end ());
4545
4546   /* Finally call the callback, once per match.  */
4547   ULONGEST prev = -1;
4548   for (offset_type idx : matches)
4549     {
4550       if (prev != idx)
4551         {
4552           match_callback (idx);
4553           prev = idx;
4554         }
4555     }
4556
4557   /* Above we use a type wider than idx's for 'prev', since 0 and
4558      (offset_type)-1 are both possible values.  */
4559   static_assert (sizeof (prev) > sizeof (offset_type), "");
4560 }
4561
4562 #if GDB_SELF_TEST
4563
4564 namespace selftests { namespace dw2_expand_symtabs_matching {
4565
4566 /* A mock .gdb_index/.debug_names-like name index table, enough to
4567    exercise dw2_expand_symtabs_matching_symbol, which works with the
4568    mapped_index_base interface.  Builds an index from the symbol list
4569    passed as parameter to the constructor.  */
4570 class mock_mapped_index : public mapped_index_base
4571 {
4572 public:
4573   mock_mapped_index (gdb::array_view<const char *> symbols)
4574     : m_symbol_table (symbols)
4575   {}
4576
4577   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4578
4579   /* Return the number of names in the symbol table.  */
4580   size_t symbol_name_count () const override
4581   {
4582     return m_symbol_table.size ();
4583   }
4584
4585   /* Get the name of the symbol at IDX in the symbol table.  */
4586   const char *symbol_name_at (offset_type idx) const override
4587   {
4588     return m_symbol_table[idx];
4589   }
4590
4591 private:
4592   gdb::array_view<const char *> m_symbol_table;
4593 };
4594
4595 /* Convenience function that converts a NULL pointer to a "<null>"
4596    string, to pass to print routines.  */
4597
4598 static const char *
4599 string_or_null (const char *str)
4600 {
4601   return str != NULL ? str : "<null>";
4602 }
4603
4604 /* Check if a lookup_name_info built from
4605    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4606    index.  EXPECTED_LIST is the list of expected matches, in expected
4607    matching order.  If no match expected, then an empty list is
4608    specified.  Returns true on success.  On failure prints a warning
4609    indicating the file:line that failed, and returns false.  */
4610
4611 static bool
4612 check_match (const char *file, int line,
4613              mock_mapped_index &mock_index,
4614              const char *name, symbol_name_match_type match_type,
4615              bool completion_mode,
4616              std::initializer_list<const char *> expected_list)
4617 {
4618   lookup_name_info lookup_name (name, match_type, completion_mode);
4619
4620   bool matched = true;
4621
4622   auto mismatch = [&] (const char *expected_str,
4623                        const char *got)
4624   {
4625     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4626                "expected=\"%s\", got=\"%s\"\n"),
4627              file, line,
4628              (match_type == symbol_name_match_type::FULL
4629               ? "FULL" : "WILD"),
4630              name, string_or_null (expected_str), string_or_null (got));
4631     matched = false;
4632   };
4633
4634   auto expected_it = expected_list.begin ();
4635   auto expected_end = expected_list.end ();
4636
4637   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4638                                       NULL, ALL_DOMAIN,
4639                                       [&] (offset_type idx)
4640   {
4641     const char *matched_name = mock_index.symbol_name_at (idx);
4642     const char *expected_str
4643       = expected_it == expected_end ? NULL : *expected_it++;
4644
4645     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4646       mismatch (expected_str, matched_name);
4647   });
4648
4649   const char *expected_str
4650   = expected_it == expected_end ? NULL : *expected_it++;
4651   if (expected_str != NULL)
4652     mismatch (expected_str, NULL);
4653
4654   return matched;
4655 }
4656
4657 /* The symbols added to the mock mapped_index for testing (in
4658    canonical form).  */
4659 static const char *test_symbols[] = {
4660   "function",
4661   "std::bar",
4662   "std::zfunction",
4663   "std::zfunction2",
4664   "w1::w2",
4665   "ns::foo<char*>",
4666   "ns::foo<int>",
4667   "ns::foo<long>",
4668   "ns2::tmpl<int>::foo2",
4669   "(anonymous namespace)::A::B::C",
4670
4671   /* These are used to check that the increment-last-char in the
4672      matching algorithm for completion doesn't match "t1_fund" when
4673      completing "t1_func".  */
4674   "t1_func",
4675   "t1_func1",
4676   "t1_fund",
4677   "t1_fund1",
4678
4679   /* A UTF-8 name with multi-byte sequences to make sure that
4680      cp-name-parser understands this as a single identifier ("função"
4681      is "function" in PT).  */
4682   u8"u8função",
4683
4684   /* \377 (0xff) is Latin1 'ÿ'.  */
4685   "yfunc\377",
4686
4687   /* \377 (0xff) is Latin1 'ÿ'.  */
4688   "\377",
4689   "\377\377123",
4690
4691   /* A name with all sorts of complications.  Starts with "z" to make
4692      it easier for the completion tests below.  */
4693 #define Z_SYM_NAME \
4694   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4695     "::tuple<(anonymous namespace)::ui*, " \
4696     "std::default_delete<(anonymous namespace)::ui>, void>"
4697
4698   Z_SYM_NAME
4699 };
4700
4701 /* Returns true if the mapped_index_base::find_name_component_bounds
4702    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4703    in completion mode.  */
4704
4705 static bool
4706 check_find_bounds_finds (mapped_index_base &index,
4707                          const char *search_name,
4708                          gdb::array_view<const char *> expected_syms)
4709 {
4710   lookup_name_info lookup_name (search_name,
4711                                 symbol_name_match_type::FULL, true);
4712
4713   auto bounds = index.find_name_components_bounds (lookup_name);
4714
4715   size_t distance = std::distance (bounds.first, bounds.second);
4716   if (distance != expected_syms.size ())
4717     return false;
4718
4719   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4720     {
4721       auto nc_elem = bounds.first + exp_elem;
4722       const char *qualified = index.symbol_name_at (nc_elem->idx);
4723       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4724         return false;
4725     }
4726
4727   return true;
4728 }
4729
4730 /* Test the lower-level mapped_index::find_name_component_bounds
4731    method.  */
4732
4733 static void
4734 test_mapped_index_find_name_component_bounds ()
4735 {
4736   mock_mapped_index mock_index (test_symbols);
4737
4738   mock_index.build_name_components ();
4739
4740   /* Test the lower-level mapped_index::find_name_component_bounds
4741      method in completion mode.  */
4742   {
4743     static const char *expected_syms[] = {
4744       "t1_func",
4745       "t1_func1",
4746     };
4747
4748     SELF_CHECK (check_find_bounds_finds (mock_index,
4749                                          "t1_func", expected_syms));
4750   }
4751
4752   /* Check that the increment-last-char in the name matching algorithm
4753      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4754   {
4755     static const char *expected_syms1[] = {
4756       "\377",
4757       "\377\377123",
4758     };
4759     SELF_CHECK (check_find_bounds_finds (mock_index,
4760                                          "\377", expected_syms1));
4761
4762     static const char *expected_syms2[] = {
4763       "\377\377123",
4764     };
4765     SELF_CHECK (check_find_bounds_finds (mock_index,
4766                                          "\377\377", expected_syms2));
4767   }
4768 }
4769
4770 /* Test dw2_expand_symtabs_matching_symbol.  */
4771
4772 static void
4773 test_dw2_expand_symtabs_matching_symbol ()
4774 {
4775   mock_mapped_index mock_index (test_symbols);
4776
4777   /* We let all tests run until the end even if some fails, for debug
4778      convenience.  */
4779   bool any_mismatch = false;
4780
4781   /* Create the expected symbols list (an initializer_list).  Needed
4782      because lists have commas, and we need to pass them to CHECK,
4783      which is a macro.  */
4784 #define EXPECT(...) { __VA_ARGS__ }
4785
4786   /* Wrapper for check_match that passes down the current
4787      __FILE__/__LINE__.  */
4788 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4789   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4790                                 mock_index,                             \
4791                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4792                                 EXPECTED_LIST)
4793
4794   /* Identity checks.  */
4795   for (const char *sym : test_symbols)
4796     {
4797       /* Should be able to match all existing symbols.  */
4798       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4799                    EXPECT (sym));
4800
4801       /* Should be able to match all existing symbols with
4802          parameters.  */
4803       std::string with_params = std::string (sym) + "(int)";
4804       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4805                    EXPECT (sym));
4806
4807       /* Should be able to match all existing symbols with
4808          parameters and qualifiers.  */
4809       with_params = std::string (sym) + " ( int ) const";
4810       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4811                    EXPECT (sym));
4812
4813       /* This should really find sym, but cp-name-parser.y doesn't
4814          know about lvalue/rvalue qualifiers yet.  */
4815       with_params = std::string (sym) + " ( int ) &&";
4816       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4817                    {});
4818     }
4819
4820   /* Check that the name matching algorithm for completion doesn't get
4821      confused with Latin1 'ÿ' / 0xff.  */
4822   {
4823     static const char str[] = "\377";
4824     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4825                  EXPECT ("\377", "\377\377123"));
4826   }
4827
4828   /* Check that the increment-last-char in the matching algorithm for
4829      completion doesn't match "t1_fund" when completing "t1_func".  */
4830   {
4831     static const char str[] = "t1_func";
4832     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4833                  EXPECT ("t1_func", "t1_func1"));
4834   }
4835
4836   /* Check that completion mode works at each prefix of the expected
4837      symbol name.  */
4838   {
4839     static const char str[] = "function(int)";
4840     size_t len = strlen (str);
4841     std::string lookup;
4842
4843     for (size_t i = 1; i < len; i++)
4844       {
4845         lookup.assign (str, i);
4846         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4847                      EXPECT ("function"));
4848       }
4849   }
4850
4851   /* While "w" is a prefix of both components, the match function
4852      should still only be called once.  */
4853   {
4854     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4855                  EXPECT ("w1::w2"));
4856     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4857                  EXPECT ("w1::w2"));
4858   }
4859
4860   /* Same, with a "complicated" symbol.  */
4861   {
4862     static const char str[] = Z_SYM_NAME;
4863     size_t len = strlen (str);
4864     std::string lookup;
4865
4866     for (size_t i = 1; i < len; i++)
4867       {
4868         lookup.assign (str, i);
4869         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4870                      EXPECT (Z_SYM_NAME));
4871       }
4872   }
4873
4874   /* In FULL mode, an incomplete symbol doesn't match.  */
4875   {
4876     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4877                  {});
4878   }
4879
4880   /* A complete symbol with parameters matches any overload, since the
4881      index has no overload info.  */
4882   {
4883     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4884                  EXPECT ("std::zfunction", "std::zfunction2"));
4885     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4886                  EXPECT ("std::zfunction", "std::zfunction2"));
4887     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4888                  EXPECT ("std::zfunction", "std::zfunction2"));
4889   }
4890
4891   /* Check that whitespace is ignored appropriately.  A symbol with a
4892      template argument list. */
4893   {
4894     static const char expected[] = "ns::foo<int>";
4895     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4896                  EXPECT (expected));
4897     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4898                  EXPECT (expected));
4899   }
4900
4901   /* Check that whitespace is ignored appropriately.  A symbol with a
4902      template argument list that includes a pointer.  */
4903   {
4904     static const char expected[] = "ns::foo<char*>";
4905     /* Try both completion and non-completion modes.  */
4906     static const bool completion_mode[2] = {false, true};
4907     for (size_t i = 0; i < 2; i++)
4908       {
4909         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4910                      completion_mode[i], EXPECT (expected));
4911         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4912                      completion_mode[i], EXPECT (expected));
4913
4914         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4915                      completion_mode[i], EXPECT (expected));
4916         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4917                      completion_mode[i], EXPECT (expected));
4918       }
4919   }
4920
4921   {
4922     /* Check method qualifiers are ignored.  */
4923     static const char expected[] = "ns::foo<char*>";
4924     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4925                  symbol_name_match_type::FULL, true, EXPECT (expected));
4926     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4927                  symbol_name_match_type::FULL, true, EXPECT (expected));
4928     CHECK_MATCH ("foo < char * >  ( int ) const",
4929                  symbol_name_match_type::WILD, true, EXPECT (expected));
4930     CHECK_MATCH ("foo < char * >  ( int ) &&",
4931                  symbol_name_match_type::WILD, true, EXPECT (expected));
4932   }
4933
4934   /* Test lookup names that don't match anything.  */
4935   {
4936     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4937                  {});
4938
4939     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4940                  {});
4941   }
4942
4943   /* Some wild matching tests, exercising "(anonymous namespace)",
4944      which should not be confused with a parameter list.  */
4945   {
4946     static const char *syms[] = {
4947       "A::B::C",
4948       "B::C",
4949       "C",
4950       "A :: B :: C ( int )",
4951       "B :: C ( int )",
4952       "C ( int )",
4953     };
4954
4955     for (const char *s : syms)
4956       {
4957         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4958                      EXPECT ("(anonymous namespace)::A::B::C"));
4959       }
4960   }
4961
4962   {
4963     static const char expected[] = "ns2::tmpl<int>::foo2";
4964     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4965                  EXPECT (expected));
4966     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4967                  EXPECT (expected));
4968   }
4969
4970   SELF_CHECK (!any_mismatch);
4971
4972 #undef EXPECT
4973 #undef CHECK_MATCH
4974 }
4975
4976 static void
4977 run_test ()
4978 {
4979   test_mapped_index_find_name_component_bounds ();
4980   test_dw2_expand_symtabs_matching_symbol ();
4981 }
4982
4983 }} // namespace selftests::dw2_expand_symtabs_matching
4984
4985 #endif /* GDB_SELF_TEST */
4986
4987 /* If FILE_MATCHER is NULL or if PER_CU has
4988    dwarf2_per_cu_quick_data::MARK set (see
4989    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4990    EXPANSION_NOTIFY on it.  */
4991
4992 static void
4993 dw2_expand_symtabs_matching_one
4994   (struct dwarf2_per_cu_data *per_cu,
4995    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4996    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4997 {
4998   if (file_matcher == NULL || per_cu->v.quick->mark)
4999     {
5000       bool symtab_was_null
5001         = (per_cu->v.quick->compunit_symtab == NULL);
5002
5003       dw2_instantiate_symtab (per_cu);
5004
5005       if (expansion_notify != NULL
5006           && symtab_was_null
5007           && per_cu->v.quick->compunit_symtab != NULL)
5008         expansion_notify (per_cu->v.quick->compunit_symtab);
5009     }
5010 }
5011
5012 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5013    matched, to expand corresponding CUs that were marked.  IDX is the
5014    index of the symbol name that matched.  */
5015
5016 static void
5017 dw2_expand_marked_cus
5018   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5019    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5020    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5021    search_domain kind)
5022 {
5023   offset_type *vec, vec_len, vec_idx;
5024   bool global_seen = false;
5025   mapped_index &index = *dwarf2_per_objfile->index_table;
5026
5027   vec = (offset_type *) (index.constant_pool
5028                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5029   vec_len = MAYBE_SWAP (vec[0]);
5030   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5031     {
5032       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5033       /* This value is only valid for index versions >= 7.  */
5034       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5035       gdb_index_symbol_kind symbol_kind =
5036         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5037       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5038       /* Only check the symbol attributes if they're present.
5039          Indices prior to version 7 don't record them,
5040          and indices >= 7 may elide them for certain symbols
5041          (gold does this).  */
5042       int attrs_valid =
5043         (index.version >= 7
5044          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5045
5046       /* Work around gold/15646.  */
5047       if (attrs_valid)
5048         {
5049           if (!is_static && global_seen)
5050             continue;
5051           if (!is_static)
5052             global_seen = true;
5053         }
5054
5055       /* Only check the symbol's kind if it has one.  */
5056       if (attrs_valid)
5057         {
5058           switch (kind)
5059             {
5060             case VARIABLES_DOMAIN:
5061               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5062                 continue;
5063               break;
5064             case FUNCTIONS_DOMAIN:
5065               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5066                 continue;
5067               break;
5068             case TYPES_DOMAIN:
5069               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5070                 continue;
5071               break;
5072             default:
5073               break;
5074             }
5075         }
5076
5077       /* Don't crash on bad data.  */
5078       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5079                        + dwarf2_per_objfile->all_type_units.size ()))
5080         {
5081           complaint (&symfile_complaints,
5082                      _(".gdb_index entry has bad CU index"
5083                        " [in module %s]"),
5084                        objfile_name (dwarf2_per_objfile->objfile));
5085           continue;
5086         }
5087
5088       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5089       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5090                                        expansion_notify);
5091     }
5092 }
5093
5094 /* If FILE_MATCHER is non-NULL, set all the
5095    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5096    that match FILE_MATCHER.  */
5097
5098 static void
5099 dw_expand_symtabs_matching_file_matcher
5100   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5101    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5102 {
5103   if (file_matcher == NULL)
5104     return;
5105
5106   objfile *const objfile = dwarf2_per_objfile->objfile;
5107
5108   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5109                                             htab_eq_pointer,
5110                                             NULL, xcalloc, xfree));
5111   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5112                                                 htab_eq_pointer,
5113                                                 NULL, xcalloc, xfree));
5114
5115   /* The rule is CUs specify all the files, including those used by
5116      any TU, so there's no need to scan TUs here.  */
5117
5118   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5119     {
5120       QUIT;
5121
5122       per_cu->v.quick->mark = 0;
5123
5124       /* We only need to look at symtabs not already expanded.  */
5125       if (per_cu->v.quick->compunit_symtab)
5126         continue;
5127
5128       quick_file_names *file_data = dw2_get_file_names (per_cu);
5129       if (file_data == NULL)
5130         continue;
5131
5132       if (htab_find (visited_not_found.get (), file_data) != NULL)
5133         continue;
5134       else if (htab_find (visited_found.get (), file_data) != NULL)
5135         {
5136           per_cu->v.quick->mark = 1;
5137           continue;
5138         }
5139
5140       for (int j = 0; j < file_data->num_file_names; ++j)
5141         {
5142           const char *this_real_name;
5143
5144           if (file_matcher (file_data->file_names[j], false))
5145             {
5146               per_cu->v.quick->mark = 1;
5147               break;
5148             }
5149
5150           /* Before we invoke realpath, which can get expensive when many
5151              files are involved, do a quick comparison of the basenames.  */
5152           if (!basenames_may_differ
5153               && !file_matcher (lbasename (file_data->file_names[j]),
5154                                 true))
5155             continue;
5156
5157           this_real_name = dw2_get_real_path (objfile, file_data, j);
5158           if (file_matcher (this_real_name, false))
5159             {
5160               per_cu->v.quick->mark = 1;
5161               break;
5162             }
5163         }
5164
5165       void **slot = htab_find_slot (per_cu->v.quick->mark
5166                                     ? visited_found.get ()
5167                                     : visited_not_found.get (),
5168                                     file_data, INSERT);
5169       *slot = file_data;
5170     }
5171 }
5172
5173 static void
5174 dw2_expand_symtabs_matching
5175   (struct objfile *objfile,
5176    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5177    const lookup_name_info &lookup_name,
5178    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5179    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5180    enum search_domain kind)
5181 {
5182   struct dwarf2_per_objfile *dwarf2_per_objfile
5183     = get_dwarf2_per_objfile (objfile);
5184
5185   /* index_table is NULL if OBJF_READNOW.  */
5186   if (!dwarf2_per_objfile->index_table)
5187     return;
5188
5189   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5190
5191   mapped_index &index = *dwarf2_per_objfile->index_table;
5192
5193   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5194                                       symbol_matcher,
5195                                       kind, [&] (offset_type idx)
5196     {
5197       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5198                              expansion_notify, kind);
5199     });
5200 }
5201
5202 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5203    symtab.  */
5204
5205 static struct compunit_symtab *
5206 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5207                                           CORE_ADDR pc)
5208 {
5209   int i;
5210
5211   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5212       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5213     return cust;
5214
5215   if (cust->includes == NULL)
5216     return NULL;
5217
5218   for (i = 0; cust->includes[i]; ++i)
5219     {
5220       struct compunit_symtab *s = cust->includes[i];
5221
5222       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5223       if (s != NULL)
5224         return s;
5225     }
5226
5227   return NULL;
5228 }
5229
5230 static struct compunit_symtab *
5231 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5232                                   struct bound_minimal_symbol msymbol,
5233                                   CORE_ADDR pc,
5234                                   struct obj_section *section,
5235                                   int warn_if_readin)
5236 {
5237   struct dwarf2_per_cu_data *data;
5238   struct compunit_symtab *result;
5239
5240   if (!objfile->psymtabs_addrmap)
5241     return NULL;
5242
5243   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5244                                                      pc);
5245   if (!data)
5246     return NULL;
5247
5248   if (warn_if_readin && data->v.quick->compunit_symtab)
5249     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5250              paddress (get_objfile_arch (objfile), pc));
5251
5252   result
5253     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
5254                                                 pc);
5255   gdb_assert (result != NULL);
5256   return result;
5257 }
5258
5259 static void
5260 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5261                           void *data, int need_fullname)
5262 {
5263   struct dwarf2_per_objfile *dwarf2_per_objfile
5264     = get_dwarf2_per_objfile (objfile);
5265
5266   if (!dwarf2_per_objfile->filenames_cache)
5267     {
5268       dwarf2_per_objfile->filenames_cache.emplace ();
5269
5270       htab_up visited (htab_create_alloc (10,
5271                                           htab_hash_pointer, htab_eq_pointer,
5272                                           NULL, xcalloc, xfree));
5273
5274       /* The rule is CUs specify all the files, including those used
5275          by any TU, so there's no need to scan TUs here.  We can
5276          ignore file names coming from already-expanded CUs.  */
5277
5278       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5279         {
5280           if (per_cu->v.quick->compunit_symtab)
5281             {
5282               void **slot = htab_find_slot (visited.get (),
5283                                             per_cu->v.quick->file_names,
5284                                             INSERT);
5285
5286               *slot = per_cu->v.quick->file_names;
5287             }
5288         }
5289
5290       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5291         {
5292           /* We only need to look at symtabs not already expanded.  */
5293           if (per_cu->v.quick->compunit_symtab)
5294             continue;
5295
5296           quick_file_names *file_data = dw2_get_file_names (per_cu);
5297           if (file_data == NULL)
5298             continue;
5299
5300           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5301           if (*slot)
5302             {
5303               /* Already visited.  */
5304               continue;
5305             }
5306           *slot = file_data;
5307
5308           for (int j = 0; j < file_data->num_file_names; ++j)
5309             {
5310               const char *filename = file_data->file_names[j];
5311               dwarf2_per_objfile->filenames_cache->seen (filename);
5312             }
5313         }
5314     }
5315
5316   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5317     {
5318       gdb::unique_xmalloc_ptr<char> this_real_name;
5319
5320       if (need_fullname)
5321         this_real_name = gdb_realpath (filename);
5322       (*fun) (filename, this_real_name.get (), data);
5323     });
5324 }
5325
5326 static int
5327 dw2_has_symbols (struct objfile *objfile)
5328 {
5329   return 1;
5330 }
5331
5332 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5333 {
5334   dw2_has_symbols,
5335   dw2_find_last_source_symtab,
5336   dw2_forget_cached_source_info,
5337   dw2_map_symtabs_matching_filename,
5338   dw2_lookup_symbol,
5339   dw2_print_stats,
5340   dw2_dump,
5341   dw2_relocate,
5342   dw2_expand_symtabs_for_function,
5343   dw2_expand_all_symtabs,
5344   dw2_expand_symtabs_with_fullname,
5345   dw2_map_matching_symbols,
5346   dw2_expand_symtabs_matching,
5347   dw2_find_pc_sect_compunit_symtab,
5348   NULL,
5349   dw2_map_symbol_filenames
5350 };
5351
5352 /* DWARF-5 debug_names reader.  */
5353
5354 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5355 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5356
5357 /* A helper function that reads the .debug_names section in SECTION
5358    and fills in MAP.  FILENAME is the name of the file containing the
5359    section; it is used for error reporting.
5360
5361    Returns true if all went well, false otherwise.  */
5362
5363 static bool
5364 read_debug_names_from_section (struct objfile *objfile,
5365                                const char *filename,
5366                                struct dwarf2_section_info *section,
5367                                mapped_debug_names &map)
5368 {
5369   if (dwarf2_section_empty_p (section))
5370     return false;
5371
5372   /* Older elfutils strip versions could keep the section in the main
5373      executable while splitting it for the separate debug info file.  */
5374   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5375     return false;
5376
5377   dwarf2_read_section (objfile, section);
5378
5379   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5380
5381   const gdb_byte *addr = section->buffer;
5382
5383   bfd *const abfd = get_section_bfd_owner (section);
5384
5385   unsigned int bytes_read;
5386   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5387   addr += bytes_read;
5388
5389   map.dwarf5_is_dwarf64 = bytes_read != 4;
5390   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5391   if (bytes_read + length != section->size)
5392     {
5393       /* There may be multiple per-CU indices.  */
5394       warning (_("Section .debug_names in %s length %s does not match "
5395                  "section length %s, ignoring .debug_names."),
5396                filename, plongest (bytes_read + length),
5397                pulongest (section->size));
5398       return false;
5399     }
5400
5401   /* The version number.  */
5402   uint16_t version = read_2_bytes (abfd, addr);
5403   addr += 2;
5404   if (version != 5)
5405     {
5406       warning (_("Section .debug_names in %s has unsupported version %d, "
5407                  "ignoring .debug_names."),
5408                filename, version);
5409       return false;
5410     }
5411
5412   /* Padding.  */
5413   uint16_t padding = read_2_bytes (abfd, addr);
5414   addr += 2;
5415   if (padding != 0)
5416     {
5417       warning (_("Section .debug_names in %s has unsupported padding %d, "
5418                  "ignoring .debug_names."),
5419                filename, padding);
5420       return false;
5421     }
5422
5423   /* comp_unit_count - The number of CUs in the CU list.  */
5424   map.cu_count = read_4_bytes (abfd, addr);
5425   addr += 4;
5426
5427   /* local_type_unit_count - The number of TUs in the local TU
5428      list.  */
5429   map.tu_count = read_4_bytes (abfd, addr);
5430   addr += 4;
5431
5432   /* foreign_type_unit_count - The number of TUs in the foreign TU
5433      list.  */
5434   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5435   addr += 4;
5436   if (foreign_tu_count != 0)
5437     {
5438       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5439                  "ignoring .debug_names."),
5440                filename, static_cast<unsigned long> (foreign_tu_count));
5441       return false;
5442     }
5443
5444   /* bucket_count - The number of hash buckets in the hash lookup
5445      table.  */
5446   map.bucket_count = read_4_bytes (abfd, addr);
5447   addr += 4;
5448
5449   /* name_count - The number of unique names in the index.  */
5450   map.name_count = read_4_bytes (abfd, addr);
5451   addr += 4;
5452
5453   /* abbrev_table_size - The size in bytes of the abbreviations
5454      table.  */
5455   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5456   addr += 4;
5457
5458   /* augmentation_string_size - The size in bytes of the augmentation
5459      string.  This value is rounded up to a multiple of 4.  */
5460   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5461   addr += 4;
5462   map.augmentation_is_gdb = ((augmentation_string_size
5463                               == sizeof (dwarf5_augmentation))
5464                              && memcmp (addr, dwarf5_augmentation,
5465                                         sizeof (dwarf5_augmentation)) == 0);
5466   augmentation_string_size += (-augmentation_string_size) & 3;
5467   addr += augmentation_string_size;
5468
5469   /* List of CUs */
5470   map.cu_table_reordered = addr;
5471   addr += map.cu_count * map.offset_size;
5472
5473   /* List of Local TUs */
5474   map.tu_table_reordered = addr;
5475   addr += map.tu_count * map.offset_size;
5476
5477   /* Hash Lookup Table */
5478   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5479   addr += map.bucket_count * 4;
5480   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5481   addr += map.name_count * 4;
5482
5483   /* Name Table */
5484   map.name_table_string_offs_reordered = addr;
5485   addr += map.name_count * map.offset_size;
5486   map.name_table_entry_offs_reordered = addr;
5487   addr += map.name_count * map.offset_size;
5488
5489   const gdb_byte *abbrev_table_start = addr;
5490   for (;;)
5491     {
5492       unsigned int bytes_read;
5493       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5494       addr += bytes_read;
5495       if (index_num == 0)
5496         break;
5497
5498       const auto insertpair
5499         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5500       if (!insertpair.second)
5501         {
5502           warning (_("Section .debug_names in %s has duplicate index %s, "
5503                      "ignoring .debug_names."),
5504                    filename, pulongest (index_num));
5505           return false;
5506         }
5507       mapped_debug_names::index_val &indexval = insertpair.first->second;
5508       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5509       addr += bytes_read;
5510
5511       for (;;)
5512         {
5513           mapped_debug_names::index_val::attr attr;
5514           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5515           addr += bytes_read;
5516           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5517           addr += bytes_read;
5518           if (attr.form == DW_FORM_implicit_const)
5519             {
5520               attr.implicit_const = read_signed_leb128 (abfd, addr,
5521                                                         &bytes_read);
5522               addr += bytes_read;
5523             }
5524           if (attr.dw_idx == 0 && attr.form == 0)
5525             break;
5526           indexval.attr_vec.push_back (std::move (attr));
5527         }
5528     }
5529   if (addr != abbrev_table_start + abbrev_table_size)
5530     {
5531       warning (_("Section .debug_names in %s has abbreviation_table "
5532                  "of size %zu vs. written as %u, ignoring .debug_names."),
5533                filename, addr - abbrev_table_start, abbrev_table_size);
5534       return false;
5535     }
5536   map.entry_pool = addr;
5537
5538   return true;
5539 }
5540
5541 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5542    list.  */
5543
5544 static void
5545 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5546                                   const mapped_debug_names &map,
5547                                   dwarf2_section_info &section,
5548                                   bool is_dwz)
5549 {
5550   sect_offset sect_off_prev;
5551   for (uint32_t i = 0; i <= map.cu_count; ++i)
5552     {
5553       sect_offset sect_off_next;
5554       if (i < map.cu_count)
5555         {
5556           sect_off_next
5557             = (sect_offset) (extract_unsigned_integer
5558                              (map.cu_table_reordered + i * map.offset_size,
5559                               map.offset_size,
5560                               map.dwarf5_byte_order));
5561         }
5562       else
5563         sect_off_next = (sect_offset) section.size;
5564       if (i >= 1)
5565         {
5566           const ULONGEST length = sect_off_next - sect_off_prev;
5567           dwarf2_per_cu_data *per_cu
5568             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5569                                          sect_off_prev, length);
5570           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5571         }
5572       sect_off_prev = sect_off_next;
5573     }
5574 }
5575
5576 /* Read the CU list from the mapped index, and use it to create all
5577    the CU objects for this dwarf2_per_objfile.  */
5578
5579 static void
5580 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5581                              const mapped_debug_names &map,
5582                              const mapped_debug_names &dwz_map)
5583 {
5584   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5585   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5586
5587   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5588                                     dwarf2_per_objfile->info,
5589                                     false /* is_dwz */);
5590
5591   if (dwz_map.cu_count == 0)
5592     return;
5593
5594   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5595   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5596                                     true /* is_dwz */);
5597 }
5598
5599 /* Read .debug_names.  If everything went ok, initialize the "quick"
5600    elements of all the CUs and return true.  Otherwise, return false.  */
5601
5602 static bool
5603 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5604 {
5605   mapped_debug_names local_map (dwarf2_per_objfile);
5606   mapped_debug_names dwz_map (dwarf2_per_objfile);
5607   struct objfile *objfile = dwarf2_per_objfile->objfile;
5608
5609   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5610                                       &dwarf2_per_objfile->debug_names,
5611                                       local_map))
5612     return false;
5613
5614   /* Don't use the index if it's empty.  */
5615   if (local_map.name_count == 0)
5616     return false;
5617
5618   /* If there is a .dwz file, read it so we can get its CU list as
5619      well.  */
5620   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5621   if (dwz != NULL)
5622     {
5623       if (!read_debug_names_from_section (objfile,
5624                                           bfd_get_filename (dwz->dwz_bfd),
5625                                           &dwz->debug_names, dwz_map))
5626         {
5627           warning (_("could not read '.debug_names' section from %s; skipping"),
5628                    bfd_get_filename (dwz->dwz_bfd));
5629           return false;
5630         }
5631     }
5632
5633   create_cus_from_debug_names (dwarf2_per_objfile, local_map, dwz_map);
5634
5635   if (local_map.tu_count != 0)
5636     {
5637       /* We can only handle a single .debug_types when we have an
5638          index.  */
5639       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5640         return false;
5641
5642       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5643                                                 dwarf2_per_objfile->types, 0);
5644
5645       create_signatured_type_table_from_debug_names
5646         (dwarf2_per_objfile, local_map, section, &dwarf2_per_objfile->abbrev);
5647     }
5648
5649   create_addrmap_from_aranges (dwarf2_per_objfile,
5650                                &dwarf2_per_objfile->debug_aranges);
5651
5652   dwarf2_per_objfile->debug_names_table.reset
5653     (new mapped_debug_names (dwarf2_per_objfile));
5654   *dwarf2_per_objfile->debug_names_table = std::move (local_map);
5655   dwarf2_per_objfile->using_index = 1;
5656   dwarf2_per_objfile->quick_file_names_table =
5657     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5658
5659   return true;
5660 }
5661
5662 /* Type used to manage iterating over all CUs looking for a symbol for
5663    .debug_names.  */
5664
5665 class dw2_debug_names_iterator
5666 {
5667 public:
5668   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5669      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5670   dw2_debug_names_iterator (const mapped_debug_names &map,
5671                             bool want_specific_block,
5672                             block_enum block_index, domain_enum domain,
5673                             const char *name)
5674     : m_map (map), m_want_specific_block (want_specific_block),
5675       m_block_index (block_index), m_domain (domain),
5676       m_addr (find_vec_in_debug_names (map, name))
5677   {}
5678
5679   dw2_debug_names_iterator (const mapped_debug_names &map,
5680                             search_domain search, uint32_t namei)
5681     : m_map (map),
5682       m_search (search),
5683       m_addr (find_vec_in_debug_names (map, namei))
5684   {}
5685
5686   /* Return the next matching CU or NULL if there are no more.  */
5687   dwarf2_per_cu_data *next ();
5688
5689 private:
5690   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5691                                                   const char *name);
5692   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5693                                                   uint32_t namei);
5694
5695   /* The internalized form of .debug_names.  */
5696   const mapped_debug_names &m_map;
5697
5698   /* If true, only look for symbols that match BLOCK_INDEX.  */
5699   const bool m_want_specific_block = false;
5700
5701   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5702      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5703      value.  */
5704   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5705
5706   /* The kind of symbol we're looking for.  */
5707   const domain_enum m_domain = UNDEF_DOMAIN;
5708   const search_domain m_search = ALL_DOMAIN;
5709
5710   /* The list of CUs from the index entry of the symbol, or NULL if
5711      not found.  */
5712   const gdb_byte *m_addr;
5713 };
5714
5715 const char *
5716 mapped_debug_names::namei_to_name (uint32_t namei) const
5717 {
5718   const ULONGEST namei_string_offs
5719     = extract_unsigned_integer ((name_table_string_offs_reordered
5720                                  + namei * offset_size),
5721                                 offset_size,
5722                                 dwarf5_byte_order);
5723   return read_indirect_string_at_offset
5724     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5725 }
5726
5727 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5728    found, return pointer to its pool data.  If NAME cannot be found,
5729    return NULL.  */
5730
5731 const gdb_byte *
5732 dw2_debug_names_iterator::find_vec_in_debug_names
5733   (const mapped_debug_names &map, const char *name)
5734 {
5735   int (*cmp) (const char *, const char *);
5736
5737   if (current_language->la_language == language_cplus
5738       || current_language->la_language == language_fortran
5739       || current_language->la_language == language_d)
5740     {
5741       /* NAME is already canonical.  Drop any qualifiers as
5742          .debug_names does not contain any.  */
5743
5744       if (strchr (name, '(') != NULL)
5745         {
5746           gdb::unique_xmalloc_ptr<char> without_params
5747             = cp_remove_params (name);
5748
5749           if (without_params != NULL)
5750             {
5751               name = without_params.get();
5752             }
5753         }
5754     }
5755
5756   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5757
5758   const uint32_t full_hash = dwarf5_djb_hash (name);
5759   uint32_t namei
5760     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5761                                 (map.bucket_table_reordered
5762                                  + (full_hash % map.bucket_count)), 4,
5763                                 map.dwarf5_byte_order);
5764   if (namei == 0)
5765     return NULL;
5766   --namei;
5767   if (namei >= map.name_count)
5768     {
5769       complaint (&symfile_complaints,
5770                  _("Wrong .debug_names with name index %u but name_count=%u "
5771                    "[in module %s]"),
5772                  namei, map.name_count,
5773                  objfile_name (map.dwarf2_per_objfile->objfile));
5774       return NULL;
5775     }
5776
5777   for (;;)
5778     {
5779       const uint32_t namei_full_hash
5780         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5781                                     (map.hash_table_reordered + namei), 4,
5782                                     map.dwarf5_byte_order);
5783       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5784         return NULL;
5785
5786       if (full_hash == namei_full_hash)
5787         {
5788           const char *const namei_string = map.namei_to_name (namei);
5789
5790 #if 0 /* An expensive sanity check.  */
5791           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5792             {
5793               complaint (&symfile_complaints,
5794                          _("Wrong .debug_names hash for string at index %u "
5795                            "[in module %s]"),
5796                          namei, objfile_name (dwarf2_per_objfile->objfile));
5797               return NULL;
5798             }
5799 #endif
5800
5801           if (cmp (namei_string, name) == 0)
5802             {
5803               const ULONGEST namei_entry_offs
5804                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5805                                              + namei * map.offset_size),
5806                                             map.offset_size, map.dwarf5_byte_order);
5807               return map.entry_pool + namei_entry_offs;
5808             }
5809         }
5810
5811       ++namei;
5812       if (namei >= map.name_count)
5813         return NULL;
5814     }
5815 }
5816
5817 const gdb_byte *
5818 dw2_debug_names_iterator::find_vec_in_debug_names
5819   (const mapped_debug_names &map, uint32_t namei)
5820 {
5821   if (namei >= map.name_count)
5822     {
5823       complaint (&symfile_complaints,
5824                  _("Wrong .debug_names with name index %u but name_count=%u "
5825                    "[in module %s]"),
5826                  namei, map.name_count,
5827                  objfile_name (map.dwarf2_per_objfile->objfile));
5828       return NULL;
5829     }
5830
5831   const ULONGEST namei_entry_offs
5832     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5833                                  + namei * map.offset_size),
5834                                 map.offset_size, map.dwarf5_byte_order);
5835   return map.entry_pool + namei_entry_offs;
5836 }
5837
5838 /* See dw2_debug_names_iterator.  */
5839
5840 dwarf2_per_cu_data *
5841 dw2_debug_names_iterator::next ()
5842 {
5843   if (m_addr == NULL)
5844     return NULL;
5845
5846   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5847   struct objfile *objfile = dwarf2_per_objfile->objfile;
5848   bfd *const abfd = objfile->obfd;
5849
5850  again:
5851
5852   unsigned int bytes_read;
5853   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5854   m_addr += bytes_read;
5855   if (abbrev == 0)
5856     return NULL;
5857
5858   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5859   if (indexval_it == m_map.abbrev_map.cend ())
5860     {
5861       complaint (&symfile_complaints,
5862                  _("Wrong .debug_names undefined abbrev code %s "
5863                    "[in module %s]"),
5864                  pulongest (abbrev), objfile_name (objfile));
5865       return NULL;
5866     }
5867   const mapped_debug_names::index_val &indexval = indexval_it->second;
5868   bool have_is_static = false;
5869   bool is_static;
5870   dwarf2_per_cu_data *per_cu = NULL;
5871   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5872     {
5873       ULONGEST ull;
5874       switch (attr.form)
5875         {
5876         case DW_FORM_implicit_const:
5877           ull = attr.implicit_const;
5878           break;
5879         case DW_FORM_flag_present:
5880           ull = 1;
5881           break;
5882         case DW_FORM_udata:
5883           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5884           m_addr += bytes_read;
5885           break;
5886         default:
5887           complaint (&symfile_complaints,
5888                      _("Unsupported .debug_names form %s [in module %s]"),
5889                      dwarf_form_name (attr.form),
5890                      objfile_name (objfile));
5891           return NULL;
5892         }
5893       switch (attr.dw_idx)
5894         {
5895         case DW_IDX_compile_unit:
5896           /* Don't crash on bad data.  */
5897           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5898             {
5899               complaint (&symfile_complaints,
5900                          _(".debug_names entry has bad CU index %s"
5901                            " [in module %s]"),
5902                          pulongest (ull),
5903                          objfile_name (dwarf2_per_objfile->objfile));
5904               continue;
5905             }
5906           per_cu = dwarf2_per_objfile->get_cutu (ull);
5907           break;
5908         case DW_IDX_type_unit:
5909           /* Don't crash on bad data.  */
5910           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5911             {
5912               complaint (&symfile_complaints,
5913                          _(".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);
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);
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_relocate,
6163   dw2_debug_names_expand_symtabs_for_function,
6164   dw2_expand_all_symtabs,
6165   dw2_expand_symtabs_with_fullname,
6166   dw2_map_matching_symbols,
6167   dw2_debug_names_expand_symtabs_matching,
6168   dw2_find_pc_sect_compunit_symtab,
6169   NULL,
6170   dw2_map_symbol_filenames
6171 };
6172
6173 /* See symfile.h.  */
6174
6175 bool
6176 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6177 {
6178   struct dwarf2_per_objfile *dwarf2_per_objfile
6179     = get_dwarf2_per_objfile (objfile);
6180
6181   /* If we're about to read full symbols, don't bother with the
6182      indices.  In this case we also don't care if some other debug
6183      format is making psymtabs, because they are all about to be
6184      expanded anyway.  */
6185   if ((objfile->flags & OBJF_READNOW))
6186     {
6187       dwarf2_per_objfile->using_index = 1;
6188       create_all_comp_units (dwarf2_per_objfile);
6189       create_all_type_units (dwarf2_per_objfile);
6190       dwarf2_per_objfile->quick_file_names_table
6191         = create_quick_file_names_table
6192             (dwarf2_per_objfile->all_comp_units.size ());
6193
6194       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6195                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6196         {
6197           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6198
6199           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6200                                             struct dwarf2_per_cu_quick_data);
6201         }
6202
6203       /* Return 1 so that gdb sees the "quick" functions.  However,
6204          these functions will be no-ops because we will have expanded
6205          all symtabs.  */
6206       *index_kind = dw_index_kind::GDB_INDEX;
6207       return true;
6208     }
6209
6210   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6211     {
6212       *index_kind = dw_index_kind::DEBUG_NAMES;
6213       return true;
6214     }
6215
6216   if (dwarf2_read_index (dwarf2_per_objfile))
6217     {
6218       *index_kind = dw_index_kind::GDB_INDEX;
6219       return true;
6220     }
6221
6222   return false;
6223 }
6224
6225 \f
6226
6227 /* Build a partial symbol table.  */
6228
6229 void
6230 dwarf2_build_psymtabs (struct objfile *objfile)
6231 {
6232   struct dwarf2_per_objfile *dwarf2_per_objfile
6233     = get_dwarf2_per_objfile (objfile);
6234
6235   if (objfile->global_psymbols.capacity () == 0
6236       && objfile->static_psymbols.capacity () == 0)
6237     init_psymbol_list (objfile, 1024);
6238
6239   TRY
6240     {
6241       /* This isn't really ideal: all the data we allocate on the
6242          objfile's obstack is still uselessly kept around.  However,
6243          freeing it seems unsafe.  */
6244       psymtab_discarder psymtabs (objfile);
6245       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6246       psymtabs.keep ();
6247     }
6248   CATCH (except, RETURN_MASK_ERROR)
6249     {
6250       exception_print (gdb_stderr, except);
6251     }
6252   END_CATCH
6253 }
6254
6255 /* Return the total length of the CU described by HEADER.  */
6256
6257 static unsigned int
6258 get_cu_length (const struct comp_unit_head *header)
6259 {
6260   return header->initial_length_size + header->length;
6261 }
6262
6263 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6264
6265 static inline bool
6266 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6267 {
6268   sect_offset bottom = cu_header->sect_off;
6269   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6270
6271   return sect_off >= bottom && sect_off < top;
6272 }
6273
6274 /* Find the base address of the compilation unit for range lists and
6275    location lists.  It will normally be specified by DW_AT_low_pc.
6276    In DWARF-3 draft 4, the base address could be overridden by
6277    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6278    compilation units with discontinuous ranges.  */
6279
6280 static void
6281 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6282 {
6283   struct attribute *attr;
6284
6285   cu->base_known = 0;
6286   cu->base_address = 0;
6287
6288   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6289   if (attr)
6290     {
6291       cu->base_address = attr_value_as_address (attr);
6292       cu->base_known = 1;
6293     }
6294   else
6295     {
6296       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6297       if (attr)
6298         {
6299           cu->base_address = attr_value_as_address (attr);
6300           cu->base_known = 1;
6301         }
6302     }
6303 }
6304
6305 /* Read in the comp unit header information from the debug_info at info_ptr.
6306    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6307    NOTE: This leaves members offset, first_die_offset to be filled in
6308    by the caller.  */
6309
6310 static const gdb_byte *
6311 read_comp_unit_head (struct comp_unit_head *cu_header,
6312                      const gdb_byte *info_ptr,
6313                      struct dwarf2_section_info *section,
6314                      rcuh_kind section_kind)
6315 {
6316   int signed_addr;
6317   unsigned int bytes_read;
6318   const char *filename = get_section_file_name (section);
6319   bfd *abfd = get_section_bfd_owner (section);
6320
6321   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6322   cu_header->initial_length_size = bytes_read;
6323   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6324   info_ptr += bytes_read;
6325   cu_header->version = read_2_bytes (abfd, info_ptr);
6326   info_ptr += 2;
6327   if (cu_header->version < 5)
6328     switch (section_kind)
6329       {
6330       case rcuh_kind::COMPILE:
6331         cu_header->unit_type = DW_UT_compile;
6332         break;
6333       case rcuh_kind::TYPE:
6334         cu_header->unit_type = DW_UT_type;
6335         break;
6336       default:
6337         internal_error (__FILE__, __LINE__,
6338                         _("read_comp_unit_head: invalid section_kind"));
6339       }
6340   else
6341     {
6342       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6343                                                  (read_1_byte (abfd, info_ptr));
6344       info_ptr += 1;
6345       switch (cu_header->unit_type)
6346         {
6347         case DW_UT_compile:
6348           if (section_kind != rcuh_kind::COMPILE)
6349             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6350                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6351                    filename);
6352           break;
6353         case DW_UT_type:
6354           section_kind = rcuh_kind::TYPE;
6355           break;
6356         default:
6357           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6358                  "(is %d, should be %d or %d) [in module %s]"),
6359                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6360         }
6361
6362       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6363       info_ptr += 1;
6364     }
6365   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6366                                                           cu_header,
6367                                                           &bytes_read);
6368   info_ptr += bytes_read;
6369   if (cu_header->version < 5)
6370     {
6371       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6372       info_ptr += 1;
6373     }
6374   signed_addr = bfd_get_sign_extend_vma (abfd);
6375   if (signed_addr < 0)
6376     internal_error (__FILE__, __LINE__,
6377                     _("read_comp_unit_head: dwarf from non elf file"));
6378   cu_header->signed_addr_p = signed_addr;
6379
6380   if (section_kind == rcuh_kind::TYPE)
6381     {
6382       LONGEST type_offset;
6383
6384       cu_header->signature = read_8_bytes (abfd, info_ptr);
6385       info_ptr += 8;
6386
6387       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6388       info_ptr += bytes_read;
6389       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6390       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6391         error (_("Dwarf Error: Too big type_offset in compilation unit "
6392                "header (is %s) [in module %s]"), plongest (type_offset),
6393                filename);
6394     }
6395
6396   return info_ptr;
6397 }
6398
6399 /* Helper function that returns the proper abbrev section for
6400    THIS_CU.  */
6401
6402 static struct dwarf2_section_info *
6403 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6404 {
6405   struct dwarf2_section_info *abbrev;
6406   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6407
6408   if (this_cu->is_dwz)
6409     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6410   else
6411     abbrev = &dwarf2_per_objfile->abbrev;
6412
6413   return abbrev;
6414 }
6415
6416 /* Subroutine of read_and_check_comp_unit_head and
6417    read_and_check_type_unit_head to simplify them.
6418    Perform various error checking on the header.  */
6419
6420 static void
6421 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6422                             struct comp_unit_head *header,
6423                             struct dwarf2_section_info *section,
6424                             struct dwarf2_section_info *abbrev_section)
6425 {
6426   const char *filename = get_section_file_name (section);
6427
6428   if (header->version < 2 || header->version > 5)
6429     error (_("Dwarf Error: wrong version in compilation unit header "
6430            "(is %d, should be 2, 3, 4 or 5) [in module %s]"), header->version,
6431            filename);
6432
6433   if (to_underlying (header->abbrev_sect_off)
6434       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6435     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6436            "(offset %s + 6) [in module %s]"),
6437            sect_offset_str (header->abbrev_sect_off),
6438            sect_offset_str (header->sect_off),
6439            filename);
6440
6441   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6442      avoid potential 32-bit overflow.  */
6443   if (((ULONGEST) header->sect_off + get_cu_length (header))
6444       > section->size)
6445     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6446            "(offset %s + 0) [in module %s]"),
6447            header->length, sect_offset_str (header->sect_off),
6448            filename);
6449 }
6450
6451 /* Read in a CU/TU header and perform some basic error checking.
6452    The contents of the header are stored in HEADER.
6453    The result is a pointer to the start of the first DIE.  */
6454
6455 static const gdb_byte *
6456 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6457                                struct comp_unit_head *header,
6458                                struct dwarf2_section_info *section,
6459                                struct dwarf2_section_info *abbrev_section,
6460                                const gdb_byte *info_ptr,
6461                                rcuh_kind section_kind)
6462 {
6463   const gdb_byte *beg_of_comp_unit = info_ptr;
6464
6465   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6466
6467   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6468
6469   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6470
6471   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6472                               abbrev_section);
6473
6474   return info_ptr;
6475 }
6476
6477 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6478
6479 static sect_offset
6480 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6481                     struct dwarf2_section_info *section,
6482                     sect_offset sect_off)
6483 {
6484   bfd *abfd = get_section_bfd_owner (section);
6485   const gdb_byte *info_ptr;
6486   unsigned int initial_length_size, offset_size;
6487   uint16_t version;
6488
6489   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6490   info_ptr = section->buffer + to_underlying (sect_off);
6491   read_initial_length (abfd, info_ptr, &initial_length_size);
6492   offset_size = initial_length_size == 4 ? 4 : 8;
6493   info_ptr += initial_length_size;
6494
6495   version = read_2_bytes (abfd, info_ptr);
6496   info_ptr += 2;
6497   if (version >= 5)
6498     {
6499       /* Skip unit type and address size.  */
6500       info_ptr += 2;
6501     }
6502
6503   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6504 }
6505
6506 /* Allocate a new partial symtab for file named NAME and mark this new
6507    partial symtab as being an include of PST.  */
6508
6509 static void
6510 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6511                                struct objfile *objfile)
6512 {
6513   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6514
6515   if (!IS_ABSOLUTE_PATH (subpst->filename))
6516     {
6517       /* It shares objfile->objfile_obstack.  */
6518       subpst->dirname = pst->dirname;
6519     }
6520
6521   subpst->textlow = 0;
6522   subpst->texthigh = 0;
6523
6524   subpst->dependencies
6525     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6526   subpst->dependencies[0] = pst;
6527   subpst->number_of_dependencies = 1;
6528
6529   subpst->globals_offset = 0;
6530   subpst->n_global_syms = 0;
6531   subpst->statics_offset = 0;
6532   subpst->n_static_syms = 0;
6533   subpst->compunit_symtab = NULL;
6534   subpst->read_symtab = pst->read_symtab;
6535   subpst->readin = 0;
6536
6537   /* No private part is necessary for include psymtabs.  This property
6538      can be used to differentiate between such include psymtabs and
6539      the regular ones.  */
6540   subpst->read_symtab_private = NULL;
6541 }
6542
6543 /* Read the Line Number Program data and extract the list of files
6544    included by the source file represented by PST.  Build an include
6545    partial symtab for each of these included files.  */
6546
6547 static void
6548 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6549                                struct die_info *die,
6550                                struct partial_symtab *pst)
6551 {
6552   line_header_up lh;
6553   struct attribute *attr;
6554
6555   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6556   if (attr)
6557     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6558   if (lh == NULL)
6559     return;  /* No linetable, so no includes.  */
6560
6561   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
6562   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst, pst->textlow, 1);
6563 }
6564
6565 static hashval_t
6566 hash_signatured_type (const void *item)
6567 {
6568   const struct signatured_type *sig_type
6569     = (const struct signatured_type *) item;
6570
6571   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6572   return sig_type->signature;
6573 }
6574
6575 static int
6576 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6577 {
6578   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6579   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6580
6581   return lhs->signature == rhs->signature;
6582 }
6583
6584 /* Allocate a hash table for signatured types.  */
6585
6586 static htab_t
6587 allocate_signatured_type_table (struct objfile *objfile)
6588 {
6589   return htab_create_alloc_ex (41,
6590                                hash_signatured_type,
6591                                eq_signatured_type,
6592                                NULL,
6593                                &objfile->objfile_obstack,
6594                                hashtab_obstack_allocate,
6595                                dummy_obstack_deallocate);
6596 }
6597
6598 /* A helper function to add a signatured type CU to a table.  */
6599
6600 static int
6601 add_signatured_type_cu_to_table (void **slot, void *datum)
6602 {
6603   struct signatured_type *sigt = (struct signatured_type *) *slot;
6604   std::vector<signatured_type *> *all_type_units
6605     = (std::vector<signatured_type *> *) datum;
6606
6607   all_type_units->push_back (sigt);
6608
6609   return 1;
6610 }
6611
6612 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6613    and fill them into TYPES_HTAB.  It will process only type units,
6614    therefore DW_UT_type.  */
6615
6616 static void
6617 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6618                               struct dwo_file *dwo_file,
6619                               dwarf2_section_info *section, htab_t &types_htab,
6620                               rcuh_kind section_kind)
6621 {
6622   struct objfile *objfile = dwarf2_per_objfile->objfile;
6623   struct dwarf2_section_info *abbrev_section;
6624   bfd *abfd;
6625   const gdb_byte *info_ptr, *end_ptr;
6626
6627   abbrev_section = (dwo_file != NULL
6628                     ? &dwo_file->sections.abbrev
6629                     : &dwarf2_per_objfile->abbrev);
6630
6631   if (dwarf_read_debug)
6632     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6633                         get_section_name (section),
6634                         get_section_file_name (abbrev_section));
6635
6636   dwarf2_read_section (objfile, section);
6637   info_ptr = section->buffer;
6638
6639   if (info_ptr == NULL)
6640     return;
6641
6642   /* We can't set abfd until now because the section may be empty or
6643      not present, in which case the bfd is unknown.  */
6644   abfd = get_section_bfd_owner (section);
6645
6646   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6647      because we don't need to read any dies: the signature is in the
6648      header.  */
6649
6650   end_ptr = info_ptr + section->size;
6651   while (info_ptr < end_ptr)
6652     {
6653       struct signatured_type *sig_type;
6654       struct dwo_unit *dwo_tu;
6655       void **slot;
6656       const gdb_byte *ptr = info_ptr;
6657       struct comp_unit_head header;
6658       unsigned int length;
6659
6660       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6661
6662       /* Initialize it due to a false compiler warning.  */
6663       header.signature = -1;
6664       header.type_cu_offset_in_tu = (cu_offset) -1;
6665
6666       /* We need to read the type's signature in order to build the hash
6667          table, but we don't need anything else just yet.  */
6668
6669       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6670                                            abbrev_section, ptr, section_kind);
6671
6672       length = get_cu_length (&header);
6673
6674       /* Skip dummy type units.  */
6675       if (ptr >= info_ptr + length
6676           || peek_abbrev_code (abfd, ptr) == 0
6677           || header.unit_type != DW_UT_type)
6678         {
6679           info_ptr += length;
6680           continue;
6681         }
6682
6683       if (types_htab == NULL)
6684         {
6685           if (dwo_file)
6686             types_htab = allocate_dwo_unit_table (objfile);
6687           else
6688             types_htab = allocate_signatured_type_table (objfile);
6689         }
6690
6691       if (dwo_file)
6692         {
6693           sig_type = NULL;
6694           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6695                                    struct dwo_unit);
6696           dwo_tu->dwo_file = dwo_file;
6697           dwo_tu->signature = header.signature;
6698           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6699           dwo_tu->section = section;
6700           dwo_tu->sect_off = sect_off;
6701           dwo_tu->length = length;
6702         }
6703       else
6704         {
6705           /* N.B.: type_offset is not usable if this type uses a DWO file.
6706              The real type_offset is in the DWO file.  */
6707           dwo_tu = NULL;
6708           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6709                                      struct signatured_type);
6710           sig_type->signature = header.signature;
6711           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6712           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6713           sig_type->per_cu.is_debug_types = 1;
6714           sig_type->per_cu.section = section;
6715           sig_type->per_cu.sect_off = sect_off;
6716           sig_type->per_cu.length = length;
6717         }
6718
6719       slot = htab_find_slot (types_htab,
6720                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6721                              INSERT);
6722       gdb_assert (slot != NULL);
6723       if (*slot != NULL)
6724         {
6725           sect_offset dup_sect_off;
6726
6727           if (dwo_file)
6728             {
6729               const struct dwo_unit *dup_tu
6730                 = (const struct dwo_unit *) *slot;
6731
6732               dup_sect_off = dup_tu->sect_off;
6733             }
6734           else
6735             {
6736               const struct signatured_type *dup_tu
6737                 = (const struct signatured_type *) *slot;
6738
6739               dup_sect_off = dup_tu->per_cu.sect_off;
6740             }
6741
6742           complaint (&symfile_complaints,
6743                      _("debug type entry at offset %s is duplicate to"
6744                        " the entry at offset %s, signature %s"),
6745                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6746                      hex_string (header.signature));
6747         }
6748       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6749
6750       if (dwarf_read_debug > 1)
6751         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6752                             sect_offset_str (sect_off),
6753                             hex_string (header.signature));
6754
6755       info_ptr += length;
6756     }
6757 }
6758
6759 /* Create the hash table of all entries in the .debug_types
6760    (or .debug_types.dwo) section(s).
6761    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6762    otherwise it is NULL.
6763
6764    The result is a pointer to the hash table or NULL if there are no types.
6765
6766    Note: This function processes DWO files only, not DWP files.  */
6767
6768 static void
6769 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6770                                struct dwo_file *dwo_file,
6771                                VEC (dwarf2_section_info_def) *types,
6772                                htab_t &types_htab)
6773 {
6774   int ix;
6775   struct dwarf2_section_info *section;
6776
6777   if (VEC_empty (dwarf2_section_info_def, types))
6778     return;
6779
6780   for (ix = 0;
6781        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6782        ++ix)
6783     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6784                                   types_htab, rcuh_kind::TYPE);
6785 }
6786
6787 /* Create the hash table of all entries in the .debug_types section,
6788    and initialize all_type_units.
6789    The result is zero if there is an error (e.g. missing .debug_types section),
6790    otherwise non-zero.  */
6791
6792 static int
6793 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6794 {
6795   htab_t types_htab = NULL;
6796
6797   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6798                                 &dwarf2_per_objfile->info, types_htab,
6799                                 rcuh_kind::COMPILE);
6800   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6801                                  dwarf2_per_objfile->types, types_htab);
6802   if (types_htab == NULL)
6803     {
6804       dwarf2_per_objfile->signatured_types = NULL;
6805       return 0;
6806     }
6807
6808   dwarf2_per_objfile->signatured_types = types_htab;
6809
6810   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6811   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6812
6813   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6814                           &dwarf2_per_objfile->all_type_units);
6815
6816   return 1;
6817 }
6818
6819 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6820    If SLOT is non-NULL, it is the entry to use in the hash table.
6821    Otherwise we find one.  */
6822
6823 static struct signatured_type *
6824 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6825                void **slot)
6826 {
6827   struct objfile *objfile = dwarf2_per_objfile->objfile;
6828
6829   if (dwarf2_per_objfile->all_type_units.size ()
6830       == dwarf2_per_objfile->all_type_units.capacity ())
6831     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6832
6833   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6834                                               struct signatured_type);
6835
6836   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6837   sig_type->signature = sig;
6838   sig_type->per_cu.is_debug_types = 1;
6839   if (dwarf2_per_objfile->using_index)
6840     {
6841       sig_type->per_cu.v.quick =
6842         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6843                         struct dwarf2_per_cu_quick_data);
6844     }
6845
6846   if (slot == NULL)
6847     {
6848       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6849                              sig_type, INSERT);
6850     }
6851   gdb_assert (*slot == NULL);
6852   *slot = sig_type;
6853   /* The rest of sig_type must be filled in by the caller.  */
6854   return sig_type;
6855 }
6856
6857 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6858    Fill in SIG_ENTRY with DWO_ENTRY.  */
6859
6860 static void
6861 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6862                                   struct signatured_type *sig_entry,
6863                                   struct dwo_unit *dwo_entry)
6864 {
6865   /* Make sure we're not clobbering something we don't expect to.  */
6866   gdb_assert (! sig_entry->per_cu.queued);
6867   gdb_assert (sig_entry->per_cu.cu == NULL);
6868   if (dwarf2_per_objfile->using_index)
6869     {
6870       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6871       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6872     }
6873   else
6874       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6875   gdb_assert (sig_entry->signature == dwo_entry->signature);
6876   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6877   gdb_assert (sig_entry->type_unit_group == NULL);
6878   gdb_assert (sig_entry->dwo_unit == NULL);
6879
6880   sig_entry->per_cu.section = dwo_entry->section;
6881   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6882   sig_entry->per_cu.length = dwo_entry->length;
6883   sig_entry->per_cu.reading_dwo_directly = 1;
6884   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6885   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6886   sig_entry->dwo_unit = dwo_entry;
6887 }
6888
6889 /* Subroutine of lookup_signatured_type.
6890    If we haven't read the TU yet, create the signatured_type data structure
6891    for a TU to be read in directly from a DWO file, bypassing the stub.
6892    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6893    using .gdb_index, then when reading a CU we want to stay in the DWO file
6894    containing that CU.  Otherwise we could end up reading several other DWO
6895    files (due to comdat folding) to process the transitive closure of all the
6896    mentioned TUs, and that can be slow.  The current DWO file will have every
6897    type signature that it needs.
6898    We only do this for .gdb_index because in the psymtab case we already have
6899    to read all the DWOs to build the type unit groups.  */
6900
6901 static struct signatured_type *
6902 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6903 {
6904   struct dwarf2_per_objfile *dwarf2_per_objfile
6905     = cu->per_cu->dwarf2_per_objfile;
6906   struct objfile *objfile = dwarf2_per_objfile->objfile;
6907   struct dwo_file *dwo_file;
6908   struct dwo_unit find_dwo_entry, *dwo_entry;
6909   struct signatured_type find_sig_entry, *sig_entry;
6910   void **slot;
6911
6912   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6913
6914   /* If TU skeletons have been removed then we may not have read in any
6915      TUs yet.  */
6916   if (dwarf2_per_objfile->signatured_types == NULL)
6917     {
6918       dwarf2_per_objfile->signatured_types
6919         = allocate_signatured_type_table (objfile);
6920     }
6921
6922   /* We only ever need to read in one copy of a signatured type.
6923      Use the global signatured_types array to do our own comdat-folding
6924      of types.  If this is the first time we're reading this TU, and
6925      the TU has an entry in .gdb_index, replace the recorded data from
6926      .gdb_index with this TU.  */
6927
6928   find_sig_entry.signature = sig;
6929   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6930                          &find_sig_entry, INSERT);
6931   sig_entry = (struct signatured_type *) *slot;
6932
6933   /* We can get here with the TU already read, *or* in the process of being
6934      read.  Don't reassign the global entry to point to this DWO if that's
6935      the case.  Also note that if the TU is already being read, it may not
6936      have come from a DWO, the program may be a mix of Fission-compiled
6937      code and non-Fission-compiled code.  */
6938
6939   /* Have we already tried to read this TU?
6940      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6941      needn't exist in the global table yet).  */
6942   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
6943     return sig_entry;
6944
6945   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
6946      dwo_unit of the TU itself.  */
6947   dwo_file = cu->dwo_unit->dwo_file;
6948
6949   /* Ok, this is the first time we're reading this TU.  */
6950   if (dwo_file->tus == NULL)
6951     return NULL;
6952   find_dwo_entry.signature = sig;
6953   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
6954   if (dwo_entry == NULL)
6955     return NULL;
6956
6957   /* If the global table doesn't have an entry for this TU, add one.  */
6958   if (sig_entry == NULL)
6959     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
6960
6961   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
6962   sig_entry->per_cu.tu_read = 1;
6963   return sig_entry;
6964 }
6965
6966 /* Subroutine of lookup_signatured_type.
6967    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6968    then try the DWP file.  If the TU stub (skeleton) has been removed then
6969    it won't be in .gdb_index.  */
6970
6971 static struct signatured_type *
6972 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6973 {
6974   struct dwarf2_per_objfile *dwarf2_per_objfile
6975     = cu->per_cu->dwarf2_per_objfile;
6976   struct objfile *objfile = dwarf2_per_objfile->objfile;
6977   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
6978   struct dwo_unit *dwo_entry;
6979   struct signatured_type find_sig_entry, *sig_entry;
6980   void **slot;
6981
6982   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6983   gdb_assert (dwp_file != NULL);
6984
6985   /* If TU skeletons have been removed then we may not have read in any
6986      TUs yet.  */
6987   if (dwarf2_per_objfile->signatured_types == NULL)
6988     {
6989       dwarf2_per_objfile->signatured_types
6990         = allocate_signatured_type_table (objfile);
6991     }
6992
6993   find_sig_entry.signature = sig;
6994   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6995                          &find_sig_entry, INSERT);
6996   sig_entry = (struct signatured_type *) *slot;
6997
6998   /* Have we already tried to read this TU?
6999      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7000      needn't exist in the global table yet).  */
7001   if (sig_entry != NULL)
7002     return sig_entry;
7003
7004   if (dwp_file->tus == NULL)
7005     return NULL;
7006   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7007                                       sig, 1 /* is_debug_types */);
7008   if (dwo_entry == NULL)
7009     return NULL;
7010
7011   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7012   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7013
7014   return sig_entry;
7015 }
7016
7017 /* Lookup a signature based type for DW_FORM_ref_sig8.
7018    Returns NULL if signature SIG is not present in the table.
7019    It is up to the caller to complain about this.  */
7020
7021 static struct signatured_type *
7022 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7023 {
7024   struct dwarf2_per_objfile *dwarf2_per_objfile
7025     = cu->per_cu->dwarf2_per_objfile;
7026
7027   if (cu->dwo_unit
7028       && dwarf2_per_objfile->using_index)
7029     {
7030       /* We're in a DWO/DWP file, and we're using .gdb_index.
7031          These cases require special processing.  */
7032       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7033         return lookup_dwo_signatured_type (cu, sig);
7034       else
7035         return lookup_dwp_signatured_type (cu, sig);
7036     }
7037   else
7038     {
7039       struct signatured_type find_entry, *entry;
7040
7041       if (dwarf2_per_objfile->signatured_types == NULL)
7042         return NULL;
7043       find_entry.signature = sig;
7044       entry = ((struct signatured_type *)
7045                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7046       return entry;
7047     }
7048 }
7049 \f
7050 /* Low level DIE reading support.  */
7051
7052 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7053
7054 static void
7055 init_cu_die_reader (struct die_reader_specs *reader,
7056                     struct dwarf2_cu *cu,
7057                     struct dwarf2_section_info *section,
7058                     struct dwo_file *dwo_file,
7059                     struct abbrev_table *abbrev_table)
7060 {
7061   gdb_assert (section->readin && section->buffer != NULL);
7062   reader->abfd = get_section_bfd_owner (section);
7063   reader->cu = cu;
7064   reader->dwo_file = dwo_file;
7065   reader->die_section = section;
7066   reader->buffer = section->buffer;
7067   reader->buffer_end = section->buffer + section->size;
7068   reader->comp_dir = NULL;
7069   reader->abbrev_table = abbrev_table;
7070 }
7071
7072 /* Subroutine of init_cutu_and_read_dies to simplify it.
7073    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7074    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7075    already.
7076
7077    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7078    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7079    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7080    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7081    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7082    STUB_COMP_DIR may be non-NULL.
7083    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7084    are filled in with the info of the DIE from the DWO file.
7085    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7086    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7087    kept around for at least as long as *RESULT_READER.
7088
7089    The result is non-zero if a valid (non-dummy) DIE was found.  */
7090
7091 static int
7092 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7093                         struct dwo_unit *dwo_unit,
7094                         struct die_info *stub_comp_unit_die,
7095                         const char *stub_comp_dir,
7096                         struct die_reader_specs *result_reader,
7097                         const gdb_byte **result_info_ptr,
7098                         struct die_info **result_comp_unit_die,
7099                         int *result_has_children,
7100                         abbrev_table_up *result_dwo_abbrev_table)
7101 {
7102   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7103   struct objfile *objfile = dwarf2_per_objfile->objfile;
7104   struct dwarf2_cu *cu = this_cu->cu;
7105   bfd *abfd;
7106   const gdb_byte *begin_info_ptr, *info_ptr;
7107   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7108   int i,num_extra_attrs;
7109   struct dwarf2_section_info *dwo_abbrev_section;
7110   struct attribute *attr;
7111   struct die_info *comp_unit_die;
7112
7113   /* At most one of these may be provided.  */
7114   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7115
7116   /* These attributes aren't processed until later:
7117      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7118      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7119      referenced later.  However, these attributes are found in the stub
7120      which we won't have later.  In order to not impose this complication
7121      on the rest of the code, we read them here and copy them to the
7122      DWO CU/TU die.  */
7123
7124   stmt_list = NULL;
7125   low_pc = NULL;
7126   high_pc = NULL;
7127   ranges = NULL;
7128   comp_dir = NULL;
7129
7130   if (stub_comp_unit_die != NULL)
7131     {
7132       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7133          DWO file.  */
7134       if (! this_cu->is_debug_types)
7135         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7136       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7137       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7138       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7139       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7140
7141       /* There should be a DW_AT_addr_base attribute here (if needed).
7142          We need the value before we can process DW_FORM_GNU_addr_index.  */
7143       cu->addr_base = 0;
7144       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7145       if (attr)
7146         cu->addr_base = DW_UNSND (attr);
7147
7148       /* There should be a DW_AT_ranges_base attribute here (if needed).
7149          We need the value before we can process DW_AT_ranges.  */
7150       cu->ranges_base = 0;
7151       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7152       if (attr)
7153         cu->ranges_base = DW_UNSND (attr);
7154     }
7155   else if (stub_comp_dir != NULL)
7156     {
7157       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7158       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7159       comp_dir->name = DW_AT_comp_dir;
7160       comp_dir->form = DW_FORM_string;
7161       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7162       DW_STRING (comp_dir) = stub_comp_dir;
7163     }
7164
7165   /* Set up for reading the DWO CU/TU.  */
7166   cu->dwo_unit = dwo_unit;
7167   dwarf2_section_info *section = dwo_unit->section;
7168   dwarf2_read_section (objfile, section);
7169   abfd = get_section_bfd_owner (section);
7170   begin_info_ptr = info_ptr = (section->buffer
7171                                + to_underlying (dwo_unit->sect_off));
7172   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7173
7174   if (this_cu->is_debug_types)
7175     {
7176       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7177
7178       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7179                                                 &cu->header, section,
7180                                                 dwo_abbrev_section,
7181                                                 info_ptr, rcuh_kind::TYPE);
7182       /* This is not an assert because it can be caused by bad debug info.  */
7183       if (sig_type->signature != cu->header.signature)
7184         {
7185           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7186                    " TU at offset %s [in module %s]"),
7187                  hex_string (sig_type->signature),
7188                  hex_string (cu->header.signature),
7189                  sect_offset_str (dwo_unit->sect_off),
7190                  bfd_get_filename (abfd));
7191         }
7192       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7193       /* For DWOs coming from DWP files, we don't know the CU length
7194          nor the type's offset in the TU until now.  */
7195       dwo_unit->length = get_cu_length (&cu->header);
7196       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7197
7198       /* Establish the type offset that can be used to lookup the type.
7199          For DWO files, we don't know it until now.  */
7200       sig_type->type_offset_in_section
7201         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7202     }
7203   else
7204     {
7205       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7206                                                 &cu->header, section,
7207                                                 dwo_abbrev_section,
7208                                                 info_ptr, rcuh_kind::COMPILE);
7209       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7210       /* For DWOs coming from DWP files, we don't know the CU length
7211          until now.  */
7212       dwo_unit->length = get_cu_length (&cu->header);
7213     }
7214
7215   *result_dwo_abbrev_table
7216     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7217                                cu->header.abbrev_sect_off);
7218   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7219                       result_dwo_abbrev_table->get ());
7220
7221   /* Read in the die, but leave space to copy over the attributes
7222      from the stub.  This has the benefit of simplifying the rest of
7223      the code - all the work to maintain the illusion of a single
7224      DW_TAG_{compile,type}_unit DIE is done here.  */
7225   num_extra_attrs = ((stmt_list != NULL)
7226                      + (low_pc != NULL)
7227                      + (high_pc != NULL)
7228                      + (ranges != NULL)
7229                      + (comp_dir != NULL));
7230   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7231                               result_has_children, num_extra_attrs);
7232
7233   /* Copy over the attributes from the stub to the DIE we just read in.  */
7234   comp_unit_die = *result_comp_unit_die;
7235   i = comp_unit_die->num_attrs;
7236   if (stmt_list != NULL)
7237     comp_unit_die->attrs[i++] = *stmt_list;
7238   if (low_pc != NULL)
7239     comp_unit_die->attrs[i++] = *low_pc;
7240   if (high_pc != NULL)
7241     comp_unit_die->attrs[i++] = *high_pc;
7242   if (ranges != NULL)
7243     comp_unit_die->attrs[i++] = *ranges;
7244   if (comp_dir != NULL)
7245     comp_unit_die->attrs[i++] = *comp_dir;
7246   comp_unit_die->num_attrs += num_extra_attrs;
7247
7248   if (dwarf_die_debug)
7249     {
7250       fprintf_unfiltered (gdb_stdlog,
7251                           "Read die from %s@0x%x of %s:\n",
7252                           get_section_name (section),
7253                           (unsigned) (begin_info_ptr - section->buffer),
7254                           bfd_get_filename (abfd));
7255       dump_die (comp_unit_die, dwarf_die_debug);
7256     }
7257
7258   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7259      TUs by skipping the stub and going directly to the entry in the DWO file.
7260      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7261      to get it via circuitous means.  Blech.  */
7262   if (comp_dir != NULL)
7263     result_reader->comp_dir = DW_STRING (comp_dir);
7264
7265   /* Skip dummy compilation units.  */
7266   if (info_ptr >= begin_info_ptr + dwo_unit->length
7267       || peek_abbrev_code (abfd, info_ptr) == 0)
7268     return 0;
7269
7270   *result_info_ptr = info_ptr;
7271   return 1;
7272 }
7273
7274 /* Subroutine of init_cutu_and_read_dies to simplify it.
7275    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7276    Returns NULL if the specified DWO unit cannot be found.  */
7277
7278 static struct dwo_unit *
7279 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7280                  struct die_info *comp_unit_die)
7281 {
7282   struct dwarf2_cu *cu = this_cu->cu;
7283   ULONGEST signature;
7284   struct dwo_unit *dwo_unit;
7285   const char *comp_dir, *dwo_name;
7286
7287   gdb_assert (cu != NULL);
7288
7289   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7290   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7291   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7292
7293   if (this_cu->is_debug_types)
7294     {
7295       struct signatured_type *sig_type;
7296
7297       /* Since this_cu is the first member of struct signatured_type,
7298          we can go from a pointer to one to a pointer to the other.  */
7299       sig_type = (struct signatured_type *) this_cu;
7300       signature = sig_type->signature;
7301       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7302     }
7303   else
7304     {
7305       struct attribute *attr;
7306
7307       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7308       if (! attr)
7309         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7310                  " [in module %s]"),
7311                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7312       signature = DW_UNSND (attr);
7313       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7314                                        signature);
7315     }
7316
7317   return dwo_unit;
7318 }
7319
7320 /* Subroutine of init_cutu_and_read_dies to simplify it.
7321    See it for a description of the parameters.
7322    Read a TU directly from a DWO file, bypassing the stub.  */
7323
7324 static void
7325 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7326                            int use_existing_cu, int keep,
7327                            die_reader_func_ftype *die_reader_func,
7328                            void *data)
7329 {
7330   std::unique_ptr<dwarf2_cu> new_cu;
7331   struct signatured_type *sig_type;
7332   struct die_reader_specs reader;
7333   const gdb_byte *info_ptr;
7334   struct die_info *comp_unit_die;
7335   int has_children;
7336   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7337
7338   /* Verify we can do the following downcast, and that we have the
7339      data we need.  */
7340   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7341   sig_type = (struct signatured_type *) this_cu;
7342   gdb_assert (sig_type->dwo_unit != NULL);
7343
7344   if (use_existing_cu && this_cu->cu != NULL)
7345     {
7346       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7347       /* There's no need to do the rereading_dwo_cu handling that
7348          init_cutu_and_read_dies does since we don't read the stub.  */
7349     }
7350   else
7351     {
7352       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7353       gdb_assert (this_cu->cu == NULL);
7354       new_cu.reset (new dwarf2_cu (this_cu));
7355     }
7356
7357   /* A future optimization, if needed, would be to use an existing
7358      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7359      could share abbrev tables.  */
7360
7361   /* The abbreviation table used by READER, this must live at least as long as
7362      READER.  */
7363   abbrev_table_up dwo_abbrev_table;
7364
7365   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7366                               NULL /* stub_comp_unit_die */,
7367                               sig_type->dwo_unit->dwo_file->comp_dir,
7368                               &reader, &info_ptr,
7369                               &comp_unit_die, &has_children,
7370                               &dwo_abbrev_table) == 0)
7371     {
7372       /* Dummy die.  */
7373       return;
7374     }
7375
7376   /* All the "real" work is done here.  */
7377   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7378
7379   /* This duplicates the code in init_cutu_and_read_dies,
7380      but the alternative is making the latter more complex.
7381      This function is only for the special case of using DWO files directly:
7382      no point in overly complicating the general case just to handle this.  */
7383   if (new_cu != NULL && keep)
7384     {
7385       /* Link this CU into read_in_chain.  */
7386       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7387       dwarf2_per_objfile->read_in_chain = this_cu;
7388       /* The chain owns it now.  */
7389       new_cu.release ();
7390     }
7391 }
7392
7393 /* Initialize a CU (or TU) and read its DIEs.
7394    If the CU defers to a DWO file, read the DWO file as well.
7395
7396    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7397    Otherwise the table specified in the comp unit header is read in and used.
7398    This is an optimization for when we already have the abbrev table.
7399
7400    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7401    Otherwise, a new CU is allocated with xmalloc.
7402
7403    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7404    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7405
7406    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7407    linker) then DIE_READER_FUNC will not get called.  */
7408
7409 static void
7410 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7411                          struct abbrev_table *abbrev_table,
7412                          int use_existing_cu, int keep,
7413                          die_reader_func_ftype *die_reader_func,
7414                          void *data)
7415 {
7416   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7417   struct objfile *objfile = dwarf2_per_objfile->objfile;
7418   struct dwarf2_section_info *section = this_cu->section;
7419   bfd *abfd = get_section_bfd_owner (section);
7420   struct dwarf2_cu *cu;
7421   const gdb_byte *begin_info_ptr, *info_ptr;
7422   struct die_reader_specs reader;
7423   struct die_info *comp_unit_die;
7424   int has_children;
7425   struct attribute *attr;
7426   struct signatured_type *sig_type = NULL;
7427   struct dwarf2_section_info *abbrev_section;
7428   /* Non-zero if CU currently points to a DWO file and we need to
7429      reread it.  When this happens we need to reread the skeleton die
7430      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7431   int rereading_dwo_cu = 0;
7432
7433   if (dwarf_die_debug)
7434     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7435                         this_cu->is_debug_types ? "type" : "comp",
7436                         sect_offset_str (this_cu->sect_off));
7437
7438   if (use_existing_cu)
7439     gdb_assert (keep);
7440
7441   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7442      file (instead of going through the stub), short-circuit all of this.  */
7443   if (this_cu->reading_dwo_directly)
7444     {
7445       /* Narrow down the scope of possibilities to have to understand.  */
7446       gdb_assert (this_cu->is_debug_types);
7447       gdb_assert (abbrev_table == NULL);
7448       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7449                                  die_reader_func, data);
7450       return;
7451     }
7452
7453   /* This is cheap if the section is already read in.  */
7454   dwarf2_read_section (objfile, section);
7455
7456   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7457
7458   abbrev_section = get_abbrev_section_for_cu (this_cu);
7459
7460   std::unique_ptr<dwarf2_cu> new_cu;
7461   if (use_existing_cu && this_cu->cu != NULL)
7462     {
7463       cu = this_cu->cu;
7464       /* If this CU is from a DWO file we need to start over, we need to
7465          refetch the attributes from the skeleton CU.
7466          This could be optimized by retrieving those attributes from when we
7467          were here the first time: the previous comp_unit_die was stored in
7468          comp_unit_obstack.  But there's no data yet that we need this
7469          optimization.  */
7470       if (cu->dwo_unit != NULL)
7471         rereading_dwo_cu = 1;
7472     }
7473   else
7474     {
7475       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7476       gdb_assert (this_cu->cu == NULL);
7477       new_cu.reset (new dwarf2_cu (this_cu));
7478       cu = new_cu.get ();
7479     }
7480
7481   /* Get the header.  */
7482   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7483     {
7484       /* We already have the header, there's no need to read it in again.  */
7485       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7486     }
7487   else
7488     {
7489       if (this_cu->is_debug_types)
7490         {
7491           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7492                                                     &cu->header, section,
7493                                                     abbrev_section, info_ptr,
7494                                                     rcuh_kind::TYPE);
7495
7496           /* Since per_cu is the first member of struct signatured_type,
7497              we can go from a pointer to one to a pointer to the other.  */
7498           sig_type = (struct signatured_type *) this_cu;
7499           gdb_assert (sig_type->signature == cu->header.signature);
7500           gdb_assert (sig_type->type_offset_in_tu
7501                       == cu->header.type_cu_offset_in_tu);
7502           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7503
7504           /* LENGTH has not been set yet for type units if we're
7505              using .gdb_index.  */
7506           this_cu->length = get_cu_length (&cu->header);
7507
7508           /* Establish the type offset that can be used to lookup the type.  */
7509           sig_type->type_offset_in_section =
7510             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7511
7512           this_cu->dwarf_version = cu->header.version;
7513         }
7514       else
7515         {
7516           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7517                                                     &cu->header, section,
7518                                                     abbrev_section,
7519                                                     info_ptr,
7520                                                     rcuh_kind::COMPILE);
7521
7522           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7523           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7524           this_cu->dwarf_version = cu->header.version;
7525         }
7526     }
7527
7528   /* Skip dummy compilation units.  */
7529   if (info_ptr >= begin_info_ptr + this_cu->length
7530       || peek_abbrev_code (abfd, info_ptr) == 0)
7531     return;
7532
7533   /* If we don't have them yet, read the abbrevs for this compilation unit.
7534      And if we need to read them now, make sure they're freed when we're
7535      done (own the table through ABBREV_TABLE_HOLDER).  */
7536   abbrev_table_up abbrev_table_holder;
7537   if (abbrev_table != NULL)
7538     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7539   else
7540     {
7541       abbrev_table_holder
7542         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7543                                    cu->header.abbrev_sect_off);
7544       abbrev_table = abbrev_table_holder.get ();
7545     }
7546
7547   /* Read the top level CU/TU die.  */
7548   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7549   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7550
7551   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7552      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7553      table from the DWO file and pass the ownership over to us.  It will be
7554      referenced from READER, so we must make sure to free it after we're done
7555      with READER.
7556
7557      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7558      DWO CU, that this test will fail (the attribute will not be present).  */
7559   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7560   abbrev_table_up dwo_abbrev_table;
7561   if (attr)
7562     {
7563       struct dwo_unit *dwo_unit;
7564       struct die_info *dwo_comp_unit_die;
7565
7566       if (has_children)
7567         {
7568           complaint (&symfile_complaints,
7569                      _("compilation unit with DW_AT_GNU_dwo_name"
7570                        " has children (offset %s) [in module %s]"),
7571                      sect_offset_str (this_cu->sect_off),
7572                      bfd_get_filename (abfd));
7573         }
7574       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7575       if (dwo_unit != NULL)
7576         {
7577           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7578                                       comp_unit_die, NULL,
7579                                       &reader, &info_ptr,
7580                                       &dwo_comp_unit_die, &has_children,
7581                                       &dwo_abbrev_table) == 0)
7582             {
7583               /* Dummy die.  */
7584               return;
7585             }
7586           comp_unit_die = dwo_comp_unit_die;
7587         }
7588       else
7589         {
7590           /* Yikes, we couldn't find the rest of the DIE, we only have
7591              the stub.  A complaint has already been logged.  There's
7592              not much more we can do except pass on the stub DIE to
7593              die_reader_func.  We don't want to throw an error on bad
7594              debug info.  */
7595         }
7596     }
7597
7598   /* All of the above is setup for this call.  Yikes.  */
7599   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7600
7601   /* Done, clean up.  */
7602   if (new_cu != NULL && keep)
7603     {
7604       /* Link this CU into read_in_chain.  */
7605       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7606       dwarf2_per_objfile->read_in_chain = this_cu;
7607       /* The chain owns it now.  */
7608       new_cu.release ();
7609     }
7610 }
7611
7612 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7613    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7614    to have already done the lookup to find the DWO file).
7615
7616    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7617    THIS_CU->is_debug_types, but nothing else.
7618
7619    We fill in THIS_CU->length.
7620
7621    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7622    linker) then DIE_READER_FUNC will not get called.
7623
7624    THIS_CU->cu is always freed when done.
7625    This is done in order to not leave THIS_CU->cu in a state where we have
7626    to care whether it refers to the "main" CU or the DWO CU.  */
7627
7628 static void
7629 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7630                                    struct dwo_file *dwo_file,
7631                                    die_reader_func_ftype *die_reader_func,
7632                                    void *data)
7633 {
7634   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7635   struct objfile *objfile = dwarf2_per_objfile->objfile;
7636   struct dwarf2_section_info *section = this_cu->section;
7637   bfd *abfd = get_section_bfd_owner (section);
7638   struct dwarf2_section_info *abbrev_section;
7639   const gdb_byte *begin_info_ptr, *info_ptr;
7640   struct die_reader_specs reader;
7641   struct die_info *comp_unit_die;
7642   int has_children;
7643
7644   if (dwarf_die_debug)
7645     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7646                         this_cu->is_debug_types ? "type" : "comp",
7647                         sect_offset_str (this_cu->sect_off));
7648
7649   gdb_assert (this_cu->cu == NULL);
7650
7651   abbrev_section = (dwo_file != NULL
7652                     ? &dwo_file->sections.abbrev
7653                     : get_abbrev_section_for_cu (this_cu));
7654
7655   /* This is cheap if the section is already read in.  */
7656   dwarf2_read_section (objfile, section);
7657
7658   struct dwarf2_cu cu (this_cu);
7659
7660   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7661   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7662                                             &cu.header, section,
7663                                             abbrev_section, info_ptr,
7664                                             (this_cu->is_debug_types
7665                                              ? rcuh_kind::TYPE
7666                                              : rcuh_kind::COMPILE));
7667
7668   this_cu->length = get_cu_length (&cu.header);
7669
7670   /* Skip dummy compilation units.  */
7671   if (info_ptr >= begin_info_ptr + this_cu->length
7672       || peek_abbrev_code (abfd, info_ptr) == 0)
7673     return;
7674
7675   abbrev_table_up abbrev_table
7676     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7677                                cu.header.abbrev_sect_off);
7678
7679   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7680   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7681
7682   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7683 }
7684
7685 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7686    does not lookup the specified DWO file.
7687    This cannot be used to read DWO files.
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    We can revisit this if the data shows there's a performance issue.  */
7693
7694 static void
7695 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7696                                 die_reader_func_ftype *die_reader_func,
7697                                 void *data)
7698 {
7699   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7700 }
7701 \f
7702 /* Type Unit Groups.
7703
7704    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7705    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7706    so that all types coming from the same compilation (.o file) are grouped
7707    together.  A future step could be to put the types in the same symtab as
7708    the CU the types ultimately came from.  */
7709
7710 static hashval_t
7711 hash_type_unit_group (const void *item)
7712 {
7713   const struct type_unit_group *tu_group
7714     = (const struct type_unit_group *) item;
7715
7716   return hash_stmt_list_entry (&tu_group->hash);
7717 }
7718
7719 static int
7720 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7721 {
7722   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7723   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7724
7725   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7726 }
7727
7728 /* Allocate a hash table for type unit groups.  */
7729
7730 static htab_t
7731 allocate_type_unit_groups_table (struct objfile *objfile)
7732 {
7733   return htab_create_alloc_ex (3,
7734                                hash_type_unit_group,
7735                                eq_type_unit_group,
7736                                NULL,
7737                                &objfile->objfile_obstack,
7738                                hashtab_obstack_allocate,
7739                                dummy_obstack_deallocate);
7740 }
7741
7742 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7743    partial symtabs.  We combine several TUs per psymtab to not let the size
7744    of any one psymtab grow too big.  */
7745 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7746 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7747
7748 /* Helper routine for get_type_unit_group.
7749    Create the type_unit_group object used to hold one or more TUs.  */
7750
7751 static struct type_unit_group *
7752 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7753 {
7754   struct dwarf2_per_objfile *dwarf2_per_objfile
7755     = cu->per_cu->dwarf2_per_objfile;
7756   struct objfile *objfile = dwarf2_per_objfile->objfile;
7757   struct dwarf2_per_cu_data *per_cu;
7758   struct type_unit_group *tu_group;
7759
7760   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7761                              struct type_unit_group);
7762   per_cu = &tu_group->per_cu;
7763   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7764
7765   if (dwarf2_per_objfile->using_index)
7766     {
7767       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7768                                         struct dwarf2_per_cu_quick_data);
7769     }
7770   else
7771     {
7772       unsigned int line_offset = to_underlying (line_offset_struct);
7773       struct partial_symtab *pst;
7774       char *name;
7775
7776       /* Give the symtab a useful name for debug purposes.  */
7777       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7778         name = xstrprintf ("<type_units_%d>",
7779                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7780       else
7781         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
7782
7783       pst = create_partial_symtab (per_cu, name);
7784       pst->anonymous = 1;
7785
7786       xfree (name);
7787     }
7788
7789   tu_group->hash.dwo_unit = cu->dwo_unit;
7790   tu_group->hash.line_sect_off = line_offset_struct;
7791
7792   return tu_group;
7793 }
7794
7795 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7796    STMT_LIST is a DW_AT_stmt_list attribute.  */
7797
7798 static struct type_unit_group *
7799 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7800 {
7801   struct dwarf2_per_objfile *dwarf2_per_objfile
7802     = cu->per_cu->dwarf2_per_objfile;
7803   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7804   struct type_unit_group *tu_group;
7805   void **slot;
7806   unsigned int line_offset;
7807   struct type_unit_group type_unit_group_for_lookup;
7808
7809   if (dwarf2_per_objfile->type_unit_groups == NULL)
7810     {
7811       dwarf2_per_objfile->type_unit_groups =
7812         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7813     }
7814
7815   /* Do we need to create a new group, or can we use an existing one?  */
7816
7817   if (stmt_list)
7818     {
7819       line_offset = DW_UNSND (stmt_list);
7820       ++tu_stats->nr_symtab_sharers;
7821     }
7822   else
7823     {
7824       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7825          We can do various things here like create one group per TU or
7826          spread them over multiple groups to split up the expansion work.
7827          To avoid worst case scenarios (too many groups or too large groups)
7828          we, umm, group them in bunches.  */
7829       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7830                      | (tu_stats->nr_stmt_less_type_units
7831                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7832       ++tu_stats->nr_stmt_less_type_units;
7833     }
7834
7835   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7836   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7837   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7838                          &type_unit_group_for_lookup, INSERT);
7839   if (*slot != NULL)
7840     {
7841       tu_group = (struct type_unit_group *) *slot;
7842       gdb_assert (tu_group != NULL);
7843     }
7844   else
7845     {
7846       sect_offset line_offset_struct = (sect_offset) line_offset;
7847       tu_group = create_type_unit_group (cu, line_offset_struct);
7848       *slot = tu_group;
7849       ++tu_stats->nr_symtabs;
7850     }
7851
7852   return tu_group;
7853 }
7854 \f
7855 /* Partial symbol tables.  */
7856
7857 /* Create a psymtab named NAME and assign it to PER_CU.
7858
7859    The caller must fill in the following details:
7860    dirname, textlow, texthigh.  */
7861
7862 static struct partial_symtab *
7863 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7864 {
7865   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7866   struct partial_symtab *pst;
7867
7868   pst = start_psymtab_common (objfile, name, 0,
7869                               objfile->global_psymbols,
7870                               objfile->static_psymbols);
7871
7872   pst->psymtabs_addrmap_supported = 1;
7873
7874   /* This is the glue that links PST into GDB's symbol API.  */
7875   pst->read_symtab_private = per_cu;
7876   pst->read_symtab = dwarf2_read_symtab;
7877   per_cu->v.psymtab = pst;
7878
7879   return pst;
7880 }
7881
7882 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7883    type.  */
7884
7885 struct process_psymtab_comp_unit_data
7886 {
7887   /* True if we are reading a DW_TAG_partial_unit.  */
7888
7889   int want_partial_unit;
7890
7891   /* The "pretend" language that is used if the CU doesn't declare a
7892      language.  */
7893
7894   enum language pretend_language;
7895 };
7896
7897 /* die_reader_func for process_psymtab_comp_unit.  */
7898
7899 static void
7900 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7901                                   const gdb_byte *info_ptr,
7902                                   struct die_info *comp_unit_die,
7903                                   int has_children,
7904                                   void *data)
7905 {
7906   struct dwarf2_cu *cu = reader->cu;
7907   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7908   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7909   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7910   CORE_ADDR baseaddr;
7911   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7912   struct partial_symtab *pst;
7913   enum pc_bounds_kind cu_bounds_kind;
7914   const char *filename;
7915   struct process_psymtab_comp_unit_data *info
7916     = (struct process_psymtab_comp_unit_data *) data;
7917
7918   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7919     return;
7920
7921   gdb_assert (! per_cu->is_debug_types);
7922
7923   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7924
7925   cu->list_in_scope = &file_symbols;
7926
7927   /* Allocate a new partial symbol table structure.  */
7928   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7929   if (filename == NULL)
7930     filename = "";
7931
7932   pst = create_partial_symtab (per_cu, filename);
7933
7934   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7935   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7936
7937   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7938
7939   dwarf2_find_base_address (comp_unit_die, cu);
7940
7941   /* Possibly set the default values of LOWPC and HIGHPC from
7942      `DW_AT_ranges'.  */
7943   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
7944                                          &best_highpc, cu, pst);
7945   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
7946     /* Store the contiguous range if it is not empty; it can be empty for
7947        CUs with no code.  */
7948     addrmap_set_empty (objfile->psymtabs_addrmap,
7949                        gdbarch_adjust_dwarf2_addr (gdbarch,
7950                                                    best_lowpc + baseaddr),
7951                        gdbarch_adjust_dwarf2_addr (gdbarch,
7952                                                    best_highpc + baseaddr) - 1,
7953                        pst);
7954
7955   /* Check if comp unit has_children.
7956      If so, read the rest of the partial symbols from this comp unit.
7957      If not, there's no more debug_info for this comp unit.  */
7958   if (has_children)
7959     {
7960       struct partial_die_info *first_die;
7961       CORE_ADDR lowpc, highpc;
7962
7963       lowpc = ((CORE_ADDR) -1);
7964       highpc = ((CORE_ADDR) 0);
7965
7966       first_die = load_partial_dies (reader, info_ptr, 1);
7967
7968       scan_partial_symbols (first_die, &lowpc, &highpc,
7969                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
7970
7971       /* If we didn't find a lowpc, set it to highpc to avoid
7972          complaints from `maint check'.  */
7973       if (lowpc == ((CORE_ADDR) -1))
7974         lowpc = highpc;
7975
7976       /* If the compilation unit didn't have an explicit address range,
7977          then use the information extracted from its child dies.  */
7978       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
7979         {
7980           best_lowpc = lowpc;
7981           best_highpc = highpc;
7982         }
7983     }
7984   pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
7985   pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
7986
7987   end_psymtab_common (objfile, pst);
7988
7989   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
7990     {
7991       int i;
7992       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
7993       struct dwarf2_per_cu_data *iter;
7994
7995       /* Fill in 'dependencies' here; we fill in 'users' in a
7996          post-pass.  */
7997       pst->number_of_dependencies = len;
7998       pst->dependencies =
7999         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8000       for (i = 0;
8001            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8002                         i, iter);
8003            ++i)
8004         pst->dependencies[i] = iter->v.psymtab;
8005
8006       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8007     }
8008
8009   /* Get the list of files included in the current compilation unit,
8010      and build a psymtab for each of them.  */
8011   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8012
8013   if (dwarf_read_debug)
8014     {
8015       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8016
8017       fprintf_unfiltered (gdb_stdlog,
8018                           "Psymtab for %s unit @%s: %s - %s"
8019                           ", %d global, %d static syms\n",
8020                           per_cu->is_debug_types ? "type" : "comp",
8021                           sect_offset_str (per_cu->sect_off),
8022                           paddress (gdbarch, pst->textlow),
8023                           paddress (gdbarch, pst->texthigh),
8024                           pst->n_global_syms, pst->n_static_syms);
8025     }
8026 }
8027
8028 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8029    Process compilation unit THIS_CU for a psymtab.  */
8030
8031 static void
8032 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8033                            int want_partial_unit,
8034                            enum language pretend_language)
8035 {
8036   /* If this compilation unit was already read in, free the
8037      cached copy in order to read it in again.  This is
8038      necessary because we skipped some symbols when we first
8039      read in the compilation unit (see load_partial_dies).
8040      This problem could be avoided, but the benefit is unclear.  */
8041   if (this_cu->cu != NULL)
8042     free_one_cached_comp_unit (this_cu);
8043
8044   if (this_cu->is_debug_types)
8045     init_cutu_and_read_dies (this_cu, NULL, 0, 0, build_type_psymtabs_reader,
8046                              NULL);
8047   else
8048     {
8049       process_psymtab_comp_unit_data info;
8050       info.want_partial_unit = want_partial_unit;
8051       info.pretend_language = pretend_language;
8052       init_cutu_and_read_dies (this_cu, NULL, 0, 0,
8053                                process_psymtab_comp_unit_reader, &info);
8054     }
8055
8056   /* Age out any secondary CUs.  */
8057   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8058 }
8059
8060 /* Reader function for build_type_psymtabs.  */
8061
8062 static void
8063 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8064                             const gdb_byte *info_ptr,
8065                             struct die_info *type_unit_die,
8066                             int has_children,
8067                             void *data)
8068 {
8069   struct dwarf2_per_objfile *dwarf2_per_objfile
8070     = reader->cu->per_cu->dwarf2_per_objfile;
8071   struct objfile *objfile = dwarf2_per_objfile->objfile;
8072   struct dwarf2_cu *cu = reader->cu;
8073   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8074   struct signatured_type *sig_type;
8075   struct type_unit_group *tu_group;
8076   struct attribute *attr;
8077   struct partial_die_info *first_die;
8078   CORE_ADDR lowpc, highpc;
8079   struct partial_symtab *pst;
8080
8081   gdb_assert (data == NULL);
8082   gdb_assert (per_cu->is_debug_types);
8083   sig_type = (struct signatured_type *) per_cu;
8084
8085   if (! has_children)
8086     return;
8087
8088   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8089   tu_group = get_type_unit_group (cu, attr);
8090
8091   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8092
8093   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8094   cu->list_in_scope = &file_symbols;
8095   pst = create_partial_symtab (per_cu, "");
8096   pst->anonymous = 1;
8097
8098   first_die = load_partial_dies (reader, info_ptr, 1);
8099
8100   lowpc = (CORE_ADDR) -1;
8101   highpc = (CORE_ADDR) 0;
8102   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8103
8104   end_psymtab_common (objfile, pst);
8105 }
8106
8107 /* Struct used to sort TUs by their abbreviation table offset.  */
8108
8109 struct tu_abbrev_offset
8110 {
8111   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8112   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8113   {}
8114
8115   signatured_type *sig_type;
8116   sect_offset abbrev_offset;
8117 };
8118
8119 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8120
8121 static bool
8122 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8123                           const struct tu_abbrev_offset &b)
8124 {
8125   return a.abbrev_offset < b.abbrev_offset;
8126 }
8127
8128 /* Efficiently read all the type units.
8129    This does the bulk of the work for build_type_psymtabs.
8130
8131    The efficiency is because we sort TUs by the abbrev table they use and
8132    only read each abbrev table once.  In one program there are 200K TUs
8133    sharing 8K abbrev tables.
8134
8135    The main purpose of this function is to support building the
8136    dwarf2_per_objfile->type_unit_groups table.
8137    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8138    can collapse the search space by grouping them by stmt_list.
8139    The savings can be significant, in the same program from above the 200K TUs
8140    share 8K stmt_list tables.
8141
8142    FUNC is expected to call get_type_unit_group, which will create the
8143    struct type_unit_group if necessary and add it to
8144    dwarf2_per_objfile->type_unit_groups.  */
8145
8146 static void
8147 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8148 {
8149   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8150   abbrev_table_up abbrev_table;
8151   sect_offset abbrev_offset;
8152
8153   /* It's up to the caller to not call us multiple times.  */
8154   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8155
8156   if (dwarf2_per_objfile->all_type_units.empty ())
8157     return;
8158
8159   /* TUs typically share abbrev tables, and there can be way more TUs than
8160      abbrev tables.  Sort by abbrev table to reduce the number of times we
8161      read each abbrev table in.
8162      Alternatives are to punt or to maintain a cache of abbrev tables.
8163      This is simpler and efficient enough for now.
8164
8165      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8166      symtab to use).  Typically TUs with the same abbrev offset have the same
8167      stmt_list value too so in practice this should work well.
8168
8169      The basic algorithm here is:
8170
8171       sort TUs by abbrev table
8172       for each TU with same abbrev table:
8173         read abbrev table if first user
8174         read TU top level DIE
8175           [IWBN if DWO skeletons had DW_AT_stmt_list]
8176         call FUNC  */
8177
8178   if (dwarf_read_debug)
8179     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8180
8181   /* Sort in a separate table to maintain the order of all_type_units
8182      for .gdb_index: TU indices directly index all_type_units.  */
8183   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8184   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8185
8186   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8187     sorted_by_abbrev.emplace_back
8188       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8189                                      sig_type->per_cu.section,
8190                                      sig_type->per_cu.sect_off));
8191
8192   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8193              sort_tu_by_abbrev_offset);
8194
8195   abbrev_offset = (sect_offset) ~(unsigned) 0;
8196
8197   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8198     {
8199       /* Switch to the next abbrev table if necessary.  */
8200       if (abbrev_table == NULL
8201           || tu.abbrev_offset != abbrev_offset)
8202         {
8203           abbrev_offset = tu.abbrev_offset;
8204           abbrev_table =
8205             abbrev_table_read_table (dwarf2_per_objfile,
8206                                      &dwarf2_per_objfile->abbrev,
8207                                      abbrev_offset);
8208           ++tu_stats->nr_uniq_abbrev_tables;
8209         }
8210
8211       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8212                                0, 0, build_type_psymtabs_reader, NULL);
8213     }
8214 }
8215
8216 /* Print collected type unit statistics.  */
8217
8218 static void
8219 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8220 {
8221   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8222
8223   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8224   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8225                       dwarf2_per_objfile->all_type_units.size ());
8226   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8227                       tu_stats->nr_uniq_abbrev_tables);
8228   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8229                       tu_stats->nr_symtabs);
8230   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8231                       tu_stats->nr_symtab_sharers);
8232   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8233                       tu_stats->nr_stmt_less_type_units);
8234   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8235                       tu_stats->nr_all_type_units_reallocs);
8236 }
8237
8238 /* Traversal function for build_type_psymtabs.  */
8239
8240 static int
8241 build_type_psymtab_dependencies (void **slot, void *info)
8242 {
8243   struct dwarf2_per_objfile *dwarf2_per_objfile
8244     = (struct dwarf2_per_objfile *) info;
8245   struct objfile *objfile = dwarf2_per_objfile->objfile;
8246   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8247   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8248   struct partial_symtab *pst = per_cu->v.psymtab;
8249   int len = VEC_length (sig_type_ptr, tu_group->tus);
8250   struct signatured_type *iter;
8251   int i;
8252
8253   gdb_assert (len > 0);
8254   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8255
8256   pst->number_of_dependencies = len;
8257   pst->dependencies =
8258     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8259   for (i = 0;
8260        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8261        ++i)
8262     {
8263       gdb_assert (iter->per_cu.is_debug_types);
8264       pst->dependencies[i] = iter->per_cu.v.psymtab;
8265       iter->type_unit_group = tu_group;
8266     }
8267
8268   VEC_free (sig_type_ptr, tu_group->tus);
8269
8270   return 1;
8271 }
8272
8273 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8274    Build partial symbol tables for the .debug_types comp-units.  */
8275
8276 static void
8277 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8278 {
8279   if (! create_all_type_units (dwarf2_per_objfile))
8280     return;
8281
8282   build_type_psymtabs_1 (dwarf2_per_objfile);
8283 }
8284
8285 /* Traversal function for process_skeletonless_type_unit.
8286    Read a TU in a DWO file and build partial symbols for it.  */
8287
8288 static int
8289 process_skeletonless_type_unit (void **slot, void *info)
8290 {
8291   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8292   struct dwarf2_per_objfile *dwarf2_per_objfile
8293     = (struct dwarf2_per_objfile *) info;
8294   struct signatured_type find_entry, *entry;
8295
8296   /* If this TU doesn't exist in the global table, add it and read it in.  */
8297
8298   if (dwarf2_per_objfile->signatured_types == NULL)
8299     {
8300       dwarf2_per_objfile->signatured_types
8301         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8302     }
8303
8304   find_entry.signature = dwo_unit->signature;
8305   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8306                          INSERT);
8307   /* If we've already seen this type there's nothing to do.  What's happening
8308      is we're doing our own version of comdat-folding here.  */
8309   if (*slot != NULL)
8310     return 1;
8311
8312   /* This does the job that create_all_type_units would have done for
8313      this TU.  */
8314   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8315   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8316   *slot = entry;
8317
8318   /* This does the job that build_type_psymtabs_1 would have done.  */
8319   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
8320                            build_type_psymtabs_reader, NULL);
8321
8322   return 1;
8323 }
8324
8325 /* Traversal function for process_skeletonless_type_units.  */
8326
8327 static int
8328 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8329 {
8330   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8331
8332   if (dwo_file->tus != NULL)
8333     {
8334       htab_traverse_noresize (dwo_file->tus,
8335                               process_skeletonless_type_unit, info);
8336     }
8337
8338   return 1;
8339 }
8340
8341 /* Scan all TUs of DWO files, verifying we've processed them.
8342    This is needed in case a TU was emitted without its skeleton.
8343    Note: This can't be done until we know what all the DWO files are.  */
8344
8345 static void
8346 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8347 {
8348   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8349   if (get_dwp_file (dwarf2_per_objfile) == NULL
8350       && dwarf2_per_objfile->dwo_files != NULL)
8351     {
8352       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8353                               process_dwo_file_for_skeletonless_type_units,
8354                               dwarf2_per_objfile);
8355     }
8356 }
8357
8358 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8359
8360 static void
8361 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8362 {
8363   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8364     {
8365       struct partial_symtab *pst = per_cu->v.psymtab;
8366
8367       if (pst == NULL)
8368         continue;
8369
8370       for (int j = 0; j < pst->number_of_dependencies; ++j)
8371         {
8372           /* Set the 'user' field only if it is not already set.  */
8373           if (pst->dependencies[j]->user == NULL)
8374             pst->dependencies[j]->user = pst;
8375         }
8376     }
8377 }
8378
8379 /* Build the partial symbol table by doing a quick pass through the
8380    .debug_info and .debug_abbrev sections.  */
8381
8382 static void
8383 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8384 {
8385   struct objfile *objfile = dwarf2_per_objfile->objfile;
8386
8387   if (dwarf_read_debug)
8388     {
8389       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8390                           objfile_name (objfile));
8391     }
8392
8393   dwarf2_per_objfile->reading_partial_symbols = 1;
8394
8395   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8396
8397   /* Any cached compilation units will be linked by the per-objfile
8398      read_in_chain.  Make sure to free them when we're done.  */
8399   free_cached_comp_units freer (dwarf2_per_objfile);
8400
8401   build_type_psymtabs (dwarf2_per_objfile);
8402
8403   create_all_comp_units (dwarf2_per_objfile);
8404
8405   /* Create a temporary address map on a temporary obstack.  We later
8406      copy this to the final obstack.  */
8407   auto_obstack temp_obstack;
8408
8409   scoped_restore save_psymtabs_addrmap
8410     = make_scoped_restore (&objfile->psymtabs_addrmap,
8411                            addrmap_create_mutable (&temp_obstack));
8412
8413   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8414     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8415
8416   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8417   process_skeletonless_type_units (dwarf2_per_objfile);
8418
8419   /* Now that all TUs have been processed we can fill in the dependencies.  */
8420   if (dwarf2_per_objfile->type_unit_groups != NULL)
8421     {
8422       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8423                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8424     }
8425
8426   if (dwarf_read_debug)
8427     print_tu_stats (dwarf2_per_objfile);
8428
8429   set_partial_user (dwarf2_per_objfile);
8430
8431   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8432                                                     &objfile->objfile_obstack);
8433   /* At this point we want to keep the address map.  */
8434   save_psymtabs_addrmap.release ();
8435
8436   if (dwarf_read_debug)
8437     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8438                         objfile_name (objfile));
8439 }
8440
8441 /* die_reader_func for load_partial_comp_unit.  */
8442
8443 static void
8444 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8445                                const gdb_byte *info_ptr,
8446                                struct die_info *comp_unit_die,
8447                                int has_children,
8448                                void *data)
8449 {
8450   struct dwarf2_cu *cu = reader->cu;
8451
8452   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8453
8454   /* Check if comp unit has_children.
8455      If so, read the rest of the partial symbols from this comp unit.
8456      If not, there's no more debug_info for this comp unit.  */
8457   if (has_children)
8458     load_partial_dies (reader, info_ptr, 0);
8459 }
8460
8461 /* Load the partial DIEs for a secondary CU into memory.
8462    This is also used when rereading a primary CU with load_all_dies.  */
8463
8464 static void
8465 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8466 {
8467   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
8468                            load_partial_comp_unit_reader, NULL);
8469 }
8470
8471 static void
8472 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8473                               struct dwarf2_section_info *section,
8474                               struct dwarf2_section_info *abbrev_section,
8475                               unsigned int is_dwz)
8476 {
8477   const gdb_byte *info_ptr;
8478   struct objfile *objfile = dwarf2_per_objfile->objfile;
8479
8480   if (dwarf_read_debug)
8481     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8482                         get_section_name (section),
8483                         get_section_file_name (section));
8484
8485   dwarf2_read_section (objfile, section);
8486
8487   info_ptr = section->buffer;
8488
8489   while (info_ptr < section->buffer + section->size)
8490     {
8491       struct dwarf2_per_cu_data *this_cu;
8492
8493       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8494
8495       comp_unit_head cu_header;
8496       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8497                                      abbrev_section, info_ptr,
8498                                      rcuh_kind::COMPILE);
8499
8500       /* Save the compilation unit for later lookup.  */
8501       if (cu_header.unit_type != DW_UT_type)
8502         {
8503           this_cu = XOBNEW (&objfile->objfile_obstack,
8504                             struct dwarf2_per_cu_data);
8505           memset (this_cu, 0, sizeof (*this_cu));
8506         }
8507       else
8508         {
8509           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8510                                   struct signatured_type);
8511           memset (sig_type, 0, sizeof (*sig_type));
8512           sig_type->signature = cu_header.signature;
8513           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8514           this_cu = &sig_type->per_cu;
8515         }
8516       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8517       this_cu->sect_off = sect_off;
8518       this_cu->length = cu_header.length + cu_header.initial_length_size;
8519       this_cu->is_dwz = is_dwz;
8520       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8521       this_cu->section = section;
8522
8523       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8524
8525       info_ptr = info_ptr + this_cu->length;
8526     }
8527 }
8528
8529 /* Create a list of all compilation units in OBJFILE.
8530    This is only done for -readnow and building partial symtabs.  */
8531
8532 static void
8533 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8534 {
8535   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8536   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8537                                 &dwarf2_per_objfile->abbrev, 0);
8538
8539   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8540   if (dwz != NULL)
8541     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8542                                   1);
8543 }
8544
8545 /* Process all loaded DIEs for compilation unit CU, starting at
8546    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8547    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8548    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8549    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8550
8551 static void
8552 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8553                       CORE_ADDR *highpc, int set_addrmap,
8554                       struct dwarf2_cu *cu)
8555 {
8556   struct partial_die_info *pdi;
8557
8558   /* Now, march along the PDI's, descending into ones which have
8559      interesting children but skipping the children of the other ones,
8560      until we reach the end of the compilation unit.  */
8561
8562   pdi = first_die;
8563
8564   while (pdi != NULL)
8565     {
8566       pdi->fixup (cu);
8567
8568       /* Anonymous namespaces or modules have no name but have interesting
8569          children, so we need to look at them.  Ditto for anonymous
8570          enums.  */
8571
8572       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8573           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8574           || pdi->tag == DW_TAG_imported_unit
8575           || pdi->tag == DW_TAG_inlined_subroutine)
8576         {
8577           switch (pdi->tag)
8578             {
8579             case DW_TAG_subprogram:
8580             case DW_TAG_inlined_subroutine:
8581               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8582               break;
8583             case DW_TAG_constant:
8584             case DW_TAG_variable:
8585             case DW_TAG_typedef:
8586             case DW_TAG_union_type:
8587               if (!pdi->is_declaration)
8588                 {
8589                   add_partial_symbol (pdi, cu);
8590                 }
8591               break;
8592             case DW_TAG_class_type:
8593             case DW_TAG_interface_type:
8594             case DW_TAG_structure_type:
8595               if (!pdi->is_declaration)
8596                 {
8597                   add_partial_symbol (pdi, cu);
8598                 }
8599               if ((cu->language == language_rust
8600                    || cu->language == language_cplus) && pdi->has_children)
8601                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8602                                       set_addrmap, cu);
8603               break;
8604             case DW_TAG_enumeration_type:
8605               if (!pdi->is_declaration)
8606                 add_partial_enumeration (pdi, cu);
8607               break;
8608             case DW_TAG_base_type:
8609             case DW_TAG_subrange_type:
8610               /* File scope base type definitions are added to the partial
8611                  symbol table.  */
8612               add_partial_symbol (pdi, cu);
8613               break;
8614             case DW_TAG_namespace:
8615               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8616               break;
8617             case DW_TAG_module:
8618               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8619               break;
8620             case DW_TAG_imported_unit:
8621               {
8622                 struct dwarf2_per_cu_data *per_cu;
8623
8624                 /* For now we don't handle imported units in type units.  */
8625                 if (cu->per_cu->is_debug_types)
8626                   {
8627                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8628                              " supported in type units [in module %s]"),
8629                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8630                   }
8631
8632                 per_cu = dwarf2_find_containing_comp_unit
8633                            (pdi->d.sect_off, pdi->is_dwz,
8634                             cu->per_cu->dwarf2_per_objfile);
8635
8636                 /* Go read the partial unit, if needed.  */
8637                 if (per_cu->v.psymtab == NULL)
8638                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8639
8640                 VEC_safe_push (dwarf2_per_cu_ptr,
8641                                cu->per_cu->imported_symtabs, per_cu);
8642               }
8643               break;
8644             case DW_TAG_imported_declaration:
8645               add_partial_symbol (pdi, cu);
8646               break;
8647             default:
8648               break;
8649             }
8650         }
8651
8652       /* If the die has a sibling, skip to the sibling.  */
8653
8654       pdi = pdi->die_sibling;
8655     }
8656 }
8657
8658 /* Functions used to compute the fully scoped name of a partial DIE.
8659
8660    Normally, this is simple.  For C++, the parent DIE's fully scoped
8661    name is concatenated with "::" and the partial DIE's name.
8662    Enumerators are an exception; they use the scope of their parent
8663    enumeration type, i.e. the name of the enumeration type is not
8664    prepended to the enumerator.
8665
8666    There are two complexities.  One is DW_AT_specification; in this
8667    case "parent" means the parent of the target of the specification,
8668    instead of the direct parent of the DIE.  The other is compilers
8669    which do not emit DW_TAG_namespace; in this case we try to guess
8670    the fully qualified name of structure types from their members'
8671    linkage names.  This must be done using the DIE's children rather
8672    than the children of any DW_AT_specification target.  We only need
8673    to do this for structures at the top level, i.e. if the target of
8674    any DW_AT_specification (if any; otherwise the DIE itself) does not
8675    have a parent.  */
8676
8677 /* Compute the scope prefix associated with PDI's parent, in
8678    compilation unit CU.  The result will be allocated on CU's
8679    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8680    field.  NULL is returned if no prefix is necessary.  */
8681 static const char *
8682 partial_die_parent_scope (struct partial_die_info *pdi,
8683                           struct dwarf2_cu *cu)
8684 {
8685   const char *grandparent_scope;
8686   struct partial_die_info *parent, *real_pdi;
8687
8688   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8689      then this means the parent of the specification DIE.  */
8690
8691   real_pdi = pdi;
8692   while (real_pdi->has_specification)
8693     real_pdi = find_partial_die (real_pdi->spec_offset,
8694                                  real_pdi->spec_is_dwz, cu);
8695
8696   parent = real_pdi->die_parent;
8697   if (parent == NULL)
8698     return NULL;
8699
8700   if (parent->scope_set)
8701     return parent->scope;
8702
8703   parent->fixup (cu);
8704
8705   grandparent_scope = partial_die_parent_scope (parent, cu);
8706
8707   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8708      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8709      Work around this problem here.  */
8710   if (cu->language == language_cplus
8711       && parent->tag == DW_TAG_namespace
8712       && strcmp (parent->name, "::") == 0
8713       && grandparent_scope == NULL)
8714     {
8715       parent->scope = NULL;
8716       parent->scope_set = 1;
8717       return NULL;
8718     }
8719
8720   if (pdi->tag == DW_TAG_enumerator)
8721     /* Enumerators should not get the name of the enumeration as a prefix.  */
8722     parent->scope = grandparent_scope;
8723   else if (parent->tag == DW_TAG_namespace
8724       || parent->tag == DW_TAG_module
8725       || parent->tag == DW_TAG_structure_type
8726       || parent->tag == DW_TAG_class_type
8727       || parent->tag == DW_TAG_interface_type
8728       || parent->tag == DW_TAG_union_type
8729       || parent->tag == DW_TAG_enumeration_type)
8730     {
8731       if (grandparent_scope == NULL)
8732         parent->scope = parent->name;
8733       else
8734         parent->scope = typename_concat (&cu->comp_unit_obstack,
8735                                          grandparent_scope,
8736                                          parent->name, 0, cu);
8737     }
8738   else
8739     {
8740       /* FIXME drow/2004-04-01: What should we be doing with
8741          function-local names?  For partial symbols, we should probably be
8742          ignoring them.  */
8743       complaint (&symfile_complaints,
8744                  _("unhandled containing DIE tag %d for DIE at %s"),
8745                  parent->tag, sect_offset_str (pdi->sect_off));
8746       parent->scope = grandparent_scope;
8747     }
8748
8749   parent->scope_set = 1;
8750   return parent->scope;
8751 }
8752
8753 /* Return the fully scoped name associated with PDI, from compilation unit
8754    CU.  The result will be allocated with malloc.  */
8755
8756 static char *
8757 partial_die_full_name (struct partial_die_info *pdi,
8758                        struct dwarf2_cu *cu)
8759 {
8760   const char *parent_scope;
8761
8762   /* If this is a template instantiation, we can not work out the
8763      template arguments from partial DIEs.  So, unfortunately, we have
8764      to go through the full DIEs.  At least any work we do building
8765      types here will be reused if full symbols are loaded later.  */
8766   if (pdi->has_template_arguments)
8767     {
8768       pdi->fixup (cu);
8769
8770       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8771         {
8772           struct die_info *die;
8773           struct attribute attr;
8774           struct dwarf2_cu *ref_cu = cu;
8775
8776           /* DW_FORM_ref_addr is using section offset.  */
8777           attr.name = (enum dwarf_attribute) 0;
8778           attr.form = DW_FORM_ref_addr;
8779           attr.u.unsnd = to_underlying (pdi->sect_off);
8780           die = follow_die_ref (NULL, &attr, &ref_cu);
8781
8782           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8783         }
8784     }
8785
8786   parent_scope = partial_die_parent_scope (pdi, cu);
8787   if (parent_scope == NULL)
8788     return NULL;
8789   else
8790     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8791 }
8792
8793 static void
8794 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8795 {
8796   struct dwarf2_per_objfile *dwarf2_per_objfile
8797     = cu->per_cu->dwarf2_per_objfile;
8798   struct objfile *objfile = dwarf2_per_objfile->objfile;
8799   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8800   CORE_ADDR addr = 0;
8801   const char *actual_name = NULL;
8802   CORE_ADDR baseaddr;
8803   char *built_actual_name;
8804
8805   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8806
8807   built_actual_name = partial_die_full_name (pdi, cu);
8808   if (built_actual_name != NULL)
8809     actual_name = built_actual_name;
8810
8811   if (actual_name == NULL)
8812     actual_name = pdi->name;
8813
8814   switch (pdi->tag)
8815     {
8816     case DW_TAG_inlined_subroutine:
8817     case DW_TAG_subprogram:
8818       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
8819       if (pdi->is_external || cu->language == language_ada)
8820         {
8821           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8822              of the global scope.  But in Ada, we want to be able to access
8823              nested procedures globally.  So all Ada subprograms are stored
8824              in the global scope.  */
8825           add_psymbol_to_list (actual_name, strlen (actual_name),
8826                                built_actual_name != NULL,
8827                                VAR_DOMAIN, LOC_BLOCK,
8828                                &objfile->global_psymbols,
8829                                addr, cu->language, objfile);
8830         }
8831       else
8832         {
8833           add_psymbol_to_list (actual_name, strlen (actual_name),
8834                                built_actual_name != NULL,
8835                                VAR_DOMAIN, LOC_BLOCK,
8836                                &objfile->static_psymbols,
8837                                addr, cu->language, objfile);
8838         }
8839
8840       if (pdi->main_subprogram && actual_name != NULL)
8841         set_objfile_main_name (objfile, actual_name, cu->language);
8842       break;
8843     case DW_TAG_constant:
8844       {
8845         std::vector<partial_symbol *> *list;
8846
8847         if (pdi->is_external)
8848           list = &objfile->global_psymbols;
8849         else
8850           list = &objfile->static_psymbols;
8851         add_psymbol_to_list (actual_name, strlen (actual_name),
8852                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8853                              list, 0, cu->language, objfile);
8854       }
8855       break;
8856     case DW_TAG_variable:
8857       if (pdi->d.locdesc)
8858         addr = decode_locdesc (pdi->d.locdesc, cu);
8859
8860       if (pdi->d.locdesc
8861           && addr == 0
8862           && !dwarf2_per_objfile->has_section_at_zero)
8863         {
8864           /* A global or static variable may also have been stripped
8865              out by the linker if unused, in which case its address
8866              will be nullified; do not add such variables into partial
8867              symbol table then.  */
8868         }
8869       else if (pdi->is_external)
8870         {
8871           /* Global Variable.
8872              Don't enter into the minimal symbol tables as there is
8873              a minimal symbol table entry from the ELF symbols already.
8874              Enter into partial symbol table if it has a location
8875              descriptor or a type.
8876              If the location descriptor is missing, new_symbol will create
8877              a LOC_UNRESOLVED symbol, the address of the variable will then
8878              be determined from the minimal symbol table whenever the variable
8879              is referenced.
8880              The address for the partial symbol table entry is not
8881              used by GDB, but it comes in handy for debugging partial symbol
8882              table building.  */
8883
8884           if (pdi->d.locdesc || pdi->has_type)
8885             add_psymbol_to_list (actual_name, strlen (actual_name),
8886                                  built_actual_name != NULL,
8887                                  VAR_DOMAIN, LOC_STATIC,
8888                                  &objfile->global_psymbols,
8889                                  addr + baseaddr,
8890                                  cu->language, objfile);
8891         }
8892       else
8893         {
8894           int has_loc = pdi->d.locdesc != NULL;
8895
8896           /* Static Variable.  Skip symbols whose value we cannot know (those
8897              without location descriptors or constant values).  */
8898           if (!has_loc && !pdi->has_const_value)
8899             {
8900               xfree (built_actual_name);
8901               return;
8902             }
8903
8904           add_psymbol_to_list (actual_name, strlen (actual_name),
8905                                built_actual_name != NULL,
8906                                VAR_DOMAIN, LOC_STATIC,
8907                                &objfile->static_psymbols,
8908                                has_loc ? addr + baseaddr : (CORE_ADDR) 0,
8909                                cu->language, objfile);
8910         }
8911       break;
8912     case DW_TAG_typedef:
8913     case DW_TAG_base_type:
8914     case DW_TAG_subrange_type:
8915       add_psymbol_to_list (actual_name, strlen (actual_name),
8916                            built_actual_name != NULL,
8917                            VAR_DOMAIN, LOC_TYPEDEF,
8918                            &objfile->static_psymbols,
8919                            0, cu->language, objfile);
8920       break;
8921     case DW_TAG_imported_declaration:
8922     case DW_TAG_namespace:
8923       add_psymbol_to_list (actual_name, strlen (actual_name),
8924                            built_actual_name != NULL,
8925                            VAR_DOMAIN, LOC_TYPEDEF,
8926                            &objfile->global_psymbols,
8927                            0, cu->language, objfile);
8928       break;
8929     case DW_TAG_module:
8930       add_psymbol_to_list (actual_name, strlen (actual_name),
8931                            built_actual_name != NULL,
8932                            MODULE_DOMAIN, LOC_TYPEDEF,
8933                            &objfile->global_psymbols,
8934                            0, cu->language, objfile);
8935       break;
8936     case DW_TAG_class_type:
8937     case DW_TAG_interface_type:
8938     case DW_TAG_structure_type:
8939     case DW_TAG_union_type:
8940     case DW_TAG_enumeration_type:
8941       /* Skip external references.  The DWARF standard says in the section
8942          about "Structure, Union, and Class Type Entries": "An incomplete
8943          structure, union or class type is represented by a structure,
8944          union or class entry that does not have a byte size attribute
8945          and that has a DW_AT_declaration attribute."  */
8946       if (!pdi->has_byte_size && pdi->is_declaration)
8947         {
8948           xfree (built_actual_name);
8949           return;
8950         }
8951
8952       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
8953          static vs. global.  */
8954       add_psymbol_to_list (actual_name, strlen (actual_name),
8955                            built_actual_name != NULL,
8956                            STRUCT_DOMAIN, LOC_TYPEDEF,
8957                            cu->language == language_cplus
8958                            ? &objfile->global_psymbols
8959                            : &objfile->static_psymbols,
8960                            0, cu->language, objfile);
8961
8962       break;
8963     case DW_TAG_enumerator:
8964       add_psymbol_to_list (actual_name, strlen (actual_name),
8965                            built_actual_name != NULL,
8966                            VAR_DOMAIN, LOC_CONST,
8967                            cu->language == language_cplus
8968                            ? &objfile->global_psymbols
8969                            : &objfile->static_psymbols,
8970                            0, cu->language, objfile);
8971       break;
8972     default:
8973       break;
8974     }
8975
8976   xfree (built_actual_name);
8977 }
8978
8979 /* Read a partial die corresponding to a namespace; also, add a symbol
8980    corresponding to that namespace to the symbol table.  NAMESPACE is
8981    the name of the enclosing namespace.  */
8982
8983 static void
8984 add_partial_namespace (struct partial_die_info *pdi,
8985                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
8986                        int set_addrmap, struct dwarf2_cu *cu)
8987 {
8988   /* Add a symbol for the namespace.  */
8989
8990   add_partial_symbol (pdi, cu);
8991
8992   /* Now scan partial symbols in that namespace.  */
8993
8994   if (pdi->has_children)
8995     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8996 }
8997
8998 /* Read a partial die corresponding to a Fortran module.  */
8999
9000 static void
9001 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9002                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9003 {
9004   /* Add a symbol for the namespace.  */
9005
9006   add_partial_symbol (pdi, cu);
9007
9008   /* Now scan partial symbols in that module.  */
9009
9010   if (pdi->has_children)
9011     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9012 }
9013
9014 /* Read a partial die corresponding to a subprogram or an inlined
9015    subprogram and create a partial symbol for that subprogram.
9016    When the CU language allows it, this routine also defines a partial
9017    symbol for each nested subprogram that this subprogram contains.
9018    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9019    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9020
9021    PDI may also be a lexical block, in which case we simply search
9022    recursively for subprograms defined inside that lexical block.
9023    Again, this is only performed when the CU language allows this
9024    type of definitions.  */
9025
9026 static void
9027 add_partial_subprogram (struct partial_die_info *pdi,
9028                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9029                         int set_addrmap, struct dwarf2_cu *cu)
9030 {
9031   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9032     {
9033       if (pdi->has_pc_info)
9034         {
9035           if (pdi->lowpc < *lowpc)
9036             *lowpc = pdi->lowpc;
9037           if (pdi->highpc > *highpc)
9038             *highpc = pdi->highpc;
9039           if (set_addrmap)
9040             {
9041               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9042               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9043               CORE_ADDR baseaddr;
9044               CORE_ADDR highpc;
9045               CORE_ADDR lowpc;
9046
9047               baseaddr = ANOFFSET (objfile->section_offsets,
9048                                    SECT_OFF_TEXT (objfile));
9049               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9050                                                   pdi->lowpc + baseaddr);
9051               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9052                                                    pdi->highpc + baseaddr);
9053               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9054                                  cu->per_cu->v.psymtab);
9055             }
9056         }
9057
9058       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9059         {
9060           if (!pdi->is_declaration)
9061             /* Ignore subprogram DIEs that do not have a name, they are
9062                illegal.  Do not emit a complaint at this point, we will
9063                do so when we convert this psymtab into a symtab.  */
9064             if (pdi->name)
9065               add_partial_symbol (pdi, cu);
9066         }
9067     }
9068
9069   if (! pdi->has_children)
9070     return;
9071
9072   if (cu->language == language_ada)
9073     {
9074       pdi = pdi->die_child;
9075       while (pdi != NULL)
9076         {
9077           pdi->fixup (cu);
9078           if (pdi->tag == DW_TAG_subprogram
9079               || pdi->tag == DW_TAG_inlined_subroutine
9080               || pdi->tag == DW_TAG_lexical_block)
9081             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9082           pdi = pdi->die_sibling;
9083         }
9084     }
9085 }
9086
9087 /* Read a partial die corresponding to an enumeration type.  */
9088
9089 static void
9090 add_partial_enumeration (struct partial_die_info *enum_pdi,
9091                          struct dwarf2_cu *cu)
9092 {
9093   struct partial_die_info *pdi;
9094
9095   if (enum_pdi->name != NULL)
9096     add_partial_symbol (enum_pdi, cu);
9097
9098   pdi = enum_pdi->die_child;
9099   while (pdi)
9100     {
9101       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9102         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
9103       else
9104         add_partial_symbol (pdi, cu);
9105       pdi = pdi->die_sibling;
9106     }
9107 }
9108
9109 /* Return the initial uleb128 in the die at INFO_PTR.  */
9110
9111 static unsigned int
9112 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9113 {
9114   unsigned int bytes_read;
9115
9116   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9117 }
9118
9119 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9120    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9121
9122    Return the corresponding abbrev, or NULL if the number is zero (indicating
9123    an empty DIE).  In either case *BYTES_READ will be set to the length of
9124    the initial number.  */
9125
9126 static struct abbrev_info *
9127 peek_die_abbrev (const die_reader_specs &reader,
9128                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9129 {
9130   dwarf2_cu *cu = reader.cu;
9131   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9132   unsigned int abbrev_number
9133     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9134
9135   if (abbrev_number == 0)
9136     return NULL;
9137
9138   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9139   if (!abbrev)
9140     {
9141       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9142                " at offset %s [in module %s]"),
9143              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9144              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9145     }
9146
9147   return abbrev;
9148 }
9149
9150 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9151    Returns a pointer to the end of a series of DIEs, terminated by an empty
9152    DIE.  Any children of the skipped DIEs will also be skipped.  */
9153
9154 static const gdb_byte *
9155 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9156 {
9157   while (1)
9158     {
9159       unsigned int bytes_read;
9160       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9161
9162       if (abbrev == NULL)
9163         return info_ptr + bytes_read;
9164       else
9165         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9166     }
9167 }
9168
9169 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9170    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9171    abbrev corresponding to that skipped uleb128 should be passed in
9172    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9173    children.  */
9174
9175 static const gdb_byte *
9176 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9177               struct abbrev_info *abbrev)
9178 {
9179   unsigned int bytes_read;
9180   struct attribute attr;
9181   bfd *abfd = reader->abfd;
9182   struct dwarf2_cu *cu = reader->cu;
9183   const gdb_byte *buffer = reader->buffer;
9184   const gdb_byte *buffer_end = reader->buffer_end;
9185   unsigned int form, i;
9186
9187   for (i = 0; i < abbrev->num_attrs; i++)
9188     {
9189       /* The only abbrev we care about is DW_AT_sibling.  */
9190       if (abbrev->attrs[i].name == DW_AT_sibling)
9191         {
9192           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9193           if (attr.form == DW_FORM_ref_addr)
9194             complaint (&symfile_complaints,
9195                        _("ignoring absolute DW_AT_sibling"));
9196           else
9197             {
9198               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9199               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9200
9201               if (sibling_ptr < info_ptr)
9202                 complaint (&symfile_complaints,
9203                            _("DW_AT_sibling points backwards"));
9204               else if (sibling_ptr > reader->buffer_end)
9205                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9206               else
9207                 return sibling_ptr;
9208             }
9209         }
9210
9211       /* If it isn't DW_AT_sibling, skip this attribute.  */
9212       form = abbrev->attrs[i].form;
9213     skip_attribute:
9214       switch (form)
9215         {
9216         case DW_FORM_ref_addr:
9217           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9218              and later it is offset sized.  */
9219           if (cu->header.version == 2)
9220             info_ptr += cu->header.addr_size;
9221           else
9222             info_ptr += cu->header.offset_size;
9223           break;
9224         case DW_FORM_GNU_ref_alt:
9225           info_ptr += cu->header.offset_size;
9226           break;
9227         case DW_FORM_addr:
9228           info_ptr += cu->header.addr_size;
9229           break;
9230         case DW_FORM_data1:
9231         case DW_FORM_ref1:
9232         case DW_FORM_flag:
9233           info_ptr += 1;
9234           break;
9235         case DW_FORM_flag_present:
9236         case DW_FORM_implicit_const:
9237           break;
9238         case DW_FORM_data2:
9239         case DW_FORM_ref2:
9240           info_ptr += 2;
9241           break;
9242         case DW_FORM_data4:
9243         case DW_FORM_ref4:
9244           info_ptr += 4;
9245           break;
9246         case DW_FORM_data8:
9247         case DW_FORM_ref8:
9248         case DW_FORM_ref_sig8:
9249           info_ptr += 8;
9250           break;
9251         case DW_FORM_data16:
9252           info_ptr += 16;
9253           break;
9254         case DW_FORM_string:
9255           read_direct_string (abfd, info_ptr, &bytes_read);
9256           info_ptr += bytes_read;
9257           break;
9258         case DW_FORM_sec_offset:
9259         case DW_FORM_strp:
9260         case DW_FORM_GNU_strp_alt:
9261           info_ptr += cu->header.offset_size;
9262           break;
9263         case DW_FORM_exprloc:
9264         case DW_FORM_block:
9265           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9266           info_ptr += bytes_read;
9267           break;
9268         case DW_FORM_block1:
9269           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9270           break;
9271         case DW_FORM_block2:
9272           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9273           break;
9274         case DW_FORM_block4:
9275           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9276           break;
9277         case DW_FORM_sdata:
9278         case DW_FORM_udata:
9279         case DW_FORM_ref_udata:
9280         case DW_FORM_GNU_addr_index:
9281         case DW_FORM_GNU_str_index:
9282           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9283           break;
9284         case DW_FORM_indirect:
9285           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9286           info_ptr += bytes_read;
9287           /* We need to continue parsing from here, so just go back to
9288              the top.  */
9289           goto skip_attribute;
9290
9291         default:
9292           error (_("Dwarf Error: Cannot handle %s "
9293                    "in DWARF reader [in module %s]"),
9294                  dwarf_form_name (form),
9295                  bfd_get_filename (abfd));
9296         }
9297     }
9298
9299   if (abbrev->has_children)
9300     return skip_children (reader, info_ptr);
9301   else
9302     return info_ptr;
9303 }
9304
9305 /* Locate ORIG_PDI's sibling.
9306    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9307
9308 static const gdb_byte *
9309 locate_pdi_sibling (const struct die_reader_specs *reader,
9310                     struct partial_die_info *orig_pdi,
9311                     const gdb_byte *info_ptr)
9312 {
9313   /* Do we know the sibling already?  */
9314
9315   if (orig_pdi->sibling)
9316     return orig_pdi->sibling;
9317
9318   /* Are there any children to deal with?  */
9319
9320   if (!orig_pdi->has_children)
9321     return info_ptr;
9322
9323   /* Skip the children the long way.  */
9324
9325   return skip_children (reader, info_ptr);
9326 }
9327
9328 /* Expand this partial symbol table into a full symbol table.  SELF is
9329    not NULL.  */
9330
9331 static void
9332 dwarf2_read_symtab (struct partial_symtab *self,
9333                     struct objfile *objfile)
9334 {
9335   struct dwarf2_per_objfile *dwarf2_per_objfile
9336     = get_dwarf2_per_objfile (objfile);
9337
9338   if (self->readin)
9339     {
9340       warning (_("bug: psymtab for %s is already read in."),
9341                self->filename);
9342     }
9343   else
9344     {
9345       if (info_verbose)
9346         {
9347           printf_filtered (_("Reading in symbols for %s..."),
9348                            self->filename);
9349           gdb_flush (gdb_stdout);
9350         }
9351
9352       /* If this psymtab is constructed from a debug-only objfile, the
9353          has_section_at_zero flag will not necessarily be correct.  We
9354          can get the correct value for this flag by looking at the data
9355          associated with the (presumably stripped) associated objfile.  */
9356       if (objfile->separate_debug_objfile_backlink)
9357         {
9358           struct dwarf2_per_objfile *dpo_backlink
9359             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9360
9361           dwarf2_per_objfile->has_section_at_zero
9362             = dpo_backlink->has_section_at_zero;
9363         }
9364
9365       dwarf2_per_objfile->reading_partial_symbols = 0;
9366
9367       psymtab_to_symtab_1 (self);
9368
9369       /* Finish up the debug error message.  */
9370       if (info_verbose)
9371         printf_filtered (_("done.\n"));
9372     }
9373
9374   process_cu_includes (dwarf2_per_objfile);
9375 }
9376 \f
9377 /* Reading in full CUs.  */
9378
9379 /* Add PER_CU to the queue.  */
9380
9381 static void
9382 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9383                  enum language pretend_language)
9384 {
9385   struct dwarf2_queue_item *item;
9386
9387   per_cu->queued = 1;
9388   item = XNEW (struct dwarf2_queue_item);
9389   item->per_cu = per_cu;
9390   item->pretend_language = pretend_language;
9391   item->next = NULL;
9392
9393   if (dwarf2_queue == NULL)
9394     dwarf2_queue = item;
9395   else
9396     dwarf2_queue_tail->next = item;
9397
9398   dwarf2_queue_tail = item;
9399 }
9400
9401 /* If PER_CU is not yet queued, add it to the queue.
9402    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9403    dependency.
9404    The result is non-zero if PER_CU was queued, otherwise the result is zero
9405    meaning either PER_CU is already queued or it is already loaded.
9406
9407    N.B. There is an invariant here that if a CU is queued then it is loaded.
9408    The caller is required to load PER_CU if we return non-zero.  */
9409
9410 static int
9411 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9412                        struct dwarf2_per_cu_data *per_cu,
9413                        enum language pretend_language)
9414 {
9415   /* We may arrive here during partial symbol reading, if we need full
9416      DIEs to process an unusual case (e.g. template arguments).  Do
9417      not queue PER_CU, just tell our caller to load its DIEs.  */
9418   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9419     {
9420       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9421         return 1;
9422       return 0;
9423     }
9424
9425   /* Mark the dependence relation so that we don't flush PER_CU
9426      too early.  */
9427   if (dependent_cu != NULL)
9428     dwarf2_add_dependence (dependent_cu, per_cu);
9429
9430   /* If it's already on the queue, we have nothing to do.  */
9431   if (per_cu->queued)
9432     return 0;
9433
9434   /* If the compilation unit is already loaded, just mark it as
9435      used.  */
9436   if (per_cu->cu != NULL)
9437     {
9438       per_cu->cu->last_used = 0;
9439       return 0;
9440     }
9441
9442   /* Add it to the queue.  */
9443   queue_comp_unit (per_cu, pretend_language);
9444
9445   return 1;
9446 }
9447
9448 /* Process the queue.  */
9449
9450 static void
9451 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9452 {
9453   struct dwarf2_queue_item *item, *next_item;
9454
9455   if (dwarf_read_debug)
9456     {
9457       fprintf_unfiltered (gdb_stdlog,
9458                           "Expanding one or more symtabs of objfile %s ...\n",
9459                           objfile_name (dwarf2_per_objfile->objfile));
9460     }
9461
9462   /* The queue starts out with one item, but following a DIE reference
9463      may load a new CU, adding it to the end of the queue.  */
9464   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9465     {
9466       if ((dwarf2_per_objfile->using_index
9467            ? !item->per_cu->v.quick->compunit_symtab
9468            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9469           /* Skip dummy CUs.  */
9470           && item->per_cu->cu != NULL)
9471         {
9472           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9473           unsigned int debug_print_threshold;
9474           char buf[100];
9475
9476           if (per_cu->is_debug_types)
9477             {
9478               struct signatured_type *sig_type =
9479                 (struct signatured_type *) per_cu;
9480
9481               sprintf (buf, "TU %s at offset %s",
9482                        hex_string (sig_type->signature),
9483                        sect_offset_str (per_cu->sect_off));
9484               /* There can be 100s of TUs.
9485                  Only print them in verbose mode.  */
9486               debug_print_threshold = 2;
9487             }
9488           else
9489             {
9490               sprintf (buf, "CU at offset %s",
9491                        sect_offset_str (per_cu->sect_off));
9492               debug_print_threshold = 1;
9493             }
9494
9495           if (dwarf_read_debug >= debug_print_threshold)
9496             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9497
9498           if (per_cu->is_debug_types)
9499             process_full_type_unit (per_cu, item->pretend_language);
9500           else
9501             process_full_comp_unit (per_cu, item->pretend_language);
9502
9503           if (dwarf_read_debug >= debug_print_threshold)
9504             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9505         }
9506
9507       item->per_cu->queued = 0;
9508       next_item = item->next;
9509       xfree (item);
9510     }
9511
9512   dwarf2_queue_tail = NULL;
9513
9514   if (dwarf_read_debug)
9515     {
9516       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9517                           objfile_name (dwarf2_per_objfile->objfile));
9518     }
9519 }
9520
9521 /* Read in full symbols for PST, and anything it depends on.  */
9522
9523 static void
9524 psymtab_to_symtab_1 (struct partial_symtab *pst)
9525 {
9526   struct dwarf2_per_cu_data *per_cu;
9527   int i;
9528
9529   if (pst->readin)
9530     return;
9531
9532   for (i = 0; i < pst->number_of_dependencies; i++)
9533     if (!pst->dependencies[i]->readin
9534         && pst->dependencies[i]->user == NULL)
9535       {
9536         /* Inform about additional files that need to be read in.  */
9537         if (info_verbose)
9538           {
9539             /* FIXME: i18n: Need to make this a single string.  */
9540             fputs_filtered (" ", gdb_stdout);
9541             wrap_here ("");
9542             fputs_filtered ("and ", gdb_stdout);
9543             wrap_here ("");
9544             printf_filtered ("%s...", pst->dependencies[i]->filename);
9545             wrap_here ("");     /* Flush output.  */
9546             gdb_flush (gdb_stdout);
9547           }
9548         psymtab_to_symtab_1 (pst->dependencies[i]);
9549       }
9550
9551   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9552
9553   if (per_cu == NULL)
9554     {
9555       /* It's an include file, no symbols to read for it.
9556          Everything is in the parent symtab.  */
9557       pst->readin = 1;
9558       return;
9559     }
9560
9561   dw2_do_instantiate_symtab (per_cu);
9562 }
9563
9564 /* Trivial hash function for die_info: the hash value of a DIE
9565    is its offset in .debug_info for this objfile.  */
9566
9567 static hashval_t
9568 die_hash (const void *item)
9569 {
9570   const struct die_info *die = (const struct die_info *) item;
9571
9572   return to_underlying (die->sect_off);
9573 }
9574
9575 /* Trivial comparison function for die_info structures: two DIEs
9576    are equal if they have the same offset.  */
9577
9578 static int
9579 die_eq (const void *item_lhs, const void *item_rhs)
9580 {
9581   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9582   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9583
9584   return die_lhs->sect_off == die_rhs->sect_off;
9585 }
9586
9587 /* die_reader_func for load_full_comp_unit.
9588    This is identical to read_signatured_type_reader,
9589    but is kept separate for now.  */
9590
9591 static void
9592 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9593                             const gdb_byte *info_ptr,
9594                             struct die_info *comp_unit_die,
9595                             int has_children,
9596                             void *data)
9597 {
9598   struct dwarf2_cu *cu = reader->cu;
9599   enum language *language_ptr = (enum language *) data;
9600
9601   gdb_assert (cu->die_hash == NULL);
9602   cu->die_hash =
9603     htab_create_alloc_ex (cu->header.length / 12,
9604                           die_hash,
9605                           die_eq,
9606                           NULL,
9607                           &cu->comp_unit_obstack,
9608                           hashtab_obstack_allocate,
9609                           dummy_obstack_deallocate);
9610
9611   if (has_children)
9612     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9613                                                   &info_ptr, comp_unit_die);
9614   cu->dies = comp_unit_die;
9615   /* comp_unit_die is not stored in die_hash, no need.  */
9616
9617   /* We try not to read any attributes in this function, because not
9618      all CUs needed for references have been loaded yet, and symbol
9619      table processing isn't initialized.  But we have to set the CU language,
9620      or we won't be able to build types correctly.
9621      Similarly, if we do not read the producer, we can not apply
9622      producer-specific interpretation.  */
9623   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9624 }
9625
9626 /* Load the DIEs associated with PER_CU into memory.  */
9627
9628 static void
9629 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9630                      enum language pretend_language)
9631 {
9632   gdb_assert (! this_cu->is_debug_types);
9633
9634   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
9635                            load_full_comp_unit_reader, &pretend_language);
9636 }
9637
9638 /* Add a DIE to the delayed physname list.  */
9639
9640 static void
9641 add_to_method_list (struct type *type, int fnfield_index, int index,
9642                     const char *name, struct die_info *die,
9643                     struct dwarf2_cu *cu)
9644 {
9645   struct delayed_method_info mi;
9646   mi.type = type;
9647   mi.fnfield_index = fnfield_index;
9648   mi.index = index;
9649   mi.name = name;
9650   mi.die = die;
9651   cu->method_list.push_back (mi);
9652 }
9653
9654 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9655    "const" / "volatile".  If so, decrements LEN by the length of the
9656    modifier and return true.  Otherwise return false.  */
9657
9658 template<size_t N>
9659 static bool
9660 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9661 {
9662   size_t mod_len = sizeof (mod) - 1;
9663   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9664     {
9665       len -= mod_len;
9666       return true;
9667     }
9668   return false;
9669 }
9670
9671 /* Compute the physnames of any methods on the CU's method list.
9672
9673    The computation of method physnames is delayed in order to avoid the
9674    (bad) condition that one of the method's formal parameters is of an as yet
9675    incomplete type.  */
9676
9677 static void
9678 compute_delayed_physnames (struct dwarf2_cu *cu)
9679 {
9680   /* Only C++ delays computing physnames.  */
9681   if (cu->method_list.empty ())
9682     return;
9683   gdb_assert (cu->language == language_cplus);
9684
9685   for (struct delayed_method_info &mi : cu->method_list)
9686     {
9687       const char *physname;
9688       struct fn_fieldlist *fn_flp
9689         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9690       physname = dwarf2_physname (mi.name, mi.die, cu);
9691       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9692         = physname ? physname : "";
9693
9694       /* Since there's no tag to indicate whether a method is a
9695          const/volatile overload, extract that information out of the
9696          demangled name.  */
9697       if (physname != NULL)
9698         {
9699           size_t len = strlen (physname);
9700
9701           while (1)
9702             {
9703               if (physname[len] == ')') /* shortcut */
9704                 break;
9705               else if (check_modifier (physname, len, " const"))
9706                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9707               else if (check_modifier (physname, len, " volatile"))
9708                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9709               else
9710                 break;
9711             }
9712         }
9713     }
9714
9715   /* The list is no longer needed.  */
9716   cu->method_list.clear ();
9717 }
9718
9719 /* Go objects should be embedded in a DW_TAG_module DIE,
9720    and it's not clear if/how imported objects will appear.
9721    To keep Go support simple until that's worked out,
9722    go back through what we've read and create something usable.
9723    We could do this while processing each DIE, and feels kinda cleaner,
9724    but that way is more invasive.
9725    This is to, for example, allow the user to type "p var" or "b main"
9726    without having to specify the package name, and allow lookups
9727    of module.object to work in contexts that use the expression
9728    parser.  */
9729
9730 static void
9731 fixup_go_packaging (struct dwarf2_cu *cu)
9732 {
9733   char *package_name = NULL;
9734   struct pending *list;
9735   int i;
9736
9737   for (list = global_symbols; list != NULL; list = list->next)
9738     {
9739       for (i = 0; i < list->nsyms; ++i)
9740         {
9741           struct symbol *sym = list->symbol[i];
9742
9743           if (SYMBOL_LANGUAGE (sym) == language_go
9744               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9745             {
9746               char *this_package_name = go_symbol_package_name (sym);
9747
9748               if (this_package_name == NULL)
9749                 continue;
9750               if (package_name == NULL)
9751                 package_name = this_package_name;
9752               else
9753                 {
9754                   struct objfile *objfile
9755                     = cu->per_cu->dwarf2_per_objfile->objfile;
9756                   if (strcmp (package_name, this_package_name) != 0)
9757                     complaint (&symfile_complaints,
9758                                _("Symtab %s has objects from two different Go packages: %s and %s"),
9759                                (symbol_symtab (sym) != NULL
9760                                 ? symtab_to_filename_for_display
9761                                     (symbol_symtab (sym))
9762                                 : objfile_name (objfile)),
9763                                this_package_name, package_name);
9764                   xfree (this_package_name);
9765                 }
9766             }
9767         }
9768     }
9769
9770   if (package_name != NULL)
9771     {
9772       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9773       const char *saved_package_name
9774         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9775                                         package_name,
9776                                         strlen (package_name));
9777       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9778                                      saved_package_name);
9779       struct symbol *sym;
9780
9781       TYPE_TAG_NAME (type) = TYPE_NAME (type);
9782
9783       sym = allocate_symbol (objfile);
9784       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9785       SYMBOL_SET_NAMES (sym, saved_package_name,
9786                         strlen (saved_package_name), 0, objfile);
9787       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9788          e.g., "main" finds the "main" module and not C's main().  */
9789       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9790       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9791       SYMBOL_TYPE (sym) = type;
9792
9793       add_symbol_to_list (sym, &global_symbols);
9794
9795       xfree (package_name);
9796     }
9797 }
9798
9799 /* Allocate a fully-qualified name consisting of the two parts on the
9800    obstack.  */
9801
9802 static const char *
9803 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9804 {
9805   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9806 }
9807
9808 /* A helper that allocates a struct discriminant_info to attach to a
9809    union type.  */
9810
9811 static struct discriminant_info *
9812 alloc_discriminant_info (struct type *type, int discriminant_index,
9813                          int default_index)
9814 {
9815   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9816   gdb_assert (discriminant_index == -1
9817               || (discriminant_index >= 0
9818                   && discriminant_index < TYPE_NFIELDS (type)));
9819   gdb_assert (default_index == -1
9820               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9821
9822   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9823
9824   struct discriminant_info *disc
9825     = ((struct discriminant_info *)
9826        TYPE_ZALLOC (type,
9827                     offsetof (struct discriminant_info, discriminants)
9828                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9829   disc->default_index = default_index;
9830   disc->discriminant_index = discriminant_index;
9831
9832   struct dynamic_prop prop;
9833   prop.kind = PROP_UNDEFINED;
9834   prop.data.baton = disc;
9835
9836   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9837
9838   return disc;
9839 }
9840
9841 /* Some versions of rustc emitted enums in an unusual way.
9842
9843    Ordinary enums were emitted as unions.  The first element of each
9844    structure in the union was named "RUST$ENUM$DISR".  This element
9845    held the discriminant.
9846
9847    These versions of Rust also implemented the "non-zero"
9848    optimization.  When the enum had two values, and one is empty and
9849    the other holds a pointer that cannot be zero, the pointer is used
9850    as the discriminant, with a zero value meaning the empty variant.
9851    Here, the union's first member is of the form
9852    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9853    where the fieldnos are the indices of the fields that should be
9854    traversed in order to find the field (which may be several fields deep)
9855    and the variantname is the name of the variant of the case when the
9856    field is zero.
9857
9858    This function recognizes whether TYPE is of one of these forms,
9859    and, if so, smashes it to be a variant type.  */
9860
9861 static void
9862 quirk_rust_enum (struct type *type, struct objfile *objfile)
9863 {
9864   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9865
9866   /* We don't need to deal with empty enums.  */
9867   if (TYPE_NFIELDS (type) == 0)
9868     return;
9869
9870 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9871   if (TYPE_NFIELDS (type) == 1
9872       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9873     {
9874       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9875
9876       /* Decode the field name to find the offset of the
9877          discriminant.  */
9878       ULONGEST bit_offset = 0;
9879       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9880       while (name[0] >= '0' && name[0] <= '9')
9881         {
9882           char *tail;
9883           unsigned long index = strtoul (name, &tail, 10);
9884           name = tail;
9885           if (*name != '$'
9886               || index >= TYPE_NFIELDS (field_type)
9887               || (TYPE_FIELD_LOC_KIND (field_type, index)
9888                   != FIELD_LOC_KIND_BITPOS))
9889             {
9890               complaint (&symfile_complaints,
9891                          _("Could not parse Rust enum encoding string \"%s\""
9892                            "[in module %s]"),
9893                          TYPE_FIELD_NAME (type, 0),
9894                          objfile_name (objfile));
9895               return;
9896             }
9897           ++name;
9898
9899           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9900           field_type = TYPE_FIELD_TYPE (field_type, index);
9901         }
9902
9903       /* Make a union to hold the variants.  */
9904       struct type *union_type = alloc_type (objfile);
9905       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9906       TYPE_NFIELDS (union_type) = 3;
9907       TYPE_FIELDS (union_type)
9908         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9909       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9910
9911       /* Put the discriminant must at index 0.  */
9912       TYPE_FIELD_TYPE (union_type, 0) = field_type;
9913       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
9914       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
9915       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
9916
9917       /* The order of fields doesn't really matter, so put the real
9918          field at index 1 and the data-less field at index 2.  */
9919       struct discriminant_info *disc
9920         = alloc_discriminant_info (union_type, 0, 1);
9921       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
9922       TYPE_FIELD_NAME (union_type, 1)
9923         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
9924       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
9925         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9926                               TYPE_FIELD_NAME (union_type, 1));
9927
9928       const char *dataless_name
9929         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9930                               name);
9931       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
9932                                               dataless_name);
9933       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
9934       /* NAME points into the original discriminant name, which
9935          already has the correct lifetime.  */
9936       TYPE_FIELD_NAME (union_type, 2) = name;
9937       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
9938       disc->discriminants[2] = 0;
9939
9940       /* Smash this type to be a structure type.  We have to do this
9941          because the type has already been recorded.  */
9942       TYPE_CODE (type) = TYPE_CODE_STRUCT;
9943       TYPE_NFIELDS (type) = 1;
9944       TYPE_FIELDS (type)
9945         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
9946
9947       /* Install the variant part.  */
9948       TYPE_FIELD_TYPE (type, 0) = union_type;
9949       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
9950       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
9951     }
9952   else if (TYPE_NFIELDS (type) == 1)
9953     {
9954       /* We assume that a union with a single field is a univariant
9955          enum.  */
9956       /* Smash this type to be a structure type.  We have to do this
9957          because the type has already been recorded.  */
9958       TYPE_CODE (type) = TYPE_CODE_STRUCT;
9959
9960       /* Make a union to hold the variants.  */
9961       struct type *union_type = alloc_type (objfile);
9962       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9963       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
9964       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9965       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
9966
9967       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
9968       const char *variant_name
9969         = rust_last_path_segment (TYPE_NAME (field_type));
9970       TYPE_FIELD_NAME (union_type, 0) = variant_name;
9971       TYPE_NAME (field_type)
9972         = rust_fully_qualify (&objfile->objfile_obstack,
9973                               TYPE_NAME (type), variant_name);
9974
9975       /* Install the union in the outer struct type.  */
9976       TYPE_NFIELDS (type) = 1;
9977       TYPE_FIELDS (type)
9978         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
9979       TYPE_FIELD_TYPE (type, 0) = union_type;
9980       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
9981       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
9982
9983       alloc_discriminant_info (union_type, -1, 0);
9984     }
9985   else
9986     {
9987       struct type *disr_type = nullptr;
9988       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
9989         {
9990           disr_type = TYPE_FIELD_TYPE (type, i);
9991
9992           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
9993             {
9994               /* All fields of a true enum will be structs.  */
9995               return;
9996             }
9997           else if (TYPE_NFIELDS (disr_type) == 0)
9998             {
9999               /* Could be data-less variant, so keep going.  */
10000               disr_type = nullptr;
10001             }
10002           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10003                            "RUST$ENUM$DISR") != 0)
10004             {
10005               /* Not a Rust enum.  */
10006               return;
10007             }
10008           else
10009             {
10010               /* Found one.  */
10011               break;
10012             }
10013         }
10014
10015       /* If we got here without a discriminant, then it's probably
10016          just a union.  */
10017       if (disr_type == nullptr)
10018         return;
10019
10020       /* Smash this type to be a structure type.  We have to do this
10021          because the type has already been recorded.  */
10022       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10023
10024       /* Make a union to hold the variants.  */
10025       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10026       struct type *union_type = alloc_type (objfile);
10027       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10028       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10029       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10030       TYPE_FIELDS (union_type)
10031         = (struct field *) TYPE_ZALLOC (union_type,
10032                                         (TYPE_NFIELDS (union_type)
10033                                          * sizeof (struct field)));
10034
10035       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10036               TYPE_NFIELDS (type) * sizeof (struct field));
10037
10038       /* Install the discriminant at index 0 in the union.  */
10039       TYPE_FIELD (union_type, 0) = *disr_field;
10040       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10041       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10042
10043       /* Install the union in the outer struct type.  */
10044       TYPE_FIELD_TYPE (type, 0) = union_type;
10045       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10046       TYPE_NFIELDS (type) = 1;
10047
10048       /* Set the size and offset of the union type.  */
10049       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10050
10051       /* We need a way to find the correct discriminant given a
10052          variant name.  For convenience we build a map here.  */
10053       struct type *enum_type = FIELD_TYPE (*disr_field);
10054       std::unordered_map<std::string, ULONGEST> discriminant_map;
10055       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10056         {
10057           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10058             {
10059               const char *name
10060                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10061               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10062             }
10063         }
10064
10065       int n_fields = TYPE_NFIELDS (union_type);
10066       struct discriminant_info *disc
10067         = alloc_discriminant_info (union_type, 0, -1);
10068       /* Skip the discriminant here.  */
10069       for (int i = 1; i < n_fields; ++i)
10070         {
10071           /* Find the final word in the name of this variant's type.
10072              That name can be used to look up the correct
10073              discriminant.  */
10074           const char *variant_name
10075             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10076                                                                   i)));
10077
10078           auto iter = discriminant_map.find (variant_name);
10079           if (iter != discriminant_map.end ())
10080             disc->discriminants[i] = iter->second;
10081
10082           /* Remove the discriminant field, if it exists.  */
10083           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10084           if (TYPE_NFIELDS (sub_type) > 0)
10085             {
10086               --TYPE_NFIELDS (sub_type);
10087               ++TYPE_FIELDS (sub_type);
10088             }
10089           TYPE_FIELD_NAME (union_type, i) = variant_name;
10090           TYPE_NAME (sub_type)
10091             = rust_fully_qualify (&objfile->objfile_obstack,
10092                                   TYPE_NAME (type), variant_name);
10093         }
10094     }
10095 }
10096
10097 /* Rewrite some Rust unions to be structures with variants parts.  */
10098
10099 static void
10100 rust_union_quirks (struct dwarf2_cu *cu)
10101 {
10102   gdb_assert (cu->language == language_rust);
10103   for (struct type *type : cu->rust_unions)
10104     quirk_rust_enum (type, cu->per_cu->dwarf2_per_objfile->objfile);
10105 }
10106
10107 /* Return the symtab for PER_CU.  This works properly regardless of
10108    whether we're using the index or psymtabs.  */
10109
10110 static struct compunit_symtab *
10111 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10112 {
10113   return (per_cu->dwarf2_per_objfile->using_index
10114           ? per_cu->v.quick->compunit_symtab
10115           : per_cu->v.psymtab->compunit_symtab);
10116 }
10117
10118 /* A helper function for computing the list of all symbol tables
10119    included by PER_CU.  */
10120
10121 static void
10122 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10123                                 htab_t all_children, htab_t all_type_symtabs,
10124                                 struct dwarf2_per_cu_data *per_cu,
10125                                 struct compunit_symtab *immediate_parent)
10126 {
10127   void **slot;
10128   int ix;
10129   struct compunit_symtab *cust;
10130   struct dwarf2_per_cu_data *iter;
10131
10132   slot = htab_find_slot (all_children, per_cu, INSERT);
10133   if (*slot != NULL)
10134     {
10135       /* This inclusion and its children have been processed.  */
10136       return;
10137     }
10138
10139   *slot = per_cu;
10140   /* Only add a CU if it has a symbol table.  */
10141   cust = get_compunit_symtab (per_cu);
10142   if (cust != NULL)
10143     {
10144       /* If this is a type unit only add its symbol table if we haven't
10145          seen it yet (type unit per_cu's can share symtabs).  */
10146       if (per_cu->is_debug_types)
10147         {
10148           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10149           if (*slot == NULL)
10150             {
10151               *slot = cust;
10152               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10153               if (cust->user == NULL)
10154                 cust->user = immediate_parent;
10155             }
10156         }
10157       else
10158         {
10159           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10160           if (cust->user == NULL)
10161             cust->user = immediate_parent;
10162         }
10163     }
10164
10165   for (ix = 0;
10166        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10167        ++ix)
10168     {
10169       recursively_compute_inclusions (result, all_children,
10170                                       all_type_symtabs, iter, cust);
10171     }
10172 }
10173
10174 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10175    PER_CU.  */
10176
10177 static void
10178 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10179 {
10180   gdb_assert (! per_cu->is_debug_types);
10181
10182   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10183     {
10184       int ix, len;
10185       struct dwarf2_per_cu_data *per_cu_iter;
10186       struct compunit_symtab *compunit_symtab_iter;
10187       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10188       htab_t all_children, all_type_symtabs;
10189       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10190
10191       /* If we don't have a symtab, we can just skip this case.  */
10192       if (cust == NULL)
10193         return;
10194
10195       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10196                                         NULL, xcalloc, xfree);
10197       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10198                                             NULL, xcalloc, xfree);
10199
10200       for (ix = 0;
10201            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10202                         ix, per_cu_iter);
10203            ++ix)
10204         {
10205           recursively_compute_inclusions (&result_symtabs, all_children,
10206                                           all_type_symtabs, per_cu_iter,
10207                                           cust);
10208         }
10209
10210       /* Now we have a transitive closure of all the included symtabs.  */
10211       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10212       cust->includes
10213         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10214                      struct compunit_symtab *, len + 1);
10215       for (ix = 0;
10216            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10217                         compunit_symtab_iter);
10218            ++ix)
10219         cust->includes[ix] = compunit_symtab_iter;
10220       cust->includes[len] = NULL;
10221
10222       VEC_free (compunit_symtab_ptr, result_symtabs);
10223       htab_delete (all_children);
10224       htab_delete (all_type_symtabs);
10225     }
10226 }
10227
10228 /* Compute the 'includes' field for the symtabs of all the CUs we just
10229    read.  */
10230
10231 static void
10232 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10233 {
10234   int ix;
10235   struct dwarf2_per_cu_data *iter;
10236
10237   for (ix = 0;
10238        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
10239                     ix, iter);
10240        ++ix)
10241     {
10242       if (! iter->is_debug_types)
10243         compute_compunit_symtab_includes (iter);
10244     }
10245
10246   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
10247 }
10248
10249 /* Generate full symbol information for PER_CU, whose DIEs have
10250    already been loaded into memory.  */
10251
10252 static void
10253 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10254                         enum language pretend_language)
10255 {
10256   struct dwarf2_cu *cu = per_cu->cu;
10257   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10258   struct objfile *objfile = dwarf2_per_objfile->objfile;
10259   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10260   CORE_ADDR lowpc, highpc;
10261   struct compunit_symtab *cust;
10262   CORE_ADDR baseaddr;
10263   struct block *static_block;
10264   CORE_ADDR addr;
10265
10266   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10267
10268   buildsym_init ();
10269   scoped_free_pendings free_pending;
10270
10271   /* Clear the list here in case something was left over.  */
10272   cu->method_list.clear ();
10273
10274   cu->list_in_scope = &file_symbols;
10275
10276   cu->language = pretend_language;
10277   cu->language_defn = language_def (cu->language);
10278
10279   /* Do line number decoding in read_file_scope () */
10280   process_die (cu->dies, cu);
10281
10282   /* For now fudge the Go package.  */
10283   if (cu->language == language_go)
10284     fixup_go_packaging (cu);
10285
10286   /* Now that we have processed all the DIEs in the CU, all the types 
10287      should be complete, and it should now be safe to compute all of the
10288      physnames.  */
10289   compute_delayed_physnames (cu);
10290
10291   if (cu->language == language_rust)
10292     rust_union_quirks (cu);
10293
10294   /* Some compilers don't define a DW_AT_high_pc attribute for the
10295      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10296      it, by scanning the DIE's below the compilation unit.  */
10297   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10298
10299   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10300   static_block = end_symtab_get_static_block (addr, 0, 1);
10301
10302   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10303      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10304      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10305      addrmap to help ensure it has an accurate map of pc values belonging to
10306      this comp unit.  */
10307   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10308
10309   cust = end_symtab_from_static_block (static_block,
10310                                        SECT_OFF_TEXT (objfile), 0);
10311
10312   if (cust != NULL)
10313     {
10314       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10315
10316       /* Set symtab language to language from DW_AT_language.  If the
10317          compilation is from a C file generated by language preprocessors, do
10318          not set the language if it was already deduced by start_subfile.  */
10319       if (!(cu->language == language_c
10320             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10321         COMPUNIT_FILETABS (cust)->language = cu->language;
10322
10323       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10324          produce DW_AT_location with location lists but it can be possibly
10325          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10326          there were bugs in prologue debug info, fixed later in GCC-4.5
10327          by "unwind info for epilogues" patch (which is not directly related).
10328
10329          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10330          needed, it would be wrong due to missing DW_AT_producer there.
10331
10332          Still one can confuse GDB by using non-standard GCC compilation
10333          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10334          */ 
10335       if (cu->has_loclist && gcc_4_minor >= 5)
10336         cust->locations_valid = 1;
10337
10338       if (gcc_4_minor >= 5)
10339         cust->epilogue_unwind_valid = 1;
10340
10341       cust->call_site_htab = cu->call_site_htab;
10342     }
10343
10344   if (dwarf2_per_objfile->using_index)
10345     per_cu->v.quick->compunit_symtab = cust;
10346   else
10347     {
10348       struct partial_symtab *pst = per_cu->v.psymtab;
10349       pst->compunit_symtab = cust;
10350       pst->readin = 1;
10351     }
10352
10353   /* Push it for inclusion processing later.  */
10354   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
10355 }
10356
10357 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10358    already been loaded into memory.  */
10359
10360 static void
10361 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10362                         enum language pretend_language)
10363 {
10364   struct dwarf2_cu *cu = per_cu->cu;
10365   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10366   struct objfile *objfile = dwarf2_per_objfile->objfile;
10367   struct compunit_symtab *cust;
10368   struct signatured_type *sig_type;
10369
10370   gdb_assert (per_cu->is_debug_types);
10371   sig_type = (struct signatured_type *) per_cu;
10372
10373   buildsym_init ();
10374   scoped_free_pendings free_pending;
10375
10376   /* Clear the list here in case something was left over.  */
10377   cu->method_list.clear ();
10378
10379   cu->list_in_scope = &file_symbols;
10380
10381   cu->language = pretend_language;
10382   cu->language_defn = language_def (cu->language);
10383
10384   /* The symbol tables are set up in read_type_unit_scope.  */
10385   process_die (cu->dies, cu);
10386
10387   /* For now fudge the Go package.  */
10388   if (cu->language == language_go)
10389     fixup_go_packaging (cu);
10390
10391   /* Now that we have processed all the DIEs in the CU, all the types 
10392      should be complete, and it should now be safe to compute all of the
10393      physnames.  */
10394   compute_delayed_physnames (cu);
10395
10396   if (cu->language == language_rust)
10397     rust_union_quirks (cu);
10398
10399   /* TUs share symbol tables.
10400      If this is the first TU to use this symtab, complete the construction
10401      of it with end_expandable_symtab.  Otherwise, complete the addition of
10402      this TU's symbols to the existing symtab.  */
10403   if (sig_type->type_unit_group->compunit_symtab == NULL)
10404     {
10405       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10406       sig_type->type_unit_group->compunit_symtab = cust;
10407
10408       if (cust != NULL)
10409         {
10410           /* Set symtab language to language from DW_AT_language.  If the
10411              compilation is from a C file generated by language preprocessors,
10412              do not set the language if it was already deduced by
10413              start_subfile.  */
10414           if (!(cu->language == language_c
10415                 && COMPUNIT_FILETABS (cust)->language != language_c))
10416             COMPUNIT_FILETABS (cust)->language = cu->language;
10417         }
10418     }
10419   else
10420     {
10421       augment_type_symtab ();
10422       cust = sig_type->type_unit_group->compunit_symtab;
10423     }
10424
10425   if (dwarf2_per_objfile->using_index)
10426     per_cu->v.quick->compunit_symtab = cust;
10427   else
10428     {
10429       struct partial_symtab *pst = per_cu->v.psymtab;
10430       pst->compunit_symtab = cust;
10431       pst->readin = 1;
10432     }
10433 }
10434
10435 /* Process an imported unit DIE.  */
10436
10437 static void
10438 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10439 {
10440   struct attribute *attr;
10441
10442   /* For now we don't handle imported units in type units.  */
10443   if (cu->per_cu->is_debug_types)
10444     {
10445       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10446                " supported in type units [in module %s]"),
10447              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10448     }
10449
10450   attr = dwarf2_attr (die, DW_AT_import, cu);
10451   if (attr != NULL)
10452     {
10453       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10454       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10455       dwarf2_per_cu_data *per_cu
10456         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10457                                             cu->per_cu->dwarf2_per_objfile);
10458
10459       /* If necessary, add it to the queue and load its DIEs.  */
10460       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10461         load_full_comp_unit (per_cu, cu->language);
10462
10463       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10464                      per_cu);
10465     }
10466 }
10467
10468 /* RAII object that represents a process_die scope: i.e.,
10469    starts/finishes processing a DIE.  */
10470 class process_die_scope
10471 {
10472 public:
10473   process_die_scope (die_info *die, dwarf2_cu *cu)
10474     : m_die (die), m_cu (cu)
10475   {
10476     /* We should only be processing DIEs not already in process.  */
10477     gdb_assert (!m_die->in_process);
10478     m_die->in_process = true;
10479   }
10480
10481   ~process_die_scope ()
10482   {
10483     m_die->in_process = false;
10484
10485     /* If we're done processing the DIE for the CU that owns the line
10486        header, we don't need the line header anymore.  */
10487     if (m_cu->line_header_die_owner == m_die)
10488       {
10489         delete m_cu->line_header;
10490         m_cu->line_header = NULL;
10491         m_cu->line_header_die_owner = NULL;
10492       }
10493   }
10494
10495 private:
10496   die_info *m_die;
10497   dwarf2_cu *m_cu;
10498 };
10499
10500 /* Process a die and its children.  */
10501
10502 static void
10503 process_die (struct die_info *die, struct dwarf2_cu *cu)
10504 {
10505   process_die_scope scope (die, cu);
10506
10507   switch (die->tag)
10508     {
10509     case DW_TAG_padding:
10510       break;
10511     case DW_TAG_compile_unit:
10512     case DW_TAG_partial_unit:
10513       read_file_scope (die, cu);
10514       break;
10515     case DW_TAG_type_unit:
10516       read_type_unit_scope (die, cu);
10517       break;
10518     case DW_TAG_subprogram:
10519     case DW_TAG_inlined_subroutine:
10520       read_func_scope (die, cu);
10521       break;
10522     case DW_TAG_lexical_block:
10523     case DW_TAG_try_block:
10524     case DW_TAG_catch_block:
10525       read_lexical_block_scope (die, cu);
10526       break;
10527     case DW_TAG_call_site:
10528     case DW_TAG_GNU_call_site:
10529       read_call_site_scope (die, cu);
10530       break;
10531     case DW_TAG_class_type:
10532     case DW_TAG_interface_type:
10533     case DW_TAG_structure_type:
10534     case DW_TAG_union_type:
10535       process_structure_scope (die, cu);
10536       break;
10537     case DW_TAG_enumeration_type:
10538       process_enumeration_scope (die, cu);
10539       break;
10540
10541     /* These dies have a type, but processing them does not create
10542        a symbol or recurse to process the children.  Therefore we can
10543        read them on-demand through read_type_die.  */
10544     case DW_TAG_subroutine_type:
10545     case DW_TAG_set_type:
10546     case DW_TAG_array_type:
10547     case DW_TAG_pointer_type:
10548     case DW_TAG_ptr_to_member_type:
10549     case DW_TAG_reference_type:
10550     case DW_TAG_rvalue_reference_type:
10551     case DW_TAG_string_type:
10552       break;
10553
10554     case DW_TAG_base_type:
10555     case DW_TAG_subrange_type:
10556     case DW_TAG_typedef:
10557       /* Add a typedef symbol for the type definition, if it has a
10558          DW_AT_name.  */
10559       new_symbol (die, read_type_die (die, cu), cu);
10560       break;
10561     case DW_TAG_common_block:
10562       read_common_block (die, cu);
10563       break;
10564     case DW_TAG_common_inclusion:
10565       break;
10566     case DW_TAG_namespace:
10567       cu->processing_has_namespace_info = 1;
10568       read_namespace (die, cu);
10569       break;
10570     case DW_TAG_module:
10571       cu->processing_has_namespace_info = 1;
10572       read_module (die, cu);
10573       break;
10574     case DW_TAG_imported_declaration:
10575       cu->processing_has_namespace_info = 1;
10576       if (read_namespace_alias (die, cu))
10577         break;
10578       /* The declaration is not a global namespace alias: fall through.  */
10579     case DW_TAG_imported_module:
10580       cu->processing_has_namespace_info = 1;
10581       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10582                                  || cu->language != language_fortran))
10583         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
10584                    dwarf_tag_name (die->tag));
10585       read_import_statement (die, cu);
10586       break;
10587
10588     case DW_TAG_imported_unit:
10589       process_imported_unit_die (die, cu);
10590       break;
10591
10592     case DW_TAG_variable:
10593       read_variable (die, cu);
10594       break;
10595
10596     default:
10597       new_symbol (die, NULL, cu);
10598       break;
10599     }
10600 }
10601 \f
10602 /* DWARF name computation.  */
10603
10604 /* A helper function for dwarf2_compute_name which determines whether DIE
10605    needs to have the name of the scope prepended to the name listed in the
10606    die.  */
10607
10608 static int
10609 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10610 {
10611   struct attribute *attr;
10612
10613   switch (die->tag)
10614     {
10615     case DW_TAG_namespace:
10616     case DW_TAG_typedef:
10617     case DW_TAG_class_type:
10618     case DW_TAG_interface_type:
10619     case DW_TAG_structure_type:
10620     case DW_TAG_union_type:
10621     case DW_TAG_enumeration_type:
10622     case DW_TAG_enumerator:
10623     case DW_TAG_subprogram:
10624     case DW_TAG_inlined_subroutine:
10625     case DW_TAG_member:
10626     case DW_TAG_imported_declaration:
10627       return 1;
10628
10629     case DW_TAG_variable:
10630     case DW_TAG_constant:
10631       /* We only need to prefix "globally" visible variables.  These include
10632          any variable marked with DW_AT_external or any variable that
10633          lives in a namespace.  [Variables in anonymous namespaces
10634          require prefixing, but they are not DW_AT_external.]  */
10635
10636       if (dwarf2_attr (die, DW_AT_specification, cu))
10637         {
10638           struct dwarf2_cu *spec_cu = cu;
10639
10640           return die_needs_namespace (die_specification (die, &spec_cu),
10641                                       spec_cu);
10642         }
10643
10644       attr = dwarf2_attr (die, DW_AT_external, cu);
10645       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10646           && die->parent->tag != DW_TAG_module)
10647         return 0;
10648       /* A variable in a lexical block of some kind does not need a
10649          namespace, even though in C++ such variables may be external
10650          and have a mangled name.  */
10651       if (die->parent->tag ==  DW_TAG_lexical_block
10652           || die->parent->tag ==  DW_TAG_try_block
10653           || die->parent->tag ==  DW_TAG_catch_block
10654           || die->parent->tag == DW_TAG_subprogram)
10655         return 0;
10656       return 1;
10657
10658     default:
10659       return 0;
10660     }
10661 }
10662
10663 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10664    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10665    defined for the given DIE.  */
10666
10667 static struct attribute *
10668 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10669 {
10670   struct attribute *attr;
10671
10672   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10673   if (attr == NULL)
10674     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10675
10676   return attr;
10677 }
10678
10679 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10680    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10681    defined for the given DIE.  */
10682
10683 static const char *
10684 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10685 {
10686   const char *linkage_name;
10687
10688   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10689   if (linkage_name == NULL)
10690     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10691
10692   return linkage_name;
10693 }
10694
10695 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10696    compute the physname for the object, which include a method's:
10697    - formal parameters (C++),
10698    - receiver type (Go),
10699
10700    The term "physname" is a bit confusing.
10701    For C++, for example, it is the demangled name.
10702    For Go, for example, it's the mangled name.
10703
10704    For Ada, return the DIE's linkage name rather than the fully qualified
10705    name.  PHYSNAME is ignored..
10706
10707    The result is allocated on the objfile_obstack and canonicalized.  */
10708
10709 static const char *
10710 dwarf2_compute_name (const char *name,
10711                      struct die_info *die, struct dwarf2_cu *cu,
10712                      int physname)
10713 {
10714   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10715
10716   if (name == NULL)
10717     name = dwarf2_name (die, cu);
10718
10719   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10720      but otherwise compute it by typename_concat inside GDB.
10721      FIXME: Actually this is not really true, or at least not always true.
10722      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10723      Fortran names because there is no mangling standard.  So new_symbol
10724      will set the demangled name to the result of dwarf2_full_name, and it is
10725      the demangled name that GDB uses if it exists.  */
10726   if (cu->language == language_ada
10727       || (cu->language == language_fortran && physname))
10728     {
10729       /* For Ada unit, we prefer the linkage name over the name, as
10730          the former contains the exported name, which the user expects
10731          to be able to reference.  Ideally, we want the user to be able
10732          to reference this entity using either natural or linkage name,
10733          but we haven't started looking at this enhancement yet.  */
10734       const char *linkage_name = dw2_linkage_name (die, cu);
10735
10736       if (linkage_name != NULL)
10737         return linkage_name;
10738     }
10739
10740   /* These are the only languages we know how to qualify names in.  */
10741   if (name != NULL
10742       && (cu->language == language_cplus
10743           || cu->language == language_fortran || cu->language == language_d
10744           || cu->language == language_rust))
10745     {
10746       if (die_needs_namespace (die, cu))
10747         {
10748           const char *prefix;
10749           const char *canonical_name = NULL;
10750
10751           string_file buf;
10752
10753           prefix = determine_prefix (die, cu);
10754           if (*prefix != '\0')
10755             {
10756               char *prefixed_name = typename_concat (NULL, prefix, name,
10757                                                      physname, cu);
10758
10759               buf.puts (prefixed_name);
10760               xfree (prefixed_name);
10761             }
10762           else
10763             buf.puts (name);
10764
10765           /* Template parameters may be specified in the DIE's DW_AT_name, or
10766              as children with DW_TAG_template_type_param or
10767              DW_TAG_value_type_param.  If the latter, add them to the name
10768              here.  If the name already has template parameters, then
10769              skip this step; some versions of GCC emit both, and
10770              it is more efficient to use the pre-computed name.
10771
10772              Something to keep in mind about this process: it is very
10773              unlikely, or in some cases downright impossible, to produce
10774              something that will match the mangled name of a function.
10775              If the definition of the function has the same debug info,
10776              we should be able to match up with it anyway.  But fallbacks
10777              using the minimal symbol, for instance to find a method
10778              implemented in a stripped copy of libstdc++, will not work.
10779              If we do not have debug info for the definition, we will have to
10780              match them up some other way.
10781
10782              When we do name matching there is a related problem with function
10783              templates; two instantiated function templates are allowed to
10784              differ only by their return types, which we do not add here.  */
10785
10786           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10787             {
10788               struct attribute *attr;
10789               struct die_info *child;
10790               int first = 1;
10791
10792               die->building_fullname = 1;
10793
10794               for (child = die->child; child != NULL; child = child->sibling)
10795                 {
10796                   struct type *type;
10797                   LONGEST value;
10798                   const gdb_byte *bytes;
10799                   struct dwarf2_locexpr_baton *baton;
10800                   struct value *v;
10801
10802                   if (child->tag != DW_TAG_template_type_param
10803                       && child->tag != DW_TAG_template_value_param)
10804                     continue;
10805
10806                   if (first)
10807                     {
10808                       buf.puts ("<");
10809                       first = 0;
10810                     }
10811                   else
10812                     buf.puts (", ");
10813
10814                   attr = dwarf2_attr (child, DW_AT_type, cu);
10815                   if (attr == NULL)
10816                     {
10817                       complaint (&symfile_complaints,
10818                                  _("template parameter missing DW_AT_type"));
10819                       buf.puts ("UNKNOWN_TYPE");
10820                       continue;
10821                     }
10822                   type = die_type (child, cu);
10823
10824                   if (child->tag == DW_TAG_template_type_param)
10825                     {
10826                       c_print_type (type, "", &buf, -1, 0, &type_print_raw_options);
10827                       continue;
10828                     }
10829
10830                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10831                   if (attr == NULL)
10832                     {
10833                       complaint (&symfile_complaints,
10834                                  _("template parameter missing "
10835                                    "DW_AT_const_value"));
10836                       buf.puts ("UNKNOWN_VALUE");
10837                       continue;
10838                     }
10839
10840                   dwarf2_const_value_attr (attr, type, name,
10841                                            &cu->comp_unit_obstack, cu,
10842                                            &value, &bytes, &baton);
10843
10844                   if (TYPE_NOSIGN (type))
10845                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10846                        changed, this can use value_print instead.  */
10847                     c_printchar (value, type, &buf);
10848                   else
10849                     {
10850                       struct value_print_options opts;
10851
10852                       if (baton != NULL)
10853                         v = dwarf2_evaluate_loc_desc (type, NULL,
10854                                                       baton->data,
10855                                                       baton->size,
10856                                                       baton->per_cu);
10857                       else if (bytes != NULL)
10858                         {
10859                           v = allocate_value (type);
10860                           memcpy (value_contents_writeable (v), bytes,
10861                                   TYPE_LENGTH (type));
10862                         }
10863                       else
10864                         v = value_from_longest (type, value);
10865
10866                       /* Specify decimal so that we do not depend on
10867                          the radix.  */
10868                       get_formatted_print_options (&opts, 'd');
10869                       opts.raw = 1;
10870                       value_print (v, &buf, &opts);
10871                       release_value (v);
10872                     }
10873                 }
10874
10875               die->building_fullname = 0;
10876
10877               if (!first)
10878                 {
10879                   /* Close the argument list, with a space if necessary
10880                      (nested templates).  */
10881                   if (!buf.empty () && buf.string ().back () == '>')
10882                     buf.puts (" >");
10883                   else
10884                     buf.puts (">");
10885                 }
10886             }
10887
10888           /* For C++ methods, append formal parameter type
10889              information, if PHYSNAME.  */
10890
10891           if (physname && die->tag == DW_TAG_subprogram
10892               && cu->language == language_cplus)
10893             {
10894               struct type *type = read_type_die (die, cu);
10895
10896               c_type_print_args (type, &buf, 1, cu->language,
10897                                  &type_print_raw_options);
10898
10899               if (cu->language == language_cplus)
10900                 {
10901                   /* Assume that an artificial first parameter is
10902                      "this", but do not crash if it is not.  RealView
10903                      marks unnamed (and thus unused) parameters as
10904                      artificial; there is no way to differentiate
10905                      the two cases.  */
10906                   if (TYPE_NFIELDS (type) > 0
10907                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10908                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10909                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10910                                                                         0))))
10911                     buf.puts (" const");
10912                 }
10913             }
10914
10915           const std::string &intermediate_name = buf.string ();
10916
10917           if (cu->language == language_cplus)
10918             canonical_name
10919               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10920                                           &objfile->per_bfd->storage_obstack);
10921
10922           /* If we only computed INTERMEDIATE_NAME, or if
10923              INTERMEDIATE_NAME is already canonical, then we need to
10924              copy it to the appropriate obstack.  */
10925           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
10926             name = ((const char *)
10927                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
10928                                    intermediate_name.c_str (),
10929                                    intermediate_name.length ()));
10930           else
10931             name = canonical_name;
10932         }
10933     }
10934
10935   return name;
10936 }
10937
10938 /* Return the fully qualified name of DIE, based on its DW_AT_name.
10939    If scope qualifiers are appropriate they will be added.  The result
10940    will be allocated on the storage_obstack, or NULL if the DIE does
10941    not have a name.  NAME may either be from a previous call to
10942    dwarf2_name or NULL.
10943
10944    The output string will be canonicalized (if C++).  */
10945
10946 static const char *
10947 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10948 {
10949   return dwarf2_compute_name (name, die, cu, 0);
10950 }
10951
10952 /* Construct a physname for the given DIE in CU.  NAME may either be
10953    from a previous call to dwarf2_name or NULL.  The result will be
10954    allocated on the objfile_objstack or NULL if the DIE does not have a
10955    name.
10956
10957    The output string will be canonicalized (if C++).  */
10958
10959 static const char *
10960 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10961 {
10962   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10963   const char *retval, *mangled = NULL, *canon = NULL;
10964   int need_copy = 1;
10965
10966   /* In this case dwarf2_compute_name is just a shortcut not building anything
10967      on its own.  */
10968   if (!die_needs_namespace (die, cu))
10969     return dwarf2_compute_name (name, die, cu, 1);
10970
10971   mangled = dw2_linkage_name (die, cu);
10972
10973   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
10974      See https://github.com/rust-lang/rust/issues/32925.  */
10975   if (cu->language == language_rust && mangled != NULL
10976       && strchr (mangled, '{') != NULL)
10977     mangled = NULL;
10978
10979   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
10980      has computed.  */
10981   gdb::unique_xmalloc_ptr<char> demangled;
10982   if (mangled != NULL)
10983     {
10984
10985       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
10986         {
10987           /* Do nothing (do not demangle the symbol name).  */
10988         }
10989       else if (cu->language == language_go)
10990         {
10991           /* This is a lie, but we already lie to the caller new_symbol.
10992              new_symbol assumes we return the mangled name.
10993              This just undoes that lie until things are cleaned up.  */
10994         }
10995       else
10996         {
10997           /* Use DMGL_RET_DROP for C++ template functions to suppress
10998              their return type.  It is easier for GDB users to search
10999              for such functions as `name(params)' than `long name(params)'.
11000              In such case the minimal symbol names do not match the full
11001              symbol names but for template functions there is never a need
11002              to look up their definition from their declaration so
11003              the only disadvantage remains the minimal symbol variant
11004              `long name(params)' does not have the proper inferior type.  */
11005           demangled.reset (gdb_demangle (mangled,
11006                                          (DMGL_PARAMS | DMGL_ANSI
11007                                           | DMGL_RET_DROP)));
11008         }
11009       if (demangled)
11010         canon = demangled.get ();
11011       else
11012         {
11013           canon = mangled;
11014           need_copy = 0;
11015         }
11016     }
11017
11018   if (canon == NULL || check_physname)
11019     {
11020       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11021
11022       if (canon != NULL && strcmp (physname, canon) != 0)
11023         {
11024           /* It may not mean a bug in GDB.  The compiler could also
11025              compute DW_AT_linkage_name incorrectly.  But in such case
11026              GDB would need to be bug-to-bug compatible.  */
11027
11028           complaint (&symfile_complaints,
11029                      _("Computed physname <%s> does not match demangled <%s> "
11030                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11031                      physname, canon, mangled, sect_offset_str (die->sect_off),
11032                      objfile_name (objfile));
11033
11034           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11035              is available here - over computed PHYSNAME.  It is safer
11036              against both buggy GDB and buggy compilers.  */
11037
11038           retval = canon;
11039         }
11040       else
11041         {
11042           retval = physname;
11043           need_copy = 0;
11044         }
11045     }
11046   else
11047     retval = canon;
11048
11049   if (need_copy)
11050     retval = ((const char *)
11051               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11052                              retval, strlen (retval)));
11053
11054   return retval;
11055 }
11056
11057 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11058    a new symbol for it.
11059
11060    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11061
11062 static int
11063 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11064 {
11065   struct attribute *attr;
11066
11067   /* If the die does not have a name, this is not a namespace
11068      alias.  */
11069   attr = dwarf2_attr (die, DW_AT_name, cu);
11070   if (attr != NULL)
11071     {
11072       int num;
11073       struct die_info *d = die;
11074       struct dwarf2_cu *imported_cu = cu;
11075
11076       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11077          keep inspecting DIEs until we hit the underlying import.  */
11078 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11079       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11080         {
11081           attr = dwarf2_attr (d, DW_AT_import, cu);
11082           if (attr == NULL)
11083             break;
11084
11085           d = follow_die_ref (d, attr, &imported_cu);
11086           if (d->tag != DW_TAG_imported_declaration)
11087             break;
11088         }
11089
11090       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11091         {
11092           complaint (&symfile_complaints,
11093                      _("DIE at %s has too many recursively imported "
11094                        "declarations"), sect_offset_str (d->sect_off));
11095           return 0;
11096         }
11097
11098       if (attr != NULL)
11099         {
11100           struct type *type;
11101           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11102
11103           type = get_die_type_at_offset (sect_off, cu->per_cu);
11104           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11105             {
11106               /* This declaration is a global namespace alias.  Add
11107                  a symbol for it whose type is the aliased namespace.  */
11108               new_symbol (die, type, cu);
11109               return 1;
11110             }
11111         }
11112     }
11113
11114   return 0;
11115 }
11116
11117 /* Return the using directives repository (global or local?) to use in the
11118    current context for LANGUAGE.
11119
11120    For Ada, imported declarations can materialize renamings, which *may* be
11121    global.  However it is impossible (for now?) in DWARF to distinguish
11122    "external" imported declarations and "static" ones.  As all imported
11123    declarations seem to be static in all other languages, make them all CU-wide
11124    global only in Ada.  */
11125
11126 static struct using_direct **
11127 using_directives (enum language language)
11128 {
11129   if (language == language_ada && context_stack_depth == 0)
11130     return &global_using_directives;
11131   else
11132     return &local_using_directives;
11133 }
11134
11135 /* Read the import statement specified by the given die and record it.  */
11136
11137 static void
11138 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11139 {
11140   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11141   struct attribute *import_attr;
11142   struct die_info *imported_die, *child_die;
11143   struct dwarf2_cu *imported_cu;
11144   const char *imported_name;
11145   const char *imported_name_prefix;
11146   const char *canonical_name;
11147   const char *import_alias;
11148   const char *imported_declaration = NULL;
11149   const char *import_prefix;
11150   std::vector<const char *> excludes;
11151
11152   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11153   if (import_attr == NULL)
11154     {
11155       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11156                  dwarf_tag_name (die->tag));
11157       return;
11158     }
11159
11160   imported_cu = cu;
11161   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11162   imported_name = dwarf2_name (imported_die, imported_cu);
11163   if (imported_name == NULL)
11164     {
11165       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11166
11167         The import in the following code:
11168         namespace A
11169           {
11170             typedef int B;
11171           }
11172
11173         int main ()
11174           {
11175             using A::B;
11176             B b;
11177             return b;
11178           }
11179
11180         ...
11181          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11182             <52>   DW_AT_decl_file   : 1
11183             <53>   DW_AT_decl_line   : 6
11184             <54>   DW_AT_import      : <0x75>
11185          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11186             <59>   DW_AT_name        : B
11187             <5b>   DW_AT_decl_file   : 1
11188             <5c>   DW_AT_decl_line   : 2
11189             <5d>   DW_AT_type        : <0x6e>
11190         ...
11191          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11192             <76>   DW_AT_byte_size   : 4
11193             <77>   DW_AT_encoding    : 5        (signed)
11194
11195         imports the wrong die ( 0x75 instead of 0x58 ).
11196         This case will be ignored until the gcc bug is fixed.  */
11197       return;
11198     }
11199
11200   /* Figure out the local name after import.  */
11201   import_alias = dwarf2_name (die, cu);
11202
11203   /* Figure out where the statement is being imported to.  */
11204   import_prefix = determine_prefix (die, cu);
11205
11206   /* Figure out what the scope of the imported die is and prepend it
11207      to the name of the imported die.  */
11208   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11209
11210   if (imported_die->tag != DW_TAG_namespace
11211       && imported_die->tag != DW_TAG_module)
11212     {
11213       imported_declaration = imported_name;
11214       canonical_name = imported_name_prefix;
11215     }
11216   else if (strlen (imported_name_prefix) > 0)
11217     canonical_name = obconcat (&objfile->objfile_obstack,
11218                                imported_name_prefix,
11219                                (cu->language == language_d ? "." : "::"),
11220                                imported_name, (char *) NULL);
11221   else
11222     canonical_name = imported_name;
11223
11224   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11225     for (child_die = die->child; child_die && child_die->tag;
11226          child_die = sibling_die (child_die))
11227       {
11228         /* DWARF-4: A Fortran use statement with a “rename list” may be
11229            represented by an imported module entry with an import attribute
11230            referring to the module and owned entries corresponding to those
11231            entities that are renamed as part of being imported.  */
11232
11233         if (child_die->tag != DW_TAG_imported_declaration)
11234           {
11235             complaint (&symfile_complaints,
11236                        _("child DW_TAG_imported_declaration expected "
11237                          "- DIE at %s [in module %s]"),
11238                        sect_offset_str (child_die->sect_off),
11239                        objfile_name (objfile));
11240             continue;
11241           }
11242
11243         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11244         if (import_attr == NULL)
11245           {
11246             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11247                        dwarf_tag_name (child_die->tag));
11248             continue;
11249           }
11250
11251         imported_cu = cu;
11252         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11253                                               &imported_cu);
11254         imported_name = dwarf2_name (imported_die, imported_cu);
11255         if (imported_name == NULL)
11256           {
11257             complaint (&symfile_complaints,
11258                        _("child DW_TAG_imported_declaration has unknown "
11259                          "imported name - DIE at %s [in module %s]"),
11260                        sect_offset_str (child_die->sect_off),
11261                        objfile_name (objfile));
11262             continue;
11263           }
11264
11265         excludes.push_back (imported_name);
11266
11267         process_die (child_die, cu);
11268       }
11269
11270   add_using_directive (using_directives (cu->language),
11271                        import_prefix,
11272                        canonical_name,
11273                        import_alias,
11274                        imported_declaration,
11275                        excludes,
11276                        0,
11277                        &objfile->objfile_obstack);
11278 }
11279
11280 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11281    types, but gives them a size of zero.  Starting with version 14,
11282    ICC is compatible with GCC.  */
11283
11284 static int
11285 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11286 {
11287   if (!cu->checked_producer)
11288     check_producer (cu);
11289
11290   return cu->producer_is_icc_lt_14;
11291 }
11292
11293 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11294    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11295    this, it was first present in GCC release 4.3.0.  */
11296
11297 static int
11298 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11299 {
11300   if (!cu->checked_producer)
11301     check_producer (cu);
11302
11303   return cu->producer_is_gcc_lt_4_3;
11304 }
11305
11306 static file_and_directory
11307 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11308 {
11309   file_and_directory res;
11310
11311   /* Find the filename.  Do not use dwarf2_name here, since the filename
11312      is not a source language identifier.  */
11313   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11314   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11315
11316   if (res.comp_dir == NULL
11317       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11318       && IS_ABSOLUTE_PATH (res.name))
11319     {
11320       res.comp_dir_storage = ldirname (res.name);
11321       if (!res.comp_dir_storage.empty ())
11322         res.comp_dir = res.comp_dir_storage.c_str ();
11323     }
11324   if (res.comp_dir != NULL)
11325     {
11326       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11327          directory, get rid of it.  */
11328       const char *cp = strchr (res.comp_dir, ':');
11329
11330       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11331         res.comp_dir = cp + 1;
11332     }
11333
11334   if (res.name == NULL)
11335     res.name = "<unknown>";
11336
11337   return res;
11338 }
11339
11340 /* Handle DW_AT_stmt_list for a compilation unit.
11341    DIE is the DW_TAG_compile_unit die for CU.
11342    COMP_DIR is the compilation directory.  LOWPC is passed to
11343    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11344
11345 static void
11346 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11347                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11348 {
11349   struct dwarf2_per_objfile *dwarf2_per_objfile
11350     = cu->per_cu->dwarf2_per_objfile;
11351   struct objfile *objfile = dwarf2_per_objfile->objfile;
11352   struct attribute *attr;
11353   struct line_header line_header_local;
11354   hashval_t line_header_local_hash;
11355   void **slot;
11356   int decode_mapping;
11357
11358   gdb_assert (! cu->per_cu->is_debug_types);
11359
11360   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11361   if (attr == NULL)
11362     return;
11363
11364   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11365
11366   /* The line header hash table is only created if needed (it exists to
11367      prevent redundant reading of the line table for partial_units).
11368      If we're given a partial_unit, we'll need it.  If we're given a
11369      compile_unit, then use the line header hash table if it's already
11370      created, but don't create one just yet.  */
11371
11372   if (dwarf2_per_objfile->line_header_hash == NULL
11373       && die->tag == DW_TAG_partial_unit)
11374     {
11375       dwarf2_per_objfile->line_header_hash
11376         = htab_create_alloc_ex (127, line_header_hash_voidp,
11377                                 line_header_eq_voidp,
11378                                 free_line_header_voidp,
11379                                 &objfile->objfile_obstack,
11380                                 hashtab_obstack_allocate,
11381                                 dummy_obstack_deallocate);
11382     }
11383
11384   line_header_local.sect_off = line_offset;
11385   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11386   line_header_local_hash = line_header_hash (&line_header_local);
11387   if (dwarf2_per_objfile->line_header_hash != NULL)
11388     {
11389       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11390                                        &line_header_local,
11391                                        line_header_local_hash, NO_INSERT);
11392
11393       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11394          is not present in *SLOT (since if there is something in *SLOT then
11395          it will be for a partial_unit).  */
11396       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11397         {
11398           gdb_assert (*slot != NULL);
11399           cu->line_header = (struct line_header *) *slot;
11400           return;
11401         }
11402     }
11403
11404   /* dwarf_decode_line_header does not yet provide sufficient information.
11405      We always have to call also dwarf_decode_lines for it.  */
11406   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11407   if (lh == NULL)
11408     return;
11409
11410   cu->line_header = lh.release ();
11411   cu->line_header_die_owner = die;
11412
11413   if (dwarf2_per_objfile->line_header_hash == NULL)
11414     slot = NULL;
11415   else
11416     {
11417       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11418                                        &line_header_local,
11419                                        line_header_local_hash, INSERT);
11420       gdb_assert (slot != NULL);
11421     }
11422   if (slot != NULL && *slot == NULL)
11423     {
11424       /* This newly decoded line number information unit will be owned
11425          by line_header_hash hash table.  */
11426       *slot = cu->line_header;
11427       cu->line_header_die_owner = NULL;
11428     }
11429   else
11430     {
11431       /* We cannot free any current entry in (*slot) as that struct line_header
11432          may be already used by multiple CUs.  Create only temporary decoded
11433          line_header for this CU - it may happen at most once for each line
11434          number information unit.  And if we're not using line_header_hash
11435          then this is what we want as well.  */
11436       gdb_assert (die->tag != DW_TAG_partial_unit);
11437     }
11438   decode_mapping = (die->tag != DW_TAG_partial_unit);
11439   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11440                       decode_mapping);
11441
11442 }
11443
11444 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11445
11446 static void
11447 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11448 {
11449   struct dwarf2_per_objfile *dwarf2_per_objfile
11450     = cu->per_cu->dwarf2_per_objfile;
11451   struct objfile *objfile = dwarf2_per_objfile->objfile;
11452   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11453   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11454   CORE_ADDR highpc = ((CORE_ADDR) 0);
11455   struct attribute *attr;
11456   struct die_info *child_die;
11457   CORE_ADDR baseaddr;
11458
11459   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11460
11461   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11462
11463   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11464      from finish_block.  */
11465   if (lowpc == ((CORE_ADDR) -1))
11466     lowpc = highpc;
11467   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11468
11469   file_and_directory fnd = find_file_and_directory (die, cu);
11470
11471   prepare_one_comp_unit (cu, die, cu->language);
11472
11473   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11474      standardised yet.  As a workaround for the language detection we fall
11475      back to the DW_AT_producer string.  */
11476   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11477     cu->language = language_opencl;
11478
11479   /* Similar hack for Go.  */
11480   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11481     set_cu_language (DW_LANG_Go, cu);
11482
11483   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11484
11485   /* Decode line number information if present.  We do this before
11486      processing child DIEs, so that the line header table is available
11487      for DW_AT_decl_file.  */
11488   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11489
11490   /* Process all dies in compilation unit.  */
11491   if (die->child != NULL)
11492     {
11493       child_die = die->child;
11494       while (child_die && child_die->tag)
11495         {
11496           process_die (child_die, cu);
11497           child_die = sibling_die (child_die);
11498         }
11499     }
11500
11501   /* Decode macro information, if present.  Dwarf 2 macro information
11502      refers to information in the line number info statement program
11503      header, so we can only read it if we've read the header
11504      successfully.  */
11505   attr = dwarf2_attr (die, DW_AT_macros, cu);
11506   if (attr == NULL)
11507     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11508   if (attr && cu->line_header)
11509     {
11510       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11511         complaint (&symfile_complaints,
11512                    _("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11513
11514       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11515     }
11516   else
11517     {
11518       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11519       if (attr && cu->line_header)
11520         {
11521           unsigned int macro_offset = DW_UNSND (attr);
11522
11523           dwarf_decode_macros (cu, macro_offset, 0);
11524         }
11525     }
11526 }
11527
11528 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11529    Create the set of symtabs used by this TU, or if this TU is sharing
11530    symtabs with another TU and the symtabs have already been created
11531    then restore those symtabs in the line header.
11532    We don't need the pc/line-number mapping for type units.  */
11533
11534 static void
11535 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11536 {
11537   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11538   struct type_unit_group *tu_group;
11539   int first_time;
11540   struct attribute *attr;
11541   unsigned int i;
11542   struct signatured_type *sig_type;
11543
11544   gdb_assert (per_cu->is_debug_types);
11545   sig_type = (struct signatured_type *) per_cu;
11546
11547   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11548
11549   /* If we're using .gdb_index (includes -readnow) then
11550      per_cu->type_unit_group may not have been set up yet.  */
11551   if (sig_type->type_unit_group == NULL)
11552     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11553   tu_group = sig_type->type_unit_group;
11554
11555   /* If we've already processed this stmt_list there's no real need to
11556      do it again, we could fake it and just recreate the part we need
11557      (file name,index -> symtab mapping).  If data shows this optimization
11558      is useful we can do it then.  */
11559   first_time = tu_group->compunit_symtab == NULL;
11560
11561   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11562      debug info.  */
11563   line_header_up lh;
11564   if (attr != NULL)
11565     {
11566       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11567       lh = dwarf_decode_line_header (line_offset, cu);
11568     }
11569   if (lh == NULL)
11570     {
11571       if (first_time)
11572         dwarf2_start_symtab (cu, "", NULL, 0);
11573       else
11574         {
11575           gdb_assert (tu_group->symtabs == NULL);
11576           restart_symtab (tu_group->compunit_symtab, "", 0);
11577         }
11578       return;
11579     }
11580
11581   cu->line_header = lh.release ();
11582   cu->line_header_die_owner = die;
11583
11584   if (first_time)
11585     {
11586       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11587
11588       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11589          still initializing it, and our caller (a few levels up)
11590          process_full_type_unit still needs to know if this is the first
11591          time.  */
11592
11593       tu_group->num_symtabs = cu->line_header->file_names.size ();
11594       tu_group->symtabs = XNEWVEC (struct symtab *,
11595                                    cu->line_header->file_names.size ());
11596
11597       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11598         {
11599           file_entry &fe = cu->line_header->file_names[i];
11600
11601           dwarf2_start_subfile (fe.name, fe.include_dir (cu->line_header));
11602
11603           if (current_subfile->symtab == NULL)
11604             {
11605               /* NOTE: start_subfile will recognize when it's been
11606                  passed a file it has already seen.  So we can't
11607                  assume there's a simple mapping from
11608                  cu->line_header->file_names to subfiles, plus
11609                  cu->line_header->file_names may contain dups.  */
11610               current_subfile->symtab
11611                 = allocate_symtab (cust, current_subfile->name);
11612             }
11613
11614           fe.symtab = current_subfile->symtab;
11615           tu_group->symtabs[i] = fe.symtab;
11616         }
11617     }
11618   else
11619     {
11620       restart_symtab (tu_group->compunit_symtab, "", 0);
11621
11622       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11623         {
11624           file_entry &fe = cu->line_header->file_names[i];
11625
11626           fe.symtab = tu_group->symtabs[i];
11627         }
11628     }
11629
11630   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11631      so they don't have a "real" (so to speak) symtab anyway.
11632      There is later code that will assign the main symtab to all symbols
11633      that don't have one.  We need to handle the case of a symbol with a
11634      missing symtab (DW_AT_decl_file) anyway.  */
11635 }
11636
11637 /* Process DW_TAG_type_unit.
11638    For TUs we want to skip the first top level sibling if it's not the
11639    actual type being defined by this TU.  In this case the first top
11640    level sibling is there to provide context only.  */
11641
11642 static void
11643 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11644 {
11645   struct die_info *child_die;
11646
11647   prepare_one_comp_unit (cu, die, language_minimal);
11648
11649   /* Initialize (or reinitialize) the machinery for building symtabs.
11650      We do this before processing child DIEs, so that the line header table
11651      is available for DW_AT_decl_file.  */
11652   setup_type_unit_groups (die, cu);
11653
11654   if (die->child != NULL)
11655     {
11656       child_die = die->child;
11657       while (child_die && child_die->tag)
11658         {
11659           process_die (child_die, cu);
11660           child_die = sibling_die (child_die);
11661         }
11662     }
11663 }
11664 \f
11665 /* DWO/DWP files.
11666
11667    http://gcc.gnu.org/wiki/DebugFission
11668    http://gcc.gnu.org/wiki/DebugFissionDWP
11669
11670    To simplify handling of both DWO files ("object" files with the DWARF info)
11671    and DWP files (a file with the DWOs packaged up into one file), we treat
11672    DWP files as having a collection of virtual DWO files.  */
11673
11674 static hashval_t
11675 hash_dwo_file (const void *item)
11676 {
11677   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11678   hashval_t hash;
11679
11680   hash = htab_hash_string (dwo_file->dwo_name);
11681   if (dwo_file->comp_dir != NULL)
11682     hash += htab_hash_string (dwo_file->comp_dir);
11683   return hash;
11684 }
11685
11686 static int
11687 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11688 {
11689   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11690   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11691
11692   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11693     return 0;
11694   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11695     return lhs->comp_dir == rhs->comp_dir;
11696   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11697 }
11698
11699 /* Allocate a hash table for DWO files.  */
11700
11701 static htab_t
11702 allocate_dwo_file_hash_table (struct objfile *objfile)
11703 {
11704   return htab_create_alloc_ex (41,
11705                                hash_dwo_file,
11706                                eq_dwo_file,
11707                                NULL,
11708                                &objfile->objfile_obstack,
11709                                hashtab_obstack_allocate,
11710                                dummy_obstack_deallocate);
11711 }
11712
11713 /* Lookup DWO file DWO_NAME.  */
11714
11715 static void **
11716 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11717                       const char *dwo_name,
11718                       const char *comp_dir)
11719 {
11720   struct dwo_file find_entry;
11721   void **slot;
11722
11723   if (dwarf2_per_objfile->dwo_files == NULL)
11724     dwarf2_per_objfile->dwo_files
11725       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11726
11727   memset (&find_entry, 0, sizeof (find_entry));
11728   find_entry.dwo_name = dwo_name;
11729   find_entry.comp_dir = comp_dir;
11730   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11731
11732   return slot;
11733 }
11734
11735 static hashval_t
11736 hash_dwo_unit (const void *item)
11737 {
11738   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11739
11740   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11741   return dwo_unit->signature;
11742 }
11743
11744 static int
11745 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11746 {
11747   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11748   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11749
11750   /* The signature is assumed to be unique within the DWO file.
11751      So while object file CU dwo_id's always have the value zero,
11752      that's OK, assuming each object file DWO file has only one CU,
11753      and that's the rule for now.  */
11754   return lhs->signature == rhs->signature;
11755 }
11756
11757 /* Allocate a hash table for DWO CUs,TUs.
11758    There is one of these tables for each of CUs,TUs for each DWO file.  */
11759
11760 static htab_t
11761 allocate_dwo_unit_table (struct objfile *objfile)
11762 {
11763   /* Start out with a pretty small number.
11764      Generally DWO files contain only one CU and maybe some TUs.  */
11765   return htab_create_alloc_ex (3,
11766                                hash_dwo_unit,
11767                                eq_dwo_unit,
11768                                NULL,
11769                                &objfile->objfile_obstack,
11770                                hashtab_obstack_allocate,
11771                                dummy_obstack_deallocate);
11772 }
11773
11774 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11775
11776 struct create_dwo_cu_data
11777 {
11778   struct dwo_file *dwo_file;
11779   struct dwo_unit dwo_unit;
11780 };
11781
11782 /* die_reader_func for create_dwo_cu.  */
11783
11784 static void
11785 create_dwo_cu_reader (const struct die_reader_specs *reader,
11786                       const gdb_byte *info_ptr,
11787                       struct die_info *comp_unit_die,
11788                       int has_children,
11789                       void *datap)
11790 {
11791   struct dwarf2_cu *cu = reader->cu;
11792   sect_offset sect_off = cu->per_cu->sect_off;
11793   struct dwarf2_section_info *section = cu->per_cu->section;
11794   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11795   struct dwo_file *dwo_file = data->dwo_file;
11796   struct dwo_unit *dwo_unit = &data->dwo_unit;
11797   struct attribute *attr;
11798
11799   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11800   if (attr == NULL)
11801     {
11802       complaint (&symfile_complaints,
11803                  _("Dwarf Error: debug entry at offset %s is missing"
11804                    " its dwo_id [in module %s]"),
11805                  sect_offset_str (sect_off), dwo_file->dwo_name);
11806       return;
11807     }
11808
11809   dwo_unit->dwo_file = dwo_file;
11810   dwo_unit->signature = DW_UNSND (attr);
11811   dwo_unit->section = section;
11812   dwo_unit->sect_off = sect_off;
11813   dwo_unit->length = cu->per_cu->length;
11814
11815   if (dwarf_read_debug)
11816     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11817                         sect_offset_str (sect_off),
11818                         hex_string (dwo_unit->signature));
11819 }
11820
11821 /* Create the dwo_units for the CUs in a DWO_FILE.
11822    Note: This function processes DWO files only, not DWP files.  */
11823
11824 static void
11825 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11826                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11827                        htab_t &cus_htab)
11828 {
11829   struct objfile *objfile = dwarf2_per_objfile->objfile;
11830   const gdb_byte *info_ptr, *end_ptr;
11831
11832   dwarf2_read_section (objfile, &section);
11833   info_ptr = section.buffer;
11834
11835   if (info_ptr == NULL)
11836     return;
11837
11838   if (dwarf_read_debug)
11839     {
11840       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11841                           get_section_name (&section),
11842                           get_section_file_name (&section));
11843     }
11844
11845   end_ptr = info_ptr + section.size;
11846   while (info_ptr < end_ptr)
11847     {
11848       struct dwarf2_per_cu_data per_cu;
11849       struct create_dwo_cu_data create_dwo_cu_data;
11850       struct dwo_unit *dwo_unit;
11851       void **slot;
11852       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11853
11854       memset (&create_dwo_cu_data.dwo_unit, 0,
11855               sizeof (create_dwo_cu_data.dwo_unit));
11856       memset (&per_cu, 0, sizeof (per_cu));
11857       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11858       per_cu.is_debug_types = 0;
11859       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11860       per_cu.section = &section;
11861       create_dwo_cu_data.dwo_file = &dwo_file;
11862
11863       init_cutu_and_read_dies_no_follow (
11864           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11865       info_ptr += per_cu.length;
11866
11867       // If the unit could not be parsed, skip it.
11868       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11869         continue;
11870
11871       if (cus_htab == NULL)
11872         cus_htab = allocate_dwo_unit_table (objfile);
11873
11874       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11875       *dwo_unit = create_dwo_cu_data.dwo_unit;
11876       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11877       gdb_assert (slot != NULL);
11878       if (*slot != NULL)
11879         {
11880           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11881           sect_offset dup_sect_off = dup_cu->sect_off;
11882
11883           complaint (&symfile_complaints,
11884                      _("debug cu entry at offset %s is duplicate to"
11885                        " the entry at offset %s, signature %s"),
11886                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11887                      hex_string (dwo_unit->signature));
11888         }
11889       *slot = (void *)dwo_unit;
11890     }
11891 }
11892
11893 /* DWP file .debug_{cu,tu}_index section format:
11894    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11895
11896    DWP Version 1:
11897
11898    Both index sections have the same format, and serve to map a 64-bit
11899    signature to a set of section numbers.  Each section begins with a header,
11900    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11901    indexes, and a pool of 32-bit section numbers.  The index sections will be
11902    aligned at 8-byte boundaries in the file.
11903
11904    The index section header consists of:
11905
11906     V, 32 bit version number
11907     -, 32 bits unused
11908     N, 32 bit number of compilation units or type units in the index
11909     M, 32 bit number of slots in the hash table
11910
11911    Numbers are recorded using the byte order of the application binary.
11912
11913    The hash table begins at offset 16 in the section, and consists of an array
11914    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
11915    order of the application binary).  Unused slots in the hash table are 0.
11916    (We rely on the extreme unlikeliness of a signature being exactly 0.)
11917
11918    The parallel table begins immediately after the hash table
11919    (at offset 16 + 8 * M from the beginning of the section), and consists of an
11920    array of 32-bit indexes (using the byte order of the application binary),
11921    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
11922    table contains a 32-bit index into the pool of section numbers.  For unused
11923    hash table slots, the corresponding entry in the parallel table will be 0.
11924
11925    The pool of section numbers begins immediately following the hash table
11926    (at offset 16 + 12 * M from the beginning of the section).  The pool of
11927    section numbers consists of an array of 32-bit words (using the byte order
11928    of the application binary).  Each item in the array is indexed starting
11929    from 0.  The hash table entry provides the index of the first section
11930    number in the set.  Additional section numbers in the set follow, and the
11931    set is terminated by a 0 entry (section number 0 is not used in ELF).
11932
11933    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
11934    section must be the first entry in the set, and the .debug_abbrev.dwo must
11935    be the second entry. Other members of the set may follow in any order.
11936
11937    ---
11938
11939    DWP Version 2:
11940
11941    DWP Version 2 combines all the .debug_info, etc. sections into one,
11942    and the entries in the index tables are now offsets into these sections.
11943    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
11944    section.
11945
11946    Index Section Contents:
11947     Header
11948     Hash Table of Signatures   dwp_hash_table.hash_table
11949     Parallel Table of Indices  dwp_hash_table.unit_table
11950     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
11951     Table of Section Sizes     dwp_hash_table.v2.sizes
11952
11953    The index section header consists of:
11954
11955     V, 32 bit version number
11956     L, 32 bit number of columns in the table of section offsets
11957     N, 32 bit number of compilation units or type units in the index
11958     M, 32 bit number of slots in the hash table
11959
11960    Numbers are recorded using the byte order of the application binary.
11961
11962    The hash table has the same format as version 1.
11963    The parallel table of indices has the same format as version 1,
11964    except that the entries are origin-1 indices into the table of sections
11965    offsets and the table of section sizes.
11966
11967    The table of offsets begins immediately following the parallel table
11968    (at offset 16 + 12 * M from the beginning of the section).  The table is
11969    a two-dimensional array of 32-bit words (using the byte order of the
11970    application binary), with L columns and N+1 rows, in row-major order.
11971    Each row in the array is indexed starting from 0.  The first row provides
11972    a key to the remaining rows: each column in this row provides an identifier
11973    for a debug section, and the offsets in the same column of subsequent rows
11974    refer to that section.  The section identifiers are:
11975
11976     DW_SECT_INFO         1  .debug_info.dwo
11977     DW_SECT_TYPES        2  .debug_types.dwo
11978     DW_SECT_ABBREV       3  .debug_abbrev.dwo
11979     DW_SECT_LINE         4  .debug_line.dwo
11980     DW_SECT_LOC          5  .debug_loc.dwo
11981     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
11982     DW_SECT_MACINFO      7  .debug_macinfo.dwo
11983     DW_SECT_MACRO        8  .debug_macro.dwo
11984
11985    The offsets provided by the CU and TU index sections are the base offsets
11986    for the contributions made by each CU or TU to the corresponding section
11987    in the package file.  Each CU and TU header contains an abbrev_offset
11988    field, used to find the abbreviations table for that CU or TU within the
11989    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
11990    be interpreted as relative to the base offset given in the index section.
11991    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
11992    should be interpreted as relative to the base offset for .debug_line.dwo,
11993    and offsets into other debug sections obtained from DWARF attributes should
11994    also be interpreted as relative to the corresponding base offset.
11995
11996    The table of sizes begins immediately following the table of offsets.
11997    Like the table of offsets, it is a two-dimensional array of 32-bit words,
11998    with L columns and N rows, in row-major order.  Each row in the array is
11999    indexed starting from 1 (row 0 is shared by the two tables).
12000
12001    ---
12002
12003    Hash table lookup is handled the same in version 1 and 2:
12004
12005    We assume that N and M will not exceed 2^32 - 1.
12006    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12007
12008    Given a 64-bit compilation unit signature or a type signature S, an entry
12009    in the hash table is located as follows:
12010
12011    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12012       the low-order k bits all set to 1.
12013
12014    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12015
12016    3) If the hash table entry at index H matches the signature, use that
12017       entry.  If the hash table entry at index H is unused (all zeroes),
12018       terminate the search: the signature is not present in the table.
12019
12020    4) Let H = (H + H') modulo M. Repeat at Step 3.
12021
12022    Because M > N and H' and M are relatively prime, the search is guaranteed
12023    to stop at an unused slot or find the match.  */
12024
12025 /* Create a hash table to map DWO IDs to their CU/TU entry in
12026    .debug_{info,types}.dwo in DWP_FILE.
12027    Returns NULL if there isn't one.
12028    Note: This function processes DWP files only, not DWO files.  */
12029
12030 static struct dwp_hash_table *
12031 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12032                        struct dwp_file *dwp_file, int is_debug_types)
12033 {
12034   struct objfile *objfile = dwarf2_per_objfile->objfile;
12035   bfd *dbfd = dwp_file->dbfd;
12036   const gdb_byte *index_ptr, *index_end;
12037   struct dwarf2_section_info *index;
12038   uint32_t version, nr_columns, nr_units, nr_slots;
12039   struct dwp_hash_table *htab;
12040
12041   if (is_debug_types)
12042     index = &dwp_file->sections.tu_index;
12043   else
12044     index = &dwp_file->sections.cu_index;
12045
12046   if (dwarf2_section_empty_p (index))
12047     return NULL;
12048   dwarf2_read_section (objfile, index);
12049
12050   index_ptr = index->buffer;
12051   index_end = index_ptr + index->size;
12052
12053   version = read_4_bytes (dbfd, index_ptr);
12054   index_ptr += 4;
12055   if (version == 2)
12056     nr_columns = read_4_bytes (dbfd, index_ptr);
12057   else
12058     nr_columns = 0;
12059   index_ptr += 4;
12060   nr_units = read_4_bytes (dbfd, index_ptr);
12061   index_ptr += 4;
12062   nr_slots = read_4_bytes (dbfd, index_ptr);
12063   index_ptr += 4;
12064
12065   if (version != 1 && version != 2)
12066     {
12067       error (_("Dwarf Error: unsupported DWP file version (%s)"
12068                " [in module %s]"),
12069              pulongest (version), dwp_file->name);
12070     }
12071   if (nr_slots != (nr_slots & -nr_slots))
12072     {
12073       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12074                " is not power of 2 [in module %s]"),
12075              pulongest (nr_slots), dwp_file->name);
12076     }
12077
12078   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12079   htab->version = version;
12080   htab->nr_columns = nr_columns;
12081   htab->nr_units = nr_units;
12082   htab->nr_slots = nr_slots;
12083   htab->hash_table = index_ptr;
12084   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12085
12086   /* Exit early if the table is empty.  */
12087   if (nr_slots == 0 || nr_units == 0
12088       || (version == 2 && nr_columns == 0))
12089     {
12090       /* All must be zero.  */
12091       if (nr_slots != 0 || nr_units != 0
12092           || (version == 2 && nr_columns != 0))
12093         {
12094           complaint (&symfile_complaints,
12095                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
12096                        " all zero [in modules %s]"),
12097                      dwp_file->name);
12098         }
12099       return htab;
12100     }
12101
12102   if (version == 1)
12103     {
12104       htab->section_pool.v1.indices =
12105         htab->unit_table + sizeof (uint32_t) * nr_slots;
12106       /* It's harder to decide whether the section is too small in v1.
12107          V1 is deprecated anyway so we punt.  */
12108     }
12109   else
12110     {
12111       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12112       int *ids = htab->section_pool.v2.section_ids;
12113       /* Reverse map for error checking.  */
12114       int ids_seen[DW_SECT_MAX + 1];
12115       int i;
12116
12117       if (nr_columns < 2)
12118         {
12119           error (_("Dwarf Error: bad DWP hash table, too few columns"
12120                    " in section table [in module %s]"),
12121                  dwp_file->name);
12122         }
12123       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12124         {
12125           error (_("Dwarf Error: bad DWP hash table, too many columns"
12126                    " in section table [in module %s]"),
12127                  dwp_file->name);
12128         }
12129       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12130       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12131       for (i = 0; i < nr_columns; ++i)
12132         {
12133           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12134
12135           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12136             {
12137               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12138                        " in section table [in module %s]"),
12139                      id, dwp_file->name);
12140             }
12141           if (ids_seen[id] != -1)
12142             {
12143               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12144                        " id %d in section table [in module %s]"),
12145                      id, dwp_file->name);
12146             }
12147           ids_seen[id] = i;
12148           ids[i] = id;
12149         }
12150       /* Must have exactly one info or types section.  */
12151       if (((ids_seen[DW_SECT_INFO] != -1)
12152            + (ids_seen[DW_SECT_TYPES] != -1))
12153           != 1)
12154         {
12155           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12156                    " DWO info/types section [in module %s]"),
12157                  dwp_file->name);
12158         }
12159       /* Must have an abbrev section.  */
12160       if (ids_seen[DW_SECT_ABBREV] == -1)
12161         {
12162           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12163                    " section [in module %s]"),
12164                  dwp_file->name);
12165         }
12166       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12167       htab->section_pool.v2.sizes =
12168         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12169                                          * nr_units * nr_columns);
12170       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12171                                           * nr_units * nr_columns))
12172           > index_end)
12173         {
12174           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12175                    " [in module %s]"),
12176                  dwp_file->name);
12177         }
12178     }
12179
12180   return htab;
12181 }
12182
12183 /* Update SECTIONS with the data from SECTP.
12184
12185    This function is like the other "locate" section routines that are
12186    passed to bfd_map_over_sections, but in this context the sections to
12187    read comes from the DWP V1 hash table, not the full ELF section table.
12188
12189    The result is non-zero for success, or zero if an error was found.  */
12190
12191 static int
12192 locate_v1_virtual_dwo_sections (asection *sectp,
12193                                 struct virtual_v1_dwo_sections *sections)
12194 {
12195   const struct dwop_section_names *names = &dwop_section_names;
12196
12197   if (section_is_p (sectp->name, &names->abbrev_dwo))
12198     {
12199       /* There can be only one.  */
12200       if (sections->abbrev.s.section != NULL)
12201         return 0;
12202       sections->abbrev.s.section = sectp;
12203       sections->abbrev.size = bfd_get_section_size (sectp);
12204     }
12205   else if (section_is_p (sectp->name, &names->info_dwo)
12206            || section_is_p (sectp->name, &names->types_dwo))
12207     {
12208       /* There can be only one.  */
12209       if (sections->info_or_types.s.section != NULL)
12210         return 0;
12211       sections->info_or_types.s.section = sectp;
12212       sections->info_or_types.size = bfd_get_section_size (sectp);
12213     }
12214   else if (section_is_p (sectp->name, &names->line_dwo))
12215     {
12216       /* There can be only one.  */
12217       if (sections->line.s.section != NULL)
12218         return 0;
12219       sections->line.s.section = sectp;
12220       sections->line.size = bfd_get_section_size (sectp);
12221     }
12222   else if (section_is_p (sectp->name, &names->loc_dwo))
12223     {
12224       /* There can be only one.  */
12225       if (sections->loc.s.section != NULL)
12226         return 0;
12227       sections->loc.s.section = sectp;
12228       sections->loc.size = bfd_get_section_size (sectp);
12229     }
12230   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12231     {
12232       /* There can be only one.  */
12233       if (sections->macinfo.s.section != NULL)
12234         return 0;
12235       sections->macinfo.s.section = sectp;
12236       sections->macinfo.size = bfd_get_section_size (sectp);
12237     }
12238   else if (section_is_p (sectp->name, &names->macro_dwo))
12239     {
12240       /* There can be only one.  */
12241       if (sections->macro.s.section != NULL)
12242         return 0;
12243       sections->macro.s.section = sectp;
12244       sections->macro.size = bfd_get_section_size (sectp);
12245     }
12246   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12247     {
12248       /* There can be only one.  */
12249       if (sections->str_offsets.s.section != NULL)
12250         return 0;
12251       sections->str_offsets.s.section = sectp;
12252       sections->str_offsets.size = bfd_get_section_size (sectp);
12253     }
12254   else
12255     {
12256       /* No other kind of section is valid.  */
12257       return 0;
12258     }
12259
12260   return 1;
12261 }
12262
12263 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12264    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12265    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12266    This is for DWP version 1 files.  */
12267
12268 static struct dwo_unit *
12269 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12270                            struct dwp_file *dwp_file,
12271                            uint32_t unit_index,
12272                            const char *comp_dir,
12273                            ULONGEST signature, int is_debug_types)
12274 {
12275   struct objfile *objfile = dwarf2_per_objfile->objfile;
12276   const struct dwp_hash_table *dwp_htab =
12277     is_debug_types ? dwp_file->tus : dwp_file->cus;
12278   bfd *dbfd = dwp_file->dbfd;
12279   const char *kind = is_debug_types ? "TU" : "CU";
12280   struct dwo_file *dwo_file;
12281   struct dwo_unit *dwo_unit;
12282   struct virtual_v1_dwo_sections sections;
12283   void **dwo_file_slot;
12284   int i;
12285
12286   gdb_assert (dwp_file->version == 1);
12287
12288   if (dwarf_read_debug)
12289     {
12290       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12291                           kind,
12292                           pulongest (unit_index), hex_string (signature),
12293                           dwp_file->name);
12294     }
12295
12296   /* Fetch the sections of this DWO unit.
12297      Put a limit on the number of sections we look for so that bad data
12298      doesn't cause us to loop forever.  */
12299
12300 #define MAX_NR_V1_DWO_SECTIONS \
12301   (1 /* .debug_info or .debug_types */ \
12302    + 1 /* .debug_abbrev */ \
12303    + 1 /* .debug_line */ \
12304    + 1 /* .debug_loc */ \
12305    + 1 /* .debug_str_offsets */ \
12306    + 1 /* .debug_macro or .debug_macinfo */ \
12307    + 1 /* trailing zero */)
12308
12309   memset (&sections, 0, sizeof (sections));
12310
12311   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12312     {
12313       asection *sectp;
12314       uint32_t section_nr =
12315         read_4_bytes (dbfd,
12316                       dwp_htab->section_pool.v1.indices
12317                       + (unit_index + i) * sizeof (uint32_t));
12318
12319       if (section_nr == 0)
12320         break;
12321       if (section_nr >= dwp_file->num_sections)
12322         {
12323           error (_("Dwarf Error: bad DWP hash table, section number too large"
12324                    " [in module %s]"),
12325                  dwp_file->name);
12326         }
12327
12328       sectp = dwp_file->elf_sections[section_nr];
12329       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12330         {
12331           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12332                    " [in module %s]"),
12333                  dwp_file->name);
12334         }
12335     }
12336
12337   if (i < 2
12338       || dwarf2_section_empty_p (&sections.info_or_types)
12339       || dwarf2_section_empty_p (&sections.abbrev))
12340     {
12341       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12342                " [in module %s]"),
12343              dwp_file->name);
12344     }
12345   if (i == MAX_NR_V1_DWO_SECTIONS)
12346     {
12347       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12348                " [in module %s]"),
12349              dwp_file->name);
12350     }
12351
12352   /* It's easier for the rest of the code if we fake a struct dwo_file and
12353      have dwo_unit "live" in that.  At least for now.
12354
12355      The DWP file can be made up of a random collection of CUs and TUs.
12356      However, for each CU + set of TUs that came from the same original DWO
12357      file, we can combine them back into a virtual DWO file to save space
12358      (fewer struct dwo_file objects to allocate).  Remember that for really
12359      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12360
12361   std::string virtual_dwo_name =
12362     string_printf ("virtual-dwo/%d-%d-%d-%d",
12363                    get_section_id (&sections.abbrev),
12364                    get_section_id (&sections.line),
12365                    get_section_id (&sections.loc),
12366                    get_section_id (&sections.str_offsets));
12367   /* Can we use an existing virtual DWO file?  */
12368   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12369                                         virtual_dwo_name.c_str (),
12370                                         comp_dir);
12371   /* Create one if necessary.  */
12372   if (*dwo_file_slot == NULL)
12373     {
12374       if (dwarf_read_debug)
12375         {
12376           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12377                               virtual_dwo_name.c_str ());
12378         }
12379       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12380       dwo_file->dwo_name
12381         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12382                                         virtual_dwo_name.c_str (),
12383                                         virtual_dwo_name.size ());
12384       dwo_file->comp_dir = comp_dir;
12385       dwo_file->sections.abbrev = sections.abbrev;
12386       dwo_file->sections.line = sections.line;
12387       dwo_file->sections.loc = sections.loc;
12388       dwo_file->sections.macinfo = sections.macinfo;
12389       dwo_file->sections.macro = sections.macro;
12390       dwo_file->sections.str_offsets = sections.str_offsets;
12391       /* The "str" section is global to the entire DWP file.  */
12392       dwo_file->sections.str = dwp_file->sections.str;
12393       /* The info or types section is assigned below to dwo_unit,
12394          there's no need to record it in dwo_file.
12395          Also, we can't simply record type sections in dwo_file because
12396          we record a pointer into the vector in dwo_unit.  As we collect more
12397          types we'll grow the vector and eventually have to reallocate space
12398          for it, invalidating all copies of pointers into the previous
12399          contents.  */
12400       *dwo_file_slot = dwo_file;
12401     }
12402   else
12403     {
12404       if (dwarf_read_debug)
12405         {
12406           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12407                               virtual_dwo_name.c_str ());
12408         }
12409       dwo_file = (struct dwo_file *) *dwo_file_slot;
12410     }
12411
12412   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12413   dwo_unit->dwo_file = dwo_file;
12414   dwo_unit->signature = signature;
12415   dwo_unit->section =
12416     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12417   *dwo_unit->section = sections.info_or_types;
12418   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12419
12420   return dwo_unit;
12421 }
12422
12423 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12424    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12425    piece within that section used by a TU/CU, return a virtual section
12426    of just that piece.  */
12427
12428 static struct dwarf2_section_info
12429 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12430                        struct dwarf2_section_info *section,
12431                        bfd_size_type offset, bfd_size_type size)
12432 {
12433   struct dwarf2_section_info result;
12434   asection *sectp;
12435
12436   gdb_assert (section != NULL);
12437   gdb_assert (!section->is_virtual);
12438
12439   memset (&result, 0, sizeof (result));
12440   result.s.containing_section = section;
12441   result.is_virtual = 1;
12442
12443   if (size == 0)
12444     return result;
12445
12446   sectp = get_section_bfd_section (section);
12447
12448   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12449      bounds of the real section.  This is a pretty-rare event, so just
12450      flag an error (easier) instead of a warning and trying to cope.  */
12451   if (sectp == NULL
12452       || offset + size > bfd_get_section_size (sectp))
12453     {
12454       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12455                " in section %s [in module %s]"),
12456              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12457              objfile_name (dwarf2_per_objfile->objfile));
12458     }
12459
12460   result.virtual_offset = offset;
12461   result.size = size;
12462   return result;
12463 }
12464
12465 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12466    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12467    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12468    This is for DWP version 2 files.  */
12469
12470 static struct dwo_unit *
12471 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12472                            struct dwp_file *dwp_file,
12473                            uint32_t unit_index,
12474                            const char *comp_dir,
12475                            ULONGEST signature, int is_debug_types)
12476 {
12477   struct objfile *objfile = dwarf2_per_objfile->objfile;
12478   const struct dwp_hash_table *dwp_htab =
12479     is_debug_types ? dwp_file->tus : dwp_file->cus;
12480   bfd *dbfd = dwp_file->dbfd;
12481   const char *kind = is_debug_types ? "TU" : "CU";
12482   struct dwo_file *dwo_file;
12483   struct dwo_unit *dwo_unit;
12484   struct virtual_v2_dwo_sections sections;
12485   void **dwo_file_slot;
12486   int i;
12487
12488   gdb_assert (dwp_file->version == 2);
12489
12490   if (dwarf_read_debug)
12491     {
12492       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12493                           kind,
12494                           pulongest (unit_index), hex_string (signature),
12495                           dwp_file->name);
12496     }
12497
12498   /* Fetch the section offsets of this DWO unit.  */
12499
12500   memset (&sections, 0, sizeof (sections));
12501
12502   for (i = 0; i < dwp_htab->nr_columns; ++i)
12503     {
12504       uint32_t offset = read_4_bytes (dbfd,
12505                                       dwp_htab->section_pool.v2.offsets
12506                                       + (((unit_index - 1) * dwp_htab->nr_columns
12507                                           + i)
12508                                          * sizeof (uint32_t)));
12509       uint32_t size = read_4_bytes (dbfd,
12510                                     dwp_htab->section_pool.v2.sizes
12511                                     + (((unit_index - 1) * dwp_htab->nr_columns
12512                                         + i)
12513                                        * sizeof (uint32_t)));
12514
12515       switch (dwp_htab->section_pool.v2.section_ids[i])
12516         {
12517         case DW_SECT_INFO:
12518         case DW_SECT_TYPES:
12519           sections.info_or_types_offset = offset;
12520           sections.info_or_types_size = size;
12521           break;
12522         case DW_SECT_ABBREV:
12523           sections.abbrev_offset = offset;
12524           sections.abbrev_size = size;
12525           break;
12526         case DW_SECT_LINE:
12527           sections.line_offset = offset;
12528           sections.line_size = size;
12529           break;
12530         case DW_SECT_LOC:
12531           sections.loc_offset = offset;
12532           sections.loc_size = size;
12533           break;
12534         case DW_SECT_STR_OFFSETS:
12535           sections.str_offsets_offset = offset;
12536           sections.str_offsets_size = size;
12537           break;
12538         case DW_SECT_MACINFO:
12539           sections.macinfo_offset = offset;
12540           sections.macinfo_size = size;
12541           break;
12542         case DW_SECT_MACRO:
12543           sections.macro_offset = offset;
12544           sections.macro_size = size;
12545           break;
12546         }
12547     }
12548
12549   /* It's easier for the rest of the code if we fake a struct dwo_file and
12550      have dwo_unit "live" in that.  At least for now.
12551
12552      The DWP file can be made up of a random collection of CUs and TUs.
12553      However, for each CU + set of TUs that came from the same original DWO
12554      file, we can combine them back into a virtual DWO file to save space
12555      (fewer struct dwo_file objects to allocate).  Remember that for really
12556      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12557
12558   std::string virtual_dwo_name =
12559     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12560                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12561                    (long) (sections.line_size ? sections.line_offset : 0),
12562                    (long) (sections.loc_size ? sections.loc_offset : 0),
12563                    (long) (sections.str_offsets_size
12564                            ? sections.str_offsets_offset : 0));
12565   /* Can we use an existing virtual DWO file?  */
12566   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12567                                         virtual_dwo_name.c_str (),
12568                                         comp_dir);
12569   /* Create one if necessary.  */
12570   if (*dwo_file_slot == NULL)
12571     {
12572       if (dwarf_read_debug)
12573         {
12574           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12575                               virtual_dwo_name.c_str ());
12576         }
12577       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12578       dwo_file->dwo_name
12579         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12580                                         virtual_dwo_name.c_str (),
12581                                         virtual_dwo_name.size ());
12582       dwo_file->comp_dir = comp_dir;
12583       dwo_file->sections.abbrev =
12584         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12585                                sections.abbrev_offset, sections.abbrev_size);
12586       dwo_file->sections.line =
12587         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12588                                sections.line_offset, sections.line_size);
12589       dwo_file->sections.loc =
12590         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12591                                sections.loc_offset, sections.loc_size);
12592       dwo_file->sections.macinfo =
12593         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12594                                sections.macinfo_offset, sections.macinfo_size);
12595       dwo_file->sections.macro =
12596         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12597                                sections.macro_offset, sections.macro_size);
12598       dwo_file->sections.str_offsets =
12599         create_dwp_v2_section (dwarf2_per_objfile,
12600                                &dwp_file->sections.str_offsets,
12601                                sections.str_offsets_offset,
12602                                sections.str_offsets_size);
12603       /* The "str" section is global to the entire DWP file.  */
12604       dwo_file->sections.str = dwp_file->sections.str;
12605       /* The info or types section is assigned below to dwo_unit,
12606          there's no need to record it in dwo_file.
12607          Also, we can't simply record type sections in dwo_file because
12608          we record a pointer into the vector in dwo_unit.  As we collect more
12609          types we'll grow the vector and eventually have to reallocate space
12610          for it, invalidating all copies of pointers into the previous
12611          contents.  */
12612       *dwo_file_slot = dwo_file;
12613     }
12614   else
12615     {
12616       if (dwarf_read_debug)
12617         {
12618           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12619                               virtual_dwo_name.c_str ());
12620         }
12621       dwo_file = (struct dwo_file *) *dwo_file_slot;
12622     }
12623
12624   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12625   dwo_unit->dwo_file = dwo_file;
12626   dwo_unit->signature = signature;
12627   dwo_unit->section =
12628     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12629   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12630                                               is_debug_types
12631                                               ? &dwp_file->sections.types
12632                                               : &dwp_file->sections.info,
12633                                               sections.info_or_types_offset,
12634                                               sections.info_or_types_size);
12635   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12636
12637   return dwo_unit;
12638 }
12639
12640 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12641    Returns NULL if the signature isn't found.  */
12642
12643 static struct dwo_unit *
12644 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12645                         struct dwp_file *dwp_file, const char *comp_dir,
12646                         ULONGEST signature, int is_debug_types)
12647 {
12648   const struct dwp_hash_table *dwp_htab =
12649     is_debug_types ? dwp_file->tus : dwp_file->cus;
12650   bfd *dbfd = dwp_file->dbfd;
12651   uint32_t mask = dwp_htab->nr_slots - 1;
12652   uint32_t hash = signature & mask;
12653   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12654   unsigned int i;
12655   void **slot;
12656   struct dwo_unit find_dwo_cu;
12657
12658   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12659   find_dwo_cu.signature = signature;
12660   slot = htab_find_slot (is_debug_types
12661                          ? dwp_file->loaded_tus
12662                          : dwp_file->loaded_cus,
12663                          &find_dwo_cu, INSERT);
12664
12665   if (*slot != NULL)
12666     return (struct dwo_unit *) *slot;
12667
12668   /* Use a for loop so that we don't loop forever on bad debug info.  */
12669   for (i = 0; i < dwp_htab->nr_slots; ++i)
12670     {
12671       ULONGEST signature_in_table;
12672
12673       signature_in_table =
12674         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12675       if (signature_in_table == signature)
12676         {
12677           uint32_t unit_index =
12678             read_4_bytes (dbfd,
12679                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12680
12681           if (dwp_file->version == 1)
12682             {
12683               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12684                                                  dwp_file, unit_index,
12685                                                  comp_dir, signature,
12686                                                  is_debug_types);
12687             }
12688           else
12689             {
12690               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12691                                                  dwp_file, unit_index,
12692                                                  comp_dir, signature,
12693                                                  is_debug_types);
12694             }
12695           return (struct dwo_unit *) *slot;
12696         }
12697       if (signature_in_table == 0)
12698         return NULL;
12699       hash = (hash + hash2) & mask;
12700     }
12701
12702   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12703            " [in module %s]"),
12704          dwp_file->name);
12705 }
12706
12707 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12708    Open the file specified by FILE_NAME and hand it off to BFD for
12709    preliminary analysis.  Return a newly initialized bfd *, which
12710    includes a canonicalized copy of FILE_NAME.
12711    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12712    SEARCH_CWD is true if the current directory is to be searched.
12713    It will be searched before debug-file-directory.
12714    If successful, the file is added to the bfd include table of the
12715    objfile's bfd (see gdb_bfd_record_inclusion).
12716    If unable to find/open the file, return NULL.
12717    NOTE: This function is derived from symfile_bfd_open.  */
12718
12719 static gdb_bfd_ref_ptr
12720 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12721                     const char *file_name, int is_dwp, int search_cwd)
12722 {
12723   int desc;
12724   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12725      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12726      to debug_file_directory.  */
12727   const char *search_path;
12728   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12729
12730   gdb::unique_xmalloc_ptr<char> search_path_holder;
12731   if (search_cwd)
12732     {
12733       if (*debug_file_directory != '\0')
12734         {
12735           search_path_holder.reset (concat (".", dirname_separator_string,
12736                                             debug_file_directory,
12737                                             (char *) NULL));
12738           search_path = search_path_holder.get ();
12739         }
12740       else
12741         search_path = ".";
12742     }
12743   else
12744     search_path = debug_file_directory;
12745
12746   openp_flags flags = OPF_RETURN_REALPATH;
12747   if (is_dwp)
12748     flags |= OPF_SEARCH_IN_PATH;
12749
12750   gdb::unique_xmalloc_ptr<char> absolute_name;
12751   desc = openp (search_path, flags, file_name,
12752                 O_RDONLY | O_BINARY, &absolute_name);
12753   if (desc < 0)
12754     return NULL;
12755
12756   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12757                                          gnutarget, desc));
12758   if (sym_bfd == NULL)
12759     return NULL;
12760   bfd_set_cacheable (sym_bfd.get (), 1);
12761
12762   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12763     return NULL;
12764
12765   /* Success.  Record the bfd as having been included by the objfile's bfd.
12766      This is important because things like demangled_names_hash lives in the
12767      objfile's per_bfd space and may have references to things like symbol
12768      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12769   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12770
12771   return sym_bfd;
12772 }
12773
12774 /* Try to open DWO file FILE_NAME.
12775    COMP_DIR is the DW_AT_comp_dir attribute.
12776    The result is the bfd handle of the file.
12777    If there is a problem finding or opening the file, return NULL.
12778    Upon success, the canonicalized path of the file is stored in the bfd,
12779    same as symfile_bfd_open.  */
12780
12781 static gdb_bfd_ref_ptr
12782 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12783                const char *file_name, const char *comp_dir)
12784 {
12785   if (IS_ABSOLUTE_PATH (file_name))
12786     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12787                                0 /*is_dwp*/, 0 /*search_cwd*/);
12788
12789   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12790
12791   if (comp_dir != NULL)
12792     {
12793       char *path_to_try = concat (comp_dir, SLASH_STRING,
12794                                   file_name, (char *) NULL);
12795
12796       /* NOTE: If comp_dir is a relative path, this will also try the
12797          search path, which seems useful.  */
12798       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12799                                                 path_to_try,
12800                                                 0 /*is_dwp*/,
12801                                                 1 /*search_cwd*/));
12802       xfree (path_to_try);
12803       if (abfd != NULL)
12804         return abfd;
12805     }
12806
12807   /* That didn't work, try debug-file-directory, which, despite its name,
12808      is a list of paths.  */
12809
12810   if (*debug_file_directory == '\0')
12811     return NULL;
12812
12813   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12814                              0 /*is_dwp*/, 1 /*search_cwd*/);
12815 }
12816
12817 /* This function is mapped across the sections and remembers the offset and
12818    size of each of the DWO debugging sections we are interested in.  */
12819
12820 static void
12821 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12822 {
12823   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12824   const struct dwop_section_names *names = &dwop_section_names;
12825
12826   if (section_is_p (sectp->name, &names->abbrev_dwo))
12827     {
12828       dwo_sections->abbrev.s.section = sectp;
12829       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12830     }
12831   else if (section_is_p (sectp->name, &names->info_dwo))
12832     {
12833       dwo_sections->info.s.section = sectp;
12834       dwo_sections->info.size = bfd_get_section_size (sectp);
12835     }
12836   else if (section_is_p (sectp->name, &names->line_dwo))
12837     {
12838       dwo_sections->line.s.section = sectp;
12839       dwo_sections->line.size = bfd_get_section_size (sectp);
12840     }
12841   else if (section_is_p (sectp->name, &names->loc_dwo))
12842     {
12843       dwo_sections->loc.s.section = sectp;
12844       dwo_sections->loc.size = bfd_get_section_size (sectp);
12845     }
12846   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12847     {
12848       dwo_sections->macinfo.s.section = sectp;
12849       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12850     }
12851   else if (section_is_p (sectp->name, &names->macro_dwo))
12852     {
12853       dwo_sections->macro.s.section = sectp;
12854       dwo_sections->macro.size = bfd_get_section_size (sectp);
12855     }
12856   else if (section_is_p (sectp->name, &names->str_dwo))
12857     {
12858       dwo_sections->str.s.section = sectp;
12859       dwo_sections->str.size = bfd_get_section_size (sectp);
12860     }
12861   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12862     {
12863       dwo_sections->str_offsets.s.section = sectp;
12864       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12865     }
12866   else if (section_is_p (sectp->name, &names->types_dwo))
12867     {
12868       struct dwarf2_section_info type_section;
12869
12870       memset (&type_section, 0, sizeof (type_section));
12871       type_section.s.section = sectp;
12872       type_section.size = bfd_get_section_size (sectp);
12873       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12874                      &type_section);
12875     }
12876 }
12877
12878 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12879    by PER_CU.  This is for the non-DWP case.
12880    The result is NULL if DWO_NAME can't be found.  */
12881
12882 static struct dwo_file *
12883 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12884                         const char *dwo_name, const char *comp_dir)
12885 {
12886   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12887   struct objfile *objfile = dwarf2_per_objfile->objfile;
12888
12889   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12890   if (dbfd == NULL)
12891     {
12892       if (dwarf_read_debug)
12893         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12894       return NULL;
12895     }
12896
12897   /* We use a unique pointer here, despite the obstack allocation,
12898      because a dwo_file needs some cleanup if it is abandoned.  */
12899   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12900                                         struct dwo_file));
12901   dwo_file->dwo_name = dwo_name;
12902   dwo_file->comp_dir = comp_dir;
12903   dwo_file->dbfd = dbfd.release ();
12904
12905   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12906                          &dwo_file->sections);
12907
12908   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12909                          dwo_file->cus);
12910
12911   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12912                                  dwo_file->sections.types, dwo_file->tus);
12913
12914   if (dwarf_read_debug)
12915     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
12916
12917   return dwo_file.release ();
12918 }
12919
12920 /* This function is mapped across the sections and remembers the offset and
12921    size of each of the DWP debugging sections common to version 1 and 2 that
12922    we are interested in.  */
12923
12924 static void
12925 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
12926                                    void *dwp_file_ptr)
12927 {
12928   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12929   const struct dwop_section_names *names = &dwop_section_names;
12930   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12931
12932   /* Record the ELF section number for later lookup: this is what the
12933      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
12934   gdb_assert (elf_section_nr < dwp_file->num_sections);
12935   dwp_file->elf_sections[elf_section_nr] = sectp;
12936
12937   /* Look for specific sections that we need.  */
12938   if (section_is_p (sectp->name, &names->str_dwo))
12939     {
12940       dwp_file->sections.str.s.section = sectp;
12941       dwp_file->sections.str.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->cu_index))
12944     {
12945       dwp_file->sections.cu_index.s.section = sectp;
12946       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->tu_index))
12949     {
12950       dwp_file->sections.tu_index.s.section = sectp;
12951       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
12952     }
12953 }
12954
12955 /* This function is mapped across the sections and remembers the offset and
12956    size of each of the DWP version 2 debugging sections that we are interested
12957    in.  This is split into a separate function because we don't know if we
12958    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
12959
12960 static void
12961 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
12962 {
12963   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12964   const struct dwop_section_names *names = &dwop_section_names;
12965   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12966
12967   /* Record the ELF section number for later lookup: this is what the
12968      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
12969   gdb_assert (elf_section_nr < dwp_file->num_sections);
12970   dwp_file->elf_sections[elf_section_nr] = sectp;
12971
12972   /* Look for specific sections that we need.  */
12973   if (section_is_p (sectp->name, &names->abbrev_dwo))
12974     {
12975       dwp_file->sections.abbrev.s.section = sectp;
12976       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
12977     }
12978   else if (section_is_p (sectp->name, &names->info_dwo))
12979     {
12980       dwp_file->sections.info.s.section = sectp;
12981       dwp_file->sections.info.size = bfd_get_section_size (sectp);
12982     }
12983   else if (section_is_p (sectp->name, &names->line_dwo))
12984     {
12985       dwp_file->sections.line.s.section = sectp;
12986       dwp_file->sections.line.size = bfd_get_section_size (sectp);
12987     }
12988   else if (section_is_p (sectp->name, &names->loc_dwo))
12989     {
12990       dwp_file->sections.loc.s.section = sectp;
12991       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
12992     }
12993   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12994     {
12995       dwp_file->sections.macinfo.s.section = sectp;
12996       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
12997     }
12998   else if (section_is_p (sectp->name, &names->macro_dwo))
12999     {
13000       dwp_file->sections.macro.s.section = sectp;
13001       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13002     }
13003   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13004     {
13005       dwp_file->sections.str_offsets.s.section = sectp;
13006       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13007     }
13008   else if (section_is_p (sectp->name, &names->types_dwo))
13009     {
13010       dwp_file->sections.types.s.section = sectp;
13011       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13012     }
13013 }
13014
13015 /* Hash function for dwp_file loaded CUs/TUs.  */
13016
13017 static hashval_t
13018 hash_dwp_loaded_cutus (const void *item)
13019 {
13020   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13021
13022   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13023   return dwo_unit->signature;
13024 }
13025
13026 /* Equality function for dwp_file loaded CUs/TUs.  */
13027
13028 static int
13029 eq_dwp_loaded_cutus (const void *a, const void *b)
13030 {
13031   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13032   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13033
13034   return dua->signature == dub->signature;
13035 }
13036
13037 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13038
13039 static htab_t
13040 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13041 {
13042   return htab_create_alloc_ex (3,
13043                                hash_dwp_loaded_cutus,
13044                                eq_dwp_loaded_cutus,
13045                                NULL,
13046                                &objfile->objfile_obstack,
13047                                hashtab_obstack_allocate,
13048                                dummy_obstack_deallocate);
13049 }
13050
13051 /* Try to open DWP file FILE_NAME.
13052    The result is the bfd handle of the file.
13053    If there is a problem finding or opening the file, return NULL.
13054    Upon success, the canonicalized path of the file is stored in the bfd,
13055    same as symfile_bfd_open.  */
13056
13057 static gdb_bfd_ref_ptr
13058 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13059                const char *file_name)
13060 {
13061   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13062                                             1 /*is_dwp*/,
13063                                             1 /*search_cwd*/));
13064   if (abfd != NULL)
13065     return abfd;
13066
13067   /* Work around upstream bug 15652.
13068      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13069      [Whether that's a "bug" is debatable, but it is getting in our way.]
13070      We have no real idea where the dwp file is, because gdb's realpath-ing
13071      of the executable's path may have discarded the needed info.
13072      [IWBN if the dwp file name was recorded in the executable, akin to
13073      .gnu_debuglink, but that doesn't exist yet.]
13074      Strip the directory from FILE_NAME and search again.  */
13075   if (*debug_file_directory != '\0')
13076     {
13077       /* Don't implicitly search the current directory here.
13078          If the user wants to search "." to handle this case,
13079          it must be added to debug-file-directory.  */
13080       return try_open_dwop_file (dwarf2_per_objfile,
13081                                  lbasename (file_name), 1 /*is_dwp*/,
13082                                  0 /*search_cwd*/);
13083     }
13084
13085   return NULL;
13086 }
13087
13088 /* Initialize the use of the DWP file for the current objfile.
13089    By convention the name of the DWP file is ${objfile}.dwp.
13090    The result is NULL if it can't be found.  */
13091
13092 static struct dwp_file *
13093 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13094 {
13095   struct objfile *objfile = dwarf2_per_objfile->objfile;
13096   struct dwp_file *dwp_file;
13097
13098   /* Try to find first .dwp for the binary file before any symbolic links
13099      resolving.  */
13100
13101   /* If the objfile is a debug file, find the name of the real binary
13102      file and get the name of dwp file from there.  */
13103   std::string dwp_name;
13104   if (objfile->separate_debug_objfile_backlink != NULL)
13105     {
13106       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13107       const char *backlink_basename = lbasename (backlink->original_name);
13108
13109       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13110     }
13111   else
13112     dwp_name = objfile->original_name;
13113
13114   dwp_name += ".dwp";
13115
13116   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13117   if (dbfd == NULL
13118       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13119     {
13120       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13121       dwp_name = objfile_name (objfile);
13122       dwp_name += ".dwp";
13123       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13124     }
13125
13126   if (dbfd == NULL)
13127     {
13128       if (dwarf_read_debug)
13129         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13130       return NULL;
13131     }
13132   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
13133   dwp_file->name = bfd_get_filename (dbfd.get ());
13134   dwp_file->dbfd = dbfd.release ();
13135
13136   /* +1: section 0 is unused */
13137   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13138   dwp_file->elf_sections =
13139     OBSTACK_CALLOC (&objfile->objfile_obstack,
13140                     dwp_file->num_sections, asection *);
13141
13142   bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_common_dwp_sections,
13143                          dwp_file);
13144
13145   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file, 0);
13146
13147   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file, 1);
13148
13149   /* The DWP file version is stored in the hash table.  Oh well.  */
13150   if (dwp_file->cus && dwp_file->tus
13151       && dwp_file->cus->version != dwp_file->tus->version)
13152     {
13153       /* Technically speaking, we should try to limp along, but this is
13154          pretty bizarre.  We use pulongest here because that's the established
13155          portability solution (e.g, we cannot use %u for uint32_t).  */
13156       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13157                " TU version %s [in DWP file %s]"),
13158              pulongest (dwp_file->cus->version),
13159              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13160     }
13161
13162   if (dwp_file->cus)
13163     dwp_file->version = dwp_file->cus->version;
13164   else if (dwp_file->tus)
13165     dwp_file->version = dwp_file->tus->version;
13166   else
13167     dwp_file->version = 2;
13168
13169   if (dwp_file->version == 2)
13170     bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,
13171                            dwp_file);
13172
13173   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13174   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13175
13176   if (dwarf_read_debug)
13177     {
13178       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13179       fprintf_unfiltered (gdb_stdlog,
13180                           "    %s CUs, %s TUs\n",
13181                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13182                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13183     }
13184
13185   return dwp_file;
13186 }
13187
13188 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13189
13190 static struct dwp_file *
13191 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13192 {
13193   if (! dwarf2_per_objfile->dwp_checked)
13194     {
13195       dwarf2_per_objfile->dwp_file
13196         = open_and_init_dwp_file (dwarf2_per_objfile);
13197       dwarf2_per_objfile->dwp_checked = 1;
13198     }
13199   return dwarf2_per_objfile->dwp_file;
13200 }
13201
13202 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13203    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13204    or in the DWP file for the objfile, referenced by THIS_UNIT.
13205    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13206    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13207
13208    This is called, for example, when wanting to read a variable with a
13209    complex location.  Therefore we don't want to do file i/o for every call.
13210    Therefore we don't want to look for a DWO file on every call.
13211    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13212    then we check if we've already seen DWO_NAME, and only THEN do we check
13213    for a DWO file.
13214
13215    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13216    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13217
13218 static struct dwo_unit *
13219 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13220                  const char *dwo_name, const char *comp_dir,
13221                  ULONGEST signature, int is_debug_types)
13222 {
13223   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13224   struct objfile *objfile = dwarf2_per_objfile->objfile;
13225   const char *kind = is_debug_types ? "TU" : "CU";
13226   void **dwo_file_slot;
13227   struct dwo_file *dwo_file;
13228   struct dwp_file *dwp_file;
13229
13230   /* First see if there's a DWP file.
13231      If we have a DWP file but didn't find the DWO inside it, don't
13232      look for the original DWO file.  It makes gdb behave differently
13233      depending on whether one is debugging in the build tree.  */
13234
13235   dwp_file = get_dwp_file (dwarf2_per_objfile);
13236   if (dwp_file != NULL)
13237     {
13238       const struct dwp_hash_table *dwp_htab =
13239         is_debug_types ? dwp_file->tus : dwp_file->cus;
13240
13241       if (dwp_htab != NULL)
13242         {
13243           struct dwo_unit *dwo_cutu =
13244             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13245                                     signature, is_debug_types);
13246
13247           if (dwo_cutu != NULL)
13248             {
13249               if (dwarf_read_debug)
13250                 {
13251                   fprintf_unfiltered (gdb_stdlog,
13252                                       "Virtual DWO %s %s found: @%s\n",
13253                                       kind, hex_string (signature),
13254                                       host_address_to_string (dwo_cutu));
13255                 }
13256               return dwo_cutu;
13257             }
13258         }
13259     }
13260   else
13261     {
13262       /* No DWP file, look for the DWO file.  */
13263
13264       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13265                                             dwo_name, comp_dir);
13266       if (*dwo_file_slot == NULL)
13267         {
13268           /* Read in the file and build a table of the CUs/TUs it contains.  */
13269           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13270         }
13271       /* NOTE: This will be NULL if unable to open the file.  */
13272       dwo_file = (struct dwo_file *) *dwo_file_slot;
13273
13274       if (dwo_file != NULL)
13275         {
13276           struct dwo_unit *dwo_cutu = NULL;
13277
13278           if (is_debug_types && dwo_file->tus)
13279             {
13280               struct dwo_unit find_dwo_cutu;
13281
13282               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13283               find_dwo_cutu.signature = signature;
13284               dwo_cutu
13285                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13286             }
13287           else if (!is_debug_types && dwo_file->cus)
13288             {
13289               struct dwo_unit find_dwo_cutu;
13290
13291               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13292               find_dwo_cutu.signature = signature;
13293               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13294                                                        &find_dwo_cutu);
13295             }
13296
13297           if (dwo_cutu != NULL)
13298             {
13299               if (dwarf_read_debug)
13300                 {
13301                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13302                                       kind, dwo_name, hex_string (signature),
13303                                       host_address_to_string (dwo_cutu));
13304                 }
13305               return dwo_cutu;
13306             }
13307         }
13308     }
13309
13310   /* We didn't find it.  This could mean a dwo_id mismatch, or
13311      someone deleted the DWO/DWP file, or the search path isn't set up
13312      correctly to find the file.  */
13313
13314   if (dwarf_read_debug)
13315     {
13316       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13317                           kind, dwo_name, hex_string (signature));
13318     }
13319
13320   /* This is a warning and not a complaint because it can be caused by
13321      pilot error (e.g., user accidentally deleting the DWO).  */
13322   {
13323     /* Print the name of the DWP file if we looked there, helps the user
13324        better diagnose the problem.  */
13325     std::string dwp_text;
13326
13327     if (dwp_file != NULL)
13328       dwp_text = string_printf (" [in DWP file %s]",
13329                                 lbasename (dwp_file->name));
13330
13331     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13332                " [in module %s]"),
13333              kind, dwo_name, hex_string (signature),
13334              dwp_text.c_str (),
13335              this_unit->is_debug_types ? "TU" : "CU",
13336              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13337   }
13338   return NULL;
13339 }
13340
13341 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13342    See lookup_dwo_cutu_unit for details.  */
13343
13344 static struct dwo_unit *
13345 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13346                       const char *dwo_name, const char *comp_dir,
13347                       ULONGEST signature)
13348 {
13349   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13350 }
13351
13352 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13353    See lookup_dwo_cutu_unit for details.  */
13354
13355 static struct dwo_unit *
13356 lookup_dwo_type_unit (struct signatured_type *this_tu,
13357                       const char *dwo_name, const char *comp_dir)
13358 {
13359   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13360 }
13361
13362 /* Traversal function for queue_and_load_all_dwo_tus.  */
13363
13364 static int
13365 queue_and_load_dwo_tu (void **slot, void *info)
13366 {
13367   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13368   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13369   ULONGEST signature = dwo_unit->signature;
13370   struct signatured_type *sig_type =
13371     lookup_dwo_signatured_type (per_cu->cu, signature);
13372
13373   if (sig_type != NULL)
13374     {
13375       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13376
13377       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13378          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13379          while processing PER_CU.  */
13380       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13381         load_full_type_unit (sig_cu);
13382       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13383     }
13384
13385   return 1;
13386 }
13387
13388 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13389    The DWO may have the only definition of the type, though it may not be
13390    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13391    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13392
13393 static void
13394 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13395 {
13396   struct dwo_unit *dwo_unit;
13397   struct dwo_file *dwo_file;
13398
13399   gdb_assert (!per_cu->is_debug_types);
13400   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13401   gdb_assert (per_cu->cu != NULL);
13402
13403   dwo_unit = per_cu->cu->dwo_unit;
13404   gdb_assert (dwo_unit != NULL);
13405
13406   dwo_file = dwo_unit->dwo_file;
13407   if (dwo_file->tus != NULL)
13408     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13409 }
13410
13411 /* Free all resources associated with DWO_FILE.
13412    Close the DWO file and munmap the sections.  */
13413
13414 static void
13415 free_dwo_file (struct dwo_file *dwo_file)
13416 {
13417   /* Note: dbfd is NULL for virtual DWO files.  */
13418   gdb_bfd_unref (dwo_file->dbfd);
13419
13420   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13421 }
13422
13423 /* Traversal function for free_dwo_files.  */
13424
13425 static int
13426 free_dwo_file_from_slot (void **slot, void *info)
13427 {
13428   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13429
13430   free_dwo_file (dwo_file);
13431
13432   return 1;
13433 }
13434
13435 /* Free all resources associated with DWO_FILES.  */
13436
13437 static void
13438 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13439 {
13440   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13441 }
13442 \f
13443 /* Read in various DIEs.  */
13444
13445 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13446    Inherit only the children of the DW_AT_abstract_origin DIE not being
13447    already referenced by DW_AT_abstract_origin from the children of the
13448    current DIE.  */
13449
13450 static void
13451 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13452 {
13453   struct die_info *child_die;
13454   sect_offset *offsetp;
13455   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13456   struct die_info *origin_die;
13457   /* Iterator of the ORIGIN_DIE children.  */
13458   struct die_info *origin_child_die;
13459   struct attribute *attr;
13460   struct dwarf2_cu *origin_cu;
13461   struct pending **origin_previous_list_in_scope;
13462
13463   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13464   if (!attr)
13465     return;
13466
13467   /* Note that following die references may follow to a die in a
13468      different cu.  */
13469
13470   origin_cu = cu;
13471   origin_die = follow_die_ref (die, attr, &origin_cu);
13472
13473   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13474      symbols in.  */
13475   origin_previous_list_in_scope = origin_cu->list_in_scope;
13476   origin_cu->list_in_scope = cu->list_in_scope;
13477
13478   if (die->tag != origin_die->tag
13479       && !(die->tag == DW_TAG_inlined_subroutine
13480            && origin_die->tag == DW_TAG_subprogram))
13481     complaint (&symfile_complaints,
13482                _("DIE %s and its abstract origin %s have different tags"),
13483                sect_offset_str (die->sect_off),
13484                sect_offset_str (origin_die->sect_off));
13485
13486   std::vector<sect_offset> offsets;
13487
13488   for (child_die = die->child;
13489        child_die && child_die->tag;
13490        child_die = sibling_die (child_die))
13491     {
13492       struct die_info *child_origin_die;
13493       struct dwarf2_cu *child_origin_cu;
13494
13495       /* We are trying to process concrete instance entries:
13496          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13497          it's not relevant to our analysis here. i.e. detecting DIEs that are
13498          present in the abstract instance but not referenced in the concrete
13499          one.  */
13500       if (child_die->tag == DW_TAG_call_site
13501           || child_die->tag == DW_TAG_GNU_call_site)
13502         continue;
13503
13504       /* For each CHILD_DIE, find the corresponding child of
13505          ORIGIN_DIE.  If there is more than one layer of
13506          DW_AT_abstract_origin, follow them all; there shouldn't be,
13507          but GCC versions at least through 4.4 generate this (GCC PR
13508          40573).  */
13509       child_origin_die = child_die;
13510       child_origin_cu = cu;
13511       while (1)
13512         {
13513           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13514                               child_origin_cu);
13515           if (attr == NULL)
13516             break;
13517           child_origin_die = follow_die_ref (child_origin_die, attr,
13518                                              &child_origin_cu);
13519         }
13520
13521       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13522          counterpart may exist.  */
13523       if (child_origin_die != child_die)
13524         {
13525           if (child_die->tag != child_origin_die->tag
13526               && !(child_die->tag == DW_TAG_inlined_subroutine
13527                    && child_origin_die->tag == DW_TAG_subprogram))
13528             complaint (&symfile_complaints,
13529                        _("Child DIE %s and its abstract origin %s have "
13530                          "different tags"),
13531                        sect_offset_str (child_die->sect_off),
13532                        sect_offset_str (child_origin_die->sect_off));
13533           if (child_origin_die->parent != origin_die)
13534             complaint (&symfile_complaints,
13535                        _("Child DIE %s and its abstract origin %s have "
13536                          "different parents"),
13537                        sect_offset_str (child_die->sect_off),
13538                        sect_offset_str (child_origin_die->sect_off));
13539           else
13540             offsets.push_back (child_origin_die->sect_off);
13541         }
13542     }
13543   std::sort (offsets.begin (), offsets.end ());
13544   sect_offset *offsets_end = offsets.data () + offsets.size ();
13545   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13546     if (offsetp[-1] == *offsetp)
13547       complaint (&symfile_complaints,
13548                  _("Multiple children of DIE %s refer "
13549                    "to DIE %s as their abstract origin"),
13550                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13551
13552   offsetp = offsets.data ();
13553   origin_child_die = origin_die->child;
13554   while (origin_child_die && origin_child_die->tag)
13555     {
13556       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13557       while (offsetp < offsets_end
13558              && *offsetp < origin_child_die->sect_off)
13559         offsetp++;
13560       if (offsetp >= offsets_end
13561           || *offsetp > origin_child_die->sect_off)
13562         {
13563           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13564              Check whether we're already processing ORIGIN_CHILD_DIE.
13565              This can happen with mutually referenced abstract_origins.
13566              PR 16581.  */
13567           if (!origin_child_die->in_process)
13568             process_die (origin_child_die, origin_cu);
13569         }
13570       origin_child_die = sibling_die (origin_child_die);
13571     }
13572   origin_cu->list_in_scope = origin_previous_list_in_scope;
13573 }
13574
13575 static void
13576 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13577 {
13578   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13579   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13580   struct context_stack *newobj;
13581   CORE_ADDR lowpc;
13582   CORE_ADDR highpc;
13583   struct die_info *child_die;
13584   struct attribute *attr, *call_line, *call_file;
13585   const char *name;
13586   CORE_ADDR baseaddr;
13587   struct block *block;
13588   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13589   std::vector<struct symbol *> template_args;
13590   struct template_symbol *templ_func = NULL;
13591
13592   if (inlined_func)
13593     {
13594       /* If we do not have call site information, we can't show the
13595          caller of this inlined function.  That's too confusing, so
13596          only use the scope for local variables.  */
13597       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13598       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13599       if (call_line == NULL || call_file == NULL)
13600         {
13601           read_lexical_block_scope (die, cu);
13602           return;
13603         }
13604     }
13605
13606   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13607
13608   name = dwarf2_name (die, cu);
13609
13610   /* Ignore functions with missing or empty names.  These are actually
13611      illegal according to the DWARF standard.  */
13612   if (name == NULL)
13613     {
13614       complaint (&symfile_complaints,
13615                  _("missing name for subprogram DIE at %s"),
13616                  sect_offset_str (die->sect_off));
13617       return;
13618     }
13619
13620   /* Ignore functions with missing or invalid low and high pc attributes.  */
13621   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13622       <= PC_BOUNDS_INVALID)
13623     {
13624       attr = dwarf2_attr (die, DW_AT_external, cu);
13625       if (!attr || !DW_UNSND (attr))
13626         complaint (&symfile_complaints,
13627                    _("cannot get low and high bounds "
13628                      "for subprogram DIE at %s"),
13629                    sect_offset_str (die->sect_off));
13630       return;
13631     }
13632
13633   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13634   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13635
13636   /* If we have any template arguments, then we must allocate a
13637      different sort of symbol.  */
13638   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13639     {
13640       if (child_die->tag == DW_TAG_template_type_param
13641           || child_die->tag == DW_TAG_template_value_param)
13642         {
13643           templ_func = allocate_template_symbol (objfile);
13644           templ_func->subclass = SYMBOL_TEMPLATE;
13645           break;
13646         }
13647     }
13648
13649   newobj = push_context (0, lowpc);
13650   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13651                              (struct symbol *) templ_func);
13652
13653   /* If there is a location expression for DW_AT_frame_base, record
13654      it.  */
13655   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13656   if (attr)
13657     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13658
13659   /* If there is a location for the static link, record it.  */
13660   newobj->static_link = NULL;
13661   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13662   if (attr)
13663     {
13664       newobj->static_link
13665         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13666       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13667     }
13668
13669   cu->list_in_scope = &local_symbols;
13670
13671   if (die->child != NULL)
13672     {
13673       child_die = die->child;
13674       while (child_die && child_die->tag)
13675         {
13676           if (child_die->tag == DW_TAG_template_type_param
13677               || child_die->tag == DW_TAG_template_value_param)
13678             {
13679               struct symbol *arg = new_symbol (child_die, NULL, cu);
13680
13681               if (arg != NULL)
13682                 template_args.push_back (arg);
13683             }
13684           else
13685             process_die (child_die, cu);
13686           child_die = sibling_die (child_die);
13687         }
13688     }
13689
13690   inherit_abstract_dies (die, cu);
13691
13692   /* If we have a DW_AT_specification, we might need to import using
13693      directives from the context of the specification DIE.  See the
13694      comment in determine_prefix.  */
13695   if (cu->language == language_cplus
13696       && dwarf2_attr (die, DW_AT_specification, cu))
13697     {
13698       struct dwarf2_cu *spec_cu = cu;
13699       struct die_info *spec_die = die_specification (die, &spec_cu);
13700
13701       while (spec_die)
13702         {
13703           child_die = spec_die->child;
13704           while (child_die && child_die->tag)
13705             {
13706               if (child_die->tag == DW_TAG_imported_module)
13707                 process_die (child_die, spec_cu);
13708               child_die = sibling_die (child_die);
13709             }
13710
13711           /* In some cases, GCC generates specification DIEs that
13712              themselves contain DW_AT_specification attributes.  */
13713           spec_die = die_specification (spec_die, &spec_cu);
13714         }
13715     }
13716
13717   newobj = pop_context ();
13718   /* Make a block for the local symbols within.  */
13719   block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
13720                         newobj->static_link, lowpc, highpc);
13721
13722   /* For C++, set the block's scope.  */
13723   if ((cu->language == language_cplus
13724        || cu->language == language_fortran
13725        || cu->language == language_d
13726        || cu->language == language_rust)
13727       && cu->processing_has_namespace_info)
13728     block_set_scope (block, determine_prefix (die, cu),
13729                      &objfile->objfile_obstack);
13730
13731   /* If we have address ranges, record them.  */
13732   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13733
13734   gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
13735
13736   /* Attach template arguments to function.  */
13737   if (!template_args.empty ())
13738     {
13739       gdb_assert (templ_func != NULL);
13740
13741       templ_func->n_template_arguments = template_args.size ();
13742       templ_func->template_arguments
13743         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13744                      templ_func->n_template_arguments);
13745       memcpy (templ_func->template_arguments,
13746               template_args.data (),
13747               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13748     }
13749
13750   /* In C++, we can have functions nested inside functions (e.g., when
13751      a function declares a class that has methods).  This means that
13752      when we finish processing a function scope, we may need to go
13753      back to building a containing block's symbol lists.  */
13754   local_symbols = newobj->locals;
13755   local_using_directives = newobj->local_using_directives;
13756
13757   /* If we've finished processing a top-level function, subsequent
13758      symbols go in the file symbol list.  */
13759   if (outermost_context_p ())
13760     cu->list_in_scope = &file_symbols;
13761 }
13762
13763 /* Process all the DIES contained within a lexical block scope.  Start
13764    a new scope, process the dies, and then close the scope.  */
13765
13766 static void
13767 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13768 {
13769   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13770   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13771   struct context_stack *newobj;
13772   CORE_ADDR lowpc, highpc;
13773   struct die_info *child_die;
13774   CORE_ADDR baseaddr;
13775
13776   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13777
13778   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13779   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13780      as multiple lexical blocks?  Handling children in a sane way would
13781      be nasty.  Might be easier to properly extend generic blocks to
13782      describe ranges.  */
13783   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13784     {
13785     case PC_BOUNDS_NOT_PRESENT:
13786       /* DW_TAG_lexical_block has no attributes, process its children as if
13787          there was no wrapping by that DW_TAG_lexical_block.
13788          GCC does no longer produces such DWARF since GCC r224161.  */
13789       for (child_die = die->child;
13790            child_die != NULL && child_die->tag;
13791            child_die = sibling_die (child_die))
13792         process_die (child_die, cu);
13793       return;
13794     case PC_BOUNDS_INVALID:
13795       return;
13796     }
13797   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13798   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13799
13800   push_context (0, lowpc);
13801   if (die->child != NULL)
13802     {
13803       child_die = die->child;
13804       while (child_die && child_die->tag)
13805         {
13806           process_die (child_die, cu);
13807           child_die = sibling_die (child_die);
13808         }
13809     }
13810   inherit_abstract_dies (die, cu);
13811   newobj = pop_context ();
13812
13813   if (local_symbols != NULL || local_using_directives != NULL)
13814     {
13815       struct block *block
13816         = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
13817                         newobj->start_addr, highpc);
13818
13819       /* Note that recording ranges after traversing children, as we
13820          do here, means that recording a parent's ranges entails
13821          walking across all its children's ranges as they appear in
13822          the address map, which is quadratic behavior.
13823
13824          It would be nicer to record the parent's ranges before
13825          traversing its children, simply overriding whatever you find
13826          there.  But since we don't even decide whether to create a
13827          block until after we've traversed its children, that's hard
13828          to do.  */
13829       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13830     }
13831   local_symbols = newobj->locals;
13832   local_using_directives = newobj->local_using_directives;
13833 }
13834
13835 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13836
13837 static void
13838 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13839 {
13840   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13841   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13842   CORE_ADDR pc, baseaddr;
13843   struct attribute *attr;
13844   struct call_site *call_site, call_site_local;
13845   void **slot;
13846   int nparams;
13847   struct die_info *child_die;
13848
13849   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13850
13851   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13852   if (attr == NULL)
13853     {
13854       /* This was a pre-DWARF-5 GNU extension alias
13855          for DW_AT_call_return_pc.  */
13856       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13857     }
13858   if (!attr)
13859     {
13860       complaint (&symfile_complaints,
13861                  _("missing DW_AT_call_return_pc for DW_TAG_call_site "
13862                    "DIE %s [in module %s]"),
13863                  sect_offset_str (die->sect_off), objfile_name (objfile));
13864       return;
13865     }
13866   pc = attr_value_as_address (attr) + baseaddr;
13867   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13868
13869   if (cu->call_site_htab == NULL)
13870     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13871                                                NULL, &objfile->objfile_obstack,
13872                                                hashtab_obstack_allocate, NULL);
13873   call_site_local.pc = pc;
13874   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13875   if (*slot != NULL)
13876     {
13877       complaint (&symfile_complaints,
13878                  _("Duplicate PC %s for DW_TAG_call_site "
13879                    "DIE %s [in module %s]"),
13880                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13881                  objfile_name (objfile));
13882       return;
13883     }
13884
13885   /* Count parameters at the caller.  */
13886
13887   nparams = 0;
13888   for (child_die = die->child; child_die && child_die->tag;
13889        child_die = sibling_die (child_die))
13890     {
13891       if (child_die->tag != DW_TAG_call_site_parameter
13892           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13893         {
13894           complaint (&symfile_complaints,
13895                      _("Tag %d is not DW_TAG_call_site_parameter in "
13896                        "DW_TAG_call_site child DIE %s [in module %s]"),
13897                      child_die->tag, sect_offset_str (child_die->sect_off),
13898                      objfile_name (objfile));
13899           continue;
13900         }
13901
13902       nparams++;
13903     }
13904
13905   call_site
13906     = ((struct call_site *)
13907        obstack_alloc (&objfile->objfile_obstack,
13908                       sizeof (*call_site)
13909                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13910   *slot = call_site;
13911   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13912   call_site->pc = pc;
13913
13914   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13915       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
13916     {
13917       struct die_info *func_die;
13918
13919       /* Skip also over DW_TAG_inlined_subroutine.  */
13920       for (func_die = die->parent;
13921            func_die && func_die->tag != DW_TAG_subprogram
13922            && func_die->tag != DW_TAG_subroutine_type;
13923            func_die = func_die->parent);
13924
13925       /* DW_AT_call_all_calls is a superset
13926          of DW_AT_call_all_tail_calls.  */
13927       if (func_die
13928           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
13929           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
13930           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
13931           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
13932         {
13933           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
13934              not complete.  But keep CALL_SITE for look ups via call_site_htab,
13935              both the initial caller containing the real return address PC and
13936              the final callee containing the current PC of a chain of tail
13937              calls do not need to have the tail call list complete.  But any
13938              function candidate for a virtual tail call frame searched via
13939              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
13940              determined unambiguously.  */
13941         }
13942       else
13943         {
13944           struct type *func_type = NULL;
13945
13946           if (func_die)
13947             func_type = get_die_type (func_die, cu);
13948           if (func_type != NULL)
13949             {
13950               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
13951
13952               /* Enlist this call site to the function.  */
13953               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
13954               TYPE_TAIL_CALL_LIST (func_type) = call_site;
13955             }
13956           else
13957             complaint (&symfile_complaints,
13958                        _("Cannot find function owning DW_TAG_call_site "
13959                          "DIE %s [in module %s]"),
13960                        sect_offset_str (die->sect_off), objfile_name (objfile));
13961         }
13962     }
13963
13964   attr = dwarf2_attr (die, DW_AT_call_target, cu);
13965   if (attr == NULL)
13966     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
13967   if (attr == NULL)
13968     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
13969   if (attr == NULL)
13970     {
13971       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
13972       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13973     }
13974   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
13975   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
13976     /* Keep NULL DWARF_BLOCK.  */;
13977   else if (attr_form_is_block (attr))
13978     {
13979       struct dwarf2_locexpr_baton *dlbaton;
13980
13981       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
13982       dlbaton->data = DW_BLOCK (attr)->data;
13983       dlbaton->size = DW_BLOCK (attr)->size;
13984       dlbaton->per_cu = cu->per_cu;
13985
13986       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
13987     }
13988   else if (attr_form_is_ref (attr))
13989     {
13990       struct dwarf2_cu *target_cu = cu;
13991       struct die_info *target_die;
13992
13993       target_die = follow_die_ref (die, attr, &target_cu);
13994       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
13995       if (die_is_declaration (target_die, target_cu))
13996         {
13997           const char *target_physname;
13998
13999           /* Prefer the mangled name; otherwise compute the demangled one.  */
14000           target_physname = dw2_linkage_name (target_die, target_cu);
14001           if (target_physname == NULL)
14002             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14003           if (target_physname == NULL)
14004             complaint (&symfile_complaints,
14005                        _("DW_AT_call_target target DIE has invalid "
14006                          "physname, for referencing DIE %s [in module %s]"),
14007                        sect_offset_str (die->sect_off), objfile_name (objfile));
14008           else
14009             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14010         }
14011       else
14012         {
14013           CORE_ADDR lowpc;
14014
14015           /* DW_AT_entry_pc should be preferred.  */
14016           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14017               <= PC_BOUNDS_INVALID)
14018             complaint (&symfile_complaints,
14019                        _("DW_AT_call_target target DIE has invalid "
14020                          "low pc, for referencing DIE %s [in module %s]"),
14021                        sect_offset_str (die->sect_off), objfile_name (objfile));
14022           else
14023             {
14024               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14025               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14026             }
14027         }
14028     }
14029   else
14030     complaint (&symfile_complaints,
14031                _("DW_TAG_call_site DW_AT_call_target is neither "
14032                  "block nor reference, for DIE %s [in module %s]"),
14033                sect_offset_str (die->sect_off), objfile_name (objfile));
14034
14035   call_site->per_cu = cu->per_cu;
14036
14037   for (child_die = die->child;
14038        child_die && child_die->tag;
14039        child_die = sibling_die (child_die))
14040     {
14041       struct call_site_parameter *parameter;
14042       struct attribute *loc, *origin;
14043
14044       if (child_die->tag != DW_TAG_call_site_parameter
14045           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14046         {
14047           /* Already printed the complaint above.  */
14048           continue;
14049         }
14050
14051       gdb_assert (call_site->parameter_count < nparams);
14052       parameter = &call_site->parameter[call_site->parameter_count];
14053
14054       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14055          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14056          register is contained in DW_AT_call_value.  */
14057
14058       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14059       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14060       if (origin == NULL)
14061         {
14062           /* This was a pre-DWARF-5 GNU extension alias
14063              for DW_AT_call_parameter.  */
14064           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14065         }
14066       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14067         {
14068           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14069
14070           sect_offset sect_off
14071             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14072           if (!offset_in_cu_p (&cu->header, sect_off))
14073             {
14074               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14075                  binding can be done only inside one CU.  Such referenced DIE
14076                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14077               complaint (&symfile_complaints,
14078                          _("DW_AT_call_parameter offset is not in CU for "
14079                            "DW_TAG_call_site child DIE %s [in module %s]"),
14080                          sect_offset_str (child_die->sect_off),
14081                          objfile_name (objfile));
14082               continue;
14083             }
14084           parameter->u.param_cu_off
14085             = (cu_offset) (sect_off - cu->header.sect_off);
14086         }
14087       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14088         {
14089           complaint (&symfile_complaints,
14090                      _("No DW_FORM_block* DW_AT_location for "
14091                        "DW_TAG_call_site child DIE %s [in module %s]"),
14092                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14093           continue;
14094         }
14095       else
14096         {
14097           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14098             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14099           if (parameter->u.dwarf_reg != -1)
14100             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14101           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14102                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14103                                              &parameter->u.fb_offset))
14104             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14105           else
14106             {
14107               complaint (&symfile_complaints,
14108                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
14109                            "for DW_FORM_block* DW_AT_location is supported for "
14110                            "DW_TAG_call_site child DIE %s "
14111                            "[in module %s]"),
14112                          sect_offset_str (child_die->sect_off),
14113                          objfile_name (objfile));
14114               continue;
14115             }
14116         }
14117
14118       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14119       if (attr == NULL)
14120         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14121       if (!attr_form_is_block (attr))
14122         {
14123           complaint (&symfile_complaints,
14124                      _("No DW_FORM_block* DW_AT_call_value for "
14125                        "DW_TAG_call_site child DIE %s [in module %s]"),
14126                      sect_offset_str (child_die->sect_off),
14127                      objfile_name (objfile));
14128           continue;
14129         }
14130       parameter->value = DW_BLOCK (attr)->data;
14131       parameter->value_size = DW_BLOCK (attr)->size;
14132
14133       /* Parameters are not pre-cleared by memset above.  */
14134       parameter->data_value = NULL;
14135       parameter->data_value_size = 0;
14136       call_site->parameter_count++;
14137
14138       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14139       if (attr == NULL)
14140         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14141       if (attr)
14142         {
14143           if (!attr_form_is_block (attr))
14144             complaint (&symfile_complaints,
14145                        _("No DW_FORM_block* DW_AT_call_data_value for "
14146                          "DW_TAG_call_site child DIE %s [in module %s]"),
14147                        sect_offset_str (child_die->sect_off),
14148                        objfile_name (objfile));
14149           else
14150             {
14151               parameter->data_value = DW_BLOCK (attr)->data;
14152               parameter->data_value_size = DW_BLOCK (attr)->size;
14153             }
14154         }
14155     }
14156 }
14157
14158 /* Helper function for read_variable.  If DIE represents a virtual
14159    table, then return the type of the concrete object that is
14160    associated with the virtual table.  Otherwise, return NULL.  */
14161
14162 static struct type *
14163 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14164 {
14165   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14166   if (attr == NULL)
14167     return NULL;
14168
14169   /* Find the type DIE.  */
14170   struct die_info *type_die = NULL;
14171   struct dwarf2_cu *type_cu = cu;
14172
14173   if (attr_form_is_ref (attr))
14174     type_die = follow_die_ref (die, attr, &type_cu);
14175   if (type_die == NULL)
14176     return NULL;
14177
14178   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14179     return NULL;
14180   return die_containing_type (type_die, type_cu);
14181 }
14182
14183 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14184
14185 static void
14186 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14187 {
14188   struct rust_vtable_symbol *storage = NULL;
14189
14190   if (cu->language == language_rust)
14191     {
14192       struct type *containing_type = rust_containing_type (die, cu);
14193
14194       if (containing_type != NULL)
14195         {
14196           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14197
14198           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14199                                     struct rust_vtable_symbol);
14200           initialize_objfile_symbol (storage);
14201           storage->concrete_type = containing_type;
14202           storage->subclass = SYMBOL_RUST_VTABLE;
14203         }
14204     }
14205
14206   new_symbol (die, NULL, cu, storage);
14207 }
14208
14209 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14210    reading .debug_rnglists.
14211    Callback's type should be:
14212     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14213    Return true if the attributes are present and valid, otherwise,
14214    return false.  */
14215
14216 template <typename Callback>
14217 static bool
14218 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14219                          Callback &&callback)
14220 {
14221   struct dwarf2_per_objfile *dwarf2_per_objfile
14222     = cu->per_cu->dwarf2_per_objfile;
14223   struct objfile *objfile = dwarf2_per_objfile->objfile;
14224   bfd *obfd = objfile->obfd;
14225   /* Base address selection entry.  */
14226   CORE_ADDR base;
14227   int found_base;
14228   const gdb_byte *buffer;
14229   CORE_ADDR baseaddr;
14230   bool overflow = false;
14231
14232   found_base = cu->base_known;
14233   base = cu->base_address;
14234
14235   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14236   if (offset >= dwarf2_per_objfile->rnglists.size)
14237     {
14238       complaint (&symfile_complaints,
14239                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14240                  offset);
14241       return false;
14242     }
14243   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14244
14245   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14246
14247   while (1)
14248     {
14249       /* Initialize it due to a false compiler warning.  */
14250       CORE_ADDR range_beginning = 0, range_end = 0;
14251       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14252                                  + dwarf2_per_objfile->rnglists.size);
14253       unsigned int bytes_read;
14254
14255       if (buffer == buf_end)
14256         {
14257           overflow = true;
14258           break;
14259         }
14260       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14261       switch (rlet)
14262         {
14263         case DW_RLE_end_of_list:
14264           break;
14265         case DW_RLE_base_address:
14266           if (buffer + cu->header.addr_size > buf_end)
14267             {
14268               overflow = true;
14269               break;
14270             }
14271           base = read_address (obfd, buffer, cu, &bytes_read);
14272           found_base = 1;
14273           buffer += bytes_read;
14274           break;
14275         case DW_RLE_start_length:
14276           if (buffer + cu->header.addr_size > buf_end)
14277             {
14278               overflow = true;
14279               break;
14280             }
14281           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14282           buffer += bytes_read;
14283           range_end = (range_beginning
14284                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14285           buffer += bytes_read;
14286           if (buffer > buf_end)
14287             {
14288               overflow = true;
14289               break;
14290             }
14291           break;
14292         case DW_RLE_offset_pair:
14293           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14294           buffer += bytes_read;
14295           if (buffer > buf_end)
14296             {
14297               overflow = true;
14298               break;
14299             }
14300           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14301           buffer += bytes_read;
14302           if (buffer > buf_end)
14303             {
14304               overflow = true;
14305               break;
14306             }
14307           break;
14308         case DW_RLE_start_end:
14309           if (buffer + 2 * cu->header.addr_size > buf_end)
14310             {
14311               overflow = true;
14312               break;
14313             }
14314           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14315           buffer += bytes_read;
14316           range_end = read_address (obfd, buffer, cu, &bytes_read);
14317           buffer += bytes_read;
14318           break;
14319         default:
14320           complaint (&symfile_complaints,
14321                      _("Invalid .debug_rnglists data (no base address)"));
14322           return false;
14323         }
14324       if (rlet == DW_RLE_end_of_list || overflow)
14325         break;
14326       if (rlet == DW_RLE_base_address)
14327         continue;
14328
14329       if (!found_base)
14330         {
14331           /* We have no valid base address for the ranges
14332              data.  */
14333           complaint (&symfile_complaints,
14334                      _("Invalid .debug_rnglists data (no base address)"));
14335           return false;
14336         }
14337
14338       if (range_beginning > range_end)
14339         {
14340           /* Inverted range entries are invalid.  */
14341           complaint (&symfile_complaints,
14342                      _("Invalid .debug_rnglists data (inverted range)"));
14343           return false;
14344         }
14345
14346       /* Empty range entries have no effect.  */
14347       if (range_beginning == range_end)
14348         continue;
14349
14350       range_beginning += base;
14351       range_end += base;
14352
14353       /* A not-uncommon case of bad debug info.
14354          Don't pollute the addrmap with bad data.  */
14355       if (range_beginning + baseaddr == 0
14356           && !dwarf2_per_objfile->has_section_at_zero)
14357         {
14358           complaint (&symfile_complaints,
14359                      _(".debug_rnglists entry has start address of zero"
14360                        " [in module %s]"), objfile_name (objfile));
14361           continue;
14362         }
14363
14364       callback (range_beginning, range_end);
14365     }
14366
14367   if (overflow)
14368     {
14369       complaint (&symfile_complaints,
14370                  _("Offset %d is not terminated "
14371                    "for DW_AT_ranges attribute"),
14372                  offset);
14373       return false;
14374     }
14375
14376   return true;
14377 }
14378
14379 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14380    Callback's type should be:
14381     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14382    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14383
14384 template <typename Callback>
14385 static int
14386 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14387                        Callback &&callback)
14388 {
14389   struct dwarf2_per_objfile *dwarf2_per_objfile
14390       = cu->per_cu->dwarf2_per_objfile;
14391   struct objfile *objfile = dwarf2_per_objfile->objfile;
14392   struct comp_unit_head *cu_header = &cu->header;
14393   bfd *obfd = objfile->obfd;
14394   unsigned int addr_size = cu_header->addr_size;
14395   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14396   /* Base address selection entry.  */
14397   CORE_ADDR base;
14398   int found_base;
14399   unsigned int dummy;
14400   const gdb_byte *buffer;
14401   CORE_ADDR baseaddr;
14402
14403   if (cu_header->version >= 5)
14404     return dwarf2_rnglists_process (offset, cu, callback);
14405
14406   found_base = cu->base_known;
14407   base = cu->base_address;
14408
14409   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14410   if (offset >= dwarf2_per_objfile->ranges.size)
14411     {
14412       complaint (&symfile_complaints,
14413                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14414                  offset);
14415       return 0;
14416     }
14417   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14418
14419   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14420
14421   while (1)
14422     {
14423       CORE_ADDR range_beginning, range_end;
14424
14425       range_beginning = read_address (obfd, buffer, cu, &dummy);
14426       buffer += addr_size;
14427       range_end = read_address (obfd, buffer, cu, &dummy);
14428       buffer += addr_size;
14429       offset += 2 * addr_size;
14430
14431       /* An end of list marker is a pair of zero addresses.  */
14432       if (range_beginning == 0 && range_end == 0)
14433         /* Found the end of list entry.  */
14434         break;
14435
14436       /* Each base address selection entry is a pair of 2 values.
14437          The first is the largest possible address, the second is
14438          the base address.  Check for a base address here.  */
14439       if ((range_beginning & mask) == mask)
14440         {
14441           /* If we found the largest possible address, then we already
14442              have the base address in range_end.  */
14443           base = range_end;
14444           found_base = 1;
14445           continue;
14446         }
14447
14448       if (!found_base)
14449         {
14450           /* We have no valid base address for the ranges
14451              data.  */
14452           complaint (&symfile_complaints,
14453                      _("Invalid .debug_ranges data (no base address)"));
14454           return 0;
14455         }
14456
14457       if (range_beginning > range_end)
14458         {
14459           /* Inverted range entries are invalid.  */
14460           complaint (&symfile_complaints,
14461                      _("Invalid .debug_ranges data (inverted range)"));
14462           return 0;
14463         }
14464
14465       /* Empty range entries have no effect.  */
14466       if (range_beginning == range_end)
14467         continue;
14468
14469       range_beginning += base;
14470       range_end += base;
14471
14472       /* A not-uncommon case of bad debug info.
14473          Don't pollute the addrmap with bad data.  */
14474       if (range_beginning + baseaddr == 0
14475           && !dwarf2_per_objfile->has_section_at_zero)
14476         {
14477           complaint (&symfile_complaints,
14478                      _(".debug_ranges entry has start address of zero"
14479                        " [in module %s]"), objfile_name (objfile));
14480           continue;
14481         }
14482
14483       callback (range_beginning, range_end);
14484     }
14485
14486   return 1;
14487 }
14488
14489 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14490    Return 1 if the attributes are present and valid, otherwise, return 0.
14491    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14492
14493 static int
14494 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14495                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14496                     struct partial_symtab *ranges_pst)
14497 {
14498   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14499   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14500   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14501                                        SECT_OFF_TEXT (objfile));
14502   int low_set = 0;
14503   CORE_ADDR low = 0;
14504   CORE_ADDR high = 0;
14505   int retval;
14506
14507   retval = dwarf2_ranges_process (offset, cu,
14508     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14509     {
14510       if (ranges_pst != NULL)
14511         {
14512           CORE_ADDR lowpc;
14513           CORE_ADDR highpc;
14514
14515           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14516                                               range_beginning + baseaddr);
14517           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14518                                                range_end + baseaddr);
14519           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14520                              ranges_pst);
14521         }
14522
14523       /* FIXME: This is recording everything as a low-high
14524          segment of consecutive addresses.  We should have a
14525          data structure for discontiguous block ranges
14526          instead.  */
14527       if (! low_set)
14528         {
14529           low = range_beginning;
14530           high = range_end;
14531           low_set = 1;
14532         }
14533       else
14534         {
14535           if (range_beginning < low)
14536             low = range_beginning;
14537           if (range_end > high)
14538             high = range_end;
14539         }
14540     });
14541   if (!retval)
14542     return 0;
14543
14544   if (! low_set)
14545     /* If the first entry is an end-of-list marker, the range
14546        describes an empty scope, i.e. no instructions.  */
14547     return 0;
14548
14549   if (low_return)
14550     *low_return = low;
14551   if (high_return)
14552     *high_return = high;
14553   return 1;
14554 }
14555
14556 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14557    definition for the return value.  *LOWPC and *HIGHPC are set iff
14558    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14559
14560 static enum pc_bounds_kind
14561 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14562                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14563                       struct partial_symtab *pst)
14564 {
14565   struct dwarf2_per_objfile *dwarf2_per_objfile
14566     = cu->per_cu->dwarf2_per_objfile;
14567   struct attribute *attr;
14568   struct attribute *attr_high;
14569   CORE_ADDR low = 0;
14570   CORE_ADDR high = 0;
14571   enum pc_bounds_kind ret;
14572
14573   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14574   if (attr_high)
14575     {
14576       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14577       if (attr)
14578         {
14579           low = attr_value_as_address (attr);
14580           high = attr_value_as_address (attr_high);
14581           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14582             high += low;
14583         }
14584       else
14585         /* Found high w/o low attribute.  */
14586         return PC_BOUNDS_INVALID;
14587
14588       /* Found consecutive range of addresses.  */
14589       ret = PC_BOUNDS_HIGH_LOW;
14590     }
14591   else
14592     {
14593       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14594       if (attr != NULL)
14595         {
14596           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14597              We take advantage of the fact that DW_AT_ranges does not appear
14598              in DW_TAG_compile_unit of DWO files.  */
14599           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14600           unsigned int ranges_offset = (DW_UNSND (attr)
14601                                         + (need_ranges_base
14602                                            ? cu->ranges_base
14603                                            : 0));
14604
14605           /* Value of the DW_AT_ranges attribute is the offset in the
14606              .debug_ranges section.  */
14607           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14608             return PC_BOUNDS_INVALID;
14609           /* Found discontinuous range of addresses.  */
14610           ret = PC_BOUNDS_RANGES;
14611         }
14612       else
14613         return PC_BOUNDS_NOT_PRESENT;
14614     }
14615
14616   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14617   if (high <= low)
14618     return PC_BOUNDS_INVALID;
14619
14620   /* When using the GNU linker, .gnu.linkonce. sections are used to
14621      eliminate duplicate copies of functions and vtables and such.
14622      The linker will arbitrarily choose one and discard the others.
14623      The AT_*_pc values for such functions refer to local labels in
14624      these sections.  If the section from that file was discarded, the
14625      labels are not in the output, so the relocs get a value of 0.
14626      If this is a discarded function, mark the pc bounds as invalid,
14627      so that GDB will ignore it.  */
14628   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14629     return PC_BOUNDS_INVALID;
14630
14631   *lowpc = low;
14632   if (highpc)
14633     *highpc = high;
14634   return ret;
14635 }
14636
14637 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14638    its low and high PC addresses.  Do nothing if these addresses could not
14639    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14640    and HIGHPC to the high address if greater than HIGHPC.  */
14641
14642 static void
14643 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14644                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14645                                  struct dwarf2_cu *cu)
14646 {
14647   CORE_ADDR low, high;
14648   struct die_info *child = die->child;
14649
14650   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14651     {
14652       *lowpc = std::min (*lowpc, low);
14653       *highpc = std::max (*highpc, high);
14654     }
14655
14656   /* If the language does not allow nested subprograms (either inside
14657      subprograms or lexical blocks), we're done.  */
14658   if (cu->language != language_ada)
14659     return;
14660
14661   /* Check all the children of the given DIE.  If it contains nested
14662      subprograms, then check their pc bounds.  Likewise, we need to
14663      check lexical blocks as well, as they may also contain subprogram
14664      definitions.  */
14665   while (child && child->tag)
14666     {
14667       if (child->tag == DW_TAG_subprogram
14668           || child->tag == DW_TAG_lexical_block)
14669         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14670       child = sibling_die (child);
14671     }
14672 }
14673
14674 /* Get the low and high pc's represented by the scope DIE, and store
14675    them in *LOWPC and *HIGHPC.  If the correct values can't be
14676    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14677
14678 static void
14679 get_scope_pc_bounds (struct die_info *die,
14680                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14681                      struct dwarf2_cu *cu)
14682 {
14683   CORE_ADDR best_low = (CORE_ADDR) -1;
14684   CORE_ADDR best_high = (CORE_ADDR) 0;
14685   CORE_ADDR current_low, current_high;
14686
14687   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14688       >= PC_BOUNDS_RANGES)
14689     {
14690       best_low = current_low;
14691       best_high = current_high;
14692     }
14693   else
14694     {
14695       struct die_info *child = die->child;
14696
14697       while (child && child->tag)
14698         {
14699           switch (child->tag) {
14700           case DW_TAG_subprogram:
14701             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14702             break;
14703           case DW_TAG_namespace:
14704           case DW_TAG_module:
14705             /* FIXME: carlton/2004-01-16: Should we do this for
14706                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14707                that current GCC's always emit the DIEs corresponding
14708                to definitions of methods of classes as children of a
14709                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14710                the DIEs giving the declarations, which could be
14711                anywhere).  But I don't see any reason why the
14712                standards says that they have to be there.  */
14713             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14714
14715             if (current_low != ((CORE_ADDR) -1))
14716               {
14717                 best_low = std::min (best_low, current_low);
14718                 best_high = std::max (best_high, current_high);
14719               }
14720             break;
14721           default:
14722             /* Ignore.  */
14723             break;
14724           }
14725
14726           child = sibling_die (child);
14727         }
14728     }
14729
14730   *lowpc = best_low;
14731   *highpc = best_high;
14732 }
14733
14734 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14735    in DIE.  */
14736
14737 static void
14738 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14739                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14740 {
14741   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14742   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14743   struct attribute *attr;
14744   struct attribute *attr_high;
14745
14746   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14747   if (attr_high)
14748     {
14749       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14750       if (attr)
14751         {
14752           CORE_ADDR low = attr_value_as_address (attr);
14753           CORE_ADDR high = attr_value_as_address (attr_high);
14754
14755           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14756             high += low;
14757
14758           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14759           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14760           record_block_range (block, low, high - 1);
14761         }
14762     }
14763
14764   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14765   if (attr)
14766     {
14767       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14768          We take advantage of the fact that DW_AT_ranges does not appear
14769          in DW_TAG_compile_unit of DWO files.  */
14770       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14771
14772       /* The value of the DW_AT_ranges attribute is the offset of the
14773          address range list in the .debug_ranges section.  */
14774       unsigned long offset = (DW_UNSND (attr)
14775                               + (need_ranges_base ? cu->ranges_base : 0));
14776
14777       dwarf2_ranges_process (offset, cu,
14778         [&] (CORE_ADDR start, CORE_ADDR end)
14779         {
14780           start += baseaddr;
14781           end += baseaddr;
14782           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14783           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14784           record_block_range (block, start, end - 1);
14785         });
14786     }
14787 }
14788
14789 /* Check whether the producer field indicates either of GCC < 4.6, or the
14790    Intel C/C++ compiler, and cache the result in CU.  */
14791
14792 static void
14793 check_producer (struct dwarf2_cu *cu)
14794 {
14795   int major, minor;
14796
14797   if (cu->producer == NULL)
14798     {
14799       /* For unknown compilers expect their behavior is DWARF version
14800          compliant.
14801
14802          GCC started to support .debug_types sections by -gdwarf-4 since
14803          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14804          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14805          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14806          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14807     }
14808   else if (producer_is_gcc (cu->producer, &major, &minor))
14809     {
14810       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14811       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14812     }
14813   else if (producer_is_icc (cu->producer, &major, &minor))
14814     cu->producer_is_icc_lt_14 = major < 14;
14815   else
14816     {
14817       /* For other non-GCC compilers, expect their behavior is DWARF version
14818          compliant.  */
14819     }
14820
14821   cu->checked_producer = 1;
14822 }
14823
14824 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14825    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14826    during 4.6.0 experimental.  */
14827
14828 static int
14829 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14830 {
14831   if (!cu->checked_producer)
14832     check_producer (cu);
14833
14834   return cu->producer_is_gxx_lt_4_6;
14835 }
14836
14837 /* Return the default accessibility type if it is not overriden by
14838    DW_AT_accessibility.  */
14839
14840 static enum dwarf_access_attribute
14841 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14842 {
14843   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14844     {
14845       /* The default DWARF 2 accessibility for members is public, the default
14846          accessibility for inheritance is private.  */
14847
14848       if (die->tag != DW_TAG_inheritance)
14849         return DW_ACCESS_public;
14850       else
14851         return DW_ACCESS_private;
14852     }
14853   else
14854     {
14855       /* DWARF 3+ defines the default accessibility a different way.  The same
14856          rules apply now for DW_TAG_inheritance as for the members and it only
14857          depends on the container kind.  */
14858
14859       if (die->parent->tag == DW_TAG_class_type)
14860         return DW_ACCESS_private;
14861       else
14862         return DW_ACCESS_public;
14863     }
14864 }
14865
14866 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14867    offset.  If the attribute was not found return 0, otherwise return
14868    1.  If it was found but could not properly be handled, set *OFFSET
14869    to 0.  */
14870
14871 static int
14872 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14873                              LONGEST *offset)
14874 {
14875   struct attribute *attr;
14876
14877   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14878   if (attr != NULL)
14879     {
14880       *offset = 0;
14881
14882       /* Note that we do not check for a section offset first here.
14883          This is because DW_AT_data_member_location is new in DWARF 4,
14884          so if we see it, we can assume that a constant form is really
14885          a constant and not a section offset.  */
14886       if (attr_form_is_constant (attr))
14887         *offset = dwarf2_get_attr_constant_value (attr, 0);
14888       else if (attr_form_is_section_offset (attr))
14889         dwarf2_complex_location_expr_complaint ();
14890       else if (attr_form_is_block (attr))
14891         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14892       else
14893         dwarf2_complex_location_expr_complaint ();
14894
14895       return 1;
14896     }
14897
14898   return 0;
14899 }
14900
14901 /* Add an aggregate field to the field list.  */
14902
14903 static void
14904 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14905                   struct dwarf2_cu *cu)
14906 {
14907   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14908   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14909   struct nextfield *new_field;
14910   struct attribute *attr;
14911   struct field *fp;
14912   const char *fieldname = "";
14913
14914   if (die->tag == DW_TAG_inheritance)
14915     {
14916       fip->baseclasses.emplace_back ();
14917       new_field = &fip->baseclasses.back ();
14918     }
14919   else
14920     {
14921       fip->fields.emplace_back ();
14922       new_field = &fip->fields.back ();
14923     }
14924
14925   fip->nfields++;
14926
14927   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14928   if (attr)
14929     new_field->accessibility = DW_UNSND (attr);
14930   else
14931     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
14932   if (new_field->accessibility != DW_ACCESS_public)
14933     fip->non_public_fields = 1;
14934
14935   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
14936   if (attr)
14937     new_field->virtuality = DW_UNSND (attr);
14938   else
14939     new_field->virtuality = DW_VIRTUALITY_none;
14940
14941   fp = &new_field->field;
14942
14943   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
14944     {
14945       LONGEST offset;
14946
14947       /* Data member other than a C++ static data member.  */
14948
14949       /* Get type of field.  */
14950       fp->type = die_type (die, cu);
14951
14952       SET_FIELD_BITPOS (*fp, 0);
14953
14954       /* Get bit size of field (zero if none).  */
14955       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
14956       if (attr)
14957         {
14958           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
14959         }
14960       else
14961         {
14962           FIELD_BITSIZE (*fp) = 0;
14963         }
14964
14965       /* Get bit offset of field.  */
14966       if (handle_data_member_location (die, cu, &offset))
14967         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
14968       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
14969       if (attr)
14970         {
14971           if (gdbarch_bits_big_endian (gdbarch))
14972             {
14973               /* For big endian bits, the DW_AT_bit_offset gives the
14974                  additional bit offset from the MSB of the containing
14975                  anonymous object to the MSB of the field.  We don't
14976                  have to do anything special since we don't need to
14977                  know the size of the anonymous object.  */
14978               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
14979             }
14980           else
14981             {
14982               /* For little endian bits, compute the bit offset to the
14983                  MSB of the anonymous object, subtract off the number of
14984                  bits from the MSB of the field to the MSB of the
14985                  object, and then subtract off the number of bits of
14986                  the field itself.  The result is the bit offset of
14987                  the LSB of the field.  */
14988               int anonymous_size;
14989               int bit_offset = DW_UNSND (attr);
14990
14991               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14992               if (attr)
14993                 {
14994                   /* The size of the anonymous object containing
14995                      the bit field is explicit, so use the
14996                      indicated size (in bytes).  */
14997                   anonymous_size = DW_UNSND (attr);
14998                 }
14999               else
15000                 {
15001                   /* The size of the anonymous object containing
15002                      the bit field must be inferred from the type
15003                      attribute of the data member containing the
15004                      bit field.  */
15005                   anonymous_size = TYPE_LENGTH (fp->type);
15006                 }
15007               SET_FIELD_BITPOS (*fp,
15008                                 (FIELD_BITPOS (*fp)
15009                                  + anonymous_size * bits_per_byte
15010                                  - bit_offset - FIELD_BITSIZE (*fp)));
15011             }
15012         }
15013       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15014       if (attr != NULL)
15015         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15016                                 + dwarf2_get_attr_constant_value (attr, 0)));
15017
15018       /* Get name of field.  */
15019       fieldname = dwarf2_name (die, cu);
15020       if (fieldname == NULL)
15021         fieldname = "";
15022
15023       /* The name is already allocated along with this objfile, so we don't
15024          need to duplicate it for the type.  */
15025       fp->name = fieldname;
15026
15027       /* Change accessibility for artificial fields (e.g. virtual table
15028          pointer or virtual base class pointer) to private.  */
15029       if (dwarf2_attr (die, DW_AT_artificial, cu))
15030         {
15031           FIELD_ARTIFICIAL (*fp) = 1;
15032           new_field->accessibility = DW_ACCESS_private;
15033           fip->non_public_fields = 1;
15034         }
15035     }
15036   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15037     {
15038       /* C++ static member.  */
15039
15040       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15041          is a declaration, but all versions of G++ as of this writing
15042          (so through at least 3.2.1) incorrectly generate
15043          DW_TAG_variable tags.  */
15044
15045       const char *physname;
15046
15047       /* Get name of field.  */
15048       fieldname = dwarf2_name (die, cu);
15049       if (fieldname == NULL)
15050         return;
15051
15052       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15053       if (attr
15054           /* Only create a symbol if this is an external value.
15055              new_symbol checks this and puts the value in the global symbol
15056              table, which we want.  If it is not external, new_symbol
15057              will try to put the value in cu->list_in_scope which is wrong.  */
15058           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15059         {
15060           /* A static const member, not much different than an enum as far as
15061              we're concerned, except that we can support more types.  */
15062           new_symbol (die, NULL, cu);
15063         }
15064
15065       /* Get physical name.  */
15066       physname = dwarf2_physname (fieldname, die, cu);
15067
15068       /* The name is already allocated along with this objfile, so we don't
15069          need to duplicate it for the type.  */
15070       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15071       FIELD_TYPE (*fp) = die_type (die, cu);
15072       FIELD_NAME (*fp) = fieldname;
15073     }
15074   else if (die->tag == DW_TAG_inheritance)
15075     {
15076       LONGEST offset;
15077
15078       /* C++ base class field.  */
15079       if (handle_data_member_location (die, cu, &offset))
15080         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15081       FIELD_BITSIZE (*fp) = 0;
15082       FIELD_TYPE (*fp) = die_type (die, cu);
15083       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
15084     }
15085   else if (die->tag == DW_TAG_variant_part)
15086     {
15087       /* process_structure_scope will treat this DIE as a union.  */
15088       process_structure_scope (die, cu);
15089
15090       /* The variant part is relative to the start of the enclosing
15091          structure.  */
15092       SET_FIELD_BITPOS (*fp, 0);
15093       fp->type = get_die_type (die, cu);
15094       fp->artificial = 1;
15095       fp->name = "<<variant>>";
15096     }
15097   else
15098     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15099 }
15100
15101 /* Can the type given by DIE define another type?  */
15102
15103 static bool
15104 type_can_define_types (const struct die_info *die)
15105 {
15106   switch (die->tag)
15107     {
15108     case DW_TAG_typedef:
15109     case DW_TAG_class_type:
15110     case DW_TAG_structure_type:
15111     case DW_TAG_union_type:
15112     case DW_TAG_enumeration_type:
15113       return true;
15114
15115     default:
15116       return false;
15117     }
15118 }
15119
15120 /* Add a type definition defined in the scope of the FIP's class.  */
15121
15122 static void
15123 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15124                       struct dwarf2_cu *cu)
15125 {
15126   struct decl_field fp;
15127   memset (&fp, 0, sizeof (fp));
15128
15129   gdb_assert (type_can_define_types (die));
15130
15131   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15132   fp.name = dwarf2_name (die, cu);
15133   fp.type = read_type_die (die, cu);
15134
15135   /* Save accessibility.  */
15136   enum dwarf_access_attribute accessibility;
15137   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15138   if (attr != NULL)
15139     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15140   else
15141     accessibility = dwarf2_default_access_attribute (die, cu);
15142   switch (accessibility)
15143     {
15144     case DW_ACCESS_public:
15145       /* The assumed value if neither private nor protected.  */
15146       break;
15147     case DW_ACCESS_private:
15148       fp.is_private = 1;
15149       break;
15150     case DW_ACCESS_protected:
15151       fp.is_protected = 1;
15152       break;
15153     default:
15154       complaint (&symfile_complaints,
15155                  _("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15156     }
15157
15158   if (die->tag == DW_TAG_typedef)
15159     fip->typedef_field_list.push_back (fp);
15160   else
15161     fip->nested_types_list.push_back (fp);
15162 }
15163
15164 /* Create the vector of fields, and attach it to the type.  */
15165
15166 static void
15167 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15168                               struct dwarf2_cu *cu)
15169 {
15170   int nfields = fip->nfields;
15171
15172   /* Record the field count, allocate space for the array of fields,
15173      and create blank accessibility bitfields if necessary.  */
15174   TYPE_NFIELDS (type) = nfields;
15175   TYPE_FIELDS (type) = (struct field *)
15176     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15177
15178   if (fip->non_public_fields && cu->language != language_ada)
15179     {
15180       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15181
15182       TYPE_FIELD_PRIVATE_BITS (type) =
15183         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15184       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15185
15186       TYPE_FIELD_PROTECTED_BITS (type) =
15187         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15188       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15189
15190       TYPE_FIELD_IGNORE_BITS (type) =
15191         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15192       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15193     }
15194
15195   /* If the type has baseclasses, allocate and clear a bit vector for
15196      TYPE_FIELD_VIRTUAL_BITS.  */
15197   if (!fip->baseclasses.empty () && cu->language != language_ada)
15198     {
15199       int num_bytes = B_BYTES (fip->baseclasses.size ());
15200       unsigned char *pointer;
15201
15202       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15203       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15204       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15205       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15206       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15207     }
15208
15209   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15210     {
15211       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15212
15213       for (int index = 0; index < nfields; ++index)
15214         {
15215           struct nextfield &field = fip->fields[index];
15216
15217           if (field.variant.is_discriminant)
15218             di->discriminant_index = index;
15219           else if (field.variant.default_branch)
15220             di->default_index = index;
15221           else
15222             di->discriminants[index] = field.variant.discriminant_value;
15223         }
15224     }
15225
15226   /* Copy the saved-up fields into the field vector.  */
15227   for (int i = 0; i < nfields; ++i)
15228     {
15229       struct nextfield &field
15230         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15231            : fip->fields[i - fip->baseclasses.size ()]);
15232
15233       TYPE_FIELD (type, i) = field.field;
15234       switch (field.accessibility)
15235         {
15236         case DW_ACCESS_private:
15237           if (cu->language != language_ada)
15238             SET_TYPE_FIELD_PRIVATE (type, i);
15239           break;
15240
15241         case DW_ACCESS_protected:
15242           if (cu->language != language_ada)
15243             SET_TYPE_FIELD_PROTECTED (type, i);
15244           break;
15245
15246         case DW_ACCESS_public:
15247           break;
15248
15249         default:
15250           /* Unknown accessibility.  Complain and treat it as public.  */
15251           {
15252             complaint (&symfile_complaints, _("unsupported accessibility %d"),
15253                        field.accessibility);
15254           }
15255           break;
15256         }
15257       if (i < fip->baseclasses.size ())
15258         {
15259           switch (field.virtuality)
15260             {
15261             case DW_VIRTUALITY_virtual:
15262             case DW_VIRTUALITY_pure_virtual:
15263               if (cu->language == language_ada)
15264                 error (_("unexpected virtuality in component of Ada type"));
15265               SET_TYPE_FIELD_VIRTUAL (type, i);
15266               break;
15267             }
15268         }
15269     }
15270 }
15271
15272 /* Return true if this member function is a constructor, false
15273    otherwise.  */
15274
15275 static int
15276 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15277 {
15278   const char *fieldname;
15279   const char *type_name;
15280   int len;
15281
15282   if (die->parent == NULL)
15283     return 0;
15284
15285   if (die->parent->tag != DW_TAG_structure_type
15286       && die->parent->tag != DW_TAG_union_type
15287       && die->parent->tag != DW_TAG_class_type)
15288     return 0;
15289
15290   fieldname = dwarf2_name (die, cu);
15291   type_name = dwarf2_name (die->parent, cu);
15292   if (fieldname == NULL || type_name == NULL)
15293     return 0;
15294
15295   len = strlen (fieldname);
15296   return (strncmp (fieldname, type_name, len) == 0
15297           && (type_name[len] == '\0' || type_name[len] == '<'));
15298 }
15299
15300 /* Add a member function to the proper fieldlist.  */
15301
15302 static void
15303 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15304                       struct type *type, struct dwarf2_cu *cu)
15305 {
15306   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15307   struct attribute *attr;
15308   int i;
15309   struct fnfieldlist *flp = nullptr;
15310   struct fn_field *fnp;
15311   const char *fieldname;
15312   struct type *this_type;
15313   enum dwarf_access_attribute accessibility;
15314
15315   if (cu->language == language_ada)
15316     error (_("unexpected member function in Ada type"));
15317
15318   /* Get name of member function.  */
15319   fieldname = dwarf2_name (die, cu);
15320   if (fieldname == NULL)
15321     return;
15322
15323   /* Look up member function name in fieldlist.  */
15324   for (i = 0; i < fip->fnfieldlists.size (); i++)
15325     {
15326       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15327         {
15328           flp = &fip->fnfieldlists[i];
15329           break;
15330         }
15331     }
15332
15333   /* Create a new fnfieldlist if necessary.  */
15334   if (flp == nullptr)
15335     {
15336       fip->fnfieldlists.emplace_back ();
15337       flp = &fip->fnfieldlists.back ();
15338       flp->name = fieldname;
15339       i = fip->fnfieldlists.size () - 1;
15340     }
15341
15342   /* Create a new member function field and add it to the vector of
15343      fnfieldlists.  */
15344   flp->fnfields.emplace_back ();
15345   fnp = &flp->fnfields.back ();
15346
15347   /* Delay processing of the physname until later.  */
15348   if (cu->language == language_cplus)
15349     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15350                         die, cu);
15351   else
15352     {
15353       const char *physname = dwarf2_physname (fieldname, die, cu);
15354       fnp->physname = physname ? physname : "";
15355     }
15356
15357   fnp->type = alloc_type (objfile);
15358   this_type = read_type_die (die, cu);
15359   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15360     {
15361       int nparams = TYPE_NFIELDS (this_type);
15362
15363       /* TYPE is the domain of this method, and THIS_TYPE is the type
15364            of the method itself (TYPE_CODE_METHOD).  */
15365       smash_to_method_type (fnp->type, type,
15366                             TYPE_TARGET_TYPE (this_type),
15367                             TYPE_FIELDS (this_type),
15368                             TYPE_NFIELDS (this_type),
15369                             TYPE_VARARGS (this_type));
15370
15371       /* Handle static member functions.
15372          Dwarf2 has no clean way to discern C++ static and non-static
15373          member functions.  G++ helps GDB by marking the first
15374          parameter for non-static member functions (which is the this
15375          pointer) as artificial.  We obtain this information from
15376          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15377       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15378         fnp->voffset = VOFFSET_STATIC;
15379     }
15380   else
15381     complaint (&symfile_complaints, _("member function type missing for '%s'"),
15382                dwarf2_full_name (fieldname, die, cu));
15383
15384   /* Get fcontext from DW_AT_containing_type if present.  */
15385   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15386     fnp->fcontext = die_containing_type (die, cu);
15387
15388   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15389      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15390
15391   /* Get accessibility.  */
15392   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15393   if (attr)
15394     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15395   else
15396     accessibility = dwarf2_default_access_attribute (die, cu);
15397   switch (accessibility)
15398     {
15399     case DW_ACCESS_private:
15400       fnp->is_private = 1;
15401       break;
15402     case DW_ACCESS_protected:
15403       fnp->is_protected = 1;
15404       break;
15405     }
15406
15407   /* Check for artificial methods.  */
15408   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15409   if (attr && DW_UNSND (attr) != 0)
15410     fnp->is_artificial = 1;
15411
15412   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15413
15414   /* Get index in virtual function table if it is a virtual member
15415      function.  For older versions of GCC, this is an offset in the
15416      appropriate virtual table, as specified by DW_AT_containing_type.
15417      For everyone else, it is an expression to be evaluated relative
15418      to the object address.  */
15419
15420   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15421   if (attr)
15422     {
15423       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15424         {
15425           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15426             {
15427               /* Old-style GCC.  */
15428               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15429             }
15430           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15431                    || (DW_BLOCK (attr)->size > 1
15432                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15433                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15434             {
15435               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15436               if ((fnp->voffset % cu->header.addr_size) != 0)
15437                 dwarf2_complex_location_expr_complaint ();
15438               else
15439                 fnp->voffset /= cu->header.addr_size;
15440               fnp->voffset += 2;
15441             }
15442           else
15443             dwarf2_complex_location_expr_complaint ();
15444
15445           if (!fnp->fcontext)
15446             {
15447               /* If there is no `this' field and no DW_AT_containing_type,
15448                  we cannot actually find a base class context for the
15449                  vtable!  */
15450               if (TYPE_NFIELDS (this_type) == 0
15451                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15452                 {
15453                   complaint (&symfile_complaints,
15454                              _("cannot determine context for virtual member "
15455                                "function \"%s\" (offset %s)"),
15456                              fieldname, sect_offset_str (die->sect_off));
15457                 }
15458               else
15459                 {
15460                   fnp->fcontext
15461                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15462                 }
15463             }
15464         }
15465       else if (attr_form_is_section_offset (attr))
15466         {
15467           dwarf2_complex_location_expr_complaint ();
15468         }
15469       else
15470         {
15471           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15472                                                  fieldname);
15473         }
15474     }
15475   else
15476     {
15477       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15478       if (attr && DW_UNSND (attr))
15479         {
15480           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15481           complaint (&symfile_complaints,
15482                      _("Member function \"%s\" (offset %s) is virtual "
15483                        "but the vtable offset is not specified"),
15484                      fieldname, sect_offset_str (die->sect_off));
15485           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15486           TYPE_CPLUS_DYNAMIC (type) = 1;
15487         }
15488     }
15489 }
15490
15491 /* Create the vector of member function fields, and attach it to the type.  */
15492
15493 static void
15494 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15495                                  struct dwarf2_cu *cu)
15496 {
15497   if (cu->language == language_ada)
15498     error (_("unexpected member functions in Ada type"));
15499
15500   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15501   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15502     TYPE_ALLOC (type,
15503                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15504
15505   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15506     {
15507       struct fnfieldlist &nf = fip->fnfieldlists[i];
15508       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15509
15510       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15511       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15512       fn_flp->fn_fields = (struct fn_field *)
15513         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15514
15515       for (int k = 0; k < nf.fnfields.size (); ++k)
15516         fn_flp->fn_fields[k] = nf.fnfields[k];
15517     }
15518
15519   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15520 }
15521
15522 /* Returns non-zero if NAME is the name of a vtable member in CU's
15523    language, zero otherwise.  */
15524 static int
15525 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15526 {
15527   static const char vptr[] = "_vptr";
15528
15529   /* Look for the C++ form of the vtable.  */
15530   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15531     return 1;
15532
15533   return 0;
15534 }
15535
15536 /* GCC outputs unnamed structures that are really pointers to member
15537    functions, with the ABI-specified layout.  If TYPE describes
15538    such a structure, smash it into a member function type.
15539
15540    GCC shouldn't do this; it should just output pointer to member DIEs.
15541    This is GCC PR debug/28767.  */
15542
15543 static void
15544 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15545 {
15546   struct type *pfn_type, *self_type, *new_type;
15547
15548   /* Check for a structure with no name and two children.  */
15549   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15550     return;
15551
15552   /* Check for __pfn and __delta members.  */
15553   if (TYPE_FIELD_NAME (type, 0) == NULL
15554       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15555       || TYPE_FIELD_NAME (type, 1) == NULL
15556       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15557     return;
15558
15559   /* Find the type of the method.  */
15560   pfn_type = TYPE_FIELD_TYPE (type, 0);
15561   if (pfn_type == NULL
15562       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15563       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15564     return;
15565
15566   /* Look for the "this" argument.  */
15567   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15568   if (TYPE_NFIELDS (pfn_type) == 0
15569       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15570       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15571     return;
15572
15573   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15574   new_type = alloc_type (objfile);
15575   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15576                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15577                         TYPE_VARARGS (pfn_type));
15578   smash_to_methodptr_type (type, new_type);
15579 }
15580
15581
15582 /* Called when we find the DIE that starts a structure or union scope
15583    (definition) to create a type for the structure or union.  Fill in
15584    the type's name and general properties; the members will not be
15585    processed until process_structure_scope.  A symbol table entry for
15586    the type will also not be done until process_structure_scope (assuming
15587    the type has a name).
15588
15589    NOTE: we need to call these functions regardless of whether or not the
15590    DIE has a DW_AT_name attribute, since it might be an anonymous
15591    structure or union.  This gets the type entered into our set of
15592    user defined types.  */
15593
15594 static struct type *
15595 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15596 {
15597   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15598   struct type *type;
15599   struct attribute *attr;
15600   const char *name;
15601
15602   /* If the definition of this type lives in .debug_types, read that type.
15603      Don't follow DW_AT_specification though, that will take us back up
15604      the chain and we want to go down.  */
15605   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15606   if (attr)
15607     {
15608       type = get_DW_AT_signature_type (die, attr, cu);
15609
15610       /* The type's CU may not be the same as CU.
15611          Ensure TYPE is recorded with CU in die_type_hash.  */
15612       return set_die_type (die, type, cu);
15613     }
15614
15615   type = alloc_type (objfile);
15616   INIT_CPLUS_SPECIFIC (type);
15617
15618   name = dwarf2_name (die, cu);
15619   if (name != NULL)
15620     {
15621       if (cu->language == language_cplus
15622           || cu->language == language_d
15623           || cu->language == language_rust)
15624         {
15625           const char *full_name = dwarf2_full_name (name, die, cu);
15626
15627           /* dwarf2_full_name might have already finished building the DIE's
15628              type.  If so, there is no need to continue.  */
15629           if (get_die_type (die, cu) != NULL)
15630             return get_die_type (die, cu);
15631
15632           TYPE_TAG_NAME (type) = full_name;
15633           if (die->tag == DW_TAG_structure_type
15634               || die->tag == DW_TAG_class_type)
15635             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15636         }
15637       else
15638         {
15639           /* The name is already allocated along with this objfile, so
15640              we don't need to duplicate it for the type.  */
15641           TYPE_TAG_NAME (type) = name;
15642           if (die->tag == DW_TAG_class_type)
15643             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15644         }
15645     }
15646
15647   if (die->tag == DW_TAG_structure_type)
15648     {
15649       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15650     }
15651   else if (die->tag == DW_TAG_union_type)
15652     {
15653       TYPE_CODE (type) = TYPE_CODE_UNION;
15654     }
15655   else if (die->tag == DW_TAG_variant_part)
15656     {
15657       TYPE_CODE (type) = TYPE_CODE_UNION;
15658       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15659     }
15660   else
15661     {
15662       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15663     }
15664
15665   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15666     TYPE_DECLARED_CLASS (type) = 1;
15667
15668   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15669   if (attr)
15670     {
15671       if (attr_form_is_constant (attr))
15672         TYPE_LENGTH (type) = DW_UNSND (attr);
15673       else
15674         {
15675           /* For the moment, dynamic type sizes are not supported
15676              by GDB's struct type.  The actual size is determined
15677              on-demand when resolving the type of a given object,
15678              so set the type's length to zero for now.  Otherwise,
15679              we record an expression as the length, and that expression
15680              could lead to a very large value, which could eventually
15681              lead to us trying to allocate that much memory when creating
15682              a value of that type.  */
15683           TYPE_LENGTH (type) = 0;
15684         }
15685     }
15686   else
15687     {
15688       TYPE_LENGTH (type) = 0;
15689     }
15690
15691   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15692     {
15693       /* ICC<14 does not output the required DW_AT_declaration on
15694          incomplete types, but gives them a size of zero.  */
15695       TYPE_STUB (type) = 1;
15696     }
15697   else
15698     TYPE_STUB_SUPPORTED (type) = 1;
15699
15700   if (die_is_declaration (die, cu))
15701     TYPE_STUB (type) = 1;
15702   else if (attr == NULL && die->child == NULL
15703            && producer_is_realview (cu->producer))
15704     /* RealView does not output the required DW_AT_declaration
15705        on incomplete types.  */
15706     TYPE_STUB (type) = 1;
15707
15708   /* We need to add the type field to the die immediately so we don't
15709      infinitely recurse when dealing with pointers to the structure
15710      type within the structure itself.  */
15711   set_die_type (die, type, cu);
15712
15713   /* set_die_type should be already done.  */
15714   set_descriptive_type (type, die, cu);
15715
15716   return type;
15717 }
15718
15719 /* A helper for process_structure_scope that handles a single member
15720    DIE.  */
15721
15722 static void
15723 handle_struct_member_die (struct die_info *child_die, struct type *type,
15724                           struct field_info *fi,
15725                           std::vector<struct symbol *> *template_args,
15726                           struct dwarf2_cu *cu)
15727 {
15728   if (child_die->tag == DW_TAG_member
15729       || child_die->tag == DW_TAG_variable
15730       || child_die->tag == DW_TAG_variant_part)
15731     {
15732       /* NOTE: carlton/2002-11-05: A C++ static data member
15733          should be a DW_TAG_member that is a declaration, but
15734          all versions of G++ as of this writing (so through at
15735          least 3.2.1) incorrectly generate DW_TAG_variable
15736          tags for them instead.  */
15737       dwarf2_add_field (fi, child_die, cu);
15738     }
15739   else if (child_die->tag == DW_TAG_subprogram)
15740     {
15741       /* Rust doesn't have member functions in the C++ sense.
15742          However, it does emit ordinary functions as children
15743          of a struct DIE.  */
15744       if (cu->language == language_rust)
15745         read_func_scope (child_die, cu);
15746       else
15747         {
15748           /* C++ member function.  */
15749           dwarf2_add_member_fn (fi, child_die, type, cu);
15750         }
15751     }
15752   else if (child_die->tag == DW_TAG_inheritance)
15753     {
15754       /* C++ base class field.  */
15755       dwarf2_add_field (fi, child_die, cu);
15756     }
15757   else if (type_can_define_types (child_die))
15758     dwarf2_add_type_defn (fi, child_die, cu);
15759   else if (child_die->tag == DW_TAG_template_type_param
15760            || child_die->tag == DW_TAG_template_value_param)
15761     {
15762       struct symbol *arg = new_symbol (child_die, NULL, cu);
15763
15764       if (arg != NULL)
15765         template_args->push_back (arg);
15766     }
15767   else if (child_die->tag == DW_TAG_variant)
15768     {
15769       /* In a variant we want to get the discriminant and also add a
15770          field for our sole member child.  */
15771       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15772
15773       for (struct die_info *variant_child = child_die->child;
15774            variant_child != NULL;
15775            variant_child = sibling_die (variant_child))
15776         {
15777           if (variant_child->tag == DW_TAG_member)
15778             {
15779               handle_struct_member_die (variant_child, type, fi,
15780                                         template_args, cu);
15781               /* Only handle the one.  */
15782               break;
15783             }
15784         }
15785
15786       /* We don't handle this but we might as well report it if we see
15787          it.  */
15788       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15789           complaint (&symfile_complaints,
15790                      _("DW_AT_discr_list is not supported yet"
15791                        " - DIE at %s [in module %s]"),
15792                      sect_offset_str (child_die->sect_off),
15793                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15794
15795       /* The first field was just added, so we can stash the
15796          discriminant there.  */
15797       gdb_assert (!fi->fields.empty ());
15798       if (discr == NULL)
15799         fi->fields.back ().variant.default_branch = true;
15800       else
15801         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15802     }
15803 }
15804
15805 /* Finish creating a structure or union type, including filling in
15806    its members and creating a symbol for it.  */
15807
15808 static void
15809 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15810 {
15811   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15812   struct die_info *child_die;
15813   struct type *type;
15814
15815   type = get_die_type (die, cu);
15816   if (type == NULL)
15817     type = read_structure_type (die, cu);
15818
15819   /* When reading a DW_TAG_variant_part, we need to notice when we
15820      read the discriminant member, so we can record it later in the
15821      discriminant_info.  */
15822   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15823   sect_offset discr_offset;
15824
15825   if (is_variant_part)
15826     {
15827       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15828       if (discr == NULL)
15829         {
15830           /* Maybe it's a univariant form, an extension we support.
15831              In this case arrange not to check the offset.  */
15832           is_variant_part = false;
15833         }
15834       else if (attr_form_is_ref (discr))
15835         {
15836           struct dwarf2_cu *target_cu = cu;
15837           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15838
15839           discr_offset = target_die->sect_off;
15840         }
15841       else
15842         {
15843           complaint (&symfile_complaints,
15844                      _("DW_AT_discr does not have DIE reference form"
15845                        " - DIE at %s [in module %s]"),
15846                      sect_offset_str (die->sect_off),
15847                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15848           is_variant_part = false;
15849         }
15850     }
15851
15852   if (die->child != NULL && ! die_is_declaration (die, cu))
15853     {
15854       struct field_info fi;
15855       std::vector<struct symbol *> template_args;
15856
15857       child_die = die->child;
15858
15859       while (child_die && child_die->tag)
15860         {
15861           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
15862
15863           if (is_variant_part && discr_offset == child_die->sect_off)
15864             fi.fields.back ().variant.is_discriminant = true;
15865
15866           child_die = sibling_die (child_die);
15867         }
15868
15869       /* Attach template arguments to type.  */
15870       if (!template_args.empty ())
15871         {
15872           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15873           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
15874           TYPE_TEMPLATE_ARGUMENTS (type)
15875             = XOBNEWVEC (&objfile->objfile_obstack,
15876                          struct symbol *,
15877                          TYPE_N_TEMPLATE_ARGUMENTS (type));
15878           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
15879                   template_args.data (),
15880                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
15881                    * sizeof (struct symbol *)));
15882         }
15883
15884       /* Attach fields and member functions to the type.  */
15885       if (fi.nfields)
15886         dwarf2_attach_fields_to_type (&fi, type, cu);
15887       if (!fi.fnfieldlists.empty ())
15888         {
15889           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
15890
15891           /* Get the type which refers to the base class (possibly this
15892              class itself) which contains the vtable pointer for the current
15893              class from the DW_AT_containing_type attribute.  This use of
15894              DW_AT_containing_type is a GNU extension.  */
15895
15896           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15897             {
15898               struct type *t = die_containing_type (die, cu);
15899
15900               set_type_vptr_basetype (type, t);
15901               if (type == t)
15902                 {
15903                   int i;
15904
15905                   /* Our own class provides vtbl ptr.  */
15906                   for (i = TYPE_NFIELDS (t) - 1;
15907                        i >= TYPE_N_BASECLASSES (t);
15908                        --i)
15909                     {
15910                       const char *fieldname = TYPE_FIELD_NAME (t, i);
15911
15912                       if (is_vtable_name (fieldname, cu))
15913                         {
15914                           set_type_vptr_fieldno (type, i);
15915                           break;
15916                         }
15917                     }
15918
15919                   /* Complain if virtual function table field not found.  */
15920                   if (i < TYPE_N_BASECLASSES (t))
15921                     complaint (&symfile_complaints,
15922                                _("virtual function table pointer "
15923                                  "not found when defining class '%s'"),
15924                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
15925                                "");
15926                 }
15927               else
15928                 {
15929                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
15930                 }
15931             }
15932           else if (cu->producer
15933                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
15934             {
15935               /* The IBM XLC compiler does not provide direct indication
15936                  of the containing type, but the vtable pointer is
15937                  always named __vfp.  */
15938
15939               int i;
15940
15941               for (i = TYPE_NFIELDS (type) - 1;
15942                    i >= TYPE_N_BASECLASSES (type);
15943                    --i)
15944                 {
15945                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
15946                     {
15947                       set_type_vptr_fieldno (type, i);
15948                       set_type_vptr_basetype (type, type);
15949                       break;
15950                     }
15951                 }
15952             }
15953         }
15954
15955       /* Copy fi.typedef_field_list linked list elements content into the
15956          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
15957       if (!fi.typedef_field_list.empty ())
15958         {
15959           int count = fi.typedef_field_list.size ();
15960
15961           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15962           TYPE_TYPEDEF_FIELD_ARRAY (type)
15963             = ((struct decl_field *)
15964                TYPE_ALLOC (type,
15965                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
15966           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
15967
15968           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
15969             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
15970         }
15971
15972       /* Copy fi.nested_types_list linked list elements content into the
15973          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
15974       if (!fi.nested_types_list.empty () && cu->language != language_ada)
15975         {
15976           int count = fi.nested_types_list.size ();
15977
15978           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15979           TYPE_NESTED_TYPES_ARRAY (type)
15980             = ((struct decl_field *)
15981                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
15982           TYPE_NESTED_TYPES_COUNT (type) = count;
15983
15984           for (int i = 0; i < fi.nested_types_list.size (); ++i)
15985             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
15986         }
15987     }
15988
15989   quirk_gcc_member_function_pointer (type, objfile);
15990   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
15991     cu->rust_unions.push_back (type);
15992
15993   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
15994      snapshots) has been known to create a die giving a declaration
15995      for a class that has, as a child, a die giving a definition for a
15996      nested class.  So we have to process our children even if the
15997      current die is a declaration.  Normally, of course, a declaration
15998      won't have any children at all.  */
15999
16000   child_die = die->child;
16001
16002   while (child_die != NULL && child_die->tag)
16003     {
16004       if (child_die->tag == DW_TAG_member
16005           || child_die->tag == DW_TAG_variable
16006           || child_die->tag == DW_TAG_inheritance
16007           || child_die->tag == DW_TAG_template_value_param
16008           || child_die->tag == DW_TAG_template_type_param)
16009         {
16010           /* Do nothing.  */
16011         }
16012       else
16013         process_die (child_die, cu);
16014
16015       child_die = sibling_die (child_die);
16016     }
16017
16018   /* Do not consider external references.  According to the DWARF standard,
16019      these DIEs are identified by the fact that they have no byte_size
16020      attribute, and a declaration attribute.  */
16021   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16022       || !die_is_declaration (die, cu))
16023     new_symbol (die, type, cu);
16024 }
16025
16026 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16027    update TYPE using some information only available in DIE's children.  */
16028
16029 static void
16030 update_enumeration_type_from_children (struct die_info *die,
16031                                        struct type *type,
16032                                        struct dwarf2_cu *cu)
16033 {
16034   struct die_info *child_die;
16035   int unsigned_enum = 1;
16036   int flag_enum = 1;
16037   ULONGEST mask = 0;
16038
16039   auto_obstack obstack;
16040
16041   for (child_die = die->child;
16042        child_die != NULL && child_die->tag;
16043        child_die = sibling_die (child_die))
16044     {
16045       struct attribute *attr;
16046       LONGEST value;
16047       const gdb_byte *bytes;
16048       struct dwarf2_locexpr_baton *baton;
16049       const char *name;
16050
16051       if (child_die->tag != DW_TAG_enumerator)
16052         continue;
16053
16054       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16055       if (attr == NULL)
16056         continue;
16057
16058       name = dwarf2_name (child_die, cu);
16059       if (name == NULL)
16060         name = "<anonymous enumerator>";
16061
16062       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16063                                &value, &bytes, &baton);
16064       if (value < 0)
16065         {
16066           unsigned_enum = 0;
16067           flag_enum = 0;
16068         }
16069       else if ((mask & value) != 0)
16070         flag_enum = 0;
16071       else
16072         mask |= value;
16073
16074       /* If we already know that the enum type is neither unsigned, nor
16075          a flag type, no need to look at the rest of the enumerates.  */
16076       if (!unsigned_enum && !flag_enum)
16077         break;
16078     }
16079
16080   if (unsigned_enum)
16081     TYPE_UNSIGNED (type) = 1;
16082   if (flag_enum)
16083     TYPE_FLAG_ENUM (type) = 1;
16084 }
16085
16086 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16087    complete the type's fields yet, or create any symbols.  */
16088
16089 static struct type *
16090 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16091 {
16092   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16093   struct type *type;
16094   struct attribute *attr;
16095   const char *name;
16096
16097   /* If the definition of this type lives in .debug_types, read that type.
16098      Don't follow DW_AT_specification though, that will take us back up
16099      the chain and we want to go down.  */
16100   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16101   if (attr)
16102     {
16103       type = get_DW_AT_signature_type (die, attr, cu);
16104
16105       /* The type's CU may not be the same as CU.
16106          Ensure TYPE is recorded with CU in die_type_hash.  */
16107       return set_die_type (die, type, cu);
16108     }
16109
16110   type = alloc_type (objfile);
16111
16112   TYPE_CODE (type) = TYPE_CODE_ENUM;
16113   name = dwarf2_full_name (NULL, die, cu);
16114   if (name != NULL)
16115     TYPE_TAG_NAME (type) = name;
16116
16117   attr = dwarf2_attr (die, DW_AT_type, cu);
16118   if (attr != NULL)
16119     {
16120       struct type *underlying_type = die_type (die, cu);
16121
16122       TYPE_TARGET_TYPE (type) = underlying_type;
16123     }
16124
16125   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16126   if (attr)
16127     {
16128       TYPE_LENGTH (type) = DW_UNSND (attr);
16129     }
16130   else
16131     {
16132       TYPE_LENGTH (type) = 0;
16133     }
16134
16135   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16136      declared as private in the package spec, and then defined only
16137      inside the package body.  Such types are known as Taft Amendment
16138      Types.  When another package uses such a type, an incomplete DIE
16139      may be generated by the compiler.  */
16140   if (die_is_declaration (die, cu))
16141     TYPE_STUB (type) = 1;
16142
16143   /* Finish the creation of this type by using the enum's children.
16144      We must call this even when the underlying type has been provided
16145      so that we can determine if we're looking at a "flag" enum.  */
16146   update_enumeration_type_from_children (die, type, cu);
16147
16148   /* If this type has an underlying type that is not a stub, then we
16149      may use its attributes.  We always use the "unsigned" attribute
16150      in this situation, because ordinarily we guess whether the type
16151      is unsigned -- but the guess can be wrong and the underlying type
16152      can tell us the reality.  However, we defer to a local size
16153      attribute if one exists, because this lets the compiler override
16154      the underlying type if needed.  */
16155   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16156     {
16157       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16158       if (TYPE_LENGTH (type) == 0)
16159         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16160     }
16161
16162   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16163
16164   return set_die_type (die, type, cu);
16165 }
16166
16167 /* Given a pointer to a die which begins an enumeration, process all
16168    the dies that define the members of the enumeration, and create the
16169    symbol for the enumeration type.
16170
16171    NOTE: We reverse the order of the element list.  */
16172
16173 static void
16174 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16175 {
16176   struct type *this_type;
16177
16178   this_type = get_die_type (die, cu);
16179   if (this_type == NULL)
16180     this_type = read_enumeration_type (die, cu);
16181
16182   if (die->child != NULL)
16183     {
16184       struct die_info *child_die;
16185       struct symbol *sym;
16186       struct field *fields = NULL;
16187       int num_fields = 0;
16188       const char *name;
16189
16190       child_die = die->child;
16191       while (child_die && child_die->tag)
16192         {
16193           if (child_die->tag != DW_TAG_enumerator)
16194             {
16195               process_die (child_die, cu);
16196             }
16197           else
16198             {
16199               name = dwarf2_name (child_die, cu);
16200               if (name)
16201                 {
16202                   sym = new_symbol (child_die, this_type, cu);
16203
16204                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16205                     {
16206                       fields = (struct field *)
16207                         xrealloc (fields,
16208                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16209                                   * sizeof (struct field));
16210                     }
16211
16212                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16213                   FIELD_TYPE (fields[num_fields]) = NULL;
16214                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16215                   FIELD_BITSIZE (fields[num_fields]) = 0;
16216
16217                   num_fields++;
16218                 }
16219             }
16220
16221           child_die = sibling_die (child_die);
16222         }
16223
16224       if (num_fields)
16225         {
16226           TYPE_NFIELDS (this_type) = num_fields;
16227           TYPE_FIELDS (this_type) = (struct field *)
16228             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16229           memcpy (TYPE_FIELDS (this_type), fields,
16230                   sizeof (struct field) * num_fields);
16231           xfree (fields);
16232         }
16233     }
16234
16235   /* If we are reading an enum from a .debug_types unit, and the enum
16236      is a declaration, and the enum is not the signatured type in the
16237      unit, then we do not want to add a symbol for it.  Adding a
16238      symbol would in some cases obscure the true definition of the
16239      enum, giving users an incomplete type when the definition is
16240      actually available.  Note that we do not want to do this for all
16241      enums which are just declarations, because C++0x allows forward
16242      enum declarations.  */
16243   if (cu->per_cu->is_debug_types
16244       && die_is_declaration (die, cu))
16245     {
16246       struct signatured_type *sig_type;
16247
16248       sig_type = (struct signatured_type *) cu->per_cu;
16249       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16250       if (sig_type->type_offset_in_section != die->sect_off)
16251         return;
16252     }
16253
16254   new_symbol (die, this_type, cu);
16255 }
16256
16257 /* Extract all information from a DW_TAG_array_type DIE and put it in
16258    the DIE's type field.  For now, this only handles one dimensional
16259    arrays.  */
16260
16261 static struct type *
16262 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16263 {
16264   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16265   struct die_info *child_die;
16266   struct type *type;
16267   struct type *element_type, *range_type, *index_type;
16268   struct attribute *attr;
16269   const char *name;
16270   struct dynamic_prop *byte_stride_prop = NULL;
16271   unsigned int bit_stride = 0;
16272
16273   element_type = die_type (die, cu);
16274
16275   /* The die_type call above may have already set the type for this DIE.  */
16276   type = get_die_type (die, cu);
16277   if (type)
16278     return type;
16279
16280   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16281   if (attr != NULL)
16282     {
16283       int stride_ok;
16284
16285       byte_stride_prop
16286         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16287       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16288       if (!stride_ok)
16289         {
16290           complaint (&symfile_complaints,
16291                      _("unable to read array DW_AT_byte_stride "
16292                        " - DIE at %s [in module %s]"),
16293                      sect_offset_str (die->sect_off),
16294                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16295           /* Ignore this attribute.  We will likely not be able to print
16296              arrays of this type correctly, but there is little we can do
16297              to help if we cannot read the attribute's value.  */
16298           byte_stride_prop = NULL;
16299         }
16300     }
16301
16302   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16303   if (attr != NULL)
16304     bit_stride = DW_UNSND (attr);
16305
16306   /* Irix 6.2 native cc creates array types without children for
16307      arrays with unspecified length.  */
16308   if (die->child == NULL)
16309     {
16310       index_type = objfile_type (objfile)->builtin_int;
16311       range_type = create_static_range_type (NULL, index_type, 0, -1);
16312       type = create_array_type_with_stride (NULL, element_type, range_type,
16313                                             byte_stride_prop, bit_stride);
16314       return set_die_type (die, type, cu);
16315     }
16316
16317   std::vector<struct type *> range_types;
16318   child_die = die->child;
16319   while (child_die && child_die->tag)
16320     {
16321       if (child_die->tag == DW_TAG_subrange_type)
16322         {
16323           struct type *child_type = read_type_die (child_die, cu);
16324
16325           if (child_type != NULL)
16326             {
16327               /* The range type was succesfully read.  Save it for the
16328                  array type creation.  */
16329               range_types.push_back (child_type);
16330             }
16331         }
16332       child_die = sibling_die (child_die);
16333     }
16334
16335   /* Dwarf2 dimensions are output from left to right, create the
16336      necessary array types in backwards order.  */
16337
16338   type = element_type;
16339
16340   if (read_array_order (die, cu) == DW_ORD_col_major)
16341     {
16342       int i = 0;
16343
16344       while (i < range_types.size ())
16345         type = create_array_type_with_stride (NULL, type, range_types[i++],
16346                                               byte_stride_prop, bit_stride);
16347     }
16348   else
16349     {
16350       size_t ndim = range_types.size ();
16351       while (ndim-- > 0)
16352         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16353                                               byte_stride_prop, bit_stride);
16354     }
16355
16356   /* Understand Dwarf2 support for vector types (like they occur on
16357      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16358      array type.  This is not part of the Dwarf2/3 standard yet, but a
16359      custom vendor extension.  The main difference between a regular
16360      array and the vector variant is that vectors are passed by value
16361      to functions.  */
16362   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16363   if (attr)
16364     make_vector_type (type);
16365
16366   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16367      implementation may choose to implement triple vectors using this
16368      attribute.  */
16369   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16370   if (attr)
16371     {
16372       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16373         TYPE_LENGTH (type) = DW_UNSND (attr);
16374       else
16375         complaint (&symfile_complaints,
16376                    _("DW_AT_byte_size for array type smaller "
16377                      "than the total size of elements"));
16378     }
16379
16380   name = dwarf2_name (die, cu);
16381   if (name)
16382     TYPE_NAME (type) = name;
16383
16384   /* Install the type in the die.  */
16385   set_die_type (die, type, cu);
16386
16387   /* set_die_type should be already done.  */
16388   set_descriptive_type (type, die, cu);
16389
16390   return type;
16391 }
16392
16393 static enum dwarf_array_dim_ordering
16394 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16395 {
16396   struct attribute *attr;
16397
16398   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16399
16400   if (attr)
16401     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16402
16403   /* GNU F77 is a special case, as at 08/2004 array type info is the
16404      opposite order to the dwarf2 specification, but data is still
16405      laid out as per normal fortran.
16406
16407      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16408      version checking.  */
16409
16410   if (cu->language == language_fortran
16411       && cu->producer && strstr (cu->producer, "GNU F77"))
16412     {
16413       return DW_ORD_row_major;
16414     }
16415
16416   switch (cu->language_defn->la_array_ordering)
16417     {
16418     case array_column_major:
16419       return DW_ORD_col_major;
16420     case array_row_major:
16421     default:
16422       return DW_ORD_row_major;
16423     };
16424 }
16425
16426 /* Extract all information from a DW_TAG_set_type DIE and put it in
16427    the DIE's type field.  */
16428
16429 static struct type *
16430 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16431 {
16432   struct type *domain_type, *set_type;
16433   struct attribute *attr;
16434
16435   domain_type = die_type (die, cu);
16436
16437   /* The die_type call above may have already set the type for this DIE.  */
16438   set_type = get_die_type (die, cu);
16439   if (set_type)
16440     return set_type;
16441
16442   set_type = create_set_type (NULL, domain_type);
16443
16444   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16445   if (attr)
16446     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16447
16448   return set_die_type (die, set_type, cu);
16449 }
16450
16451 /* A helper for read_common_block that creates a locexpr baton.
16452    SYM is the symbol which we are marking as computed.
16453    COMMON_DIE is the DIE for the common block.
16454    COMMON_LOC is the location expression attribute for the common
16455    block itself.
16456    MEMBER_LOC is the location expression attribute for the particular
16457    member of the common block that we are processing.
16458    CU is the CU from which the above come.  */
16459
16460 static void
16461 mark_common_block_symbol_computed (struct symbol *sym,
16462                                    struct die_info *common_die,
16463                                    struct attribute *common_loc,
16464                                    struct attribute *member_loc,
16465                                    struct dwarf2_cu *cu)
16466 {
16467   struct dwarf2_per_objfile *dwarf2_per_objfile
16468     = cu->per_cu->dwarf2_per_objfile;
16469   struct objfile *objfile = dwarf2_per_objfile->objfile;
16470   struct dwarf2_locexpr_baton *baton;
16471   gdb_byte *ptr;
16472   unsigned int cu_off;
16473   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16474   LONGEST offset = 0;
16475
16476   gdb_assert (common_loc && member_loc);
16477   gdb_assert (attr_form_is_block (common_loc));
16478   gdb_assert (attr_form_is_block (member_loc)
16479               || attr_form_is_constant (member_loc));
16480
16481   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16482   baton->per_cu = cu->per_cu;
16483   gdb_assert (baton->per_cu);
16484
16485   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16486
16487   if (attr_form_is_constant (member_loc))
16488     {
16489       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16490       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16491     }
16492   else
16493     baton->size += DW_BLOCK (member_loc)->size;
16494
16495   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16496   baton->data = ptr;
16497
16498   *ptr++ = DW_OP_call4;
16499   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16500   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16501   ptr += 4;
16502
16503   if (attr_form_is_constant (member_loc))
16504     {
16505       *ptr++ = DW_OP_addr;
16506       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16507       ptr += cu->header.addr_size;
16508     }
16509   else
16510     {
16511       /* We have to copy the data here, because DW_OP_call4 will only
16512          use a DW_AT_location attribute.  */
16513       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16514       ptr += DW_BLOCK (member_loc)->size;
16515     }
16516
16517   *ptr++ = DW_OP_plus;
16518   gdb_assert (ptr - baton->data == baton->size);
16519
16520   SYMBOL_LOCATION_BATON (sym) = baton;
16521   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16522 }
16523
16524 /* Create appropriate locally-scoped variables for all the
16525    DW_TAG_common_block entries.  Also create a struct common_block
16526    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16527    is used to sepate the common blocks name namespace from regular
16528    variable names.  */
16529
16530 static void
16531 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16532 {
16533   struct attribute *attr;
16534
16535   attr = dwarf2_attr (die, DW_AT_location, cu);
16536   if (attr)
16537     {
16538       /* Support the .debug_loc offsets.  */
16539       if (attr_form_is_block (attr))
16540         {
16541           /* Ok.  */
16542         }
16543       else if (attr_form_is_section_offset (attr))
16544         {
16545           dwarf2_complex_location_expr_complaint ();
16546           attr = NULL;
16547         }
16548       else
16549         {
16550           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16551                                                  "common block member");
16552           attr = NULL;
16553         }
16554     }
16555
16556   if (die->child != NULL)
16557     {
16558       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16559       struct die_info *child_die;
16560       size_t n_entries = 0, size;
16561       struct common_block *common_block;
16562       struct symbol *sym;
16563
16564       for (child_die = die->child;
16565            child_die && child_die->tag;
16566            child_die = sibling_die (child_die))
16567         ++n_entries;
16568
16569       size = (sizeof (struct common_block)
16570               + (n_entries - 1) * sizeof (struct symbol *));
16571       common_block
16572         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16573                                                  size);
16574       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16575       common_block->n_entries = 0;
16576
16577       for (child_die = die->child;
16578            child_die && child_die->tag;
16579            child_die = sibling_die (child_die))
16580         {
16581           /* Create the symbol in the DW_TAG_common_block block in the current
16582              symbol scope.  */
16583           sym = new_symbol (child_die, NULL, cu);
16584           if (sym != NULL)
16585             {
16586               struct attribute *member_loc;
16587
16588               common_block->contents[common_block->n_entries++] = sym;
16589
16590               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16591                                         cu);
16592               if (member_loc)
16593                 {
16594                   /* GDB has handled this for a long time, but it is
16595                      not specified by DWARF.  It seems to have been
16596                      emitted by gfortran at least as recently as:
16597                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16598                   complaint (&symfile_complaints,
16599                              _("Variable in common block has "
16600                                "DW_AT_data_member_location "
16601                                "- DIE at %s [in module %s]"),
16602                                sect_offset_str (child_die->sect_off),
16603                              objfile_name (objfile));
16604
16605                   if (attr_form_is_section_offset (member_loc))
16606                     dwarf2_complex_location_expr_complaint ();
16607                   else if (attr_form_is_constant (member_loc)
16608                            || attr_form_is_block (member_loc))
16609                     {
16610                       if (attr)
16611                         mark_common_block_symbol_computed (sym, die, attr,
16612                                                            member_loc, cu);
16613                     }
16614                   else
16615                     dwarf2_complex_location_expr_complaint ();
16616                 }
16617             }
16618         }
16619
16620       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16621       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16622     }
16623 }
16624
16625 /* Create a type for a C++ namespace.  */
16626
16627 static struct type *
16628 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16629 {
16630   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16631   const char *previous_prefix, *name;
16632   int is_anonymous;
16633   struct type *type;
16634
16635   /* For extensions, reuse the type of the original namespace.  */
16636   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16637     {
16638       struct die_info *ext_die;
16639       struct dwarf2_cu *ext_cu = cu;
16640
16641       ext_die = dwarf2_extension (die, &ext_cu);
16642       type = read_type_die (ext_die, ext_cu);
16643
16644       /* EXT_CU may not be the same as CU.
16645          Ensure TYPE is recorded with CU in die_type_hash.  */
16646       return set_die_type (die, type, cu);
16647     }
16648
16649   name = namespace_name (die, &is_anonymous, cu);
16650
16651   /* Now build the name of the current namespace.  */
16652
16653   previous_prefix = determine_prefix (die, cu);
16654   if (previous_prefix[0] != '\0')
16655     name = typename_concat (&objfile->objfile_obstack,
16656                             previous_prefix, name, 0, cu);
16657
16658   /* Create the type.  */
16659   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16660   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16661
16662   return set_die_type (die, type, cu);
16663 }
16664
16665 /* Read a namespace scope.  */
16666
16667 static void
16668 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16669 {
16670   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16671   int is_anonymous;
16672
16673   /* Add a symbol associated to this if we haven't seen the namespace
16674      before.  Also, add a using directive if it's an anonymous
16675      namespace.  */
16676
16677   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16678     {
16679       struct type *type;
16680
16681       type = read_type_die (die, cu);
16682       new_symbol (die, type, cu);
16683
16684       namespace_name (die, &is_anonymous, cu);
16685       if (is_anonymous)
16686         {
16687           const char *previous_prefix = determine_prefix (die, cu);
16688
16689           std::vector<const char *> excludes;
16690           add_using_directive (using_directives (cu->language),
16691                                previous_prefix, TYPE_NAME (type), NULL,
16692                                NULL, excludes, 0, &objfile->objfile_obstack);
16693         }
16694     }
16695
16696   if (die->child != NULL)
16697     {
16698       struct die_info *child_die = die->child;
16699
16700       while (child_die && child_die->tag)
16701         {
16702           process_die (child_die, cu);
16703           child_die = sibling_die (child_die);
16704         }
16705     }
16706 }
16707
16708 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16709    imported module.  Still we need that type as local Fortran "use ... only"
16710    declaration imports depend on the created type in determine_prefix.  */
16711
16712 static struct type *
16713 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16714 {
16715   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16716   const char *module_name;
16717   struct type *type;
16718
16719   module_name = dwarf2_name (die, cu);
16720   if (!module_name)
16721     complaint (&symfile_complaints,
16722                _("DW_TAG_module has no name, offset %s"),
16723                sect_offset_str (die->sect_off));
16724   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16725
16726   /* determine_prefix uses TYPE_TAG_NAME.  */
16727   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16728
16729   return set_die_type (die, type, cu);
16730 }
16731
16732 /* Read a Fortran module.  */
16733
16734 static void
16735 read_module (struct die_info *die, struct dwarf2_cu *cu)
16736 {
16737   struct die_info *child_die = die->child;
16738   struct type *type;
16739
16740   type = read_type_die (die, cu);
16741   new_symbol (die, type, cu);
16742
16743   while (child_die && child_die->tag)
16744     {
16745       process_die (child_die, cu);
16746       child_die = sibling_die (child_die);
16747     }
16748 }
16749
16750 /* Return the name of the namespace represented by DIE.  Set
16751    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16752    namespace.  */
16753
16754 static const char *
16755 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16756 {
16757   struct die_info *current_die;
16758   const char *name = NULL;
16759
16760   /* Loop through the extensions until we find a name.  */
16761
16762   for (current_die = die;
16763        current_die != NULL;
16764        current_die = dwarf2_extension (die, &cu))
16765     {
16766       /* We don't use dwarf2_name here so that we can detect the absence
16767          of a name -> anonymous namespace.  */
16768       name = dwarf2_string_attr (die, DW_AT_name, cu);
16769
16770       if (name != NULL)
16771         break;
16772     }
16773
16774   /* Is it an anonymous namespace?  */
16775
16776   *is_anonymous = (name == NULL);
16777   if (*is_anonymous)
16778     name = CP_ANONYMOUS_NAMESPACE_STR;
16779
16780   return name;
16781 }
16782
16783 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16784    the user defined type vector.  */
16785
16786 static struct type *
16787 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16788 {
16789   struct gdbarch *gdbarch
16790     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16791   struct comp_unit_head *cu_header = &cu->header;
16792   struct type *type;
16793   struct attribute *attr_byte_size;
16794   struct attribute *attr_address_class;
16795   int byte_size, addr_class;
16796   struct type *target_type;
16797
16798   target_type = die_type (die, cu);
16799
16800   /* The die_type call above may have already set the type for this DIE.  */
16801   type = get_die_type (die, cu);
16802   if (type)
16803     return type;
16804
16805   type = lookup_pointer_type (target_type);
16806
16807   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16808   if (attr_byte_size)
16809     byte_size = DW_UNSND (attr_byte_size);
16810   else
16811     byte_size = cu_header->addr_size;
16812
16813   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16814   if (attr_address_class)
16815     addr_class = DW_UNSND (attr_address_class);
16816   else
16817     addr_class = DW_ADDR_none;
16818
16819   /* If the pointer size or address class is different than the
16820      default, create a type variant marked as such and set the
16821      length accordingly.  */
16822   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
16823     {
16824       if (gdbarch_address_class_type_flags_p (gdbarch))
16825         {
16826           int type_flags;
16827
16828           type_flags = gdbarch_address_class_type_flags
16829                          (gdbarch, byte_size, addr_class);
16830           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
16831                       == 0);
16832           type = make_type_with_address_space (type, type_flags);
16833         }
16834       else if (TYPE_LENGTH (type) != byte_size)
16835         {
16836           complaint (&symfile_complaints,
16837                      _("invalid pointer size %d"), byte_size);
16838         }
16839       else
16840         {
16841           /* Should we also complain about unhandled address classes?  */
16842         }
16843     }
16844
16845   TYPE_LENGTH (type) = byte_size;
16846   return set_die_type (die, type, cu);
16847 }
16848
16849 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
16850    the user defined type vector.  */
16851
16852 static struct type *
16853 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
16854 {
16855   struct type *type;
16856   struct type *to_type;
16857   struct type *domain;
16858
16859   to_type = die_type (die, cu);
16860   domain = die_containing_type (die, cu);
16861
16862   /* The calls above may have already set the type for this DIE.  */
16863   type = get_die_type (die, cu);
16864   if (type)
16865     return type;
16866
16867   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
16868     type = lookup_methodptr_type (to_type);
16869   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
16870     {
16871       struct type *new_type
16872         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
16873
16874       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
16875                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
16876                             TYPE_VARARGS (to_type));
16877       type = lookup_methodptr_type (new_type);
16878     }
16879   else
16880     type = lookup_memberptr_type (to_type, domain);
16881
16882   return set_die_type (die, type, cu);
16883 }
16884
16885 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
16886    the user defined type vector.  */
16887
16888 static struct type *
16889 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
16890                           enum type_code refcode)
16891 {
16892   struct comp_unit_head *cu_header = &cu->header;
16893   struct type *type, *target_type;
16894   struct attribute *attr;
16895
16896   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
16897
16898   target_type = die_type (die, cu);
16899
16900   /* The die_type call above may have already set the type for this DIE.  */
16901   type = get_die_type (die, cu);
16902   if (type)
16903     return type;
16904
16905   type = lookup_reference_type (target_type, refcode);
16906   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16907   if (attr)
16908     {
16909       TYPE_LENGTH (type) = DW_UNSND (attr);
16910     }
16911   else
16912     {
16913       TYPE_LENGTH (type) = cu_header->addr_size;
16914     }
16915   return set_die_type (die, type, cu);
16916 }
16917
16918 /* Add the given cv-qualifiers to the element type of the array.  GCC
16919    outputs DWARF type qualifiers that apply to an array, not the
16920    element type.  But GDB relies on the array element type to carry
16921    the cv-qualifiers.  This mimics section 6.7.3 of the C99
16922    specification.  */
16923
16924 static struct type *
16925 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
16926                    struct type *base_type, int cnst, int voltl)
16927 {
16928   struct type *el_type, *inner_array;
16929
16930   base_type = copy_type (base_type);
16931   inner_array = base_type;
16932
16933   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
16934     {
16935       TYPE_TARGET_TYPE (inner_array) =
16936         copy_type (TYPE_TARGET_TYPE (inner_array));
16937       inner_array = TYPE_TARGET_TYPE (inner_array);
16938     }
16939
16940   el_type = TYPE_TARGET_TYPE (inner_array);
16941   cnst |= TYPE_CONST (el_type);
16942   voltl |= TYPE_VOLATILE (el_type);
16943   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
16944
16945   return set_die_type (die, base_type, cu);
16946 }
16947
16948 static struct type *
16949 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
16950 {
16951   struct type *base_type, *cv_type;
16952
16953   base_type = die_type (die, cu);
16954
16955   /* The die_type call above may have already set the type for this DIE.  */
16956   cv_type = get_die_type (die, cu);
16957   if (cv_type)
16958     return cv_type;
16959
16960   /* In case the const qualifier is applied to an array type, the element type
16961      is so qualified, not the array type (section 6.7.3 of C99).  */
16962   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
16963     return add_array_cv_type (die, cu, base_type, 1, 0);
16964
16965   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
16966   return set_die_type (die, cv_type, cu);
16967 }
16968
16969 static struct type *
16970 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
16971 {
16972   struct type *base_type, *cv_type;
16973
16974   base_type = die_type (die, cu);
16975
16976   /* The die_type call above may have already set the type for this DIE.  */
16977   cv_type = get_die_type (die, cu);
16978   if (cv_type)
16979     return cv_type;
16980
16981   /* In case the volatile qualifier is applied to an array type, the
16982      element type is so qualified, not the array type (section 6.7.3
16983      of C99).  */
16984   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
16985     return add_array_cv_type (die, cu, base_type, 0, 1);
16986
16987   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
16988   return set_die_type (die, cv_type, cu);
16989 }
16990
16991 /* Handle DW_TAG_restrict_type.  */
16992
16993 static struct type *
16994 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
16995 {
16996   struct type *base_type, *cv_type;
16997
16998   base_type = die_type (die, cu);
16999
17000   /* The die_type call above may have already set the type for this DIE.  */
17001   cv_type = get_die_type (die, cu);
17002   if (cv_type)
17003     return cv_type;
17004
17005   cv_type = make_restrict_type (base_type);
17006   return set_die_type (die, cv_type, cu);
17007 }
17008
17009 /* Handle DW_TAG_atomic_type.  */
17010
17011 static struct type *
17012 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17013 {
17014   struct type *base_type, *cv_type;
17015
17016   base_type = die_type (die, cu);
17017
17018   /* The die_type call above may have already set the type for this DIE.  */
17019   cv_type = get_die_type (die, cu);
17020   if (cv_type)
17021     return cv_type;
17022
17023   cv_type = make_atomic_type (base_type);
17024   return set_die_type (die, cv_type, cu);
17025 }
17026
17027 /* Extract all information from a DW_TAG_string_type DIE and add to
17028    the user defined type vector.  It isn't really a user defined type,
17029    but it behaves like one, with other DIE's using an AT_user_def_type
17030    attribute to reference it.  */
17031
17032 static struct type *
17033 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17034 {
17035   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17036   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17037   struct type *type, *range_type, *index_type, *char_type;
17038   struct attribute *attr;
17039   unsigned int length;
17040
17041   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17042   if (attr)
17043     {
17044       length = DW_UNSND (attr);
17045     }
17046   else
17047     {
17048       /* Check for the DW_AT_byte_size attribute.  */
17049       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17050       if (attr)
17051         {
17052           length = DW_UNSND (attr);
17053         }
17054       else
17055         {
17056           length = 1;
17057         }
17058     }
17059
17060   index_type = objfile_type (objfile)->builtin_int;
17061   range_type = create_static_range_type (NULL, index_type, 1, length);
17062   char_type = language_string_char_type (cu->language_defn, gdbarch);
17063   type = create_string_type (NULL, char_type, range_type);
17064
17065   return set_die_type (die, type, cu);
17066 }
17067
17068 /* Assuming that DIE corresponds to a function, returns nonzero
17069    if the function is prototyped.  */
17070
17071 static int
17072 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17073 {
17074   struct attribute *attr;
17075
17076   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17077   if (attr && (DW_UNSND (attr) != 0))
17078     return 1;
17079
17080   /* The DWARF standard implies that the DW_AT_prototyped attribute
17081      is only meaninful for C, but the concept also extends to other
17082      languages that allow unprototyped functions (Eg: Objective C).
17083      For all other languages, assume that functions are always
17084      prototyped.  */
17085   if (cu->language != language_c
17086       && cu->language != language_objc
17087       && cu->language != language_opencl)
17088     return 1;
17089
17090   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17091      prototyped and unprototyped functions; default to prototyped,
17092      since that is more common in modern code (and RealView warns
17093      about unprototyped functions).  */
17094   if (producer_is_realview (cu->producer))
17095     return 1;
17096
17097   return 0;
17098 }
17099
17100 /* Handle DIES due to C code like:
17101
17102    struct foo
17103    {
17104    int (*funcp)(int a, long l);
17105    int b;
17106    };
17107
17108    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17109
17110 static struct type *
17111 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17112 {
17113   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17114   struct type *type;            /* Type that this function returns.  */
17115   struct type *ftype;           /* Function that returns above type.  */
17116   struct attribute *attr;
17117
17118   type = die_type (die, cu);
17119
17120   /* The die_type call above may have already set the type for this DIE.  */
17121   ftype = get_die_type (die, cu);
17122   if (ftype)
17123     return ftype;
17124
17125   ftype = lookup_function_type (type);
17126
17127   if (prototyped_function_p (die, cu))
17128     TYPE_PROTOTYPED (ftype) = 1;
17129
17130   /* Store the calling convention in the type if it's available in
17131      the subroutine die.  Otherwise set the calling convention to
17132      the default value DW_CC_normal.  */
17133   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17134   if (attr)
17135     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17136   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17137     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17138   else
17139     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17140
17141   /* Record whether the function returns normally to its caller or not
17142      if the DWARF producer set that information.  */
17143   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17144   if (attr && (DW_UNSND (attr) != 0))
17145     TYPE_NO_RETURN (ftype) = 1;
17146
17147   /* We need to add the subroutine type to the die immediately so
17148      we don't infinitely recurse when dealing with parameters
17149      declared as the same subroutine type.  */
17150   set_die_type (die, ftype, cu);
17151
17152   if (die->child != NULL)
17153     {
17154       struct type *void_type = objfile_type (objfile)->builtin_void;
17155       struct die_info *child_die;
17156       int nparams, iparams;
17157
17158       /* Count the number of parameters.
17159          FIXME: GDB currently ignores vararg functions, but knows about
17160          vararg member functions.  */
17161       nparams = 0;
17162       child_die = die->child;
17163       while (child_die && child_die->tag)
17164         {
17165           if (child_die->tag == DW_TAG_formal_parameter)
17166             nparams++;
17167           else if (child_die->tag == DW_TAG_unspecified_parameters)
17168             TYPE_VARARGS (ftype) = 1;
17169           child_die = sibling_die (child_die);
17170         }
17171
17172       /* Allocate storage for parameters and fill them in.  */
17173       TYPE_NFIELDS (ftype) = nparams;
17174       TYPE_FIELDS (ftype) = (struct field *)
17175         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17176
17177       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17178          even if we error out during the parameters reading below.  */
17179       for (iparams = 0; iparams < nparams; iparams++)
17180         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17181
17182       iparams = 0;
17183       child_die = die->child;
17184       while (child_die && child_die->tag)
17185         {
17186           if (child_die->tag == DW_TAG_formal_parameter)
17187             {
17188               struct type *arg_type;
17189
17190               /* DWARF version 2 has no clean way to discern C++
17191                  static and non-static member functions.  G++ helps
17192                  GDB by marking the first parameter for non-static
17193                  member functions (which is the this pointer) as
17194                  artificial.  We pass this information to
17195                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17196
17197                  DWARF version 3 added DW_AT_object_pointer, which GCC
17198                  4.5 does not yet generate.  */
17199               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17200               if (attr)
17201                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17202               else
17203                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17204               arg_type = die_type (child_die, cu);
17205
17206               /* RealView does not mark THIS as const, which the testsuite
17207                  expects.  GCC marks THIS as const in method definitions,
17208                  but not in the class specifications (GCC PR 43053).  */
17209               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17210                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17211                 {
17212                   int is_this = 0;
17213                   struct dwarf2_cu *arg_cu = cu;
17214                   const char *name = dwarf2_name (child_die, cu);
17215
17216                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17217                   if (attr)
17218                     {
17219                       /* If the compiler emits this, use it.  */
17220                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17221                         is_this = 1;
17222                     }
17223                   else if (name && strcmp (name, "this") == 0)
17224                     /* Function definitions will have the argument names.  */
17225                     is_this = 1;
17226                   else if (name == NULL && iparams == 0)
17227                     /* Declarations may not have the names, so like
17228                        elsewhere in GDB, assume an artificial first
17229                        argument is "this".  */
17230                     is_this = 1;
17231
17232                   if (is_this)
17233                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17234                                              arg_type, 0);
17235                 }
17236
17237               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17238               iparams++;
17239             }
17240           child_die = sibling_die (child_die);
17241         }
17242     }
17243
17244   return ftype;
17245 }
17246
17247 static struct type *
17248 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17249 {
17250   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17251   const char *name = NULL;
17252   struct type *this_type, *target_type;
17253
17254   name = dwarf2_full_name (NULL, die, cu);
17255   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17256   TYPE_TARGET_STUB (this_type) = 1;
17257   set_die_type (die, this_type, cu);
17258   target_type = die_type (die, cu);
17259   if (target_type != this_type)
17260     TYPE_TARGET_TYPE (this_type) = target_type;
17261   else
17262     {
17263       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17264          spec and cause infinite loops in GDB.  */
17265       complaint (&symfile_complaints,
17266                  _("Self-referential DW_TAG_typedef "
17267                    "- DIE at %s [in module %s]"),
17268                  sect_offset_str (die->sect_off), objfile_name (objfile));
17269       TYPE_TARGET_TYPE (this_type) = NULL;
17270     }
17271   return this_type;
17272 }
17273
17274 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17275    (which may be different from NAME) to the architecture back-end to allow
17276    it to guess the correct format if necessary.  */
17277
17278 static struct type *
17279 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17280                         const char *name_hint)
17281 {
17282   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17283   const struct floatformat **format;
17284   struct type *type;
17285
17286   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17287   if (format)
17288     type = init_float_type (objfile, bits, name, format);
17289   else
17290     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17291
17292   return type;
17293 }
17294
17295 /* Find a representation of a given base type and install
17296    it in the TYPE field of the die.  */
17297
17298 static struct type *
17299 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17300 {
17301   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17302   struct type *type;
17303   struct attribute *attr;
17304   int encoding = 0, bits = 0;
17305   const char *name;
17306
17307   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17308   if (attr)
17309     {
17310       encoding = DW_UNSND (attr);
17311     }
17312   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17313   if (attr)
17314     {
17315       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17316     }
17317   name = dwarf2_name (die, cu);
17318   if (!name)
17319     {
17320       complaint (&symfile_complaints,
17321                  _("DW_AT_name missing from DW_TAG_base_type"));
17322     }
17323
17324   switch (encoding)
17325     {
17326       case DW_ATE_address:
17327         /* Turn DW_ATE_address into a void * pointer.  */
17328         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17329         type = init_pointer_type (objfile, bits, name, type);
17330         break;
17331       case DW_ATE_boolean:
17332         type = init_boolean_type (objfile, bits, 1, name);
17333         break;
17334       case DW_ATE_complex_float:
17335         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17336         type = init_complex_type (objfile, name, type);
17337         break;
17338       case DW_ATE_decimal_float:
17339         type = init_decfloat_type (objfile, bits, name);
17340         break;
17341       case DW_ATE_float:
17342         type = dwarf2_init_float_type (objfile, bits, name, name);
17343         break;
17344       case DW_ATE_signed:
17345         type = init_integer_type (objfile, bits, 0, name);
17346         break;
17347       case DW_ATE_unsigned:
17348         if (cu->language == language_fortran
17349             && name
17350             && startswith (name, "character("))
17351           type = init_character_type (objfile, bits, 1, name);
17352         else
17353           type = init_integer_type (objfile, bits, 1, name);
17354         break;
17355       case DW_ATE_signed_char:
17356         if (cu->language == language_ada || cu->language == language_m2
17357             || cu->language == language_pascal
17358             || cu->language == language_fortran)
17359           type = init_character_type (objfile, bits, 0, name);
17360         else
17361           type = init_integer_type (objfile, bits, 0, name);
17362         break;
17363       case DW_ATE_unsigned_char:
17364         if (cu->language == language_ada || cu->language == language_m2
17365             || cu->language == language_pascal
17366             || cu->language == language_fortran
17367             || cu->language == language_rust)
17368           type = init_character_type (objfile, bits, 1, name);
17369         else
17370           type = init_integer_type (objfile, bits, 1, name);
17371         break;
17372       case DW_ATE_UTF:
17373         {
17374           gdbarch *arch = get_objfile_arch (objfile);
17375
17376           if (bits == 16)
17377             type = builtin_type (arch)->builtin_char16;
17378           else if (bits == 32)
17379             type = builtin_type (arch)->builtin_char32;
17380           else
17381             {
17382               complaint (&symfile_complaints,
17383                          _("unsupported DW_ATE_UTF bit size: '%d'"),
17384                          bits);
17385               type = init_integer_type (objfile, bits, 1, name);
17386             }
17387           return set_die_type (die, type, cu);
17388         }
17389         break;
17390
17391       default:
17392         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
17393                    dwarf_type_encoding_name (encoding));
17394         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17395         break;
17396     }
17397
17398   if (name && strcmp (name, "char") == 0)
17399     TYPE_NOSIGN (type) = 1;
17400
17401   return set_die_type (die, type, cu);
17402 }
17403
17404 /* Parse dwarf attribute if it's a block, reference or constant and put the
17405    resulting value of the attribute into struct bound_prop.
17406    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17407
17408 static int
17409 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17410                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17411 {
17412   struct dwarf2_property_baton *baton;
17413   struct obstack *obstack
17414     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17415
17416   if (attr == NULL || prop == NULL)
17417     return 0;
17418
17419   if (attr_form_is_block (attr))
17420     {
17421       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17422       baton->referenced_type = NULL;
17423       baton->locexpr.per_cu = cu->per_cu;
17424       baton->locexpr.size = DW_BLOCK (attr)->size;
17425       baton->locexpr.data = DW_BLOCK (attr)->data;
17426       prop->data.baton = baton;
17427       prop->kind = PROP_LOCEXPR;
17428       gdb_assert (prop->data.baton != NULL);
17429     }
17430   else if (attr_form_is_ref (attr))
17431     {
17432       struct dwarf2_cu *target_cu = cu;
17433       struct die_info *target_die;
17434       struct attribute *target_attr;
17435
17436       target_die = follow_die_ref (die, attr, &target_cu);
17437       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17438       if (target_attr == NULL)
17439         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17440                                    target_cu);
17441       if (target_attr == NULL)
17442         return 0;
17443
17444       switch (target_attr->name)
17445         {
17446           case DW_AT_location:
17447             if (attr_form_is_section_offset (target_attr))
17448               {
17449                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17450                 baton->referenced_type = die_type (target_die, target_cu);
17451                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17452                 prop->data.baton = baton;
17453                 prop->kind = PROP_LOCLIST;
17454                 gdb_assert (prop->data.baton != NULL);
17455               }
17456             else if (attr_form_is_block (target_attr))
17457               {
17458                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17459                 baton->referenced_type = die_type (target_die, target_cu);
17460                 baton->locexpr.per_cu = cu->per_cu;
17461                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17462                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17463                 prop->data.baton = baton;
17464                 prop->kind = PROP_LOCEXPR;
17465                 gdb_assert (prop->data.baton != NULL);
17466               }
17467             else
17468               {
17469                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17470                                                        "dynamic property");
17471                 return 0;
17472               }
17473             break;
17474           case DW_AT_data_member_location:
17475             {
17476               LONGEST offset;
17477
17478               if (!handle_data_member_location (target_die, target_cu,
17479                                                 &offset))
17480                 return 0;
17481
17482               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17483               baton->referenced_type = read_type_die (target_die->parent,
17484                                                       target_cu);
17485               baton->offset_info.offset = offset;
17486               baton->offset_info.type = die_type (target_die, target_cu);
17487               prop->data.baton = baton;
17488               prop->kind = PROP_ADDR_OFFSET;
17489               break;
17490             }
17491         }
17492     }
17493   else if (attr_form_is_constant (attr))
17494     {
17495       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17496       prop->kind = PROP_CONST;
17497     }
17498   else
17499     {
17500       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17501                                              dwarf2_name (die, cu));
17502       return 0;
17503     }
17504
17505   return 1;
17506 }
17507
17508 /* Read the given DW_AT_subrange DIE.  */
17509
17510 static struct type *
17511 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17512 {
17513   struct type *base_type, *orig_base_type;
17514   struct type *range_type;
17515   struct attribute *attr;
17516   struct dynamic_prop low, high;
17517   int low_default_is_valid;
17518   int high_bound_is_count = 0;
17519   const char *name;
17520   LONGEST negative_mask;
17521
17522   orig_base_type = die_type (die, cu);
17523   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17524      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17525      creating the range type, but we use the result of check_typedef
17526      when examining properties of the type.  */
17527   base_type = check_typedef (orig_base_type);
17528
17529   /* The die_type call above may have already set the type for this DIE.  */
17530   range_type = get_die_type (die, cu);
17531   if (range_type)
17532     return range_type;
17533
17534   low.kind = PROP_CONST;
17535   high.kind = PROP_CONST;
17536   high.data.const_val = 0;
17537
17538   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17539      omitting DW_AT_lower_bound.  */
17540   switch (cu->language)
17541     {
17542     case language_c:
17543     case language_cplus:
17544       low.data.const_val = 0;
17545       low_default_is_valid = 1;
17546       break;
17547     case language_fortran:
17548       low.data.const_val = 1;
17549       low_default_is_valid = 1;
17550       break;
17551     case language_d:
17552     case language_objc:
17553     case language_rust:
17554       low.data.const_val = 0;
17555       low_default_is_valid = (cu->header.version >= 4);
17556       break;
17557     case language_ada:
17558     case language_m2:
17559     case language_pascal:
17560       low.data.const_val = 1;
17561       low_default_is_valid = (cu->header.version >= 4);
17562       break;
17563     default:
17564       low.data.const_val = 0;
17565       low_default_is_valid = 0;
17566       break;
17567     }
17568
17569   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17570   if (attr)
17571     attr_to_dynamic_prop (attr, die, cu, &low);
17572   else if (!low_default_is_valid)
17573     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
17574                                       "- DIE at %s [in module %s]"),
17575                sect_offset_str (die->sect_off),
17576                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17577
17578   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
17579   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17580     {
17581       attr = dwarf2_attr (die, DW_AT_count, cu);
17582       if (attr_to_dynamic_prop (attr, die, cu, &high))
17583         {
17584           /* If bounds are constant do the final calculation here.  */
17585           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17586             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17587           else
17588             high_bound_is_count = 1;
17589         }
17590     }
17591
17592   /* Dwarf-2 specifications explicitly allows to create subrange types
17593      without specifying a base type.
17594      In that case, the base type must be set to the type of
17595      the lower bound, upper bound or count, in that order, if any of these
17596      three attributes references an object that has a type.
17597      If no base type is found, the Dwarf-2 specifications say that
17598      a signed integer type of size equal to the size of an address should
17599      be used.
17600      For the following C code: `extern char gdb_int [];'
17601      GCC produces an empty range DIE.
17602      FIXME: muller/2010-05-28: Possible references to object for low bound,
17603      high bound or count are not yet handled by this code.  */
17604   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17605     {
17606       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17607       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17608       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17609       struct type *int_type = objfile_type (objfile)->builtin_int;
17610
17611       /* Test "int", "long int", and "long long int" objfile types,
17612          and select the first one having a size above or equal to the
17613          architecture address size.  */
17614       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17615         base_type = int_type;
17616       else
17617         {
17618           int_type = objfile_type (objfile)->builtin_long;
17619           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17620             base_type = int_type;
17621           else
17622             {
17623               int_type = objfile_type (objfile)->builtin_long_long;
17624               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17625                 base_type = int_type;
17626             }
17627         }
17628     }
17629
17630   /* Normally, the DWARF producers are expected to use a signed
17631      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17632      But this is unfortunately not always the case, as witnessed
17633      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17634      is used instead.  To work around that ambiguity, we treat
17635      the bounds as signed, and thus sign-extend their values, when
17636      the base type is signed.  */
17637   negative_mask =
17638     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17639   if (low.kind == PROP_CONST
17640       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17641     low.data.const_val |= negative_mask;
17642   if (high.kind == PROP_CONST
17643       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17644     high.data.const_val |= negative_mask;
17645
17646   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17647
17648   if (high_bound_is_count)
17649     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17650
17651   /* Ada expects an empty array on no boundary attributes.  */
17652   if (attr == NULL && cu->language != language_ada)
17653     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17654
17655   name = dwarf2_name (die, cu);
17656   if (name)
17657     TYPE_NAME (range_type) = name;
17658
17659   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17660   if (attr)
17661     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17662
17663   set_die_type (die, range_type, cu);
17664
17665   /* set_die_type should be already done.  */
17666   set_descriptive_type (range_type, die, cu);
17667
17668   return range_type;
17669 }
17670
17671 static struct type *
17672 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17673 {
17674   struct type *type;
17675
17676   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17677                     NULL);
17678   TYPE_NAME (type) = dwarf2_name (die, cu);
17679
17680   /* In Ada, an unspecified type is typically used when the description
17681      of the type is defered to a different unit.  When encountering
17682      such a type, we treat it as a stub, and try to resolve it later on,
17683      when needed.  */
17684   if (cu->language == language_ada)
17685     TYPE_STUB (type) = 1;
17686
17687   return set_die_type (die, type, cu);
17688 }
17689
17690 /* Read a single die and all its descendents.  Set the die's sibling
17691    field to NULL; set other fields in the die correctly, and set all
17692    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17693    location of the info_ptr after reading all of those dies.  PARENT
17694    is the parent of the die in question.  */
17695
17696 static struct die_info *
17697 read_die_and_children (const struct die_reader_specs *reader,
17698                        const gdb_byte *info_ptr,
17699                        const gdb_byte **new_info_ptr,
17700                        struct die_info *parent)
17701 {
17702   struct die_info *die;
17703   const gdb_byte *cur_ptr;
17704   int has_children;
17705
17706   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17707   if (die == NULL)
17708     {
17709       *new_info_ptr = cur_ptr;
17710       return NULL;
17711     }
17712   store_in_ref_table (die, reader->cu);
17713
17714   if (has_children)
17715     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17716   else
17717     {
17718       die->child = NULL;
17719       *new_info_ptr = cur_ptr;
17720     }
17721
17722   die->sibling = NULL;
17723   die->parent = parent;
17724   return die;
17725 }
17726
17727 /* Read a die, all of its descendents, and all of its siblings; set
17728    all of the fields of all of the dies correctly.  Arguments are as
17729    in read_die_and_children.  */
17730
17731 static struct die_info *
17732 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17733                          const gdb_byte *info_ptr,
17734                          const gdb_byte **new_info_ptr,
17735                          struct die_info *parent)
17736 {
17737   struct die_info *first_die, *last_sibling;
17738   const gdb_byte *cur_ptr;
17739
17740   cur_ptr = info_ptr;
17741   first_die = last_sibling = NULL;
17742
17743   while (1)
17744     {
17745       struct die_info *die
17746         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17747
17748       if (die == NULL)
17749         {
17750           *new_info_ptr = cur_ptr;
17751           return first_die;
17752         }
17753
17754       if (!first_die)
17755         first_die = die;
17756       else
17757         last_sibling->sibling = die;
17758
17759       last_sibling = die;
17760     }
17761 }
17762
17763 /* Read a die, all of its descendents, and all of its siblings; set
17764    all of the fields of all of the dies correctly.  Arguments are as
17765    in read_die_and_children.
17766    This the main entry point for reading a DIE and all its children.  */
17767
17768 static struct die_info *
17769 read_die_and_siblings (const struct die_reader_specs *reader,
17770                        const gdb_byte *info_ptr,
17771                        const gdb_byte **new_info_ptr,
17772                        struct die_info *parent)
17773 {
17774   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17775                                                   new_info_ptr, parent);
17776
17777   if (dwarf_die_debug)
17778     {
17779       fprintf_unfiltered (gdb_stdlog,
17780                           "Read die from %s@0x%x of %s:\n",
17781                           get_section_name (reader->die_section),
17782                           (unsigned) (info_ptr - reader->die_section->buffer),
17783                           bfd_get_filename (reader->abfd));
17784       dump_die (die, dwarf_die_debug);
17785     }
17786
17787   return die;
17788 }
17789
17790 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17791    attributes.
17792    The caller is responsible for filling in the extra attributes
17793    and updating (*DIEP)->num_attrs.
17794    Set DIEP to point to a newly allocated die with its information,
17795    except for its child, sibling, and parent fields.
17796    Set HAS_CHILDREN to tell whether the die has children or not.  */
17797
17798 static const gdb_byte *
17799 read_full_die_1 (const struct die_reader_specs *reader,
17800                  struct die_info **diep, const gdb_byte *info_ptr,
17801                  int *has_children, int num_extra_attrs)
17802 {
17803   unsigned int abbrev_number, bytes_read, i;
17804   struct abbrev_info *abbrev;
17805   struct die_info *die;
17806   struct dwarf2_cu *cu = reader->cu;
17807   bfd *abfd = reader->abfd;
17808
17809   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
17810   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
17811   info_ptr += bytes_read;
17812   if (!abbrev_number)
17813     {
17814       *diep = NULL;
17815       *has_children = 0;
17816       return info_ptr;
17817     }
17818
17819   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
17820   if (!abbrev)
17821     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
17822            abbrev_number,
17823            bfd_get_filename (abfd));
17824
17825   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
17826   die->sect_off = sect_off;
17827   die->tag = abbrev->tag;
17828   die->abbrev = abbrev_number;
17829
17830   /* Make the result usable.
17831      The caller needs to update num_attrs after adding the extra
17832      attributes.  */
17833   die->num_attrs = abbrev->num_attrs;
17834
17835   for (i = 0; i < abbrev->num_attrs; ++i)
17836     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
17837                                info_ptr);
17838
17839   *diep = die;
17840   *has_children = abbrev->has_children;
17841   return info_ptr;
17842 }
17843
17844 /* Read a die and all its attributes.
17845    Set DIEP to point to a newly allocated die with its information,
17846    except for its child, sibling, and parent fields.
17847    Set HAS_CHILDREN to tell whether the die has children or not.  */
17848
17849 static const gdb_byte *
17850 read_full_die (const struct die_reader_specs *reader,
17851                struct die_info **diep, const gdb_byte *info_ptr,
17852                int *has_children)
17853 {
17854   const gdb_byte *result;
17855
17856   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
17857
17858   if (dwarf_die_debug)
17859     {
17860       fprintf_unfiltered (gdb_stdlog,
17861                           "Read die from %s@0x%x of %s:\n",
17862                           get_section_name (reader->die_section),
17863                           (unsigned) (info_ptr - reader->die_section->buffer),
17864                           bfd_get_filename (reader->abfd));
17865       dump_die (*diep, dwarf_die_debug);
17866     }
17867
17868   return result;
17869 }
17870 \f
17871 /* Abbreviation tables.
17872
17873    In DWARF version 2, the description of the debugging information is
17874    stored in a separate .debug_abbrev section.  Before we read any
17875    dies from a section we read in all abbreviations and install them
17876    in a hash table.  */
17877
17878 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
17879
17880 struct abbrev_info *
17881 abbrev_table::alloc_abbrev ()
17882 {
17883   struct abbrev_info *abbrev;
17884
17885   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
17886   memset (abbrev, 0, sizeof (struct abbrev_info));
17887
17888   return abbrev;
17889 }
17890
17891 /* Add an abbreviation to the table.  */
17892
17893 void
17894 abbrev_table::add_abbrev (unsigned int abbrev_number,
17895                           struct abbrev_info *abbrev)
17896 {
17897   unsigned int hash_number;
17898
17899   hash_number = abbrev_number % ABBREV_HASH_SIZE;
17900   abbrev->next = m_abbrevs[hash_number];
17901   m_abbrevs[hash_number] = abbrev;
17902 }
17903
17904 /* Look up an abbrev in the table.
17905    Returns NULL if the abbrev is not found.  */
17906
17907 struct abbrev_info *
17908 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
17909 {
17910   unsigned int hash_number;
17911   struct abbrev_info *abbrev;
17912
17913   hash_number = abbrev_number % ABBREV_HASH_SIZE;
17914   abbrev = m_abbrevs[hash_number];
17915
17916   while (abbrev)
17917     {
17918       if (abbrev->number == abbrev_number)
17919         return abbrev;
17920       abbrev = abbrev->next;
17921     }
17922   return NULL;
17923 }
17924
17925 /* Read in an abbrev table.  */
17926
17927 static abbrev_table_up
17928 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
17929                          struct dwarf2_section_info *section,
17930                          sect_offset sect_off)
17931 {
17932   struct objfile *objfile = dwarf2_per_objfile->objfile;
17933   bfd *abfd = get_section_bfd_owner (section);
17934   const gdb_byte *abbrev_ptr;
17935   struct abbrev_info *cur_abbrev;
17936   unsigned int abbrev_number, bytes_read, abbrev_name;
17937   unsigned int abbrev_form;
17938   struct attr_abbrev *cur_attrs;
17939   unsigned int allocated_attrs;
17940
17941   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
17942
17943   dwarf2_read_section (objfile, section);
17944   abbrev_ptr = section->buffer + to_underlying (sect_off);
17945   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17946   abbrev_ptr += bytes_read;
17947
17948   allocated_attrs = ATTR_ALLOC_CHUNK;
17949   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
17950
17951   /* Loop until we reach an abbrev number of 0.  */
17952   while (abbrev_number)
17953     {
17954       cur_abbrev = abbrev_table->alloc_abbrev ();
17955
17956       /* read in abbrev header */
17957       cur_abbrev->number = abbrev_number;
17958       cur_abbrev->tag
17959         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17960       abbrev_ptr += bytes_read;
17961       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
17962       abbrev_ptr += 1;
17963
17964       /* now read in declarations */
17965       for (;;)
17966         {
17967           LONGEST implicit_const;
17968
17969           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17970           abbrev_ptr += bytes_read;
17971           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17972           abbrev_ptr += bytes_read;
17973           if (abbrev_form == DW_FORM_implicit_const)
17974             {
17975               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
17976                                                    &bytes_read);
17977               abbrev_ptr += bytes_read;
17978             }
17979           else
17980             {
17981               /* Initialize it due to a false compiler warning.  */
17982               implicit_const = -1;
17983             }
17984
17985           if (abbrev_name == 0)
17986             break;
17987
17988           if (cur_abbrev->num_attrs == allocated_attrs)
17989             {
17990               allocated_attrs += ATTR_ALLOC_CHUNK;
17991               cur_attrs
17992                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
17993             }
17994
17995           cur_attrs[cur_abbrev->num_attrs].name
17996             = (enum dwarf_attribute) abbrev_name;
17997           cur_attrs[cur_abbrev->num_attrs].form
17998             = (enum dwarf_form) abbrev_form;
17999           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18000           ++cur_abbrev->num_attrs;
18001         }
18002
18003       cur_abbrev->attrs =
18004         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18005                    cur_abbrev->num_attrs);
18006       memcpy (cur_abbrev->attrs, cur_attrs,
18007               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18008
18009       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18010
18011       /* Get next abbreviation.
18012          Under Irix6 the abbreviations for a compilation unit are not
18013          always properly terminated with an abbrev number of 0.
18014          Exit loop if we encounter an abbreviation which we have
18015          already read (which means we are about to read the abbreviations
18016          for the next compile unit) or if the end of the abbreviation
18017          table is reached.  */
18018       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18019         break;
18020       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18021       abbrev_ptr += bytes_read;
18022       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18023         break;
18024     }
18025
18026   xfree (cur_attrs);
18027   return abbrev_table;
18028 }
18029
18030 /* Returns nonzero if TAG represents a type that we might generate a partial
18031    symbol for.  */
18032
18033 static int
18034 is_type_tag_for_partial (int tag)
18035 {
18036   switch (tag)
18037     {
18038 #if 0
18039     /* Some types that would be reasonable to generate partial symbols for,
18040        that we don't at present.  */
18041     case DW_TAG_array_type:
18042     case DW_TAG_file_type:
18043     case DW_TAG_ptr_to_member_type:
18044     case DW_TAG_set_type:
18045     case DW_TAG_string_type:
18046     case DW_TAG_subroutine_type:
18047 #endif
18048     case DW_TAG_base_type:
18049     case DW_TAG_class_type:
18050     case DW_TAG_interface_type:
18051     case DW_TAG_enumeration_type:
18052     case DW_TAG_structure_type:
18053     case DW_TAG_subrange_type:
18054     case DW_TAG_typedef:
18055     case DW_TAG_union_type:
18056       return 1;
18057     default:
18058       return 0;
18059     }
18060 }
18061
18062 /* Load all DIEs that are interesting for partial symbols into memory.  */
18063
18064 static struct partial_die_info *
18065 load_partial_dies (const struct die_reader_specs *reader,
18066                    const gdb_byte *info_ptr, int building_psymtab)
18067 {
18068   struct dwarf2_cu *cu = reader->cu;
18069   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18070   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18071   unsigned int bytes_read;
18072   unsigned int load_all = 0;
18073   int nesting_level = 1;
18074
18075   parent_die = NULL;
18076   last_die = NULL;
18077
18078   gdb_assert (cu->per_cu != NULL);
18079   if (cu->per_cu->load_all_dies)
18080     load_all = 1;
18081
18082   cu->partial_dies
18083     = htab_create_alloc_ex (cu->header.length / 12,
18084                             partial_die_hash,
18085                             partial_die_eq,
18086                             NULL,
18087                             &cu->comp_unit_obstack,
18088                             hashtab_obstack_allocate,
18089                             dummy_obstack_deallocate);
18090
18091   while (1)
18092     {
18093       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18094
18095       /* A NULL abbrev means the end of a series of children.  */
18096       if (abbrev == NULL)
18097         {
18098           if (--nesting_level == 0)
18099             return first_die;
18100
18101           info_ptr += bytes_read;
18102           last_die = parent_die;
18103           parent_die = parent_die->die_parent;
18104           continue;
18105         }
18106
18107       /* Check for template arguments.  We never save these; if
18108          they're seen, we just mark the parent, and go on our way.  */
18109       if (parent_die != NULL
18110           && cu->language == language_cplus
18111           && (abbrev->tag == DW_TAG_template_type_param
18112               || abbrev->tag == DW_TAG_template_value_param))
18113         {
18114           parent_die->has_template_arguments = 1;
18115
18116           if (!load_all)
18117             {
18118               /* We don't need a partial DIE for the template argument.  */
18119               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18120               continue;
18121             }
18122         }
18123
18124       /* We only recurse into c++ subprograms looking for template arguments.
18125          Skip their other children.  */
18126       if (!load_all
18127           && cu->language == language_cplus
18128           && parent_die != NULL
18129           && parent_die->tag == DW_TAG_subprogram)
18130         {
18131           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18132           continue;
18133         }
18134
18135       /* Check whether this DIE is interesting enough to save.  Normally
18136          we would not be interested in members here, but there may be
18137          later variables referencing them via DW_AT_specification (for
18138          static members).  */
18139       if (!load_all
18140           && !is_type_tag_for_partial (abbrev->tag)
18141           && abbrev->tag != DW_TAG_constant
18142           && abbrev->tag != DW_TAG_enumerator
18143           && abbrev->tag != DW_TAG_subprogram
18144           && abbrev->tag != DW_TAG_inlined_subroutine
18145           && abbrev->tag != DW_TAG_lexical_block
18146           && abbrev->tag != DW_TAG_variable
18147           && abbrev->tag != DW_TAG_namespace
18148           && abbrev->tag != DW_TAG_module
18149           && abbrev->tag != DW_TAG_member
18150           && abbrev->tag != DW_TAG_imported_unit
18151           && abbrev->tag != DW_TAG_imported_declaration)
18152         {
18153           /* Otherwise we skip to the next sibling, if any.  */
18154           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18155           continue;
18156         }
18157
18158       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18159                                    abbrev);
18160
18161       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18162
18163       /* This two-pass algorithm for processing partial symbols has a
18164          high cost in cache pressure.  Thus, handle some simple cases
18165          here which cover the majority of C partial symbols.  DIEs
18166          which neither have specification tags in them, nor could have
18167          specification tags elsewhere pointing at them, can simply be
18168          processed and discarded.
18169
18170          This segment is also optional; scan_partial_symbols and
18171          add_partial_symbol will handle these DIEs if we chain
18172          them in normally.  When compilers which do not emit large
18173          quantities of duplicate debug information are more common,
18174          this code can probably be removed.  */
18175
18176       /* Any complete simple types at the top level (pretty much all
18177          of them, for a language without namespaces), can be processed
18178          directly.  */
18179       if (parent_die == NULL
18180           && pdi.has_specification == 0
18181           && pdi.is_declaration == 0
18182           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18183               || pdi.tag == DW_TAG_base_type
18184               || pdi.tag == DW_TAG_subrange_type))
18185         {
18186           if (building_psymtab && pdi.name != NULL)
18187             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18188                                  VAR_DOMAIN, LOC_TYPEDEF,
18189                                  &objfile->static_psymbols,
18190                                  0, cu->language, objfile);
18191           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18192           continue;
18193         }
18194
18195       /* The exception for DW_TAG_typedef with has_children above is
18196          a workaround of GCC PR debug/47510.  In the case of this complaint
18197          type_name_no_tag_or_error will error on such types later.
18198
18199          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18200          it could not find the child DIEs referenced later, this is checked
18201          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18202
18203       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18204         complaint (&symfile_complaints,
18205                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18206                      "- DIE at %s [in module %s]"),
18207                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18208
18209       /* If we're at the second level, and we're an enumerator, and
18210          our parent has no specification (meaning possibly lives in a
18211          namespace elsewhere), then we can add the partial symbol now
18212          instead of queueing it.  */
18213       if (pdi.tag == DW_TAG_enumerator
18214           && parent_die != NULL
18215           && parent_die->die_parent == NULL
18216           && parent_die->tag == DW_TAG_enumeration_type
18217           && parent_die->has_specification == 0)
18218         {
18219           if (pdi.name == NULL)
18220             complaint (&symfile_complaints,
18221                        _("malformed enumerator DIE ignored"));
18222           else if (building_psymtab)
18223             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18224                                  VAR_DOMAIN, LOC_CONST,
18225                                  cu->language == language_cplus
18226                                  ? &objfile->global_psymbols
18227                                  : &objfile->static_psymbols,
18228                                  0, cu->language, objfile);
18229
18230           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18231           continue;
18232         }
18233
18234       struct partial_die_info *part_die
18235         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18236
18237       /* We'll save this DIE so link it in.  */
18238       part_die->die_parent = parent_die;
18239       part_die->die_sibling = NULL;
18240       part_die->die_child = NULL;
18241
18242       if (last_die && last_die == parent_die)
18243         last_die->die_child = part_die;
18244       else if (last_die)
18245         last_die->die_sibling = part_die;
18246
18247       last_die = part_die;
18248
18249       if (first_die == NULL)
18250         first_die = part_die;
18251
18252       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18253          find interesting need to be in the hash table, because we
18254          also have the parent/sibling/child chains; only those that we
18255          might refer to by offset later during partial symbol reading.
18256
18257          For now this means things that might have be the target of a
18258          DW_AT_specification, DW_AT_abstract_origin, or
18259          DW_AT_extension.  DW_AT_extension will refer only to
18260          namespaces; DW_AT_abstract_origin refers to functions (and
18261          many things under the function DIE, but we do not recurse
18262          into function DIEs during partial symbol reading) and
18263          possibly variables as well; DW_AT_specification refers to
18264          declarations.  Declarations ought to have the DW_AT_declaration
18265          flag.  It happens that GCC forgets to put it in sometimes, but
18266          only for functions, not for types.
18267
18268          Adding more things than necessary to the hash table is harmless
18269          except for the performance cost.  Adding too few will result in
18270          wasted time in find_partial_die, when we reread the compilation
18271          unit with load_all_dies set.  */
18272
18273       if (load_all
18274           || abbrev->tag == DW_TAG_constant
18275           || abbrev->tag == DW_TAG_subprogram
18276           || abbrev->tag == DW_TAG_variable
18277           || abbrev->tag == DW_TAG_namespace
18278           || part_die->is_declaration)
18279         {
18280           void **slot;
18281
18282           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18283                                            to_underlying (part_die->sect_off),
18284                                            INSERT);
18285           *slot = part_die;
18286         }
18287
18288       /* For some DIEs we want to follow their children (if any).  For C
18289          we have no reason to follow the children of structures; for other
18290          languages we have to, so that we can get at method physnames
18291          to infer fully qualified class names, for DW_AT_specification,
18292          and for C++ template arguments.  For C++, we also look one level
18293          inside functions to find template arguments (if the name of the
18294          function does not already contain the template arguments).
18295
18296          For Ada, we need to scan the children of subprograms and lexical
18297          blocks as well because Ada allows the definition of nested
18298          entities that could be interesting for the debugger, such as
18299          nested subprograms for instance.  */
18300       if (last_die->has_children
18301           && (load_all
18302               || last_die->tag == DW_TAG_namespace
18303               || last_die->tag == DW_TAG_module
18304               || last_die->tag == DW_TAG_enumeration_type
18305               || (cu->language == language_cplus
18306                   && last_die->tag == DW_TAG_subprogram
18307                   && (last_die->name == NULL
18308                       || strchr (last_die->name, '<') == NULL))
18309               || (cu->language != language_c
18310                   && (last_die->tag == DW_TAG_class_type
18311                       || last_die->tag == DW_TAG_interface_type
18312                       || last_die->tag == DW_TAG_structure_type
18313                       || last_die->tag == DW_TAG_union_type))
18314               || (cu->language == language_ada
18315                   && (last_die->tag == DW_TAG_subprogram
18316                       || last_die->tag == DW_TAG_lexical_block))))
18317         {
18318           nesting_level++;
18319           parent_die = last_die;
18320           continue;
18321         }
18322
18323       /* Otherwise we skip to the next sibling, if any.  */
18324       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18325
18326       /* Back to the top, do it again.  */
18327     }
18328 }
18329
18330 partial_die_info::partial_die_info (sect_offset sect_off_,
18331                                     struct abbrev_info *abbrev)
18332   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18333 {
18334 }
18335
18336 /* Read a minimal amount of information into the minimal die structure.
18337    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18338
18339 const gdb_byte *
18340 partial_die_info::read (const struct die_reader_specs *reader,
18341                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18342 {
18343   struct dwarf2_cu *cu = reader->cu;
18344   struct dwarf2_per_objfile *dwarf2_per_objfile
18345     = cu->per_cu->dwarf2_per_objfile;
18346   unsigned int i;
18347   int has_low_pc_attr = 0;
18348   int has_high_pc_attr = 0;
18349   int high_pc_relative = 0;
18350
18351   for (i = 0; i < abbrev.num_attrs; ++i)
18352     {
18353       struct attribute attr;
18354
18355       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18356
18357       /* Store the data if it is of an attribute we want to keep in a
18358          partial symbol table.  */
18359       switch (attr.name)
18360         {
18361         case DW_AT_name:
18362           switch (tag)
18363             {
18364             case DW_TAG_compile_unit:
18365             case DW_TAG_partial_unit:
18366             case DW_TAG_type_unit:
18367               /* Compilation units have a DW_AT_name that is a filename, not
18368                  a source language identifier.  */
18369             case DW_TAG_enumeration_type:
18370             case DW_TAG_enumerator:
18371               /* These tags always have simple identifiers already; no need
18372                  to canonicalize them.  */
18373               name = DW_STRING (&attr);
18374               break;
18375             default:
18376               {
18377                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18378
18379                 name
18380                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18381                                               &objfile->per_bfd->storage_obstack);
18382               }
18383               break;
18384             }
18385           break;
18386         case DW_AT_linkage_name:
18387         case DW_AT_MIPS_linkage_name:
18388           /* Note that both forms of linkage name might appear.  We
18389              assume they will be the same, and we only store the last
18390              one we see.  */
18391           if (cu->language == language_ada)
18392             name = DW_STRING (&attr);
18393           linkage_name = DW_STRING (&attr);
18394           break;
18395         case DW_AT_low_pc:
18396           has_low_pc_attr = 1;
18397           lowpc = attr_value_as_address (&attr);
18398           break;
18399         case DW_AT_high_pc:
18400           has_high_pc_attr = 1;
18401           highpc = attr_value_as_address (&attr);
18402           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18403                 high_pc_relative = 1;
18404           break;
18405         case DW_AT_location:
18406           /* Support the .debug_loc offsets.  */
18407           if (attr_form_is_block (&attr))
18408             {
18409                d.locdesc = DW_BLOCK (&attr);
18410             }
18411           else if (attr_form_is_section_offset (&attr))
18412             {
18413               dwarf2_complex_location_expr_complaint ();
18414             }
18415           else
18416             {
18417               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18418                                                      "partial symbol information");
18419             }
18420           break;
18421         case DW_AT_external:
18422           is_external = DW_UNSND (&attr);
18423           break;
18424         case DW_AT_declaration:
18425           is_declaration = DW_UNSND (&attr);
18426           break;
18427         case DW_AT_type:
18428           has_type = 1;
18429           break;
18430         case DW_AT_abstract_origin:
18431         case DW_AT_specification:
18432         case DW_AT_extension:
18433           has_specification = 1;
18434           spec_offset = dwarf2_get_ref_die_offset (&attr);
18435           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18436                                    || cu->per_cu->is_dwz);
18437           break;
18438         case DW_AT_sibling:
18439           /* Ignore absolute siblings, they might point outside of
18440              the current compile unit.  */
18441           if (attr.form == DW_FORM_ref_addr)
18442             complaint (&symfile_complaints,
18443                        _("ignoring absolute DW_AT_sibling"));
18444           else
18445             {
18446               const gdb_byte *buffer = reader->buffer;
18447               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18448               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18449
18450               if (sibling_ptr < info_ptr)
18451                 complaint (&symfile_complaints,
18452                            _("DW_AT_sibling points backwards"));
18453               else if (sibling_ptr > reader->buffer_end)
18454                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18455               else
18456                 sibling = sibling_ptr;
18457             }
18458           break;
18459         case DW_AT_byte_size:
18460           has_byte_size = 1;
18461           break;
18462         case DW_AT_const_value:
18463           has_const_value = 1;
18464           break;
18465         case DW_AT_calling_convention:
18466           /* DWARF doesn't provide a way to identify a program's source-level
18467              entry point.  DW_AT_calling_convention attributes are only meant
18468              to describe functions' calling conventions.
18469
18470              However, because it's a necessary piece of information in
18471              Fortran, and before DWARF 4 DW_CC_program was the only
18472              piece of debugging information whose definition refers to
18473              a 'main program' at all, several compilers marked Fortran
18474              main programs with DW_CC_program --- even when those
18475              functions use the standard calling conventions.
18476
18477              Although DWARF now specifies a way to provide this
18478              information, we support this practice for backward
18479              compatibility.  */
18480           if (DW_UNSND (&attr) == DW_CC_program
18481               && cu->language == language_fortran)
18482             main_subprogram = 1;
18483           break;
18484         case DW_AT_inline:
18485           if (DW_UNSND (&attr) == DW_INL_inlined
18486               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18487             may_be_inlined = 1;
18488           break;
18489
18490         case DW_AT_import:
18491           if (tag == DW_TAG_imported_unit)
18492             {
18493               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18494               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18495                                   || cu->per_cu->is_dwz);
18496             }
18497           break;
18498
18499         case DW_AT_main_subprogram:
18500           main_subprogram = DW_UNSND (&attr);
18501           break;
18502
18503         default:
18504           break;
18505         }
18506     }
18507
18508   if (high_pc_relative)
18509     highpc += lowpc;
18510
18511   if (has_low_pc_attr && has_high_pc_attr)
18512     {
18513       /* When using the GNU linker, .gnu.linkonce. sections are used to
18514          eliminate duplicate copies of functions and vtables and such.
18515          The linker will arbitrarily choose one and discard the others.
18516          The AT_*_pc values for such functions refer to local labels in
18517          these sections.  If the section from that file was discarded, the
18518          labels are not in the output, so the relocs get a value of 0.
18519          If this is a discarded function, mark the pc bounds as invalid,
18520          so that GDB will ignore it.  */
18521       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18522         {
18523           struct objfile *objfile = dwarf2_per_objfile->objfile;
18524           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18525
18526           complaint (&symfile_complaints,
18527                      _("DW_AT_low_pc %s is zero "
18528                        "for DIE at %s [in module %s]"),
18529                      paddress (gdbarch, lowpc),
18530                      sect_offset_str (sect_off),
18531                      objfile_name (objfile));
18532         }
18533       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18534       else if (lowpc >= highpc)
18535         {
18536           struct objfile *objfile = dwarf2_per_objfile->objfile;
18537           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18538
18539           complaint (&symfile_complaints,
18540                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18541                        "for DIE at %s [in module %s]"),
18542                      paddress (gdbarch, lowpc),
18543                      paddress (gdbarch, highpc),
18544                      sect_offset_str (sect_off),
18545                      objfile_name (objfile));
18546         }
18547       else
18548         has_pc_info = 1;
18549     }
18550
18551   return info_ptr;
18552 }
18553
18554 /* Find a cached partial DIE at OFFSET in CU.  */
18555
18556 struct partial_die_info *
18557 dwarf2_cu::find_partial_die (sect_offset sect_off)
18558 {
18559   struct partial_die_info *lookup_die = NULL;
18560   struct partial_die_info part_die (sect_off);
18561
18562   lookup_die = ((struct partial_die_info *)
18563                 htab_find_with_hash (partial_dies, &part_die,
18564                                      to_underlying (sect_off)));
18565
18566   return lookup_die;
18567 }
18568
18569 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18570    except in the case of .debug_types DIEs which do not reference
18571    outside their CU (they do however referencing other types via
18572    DW_FORM_ref_sig8).  */
18573
18574 static struct partial_die_info *
18575 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18576 {
18577   struct dwarf2_per_objfile *dwarf2_per_objfile
18578     = cu->per_cu->dwarf2_per_objfile;
18579   struct objfile *objfile = dwarf2_per_objfile->objfile;
18580   struct dwarf2_per_cu_data *per_cu = NULL;
18581   struct partial_die_info *pd = NULL;
18582
18583   if (offset_in_dwz == cu->per_cu->is_dwz
18584       && offset_in_cu_p (&cu->header, sect_off))
18585     {
18586       pd = cu->find_partial_die (sect_off);
18587       if (pd != NULL)
18588         return pd;
18589       /* We missed recording what we needed.
18590          Load all dies and try again.  */
18591       per_cu = cu->per_cu;
18592     }
18593   else
18594     {
18595       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18596       if (cu->per_cu->is_debug_types)
18597         {
18598           error (_("Dwarf Error: Type Unit at offset %s contains"
18599                    " external reference to offset %s [in module %s].\n"),
18600                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18601                  bfd_get_filename (objfile->obfd));
18602         }
18603       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18604                                                  dwarf2_per_objfile);
18605
18606       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18607         load_partial_comp_unit (per_cu);
18608
18609       per_cu->cu->last_used = 0;
18610       pd = per_cu->cu->find_partial_die (sect_off);
18611     }
18612
18613   /* If we didn't find it, and not all dies have been loaded,
18614      load them all and try again.  */
18615
18616   if (pd == NULL && per_cu->load_all_dies == 0)
18617     {
18618       per_cu->load_all_dies = 1;
18619
18620       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18621          THIS_CU->cu may already be in use.  So we can't just free it and
18622          replace its DIEs with the ones we read in.  Instead, we leave those
18623          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18624          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18625          set.  */
18626       load_partial_comp_unit (per_cu);
18627
18628       pd = per_cu->cu->find_partial_die (sect_off);
18629     }
18630
18631   if (pd == NULL)
18632     internal_error (__FILE__, __LINE__,
18633                     _("could not find partial DIE %s "
18634                       "in cache [from module %s]\n"),
18635                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18636   return pd;
18637 }
18638
18639 /* See if we can figure out if the class lives in a namespace.  We do
18640    this by looking for a member function; its demangled name will
18641    contain namespace info, if there is any.  */
18642
18643 static void
18644 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18645                                   struct dwarf2_cu *cu)
18646 {
18647   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18648      what template types look like, because the demangler
18649      frequently doesn't give the same name as the debug info.  We
18650      could fix this by only using the demangled name to get the
18651      prefix (but see comment in read_structure_type).  */
18652
18653   struct partial_die_info *real_pdi;
18654   struct partial_die_info *child_pdi;
18655
18656   /* If this DIE (this DIE's specification, if any) has a parent, then
18657      we should not do this.  We'll prepend the parent's fully qualified
18658      name when we create the partial symbol.  */
18659
18660   real_pdi = struct_pdi;
18661   while (real_pdi->has_specification)
18662     real_pdi = find_partial_die (real_pdi->spec_offset,
18663                                  real_pdi->spec_is_dwz, cu);
18664
18665   if (real_pdi->die_parent != NULL)
18666     return;
18667
18668   for (child_pdi = struct_pdi->die_child;
18669        child_pdi != NULL;
18670        child_pdi = child_pdi->die_sibling)
18671     {
18672       if (child_pdi->tag == DW_TAG_subprogram
18673           && child_pdi->linkage_name != NULL)
18674         {
18675           char *actual_class_name
18676             = language_class_name_from_physname (cu->language_defn,
18677                                                  child_pdi->linkage_name);
18678           if (actual_class_name != NULL)
18679             {
18680               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18681               struct_pdi->name
18682                 = ((const char *)
18683                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18684                                   actual_class_name,
18685                                   strlen (actual_class_name)));
18686               xfree (actual_class_name);
18687             }
18688           break;
18689         }
18690     }
18691 }
18692
18693 void
18694 partial_die_info::fixup (struct dwarf2_cu *cu)
18695 {
18696   /* Once we've fixed up a die, there's no point in doing so again.
18697      This also avoids a memory leak if we were to call
18698      guess_partial_die_structure_name multiple times.  */
18699   if (fixup_called)
18700     return;
18701
18702   /* If we found a reference attribute and the DIE has no name, try
18703      to find a name in the referred to DIE.  */
18704
18705   if (name == NULL && has_specification)
18706     {
18707       struct partial_die_info *spec_die;
18708
18709       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18710
18711       spec_die->fixup (cu);
18712
18713       if (spec_die->name)
18714         {
18715           name = spec_die->name;
18716
18717           /* Copy DW_AT_external attribute if it is set.  */
18718           if (spec_die->is_external)
18719             is_external = spec_die->is_external;
18720         }
18721     }
18722
18723   /* Set default names for some unnamed DIEs.  */
18724
18725   if (name == NULL && tag == DW_TAG_namespace)
18726     name = CP_ANONYMOUS_NAMESPACE_STR;
18727
18728   /* If there is no parent die to provide a namespace, and there are
18729      children, see if we can determine the namespace from their linkage
18730      name.  */
18731   if (cu->language == language_cplus
18732       && !VEC_empty (dwarf2_section_info_def,
18733                      cu->per_cu->dwarf2_per_objfile->types)
18734       && die_parent == NULL
18735       && has_children
18736       && (tag == DW_TAG_class_type
18737           || tag == DW_TAG_structure_type
18738           || tag == DW_TAG_union_type))
18739     guess_partial_die_structure_name (this, cu);
18740
18741   /* GCC might emit a nameless struct or union that has a linkage
18742      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18743   if (name == NULL
18744       && (tag == DW_TAG_class_type
18745           || tag == DW_TAG_interface_type
18746           || tag == DW_TAG_structure_type
18747           || tag == DW_TAG_union_type)
18748       && linkage_name != NULL)
18749     {
18750       char *demangled;
18751
18752       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18753       if (demangled)
18754         {
18755           const char *base;
18756
18757           /* Strip any leading namespaces/classes, keep only the base name.
18758              DW_AT_name for named DIEs does not contain the prefixes.  */
18759           base = strrchr (demangled, ':');
18760           if (base && base > demangled && base[-1] == ':')
18761             base++;
18762           else
18763             base = demangled;
18764
18765           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18766           name
18767             = ((const char *)
18768                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18769                               base, strlen (base)));
18770           xfree (demangled);
18771         }
18772     }
18773
18774   fixup_called = 1;
18775 }
18776
18777 /* Read an attribute value described by an attribute form.  */
18778
18779 static const gdb_byte *
18780 read_attribute_value (const struct die_reader_specs *reader,
18781                       struct attribute *attr, unsigned form,
18782                       LONGEST implicit_const, const gdb_byte *info_ptr)
18783 {
18784   struct dwarf2_cu *cu = reader->cu;
18785   struct dwarf2_per_objfile *dwarf2_per_objfile
18786     = cu->per_cu->dwarf2_per_objfile;
18787   struct objfile *objfile = dwarf2_per_objfile->objfile;
18788   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18789   bfd *abfd = reader->abfd;
18790   struct comp_unit_head *cu_header = &cu->header;
18791   unsigned int bytes_read;
18792   struct dwarf_block *blk;
18793
18794   attr->form = (enum dwarf_form) form;
18795   switch (form)
18796     {
18797     case DW_FORM_ref_addr:
18798       if (cu->header.version == 2)
18799         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18800       else
18801         DW_UNSND (attr) = read_offset (abfd, info_ptr,
18802                                        &cu->header, &bytes_read);
18803       info_ptr += bytes_read;
18804       break;
18805     case DW_FORM_GNU_ref_alt:
18806       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18807       info_ptr += bytes_read;
18808       break;
18809     case DW_FORM_addr:
18810       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18811       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
18812       info_ptr += bytes_read;
18813       break;
18814     case DW_FORM_block2:
18815       blk = dwarf_alloc_block (cu);
18816       blk->size = read_2_bytes (abfd, info_ptr);
18817       info_ptr += 2;
18818       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18819       info_ptr += blk->size;
18820       DW_BLOCK (attr) = blk;
18821       break;
18822     case DW_FORM_block4:
18823       blk = dwarf_alloc_block (cu);
18824       blk->size = read_4_bytes (abfd, info_ptr);
18825       info_ptr += 4;
18826       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18827       info_ptr += blk->size;
18828       DW_BLOCK (attr) = blk;
18829       break;
18830     case DW_FORM_data2:
18831       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
18832       info_ptr += 2;
18833       break;
18834     case DW_FORM_data4:
18835       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
18836       info_ptr += 4;
18837       break;
18838     case DW_FORM_data8:
18839       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
18840       info_ptr += 8;
18841       break;
18842     case DW_FORM_data16:
18843       blk = dwarf_alloc_block (cu);
18844       blk->size = 16;
18845       blk->data = read_n_bytes (abfd, info_ptr, 16);
18846       info_ptr += 16;
18847       DW_BLOCK (attr) = blk;
18848       break;
18849     case DW_FORM_sec_offset:
18850       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18851       info_ptr += bytes_read;
18852       break;
18853     case DW_FORM_string:
18854       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
18855       DW_STRING_IS_CANONICAL (attr) = 0;
18856       info_ptr += bytes_read;
18857       break;
18858     case DW_FORM_strp:
18859       if (!cu->per_cu->is_dwz)
18860         {
18861           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
18862                                                    abfd, info_ptr, cu_header,
18863                                                    &bytes_read);
18864           DW_STRING_IS_CANONICAL (attr) = 0;
18865           info_ptr += bytes_read;
18866           break;
18867         }
18868       /* FALLTHROUGH */
18869     case DW_FORM_line_strp:
18870       if (!cu->per_cu->is_dwz)
18871         {
18872           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
18873                                                         abfd, info_ptr,
18874                                                         cu_header, &bytes_read);
18875           DW_STRING_IS_CANONICAL (attr) = 0;
18876           info_ptr += bytes_read;
18877           break;
18878         }
18879       /* FALLTHROUGH */
18880     case DW_FORM_GNU_strp_alt:
18881       {
18882         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
18883         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
18884                                           &bytes_read);
18885
18886         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
18887                                                           dwz, str_offset);
18888         DW_STRING_IS_CANONICAL (attr) = 0;
18889         info_ptr += bytes_read;
18890       }
18891       break;
18892     case DW_FORM_exprloc:
18893     case DW_FORM_block:
18894       blk = dwarf_alloc_block (cu);
18895       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18896       info_ptr += bytes_read;
18897       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18898       info_ptr += blk->size;
18899       DW_BLOCK (attr) = blk;
18900       break;
18901     case DW_FORM_block1:
18902       blk = dwarf_alloc_block (cu);
18903       blk->size = read_1_byte (abfd, info_ptr);
18904       info_ptr += 1;
18905       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18906       info_ptr += blk->size;
18907       DW_BLOCK (attr) = blk;
18908       break;
18909     case DW_FORM_data1:
18910       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
18911       info_ptr += 1;
18912       break;
18913     case DW_FORM_flag:
18914       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
18915       info_ptr += 1;
18916       break;
18917     case DW_FORM_flag_present:
18918       DW_UNSND (attr) = 1;
18919       break;
18920     case DW_FORM_sdata:
18921       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
18922       info_ptr += bytes_read;
18923       break;
18924     case DW_FORM_udata:
18925       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18926       info_ptr += bytes_read;
18927       break;
18928     case DW_FORM_ref1:
18929       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
18930                          + read_1_byte (abfd, info_ptr));
18931       info_ptr += 1;
18932       break;
18933     case DW_FORM_ref2:
18934       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
18935                          + read_2_bytes (abfd, info_ptr));
18936       info_ptr += 2;
18937       break;
18938     case DW_FORM_ref4:
18939       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
18940                          + read_4_bytes (abfd, info_ptr));
18941       info_ptr += 4;
18942       break;
18943     case DW_FORM_ref8:
18944       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
18945                          + read_8_bytes (abfd, info_ptr));
18946       info_ptr += 8;
18947       break;
18948     case DW_FORM_ref_sig8:
18949       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
18950       info_ptr += 8;
18951       break;
18952     case DW_FORM_ref_udata:
18953       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
18954                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
18955       info_ptr += bytes_read;
18956       break;
18957     case DW_FORM_indirect:
18958       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18959       info_ptr += bytes_read;
18960       if (form == DW_FORM_implicit_const)
18961         {
18962           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
18963           info_ptr += bytes_read;
18964         }
18965       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
18966                                        info_ptr);
18967       break;
18968     case DW_FORM_implicit_const:
18969       DW_SND (attr) = implicit_const;
18970       break;
18971     case DW_FORM_GNU_addr_index:
18972       if (reader->dwo_file == NULL)
18973         {
18974           /* For now flag a hard error.
18975              Later we can turn this into a complaint.  */
18976           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
18977                  dwarf_form_name (form),
18978                  bfd_get_filename (abfd));
18979         }
18980       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
18981       info_ptr += bytes_read;
18982       break;
18983     case DW_FORM_GNU_str_index:
18984       if (reader->dwo_file == NULL)
18985         {
18986           /* For now flag a hard error.
18987              Later we can turn this into a complaint if warranted.  */
18988           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
18989                  dwarf_form_name (form),
18990                  bfd_get_filename (abfd));
18991         }
18992       {
18993         ULONGEST str_index =
18994           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18995
18996         DW_STRING (attr) = read_str_index (reader, str_index);
18997         DW_STRING_IS_CANONICAL (attr) = 0;
18998         info_ptr += bytes_read;
18999       }
19000       break;
19001     default:
19002       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19003              dwarf_form_name (form),
19004              bfd_get_filename (abfd));
19005     }
19006
19007   /* Super hack.  */
19008   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19009     attr->form = DW_FORM_GNU_ref_alt;
19010
19011   /* We have seen instances where the compiler tried to emit a byte
19012      size attribute of -1 which ended up being encoded as an unsigned
19013      0xffffffff.  Although 0xffffffff is technically a valid size value,
19014      an object of this size seems pretty unlikely so we can relatively
19015      safely treat these cases as if the size attribute was invalid and
19016      treat them as zero by default.  */
19017   if (attr->name == DW_AT_byte_size
19018       && form == DW_FORM_data4
19019       && DW_UNSND (attr) >= 0xffffffff)
19020     {
19021       complaint
19022         (&symfile_complaints,
19023          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19024          hex_string (DW_UNSND (attr)));
19025       DW_UNSND (attr) = 0;
19026     }
19027
19028   return info_ptr;
19029 }
19030
19031 /* Read an attribute described by an abbreviated attribute.  */
19032
19033 static const gdb_byte *
19034 read_attribute (const struct die_reader_specs *reader,
19035                 struct attribute *attr, struct attr_abbrev *abbrev,
19036                 const gdb_byte *info_ptr)
19037 {
19038   attr->name = abbrev->name;
19039   return read_attribute_value (reader, attr, abbrev->form,
19040                                abbrev->implicit_const, info_ptr);
19041 }
19042
19043 /* Read dwarf information from a buffer.  */
19044
19045 static unsigned int
19046 read_1_byte (bfd *abfd, const gdb_byte *buf)
19047 {
19048   return bfd_get_8 (abfd, buf);
19049 }
19050
19051 static int
19052 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19053 {
19054   return bfd_get_signed_8 (abfd, buf);
19055 }
19056
19057 static unsigned int
19058 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19059 {
19060   return bfd_get_16 (abfd, buf);
19061 }
19062
19063 static int
19064 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19065 {
19066   return bfd_get_signed_16 (abfd, buf);
19067 }
19068
19069 static unsigned int
19070 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19071 {
19072   return bfd_get_32 (abfd, buf);
19073 }
19074
19075 static int
19076 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19077 {
19078   return bfd_get_signed_32 (abfd, buf);
19079 }
19080
19081 static ULONGEST
19082 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19083 {
19084   return bfd_get_64 (abfd, buf);
19085 }
19086
19087 static CORE_ADDR
19088 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19089               unsigned int *bytes_read)
19090 {
19091   struct comp_unit_head *cu_header = &cu->header;
19092   CORE_ADDR retval = 0;
19093
19094   if (cu_header->signed_addr_p)
19095     {
19096       switch (cu_header->addr_size)
19097         {
19098         case 2:
19099           retval = bfd_get_signed_16 (abfd, buf);
19100           break;
19101         case 4:
19102           retval = bfd_get_signed_32 (abfd, buf);
19103           break;
19104         case 8:
19105           retval = bfd_get_signed_64 (abfd, buf);
19106           break;
19107         default:
19108           internal_error (__FILE__, __LINE__,
19109                           _("read_address: bad switch, signed [in module %s]"),
19110                           bfd_get_filename (abfd));
19111         }
19112     }
19113   else
19114     {
19115       switch (cu_header->addr_size)
19116         {
19117         case 2:
19118           retval = bfd_get_16 (abfd, buf);
19119           break;
19120         case 4:
19121           retval = bfd_get_32 (abfd, buf);
19122           break;
19123         case 8:
19124           retval = bfd_get_64 (abfd, buf);
19125           break;
19126         default:
19127           internal_error (__FILE__, __LINE__,
19128                           _("read_address: bad switch, "
19129                             "unsigned [in module %s]"),
19130                           bfd_get_filename (abfd));
19131         }
19132     }
19133
19134   *bytes_read = cu_header->addr_size;
19135   return retval;
19136 }
19137
19138 /* Read the initial length from a section.  The (draft) DWARF 3
19139    specification allows the initial length to take up either 4 bytes
19140    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19141    bytes describe the length and all offsets will be 8 bytes in length
19142    instead of 4.
19143
19144    An older, non-standard 64-bit format is also handled by this
19145    function.  The older format in question stores the initial length
19146    as an 8-byte quantity without an escape value.  Lengths greater
19147    than 2^32 aren't very common which means that the initial 4 bytes
19148    is almost always zero.  Since a length value of zero doesn't make
19149    sense for the 32-bit format, this initial zero can be considered to
19150    be an escape value which indicates the presence of the older 64-bit
19151    format.  As written, the code can't detect (old format) lengths
19152    greater than 4GB.  If it becomes necessary to handle lengths
19153    somewhat larger than 4GB, we could allow other small values (such
19154    as the non-sensical values of 1, 2, and 3) to also be used as
19155    escape values indicating the presence of the old format.
19156
19157    The value returned via bytes_read should be used to increment the
19158    relevant pointer after calling read_initial_length().
19159
19160    [ Note:  read_initial_length() and read_offset() are based on the
19161      document entitled "DWARF Debugging Information Format", revision
19162      3, draft 8, dated November 19, 2001.  This document was obtained
19163      from:
19164
19165         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19166
19167      This document is only a draft and is subject to change.  (So beware.)
19168
19169      Details regarding the older, non-standard 64-bit format were
19170      determined empirically by examining 64-bit ELF files produced by
19171      the SGI toolchain on an IRIX 6.5 machine.
19172
19173      - Kevin, July 16, 2002
19174    ] */
19175
19176 static LONGEST
19177 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19178 {
19179   LONGEST length = bfd_get_32 (abfd, buf);
19180
19181   if (length == 0xffffffff)
19182     {
19183       length = bfd_get_64 (abfd, buf + 4);
19184       *bytes_read = 12;
19185     }
19186   else if (length == 0)
19187     {
19188       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19189       length = bfd_get_64 (abfd, buf);
19190       *bytes_read = 8;
19191     }
19192   else
19193     {
19194       *bytes_read = 4;
19195     }
19196
19197   return length;
19198 }
19199
19200 /* Cover function for read_initial_length.
19201    Returns the length of the object at BUF, and stores the size of the
19202    initial length in *BYTES_READ and stores the size that offsets will be in
19203    *OFFSET_SIZE.
19204    If the initial length size is not equivalent to that specified in
19205    CU_HEADER then issue a complaint.
19206    This is useful when reading non-comp-unit headers.  */
19207
19208 static LONGEST
19209 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19210                                         const struct comp_unit_head *cu_header,
19211                                         unsigned int *bytes_read,
19212                                         unsigned int *offset_size)
19213 {
19214   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19215
19216   gdb_assert (cu_header->initial_length_size == 4
19217               || cu_header->initial_length_size == 8
19218               || cu_header->initial_length_size == 12);
19219
19220   if (cu_header->initial_length_size != *bytes_read)
19221     complaint (&symfile_complaints,
19222                _("intermixed 32-bit and 64-bit DWARF sections"));
19223
19224   *offset_size = (*bytes_read == 4) ? 4 : 8;
19225   return length;
19226 }
19227
19228 /* Read an offset from the data stream.  The size of the offset is
19229    given by cu_header->offset_size.  */
19230
19231 static LONGEST
19232 read_offset (bfd *abfd, const gdb_byte *buf,
19233              const struct comp_unit_head *cu_header,
19234              unsigned int *bytes_read)
19235 {
19236   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19237
19238   *bytes_read = cu_header->offset_size;
19239   return offset;
19240 }
19241
19242 /* Read an offset from the data stream.  */
19243
19244 static LONGEST
19245 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19246 {
19247   LONGEST retval = 0;
19248
19249   switch (offset_size)
19250     {
19251     case 4:
19252       retval = bfd_get_32 (abfd, buf);
19253       break;
19254     case 8:
19255       retval = bfd_get_64 (abfd, buf);
19256       break;
19257     default:
19258       internal_error (__FILE__, __LINE__,
19259                       _("read_offset_1: bad switch [in module %s]"),
19260                       bfd_get_filename (abfd));
19261     }
19262
19263   return retval;
19264 }
19265
19266 static const gdb_byte *
19267 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19268 {
19269   /* If the size of a host char is 8 bits, we can return a pointer
19270      to the buffer, otherwise we have to copy the data to a buffer
19271      allocated on the temporary obstack.  */
19272   gdb_assert (HOST_CHAR_BIT == 8);
19273   return buf;
19274 }
19275
19276 static const char *
19277 read_direct_string (bfd *abfd, const gdb_byte *buf,
19278                     unsigned int *bytes_read_ptr)
19279 {
19280   /* If the size of a host char is 8 bits, we can return a pointer
19281      to the string, otherwise we have to copy the string to a buffer
19282      allocated on the temporary obstack.  */
19283   gdb_assert (HOST_CHAR_BIT == 8);
19284   if (*buf == '\0')
19285     {
19286       *bytes_read_ptr = 1;
19287       return NULL;
19288     }
19289   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19290   return (const char *) buf;
19291 }
19292
19293 /* Return pointer to string at section SECT offset STR_OFFSET with error
19294    reporting strings FORM_NAME and SECT_NAME.  */
19295
19296 static const char *
19297 read_indirect_string_at_offset_from (struct objfile *objfile,
19298                                      bfd *abfd, LONGEST str_offset,
19299                                      struct dwarf2_section_info *sect,
19300                                      const char *form_name,
19301                                      const char *sect_name)
19302 {
19303   dwarf2_read_section (objfile, sect);
19304   if (sect->buffer == NULL)
19305     error (_("%s used without %s section [in module %s]"),
19306            form_name, sect_name, bfd_get_filename (abfd));
19307   if (str_offset >= sect->size)
19308     error (_("%s pointing outside of %s section [in module %s]"),
19309            form_name, sect_name, bfd_get_filename (abfd));
19310   gdb_assert (HOST_CHAR_BIT == 8);
19311   if (sect->buffer[str_offset] == '\0')
19312     return NULL;
19313   return (const char *) (sect->buffer + str_offset);
19314 }
19315
19316 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19317
19318 static const char *
19319 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19320                                 bfd *abfd, LONGEST str_offset)
19321 {
19322   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19323                                               abfd, str_offset,
19324                                               &dwarf2_per_objfile->str,
19325                                               "DW_FORM_strp", ".debug_str");
19326 }
19327
19328 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19329
19330 static const char *
19331 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19332                                      bfd *abfd, LONGEST str_offset)
19333 {
19334   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19335                                               abfd, str_offset,
19336                                               &dwarf2_per_objfile->line_str,
19337                                               "DW_FORM_line_strp",
19338                                               ".debug_line_str");
19339 }
19340
19341 /* Read a string at offset STR_OFFSET in the .debug_str section from
19342    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19343    the string consists of a single NUL byte, return NULL; otherwise
19344    return a pointer to the string.  */
19345
19346 static const char *
19347 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19348                                LONGEST str_offset)
19349 {
19350   dwarf2_read_section (objfile, &dwz->str);
19351
19352   if (dwz->str.buffer == NULL)
19353     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19354              "section [in module %s]"),
19355            bfd_get_filename (dwz->dwz_bfd));
19356   if (str_offset >= dwz->str.size)
19357     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19358              ".debug_str section [in module %s]"),
19359            bfd_get_filename (dwz->dwz_bfd));
19360   gdb_assert (HOST_CHAR_BIT == 8);
19361   if (dwz->str.buffer[str_offset] == '\0')
19362     return NULL;
19363   return (const char *) (dwz->str.buffer + str_offset);
19364 }
19365
19366 /* Return pointer to string at .debug_str offset as read from BUF.
19367    BUF is assumed to be in a compilation unit described by CU_HEADER.
19368    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19369
19370 static const char *
19371 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19372                       const gdb_byte *buf,
19373                       const struct comp_unit_head *cu_header,
19374                       unsigned int *bytes_read_ptr)
19375 {
19376   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19377
19378   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19379 }
19380
19381 /* Return pointer to string at .debug_line_str offset as read from BUF.
19382    BUF is assumed to be in a compilation unit described by CU_HEADER.
19383    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19384
19385 static const char *
19386 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19387                            bfd *abfd, const gdb_byte *buf,
19388                            const struct comp_unit_head *cu_header,
19389                            unsigned int *bytes_read_ptr)
19390 {
19391   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19392
19393   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19394                                               str_offset);
19395 }
19396
19397 ULONGEST
19398 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19399                           unsigned int *bytes_read_ptr)
19400 {
19401   ULONGEST result;
19402   unsigned int num_read;
19403   int shift;
19404   unsigned char byte;
19405
19406   result = 0;
19407   shift = 0;
19408   num_read = 0;
19409   while (1)
19410     {
19411       byte = bfd_get_8 (abfd, buf);
19412       buf++;
19413       num_read++;
19414       result |= ((ULONGEST) (byte & 127) << shift);
19415       if ((byte & 128) == 0)
19416         {
19417           break;
19418         }
19419       shift += 7;
19420     }
19421   *bytes_read_ptr = num_read;
19422   return result;
19423 }
19424
19425 static LONGEST
19426 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19427                     unsigned int *bytes_read_ptr)
19428 {
19429   LONGEST result;
19430   int shift, num_read;
19431   unsigned char byte;
19432
19433   result = 0;
19434   shift = 0;
19435   num_read = 0;
19436   while (1)
19437     {
19438       byte = bfd_get_8 (abfd, buf);
19439       buf++;
19440       num_read++;
19441       result |= ((LONGEST) (byte & 127) << shift);
19442       shift += 7;
19443       if ((byte & 128) == 0)
19444         {
19445           break;
19446         }
19447     }
19448   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19449     result |= -(((LONGEST) 1) << shift);
19450   *bytes_read_ptr = num_read;
19451   return result;
19452 }
19453
19454 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19455    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19456    ADDR_SIZE is the size of addresses from the CU header.  */
19457
19458 static CORE_ADDR
19459 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19460                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19461 {
19462   struct objfile *objfile = dwarf2_per_objfile->objfile;
19463   bfd *abfd = objfile->obfd;
19464   const gdb_byte *info_ptr;
19465
19466   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19467   if (dwarf2_per_objfile->addr.buffer == NULL)
19468     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19469            objfile_name (objfile));
19470   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19471     error (_("DW_FORM_addr_index pointing outside of "
19472              ".debug_addr section [in module %s]"),
19473            objfile_name (objfile));
19474   info_ptr = (dwarf2_per_objfile->addr.buffer
19475               + addr_base + addr_index * addr_size);
19476   if (addr_size == 4)
19477     return bfd_get_32 (abfd, info_ptr);
19478   else
19479     return bfd_get_64 (abfd, info_ptr);
19480 }
19481
19482 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19483
19484 static CORE_ADDR
19485 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19486 {
19487   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19488                             cu->addr_base, cu->header.addr_size);
19489 }
19490
19491 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19492
19493 static CORE_ADDR
19494 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19495                              unsigned int *bytes_read)
19496 {
19497   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19498   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19499
19500   return read_addr_index (cu, addr_index);
19501 }
19502
19503 /* Data structure to pass results from dwarf2_read_addr_index_reader
19504    back to dwarf2_read_addr_index.  */
19505
19506 struct dwarf2_read_addr_index_data
19507 {
19508   ULONGEST addr_base;
19509   int addr_size;
19510 };
19511
19512 /* die_reader_func for dwarf2_read_addr_index.  */
19513
19514 static void
19515 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19516                                const gdb_byte *info_ptr,
19517                                struct die_info *comp_unit_die,
19518                                int has_children,
19519                                void *data)
19520 {
19521   struct dwarf2_cu *cu = reader->cu;
19522   struct dwarf2_read_addr_index_data *aidata =
19523     (struct dwarf2_read_addr_index_data *) data;
19524
19525   aidata->addr_base = cu->addr_base;
19526   aidata->addr_size = cu->header.addr_size;
19527 }
19528
19529 /* Given an index in .debug_addr, fetch the value.
19530    NOTE: This can be called during dwarf expression evaluation,
19531    long after the debug information has been read, and thus per_cu->cu
19532    may no longer exist.  */
19533
19534 CORE_ADDR
19535 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19536                         unsigned int addr_index)
19537 {
19538   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19539   struct dwarf2_cu *cu = per_cu->cu;
19540   ULONGEST addr_base;
19541   int addr_size;
19542
19543   /* We need addr_base and addr_size.
19544      If we don't have PER_CU->cu, we have to get it.
19545      Nasty, but the alternative is storing the needed info in PER_CU,
19546      which at this point doesn't seem justified: it's not clear how frequently
19547      it would get used and it would increase the size of every PER_CU.
19548      Entry points like dwarf2_per_cu_addr_size do a similar thing
19549      so we're not in uncharted territory here.
19550      Alas we need to be a bit more complicated as addr_base is contained
19551      in the DIE.
19552
19553      We don't need to read the entire CU(/TU).
19554      We just need the header and top level die.
19555
19556      IWBN to use the aging mechanism to let us lazily later discard the CU.
19557      For now we skip this optimization.  */
19558
19559   if (cu != NULL)
19560     {
19561       addr_base = cu->addr_base;
19562       addr_size = cu->header.addr_size;
19563     }
19564   else
19565     {
19566       struct dwarf2_read_addr_index_data aidata;
19567
19568       /* Note: We can't use init_cutu_and_read_dies_simple here,
19569          we need addr_base.  */
19570       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
19571                                dwarf2_read_addr_index_reader, &aidata);
19572       addr_base = aidata.addr_base;
19573       addr_size = aidata.addr_size;
19574     }
19575
19576   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19577                             addr_size);
19578 }
19579
19580 /* Given a DW_FORM_GNU_str_index, fetch the string.
19581    This is only used by the Fission support.  */
19582
19583 static const char *
19584 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19585 {
19586   struct dwarf2_cu *cu = reader->cu;
19587   struct dwarf2_per_objfile *dwarf2_per_objfile
19588     = cu->per_cu->dwarf2_per_objfile;
19589   struct objfile *objfile = dwarf2_per_objfile->objfile;
19590   const char *objf_name = objfile_name (objfile);
19591   bfd *abfd = objfile->obfd;
19592   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19593   struct dwarf2_section_info *str_offsets_section =
19594     &reader->dwo_file->sections.str_offsets;
19595   const gdb_byte *info_ptr;
19596   ULONGEST str_offset;
19597   static const char form_name[] = "DW_FORM_GNU_str_index";
19598
19599   dwarf2_read_section (objfile, str_section);
19600   dwarf2_read_section (objfile, str_offsets_section);
19601   if (str_section->buffer == NULL)
19602     error (_("%s used without .debug_str.dwo section"
19603              " in CU at offset %s [in module %s]"),
19604            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19605   if (str_offsets_section->buffer == NULL)
19606     error (_("%s used without .debug_str_offsets.dwo section"
19607              " in CU at offset %s [in module %s]"),
19608            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19609   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19610     error (_("%s pointing outside of .debug_str_offsets.dwo"
19611              " section in CU at offset %s [in module %s]"),
19612            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19613   info_ptr = (str_offsets_section->buffer
19614               + str_index * cu->header.offset_size);
19615   if (cu->header.offset_size == 4)
19616     str_offset = bfd_get_32 (abfd, info_ptr);
19617   else
19618     str_offset = bfd_get_64 (abfd, info_ptr);
19619   if (str_offset >= str_section->size)
19620     error (_("Offset from %s pointing outside of"
19621              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19622            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19623   return (const char *) (str_section->buffer + str_offset);
19624 }
19625
19626 /* Return the length of an LEB128 number in BUF.  */
19627
19628 static int
19629 leb128_size (const gdb_byte *buf)
19630 {
19631   const gdb_byte *begin = buf;
19632   gdb_byte byte;
19633
19634   while (1)
19635     {
19636       byte = *buf++;
19637       if ((byte & 128) == 0)
19638         return buf - begin;
19639     }
19640 }
19641
19642 static void
19643 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19644 {
19645   switch (lang)
19646     {
19647     case DW_LANG_C89:
19648     case DW_LANG_C99:
19649     case DW_LANG_C11:
19650     case DW_LANG_C:
19651     case DW_LANG_UPC:
19652       cu->language = language_c;
19653       break;
19654     case DW_LANG_Java:
19655     case DW_LANG_C_plus_plus:
19656     case DW_LANG_C_plus_plus_11:
19657     case DW_LANG_C_plus_plus_14:
19658       cu->language = language_cplus;
19659       break;
19660     case DW_LANG_D:
19661       cu->language = language_d;
19662       break;
19663     case DW_LANG_Fortran77:
19664     case DW_LANG_Fortran90:
19665     case DW_LANG_Fortran95:
19666     case DW_LANG_Fortran03:
19667     case DW_LANG_Fortran08:
19668       cu->language = language_fortran;
19669       break;
19670     case DW_LANG_Go:
19671       cu->language = language_go;
19672       break;
19673     case DW_LANG_Mips_Assembler:
19674       cu->language = language_asm;
19675       break;
19676     case DW_LANG_Ada83:
19677     case DW_LANG_Ada95:
19678       cu->language = language_ada;
19679       break;
19680     case DW_LANG_Modula2:
19681       cu->language = language_m2;
19682       break;
19683     case DW_LANG_Pascal83:
19684       cu->language = language_pascal;
19685       break;
19686     case DW_LANG_ObjC:
19687       cu->language = language_objc;
19688       break;
19689     case DW_LANG_Rust:
19690     case DW_LANG_Rust_old:
19691       cu->language = language_rust;
19692       break;
19693     case DW_LANG_Cobol74:
19694     case DW_LANG_Cobol85:
19695     default:
19696       cu->language = language_minimal;
19697       break;
19698     }
19699   cu->language_defn = language_def (cu->language);
19700 }
19701
19702 /* Return the named attribute or NULL if not there.  */
19703
19704 static struct attribute *
19705 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19706 {
19707   for (;;)
19708     {
19709       unsigned int i;
19710       struct attribute *spec = NULL;
19711
19712       for (i = 0; i < die->num_attrs; ++i)
19713         {
19714           if (die->attrs[i].name == name)
19715             return &die->attrs[i];
19716           if (die->attrs[i].name == DW_AT_specification
19717               || die->attrs[i].name == DW_AT_abstract_origin)
19718             spec = &die->attrs[i];
19719         }
19720
19721       if (!spec)
19722         break;
19723
19724       die = follow_die_ref (die, spec, &cu);
19725     }
19726
19727   return NULL;
19728 }
19729
19730 /* Return the named attribute or NULL if not there,
19731    but do not follow DW_AT_specification, etc.
19732    This is for use in contexts where we're reading .debug_types dies.
19733    Following DW_AT_specification, DW_AT_abstract_origin will take us
19734    back up the chain, and we want to go down.  */
19735
19736 static struct attribute *
19737 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19738 {
19739   unsigned int i;
19740
19741   for (i = 0; i < die->num_attrs; ++i)
19742     if (die->attrs[i].name == name)
19743       return &die->attrs[i];
19744
19745   return NULL;
19746 }
19747
19748 /* Return the string associated with a string-typed attribute, or NULL if it
19749    is either not found or is of an incorrect type.  */
19750
19751 static const char *
19752 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19753 {
19754   struct attribute *attr;
19755   const char *str = NULL;
19756
19757   attr = dwarf2_attr (die, name, cu);
19758
19759   if (attr != NULL)
19760     {
19761       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19762           || attr->form == DW_FORM_string
19763           || attr->form == DW_FORM_GNU_str_index
19764           || attr->form == DW_FORM_GNU_strp_alt)
19765         str = DW_STRING (attr);
19766       else
19767         complaint (&symfile_complaints,
19768                    _("string type expected for attribute %s for "
19769                      "DIE at %s in module %s"),
19770                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19771                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19772     }
19773
19774   return str;
19775 }
19776
19777 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19778    and holds a non-zero value.  This function should only be used for
19779    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19780
19781 static int
19782 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19783 {
19784   struct attribute *attr = dwarf2_attr (die, name, cu);
19785
19786   return (attr && DW_UNSND (attr));
19787 }
19788
19789 static int
19790 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19791 {
19792   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19793      which value is non-zero.  However, we have to be careful with
19794      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19795      (via dwarf2_flag_true_p) follows this attribute.  So we may
19796      end up accidently finding a declaration attribute that belongs
19797      to a different DIE referenced by the specification attribute,
19798      even though the given DIE does not have a declaration attribute.  */
19799   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19800           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19801 }
19802
19803 /* Return the die giving the specification for DIE, if there is
19804    one.  *SPEC_CU is the CU containing DIE on input, and the CU
19805    containing the return value on output.  If there is no
19806    specification, but there is an abstract origin, that is
19807    returned.  */
19808
19809 static struct die_info *
19810 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
19811 {
19812   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
19813                                              *spec_cu);
19814
19815   if (spec_attr == NULL)
19816     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
19817
19818   if (spec_attr == NULL)
19819     return NULL;
19820   else
19821     return follow_die_ref (die, spec_attr, spec_cu);
19822 }
19823
19824 /* Stub for free_line_header to match void * callback types.  */
19825
19826 static void
19827 free_line_header_voidp (void *arg)
19828 {
19829   struct line_header *lh = (struct line_header *) arg;
19830
19831   delete lh;
19832 }
19833
19834 void
19835 line_header::add_include_dir (const char *include_dir)
19836 {
19837   if (dwarf_line_debug >= 2)
19838     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
19839                         include_dirs.size () + 1, include_dir);
19840
19841   include_dirs.push_back (include_dir);
19842 }
19843
19844 void
19845 line_header::add_file_name (const char *name,
19846                             dir_index d_index,
19847                             unsigned int mod_time,
19848                             unsigned int length)
19849 {
19850   if (dwarf_line_debug >= 2)
19851     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
19852                         (unsigned) file_names.size () + 1, name);
19853
19854   file_names.emplace_back (name, d_index, mod_time, length);
19855 }
19856
19857 /* A convenience function to find the proper .debug_line section for a CU.  */
19858
19859 static struct dwarf2_section_info *
19860 get_debug_line_section (struct dwarf2_cu *cu)
19861 {
19862   struct dwarf2_section_info *section;
19863   struct dwarf2_per_objfile *dwarf2_per_objfile
19864     = cu->per_cu->dwarf2_per_objfile;
19865
19866   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
19867      DWO file.  */
19868   if (cu->dwo_unit && cu->per_cu->is_debug_types)
19869     section = &cu->dwo_unit->dwo_file->sections.line;
19870   else if (cu->per_cu->is_dwz)
19871     {
19872       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19873
19874       section = &dwz->line;
19875     }
19876   else
19877     section = &dwarf2_per_objfile->line;
19878
19879   return section;
19880 }
19881
19882 /* Read directory or file name entry format, starting with byte of
19883    format count entries, ULEB128 pairs of entry formats, ULEB128 of
19884    entries count and the entries themselves in the described entry
19885    format.  */
19886
19887 static void
19888 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
19889                         bfd *abfd, const gdb_byte **bufp,
19890                         struct line_header *lh,
19891                         const struct comp_unit_head *cu_header,
19892                         void (*callback) (struct line_header *lh,
19893                                           const char *name,
19894                                           dir_index d_index,
19895                                           unsigned int mod_time,
19896                                           unsigned int length))
19897 {
19898   gdb_byte format_count, formati;
19899   ULONGEST data_count, datai;
19900   const gdb_byte *buf = *bufp;
19901   const gdb_byte *format_header_data;
19902   unsigned int bytes_read;
19903
19904   format_count = read_1_byte (abfd, buf);
19905   buf += 1;
19906   format_header_data = buf;
19907   for (formati = 0; formati < format_count; formati++)
19908     {
19909       read_unsigned_leb128 (abfd, buf, &bytes_read);
19910       buf += bytes_read;
19911       read_unsigned_leb128 (abfd, buf, &bytes_read);
19912       buf += bytes_read;
19913     }
19914
19915   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
19916   buf += bytes_read;
19917   for (datai = 0; datai < data_count; datai++)
19918     {
19919       const gdb_byte *format = format_header_data;
19920       struct file_entry fe;
19921
19922       for (formati = 0; formati < format_count; formati++)
19923         {
19924           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
19925           format += bytes_read;
19926
19927           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
19928           format += bytes_read;
19929
19930           gdb::optional<const char *> string;
19931           gdb::optional<unsigned int> uint;
19932
19933           switch (form)
19934             {
19935             case DW_FORM_string:
19936               string.emplace (read_direct_string (abfd, buf, &bytes_read));
19937               buf += bytes_read;
19938               break;
19939
19940             case DW_FORM_line_strp:
19941               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
19942                                                          abfd, buf,
19943                                                          cu_header,
19944                                                          &bytes_read));
19945               buf += bytes_read;
19946               break;
19947
19948             case DW_FORM_data1:
19949               uint.emplace (read_1_byte (abfd, buf));
19950               buf += 1;
19951               break;
19952
19953             case DW_FORM_data2:
19954               uint.emplace (read_2_bytes (abfd, buf));
19955               buf += 2;
19956               break;
19957
19958             case DW_FORM_data4:
19959               uint.emplace (read_4_bytes (abfd, buf));
19960               buf += 4;
19961               break;
19962
19963             case DW_FORM_data8:
19964               uint.emplace (read_8_bytes (abfd, buf));
19965               buf += 8;
19966               break;
19967
19968             case DW_FORM_udata:
19969               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
19970               buf += bytes_read;
19971               break;
19972
19973             case DW_FORM_block:
19974               /* It is valid only for DW_LNCT_timestamp which is ignored by
19975                  current GDB.  */
19976               break;
19977             }
19978
19979           switch (content_type)
19980             {
19981             case DW_LNCT_path:
19982               if (string.has_value ())
19983                 fe.name = *string;
19984               break;
19985             case DW_LNCT_directory_index:
19986               if (uint.has_value ())
19987                 fe.d_index = (dir_index) *uint;
19988               break;
19989             case DW_LNCT_timestamp:
19990               if (uint.has_value ())
19991                 fe.mod_time = *uint;
19992               break;
19993             case DW_LNCT_size:
19994               if (uint.has_value ())
19995                 fe.length = *uint;
19996               break;
19997             case DW_LNCT_MD5:
19998               break;
19999             default:
20000               complaint (&symfile_complaints,
20001                          _("Unknown format content type %s"),
20002                          pulongest (content_type));
20003             }
20004         }
20005
20006       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20007     }
20008
20009   *bufp = buf;
20010 }
20011
20012 /* Read the statement program header starting at OFFSET in
20013    .debug_line, or .debug_line.dwo.  Return a pointer
20014    to a struct line_header, allocated using xmalloc.
20015    Returns NULL if there is a problem reading the header, e.g., if it
20016    has a version we don't understand.
20017
20018    NOTE: the strings in the include directory and file name tables of
20019    the returned object point into the dwarf line section buffer,
20020    and must not be freed.  */
20021
20022 static line_header_up
20023 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20024 {
20025   const gdb_byte *line_ptr;
20026   unsigned int bytes_read, offset_size;
20027   int i;
20028   const char *cur_dir, *cur_file;
20029   struct dwarf2_section_info *section;
20030   bfd *abfd;
20031   struct dwarf2_per_objfile *dwarf2_per_objfile
20032     = cu->per_cu->dwarf2_per_objfile;
20033
20034   section = get_debug_line_section (cu);
20035   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20036   if (section->buffer == NULL)
20037     {
20038       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20039         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
20040       else
20041         complaint (&symfile_complaints, _("missing .debug_line section"));
20042       return 0;
20043     }
20044
20045   /* We can't do this until we know the section is non-empty.
20046      Only then do we know we have such a section.  */
20047   abfd = get_section_bfd_owner (section);
20048
20049   /* Make sure that at least there's room for the total_length field.
20050      That could be 12 bytes long, but we're just going to fudge that.  */
20051   if (to_underlying (sect_off) + 4 >= section->size)
20052     {
20053       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20054       return 0;
20055     }
20056
20057   line_header_up lh (new line_header ());
20058
20059   lh->sect_off = sect_off;
20060   lh->offset_in_dwz = cu->per_cu->is_dwz;
20061
20062   line_ptr = section->buffer + to_underlying (sect_off);
20063
20064   /* Read in the header.  */
20065   lh->total_length =
20066     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20067                                             &bytes_read, &offset_size);
20068   line_ptr += bytes_read;
20069   if (line_ptr + lh->total_length > (section->buffer + section->size))
20070     {
20071       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20072       return 0;
20073     }
20074   lh->statement_program_end = line_ptr + lh->total_length;
20075   lh->version = read_2_bytes (abfd, line_ptr);
20076   line_ptr += 2;
20077   if (lh->version > 5)
20078     {
20079       /* This is a version we don't understand.  The format could have
20080          changed in ways we don't handle properly so just punt.  */
20081       complaint (&symfile_complaints,
20082                  _("unsupported version in .debug_line section"));
20083       return NULL;
20084     }
20085   if (lh->version >= 5)
20086     {
20087       gdb_byte segment_selector_size;
20088
20089       /* Skip address size.  */
20090       read_1_byte (abfd, line_ptr);
20091       line_ptr += 1;
20092
20093       segment_selector_size = read_1_byte (abfd, line_ptr);
20094       line_ptr += 1;
20095       if (segment_selector_size != 0)
20096         {
20097           complaint (&symfile_complaints,
20098                      _("unsupported segment selector size %u "
20099                        "in .debug_line section"),
20100                      segment_selector_size);
20101           return NULL;
20102         }
20103     }
20104   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20105   line_ptr += offset_size;
20106   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20107   line_ptr += 1;
20108   if (lh->version >= 4)
20109     {
20110       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20111       line_ptr += 1;
20112     }
20113   else
20114     lh->maximum_ops_per_instruction = 1;
20115
20116   if (lh->maximum_ops_per_instruction == 0)
20117     {
20118       lh->maximum_ops_per_instruction = 1;
20119       complaint (&symfile_complaints,
20120                  _("invalid maximum_ops_per_instruction "
20121                    "in `.debug_line' section"));
20122     }
20123
20124   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20125   line_ptr += 1;
20126   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20127   line_ptr += 1;
20128   lh->line_range = read_1_byte (abfd, line_ptr);
20129   line_ptr += 1;
20130   lh->opcode_base = read_1_byte (abfd, line_ptr);
20131   line_ptr += 1;
20132   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20133
20134   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20135   for (i = 1; i < lh->opcode_base; ++i)
20136     {
20137       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20138       line_ptr += 1;
20139     }
20140
20141   if (lh->version >= 5)
20142     {
20143       /* Read directory table.  */
20144       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20145                               &cu->header,
20146                               [] (struct line_header *lh, const char *name,
20147                                   dir_index d_index, unsigned int mod_time,
20148                                   unsigned int length)
20149         {
20150           lh->add_include_dir (name);
20151         });
20152
20153       /* Read file name table.  */
20154       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20155                               &cu->header,
20156                               [] (struct line_header *lh, const char *name,
20157                                   dir_index d_index, unsigned int mod_time,
20158                                   unsigned int length)
20159         {
20160           lh->add_file_name (name, d_index, mod_time, length);
20161         });
20162     }
20163   else
20164     {
20165       /* Read directory table.  */
20166       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20167         {
20168           line_ptr += bytes_read;
20169           lh->add_include_dir (cur_dir);
20170         }
20171       line_ptr += bytes_read;
20172
20173       /* Read file name table.  */
20174       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20175         {
20176           unsigned int mod_time, length;
20177           dir_index d_index;
20178
20179           line_ptr += bytes_read;
20180           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20181           line_ptr += bytes_read;
20182           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20183           line_ptr += bytes_read;
20184           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20185           line_ptr += bytes_read;
20186
20187           lh->add_file_name (cur_file, d_index, mod_time, length);
20188         }
20189       line_ptr += bytes_read;
20190     }
20191   lh->statement_program_start = line_ptr;
20192
20193   if (line_ptr > (section->buffer + section->size))
20194     complaint (&symfile_complaints,
20195                _("line number info header doesn't "
20196                  "fit in `.debug_line' section"));
20197
20198   return lh;
20199 }
20200
20201 /* Subroutine of dwarf_decode_lines to simplify it.
20202    Return the file name of the psymtab for included file FILE_INDEX
20203    in line header LH of PST.
20204    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20205    If space for the result is malloc'd, *NAME_HOLDER will be set.
20206    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20207
20208 static const char *
20209 psymtab_include_file_name (const struct line_header *lh, int file_index,
20210                            const struct partial_symtab *pst,
20211                            const char *comp_dir,
20212                            gdb::unique_xmalloc_ptr<char> *name_holder)
20213 {
20214   const file_entry &fe = lh->file_names[file_index];
20215   const char *include_name = fe.name;
20216   const char *include_name_to_compare = include_name;
20217   const char *pst_filename;
20218   int file_is_pst;
20219
20220   const char *dir_name = fe.include_dir (lh);
20221
20222   gdb::unique_xmalloc_ptr<char> hold_compare;
20223   if (!IS_ABSOLUTE_PATH (include_name)
20224       && (dir_name != NULL || comp_dir != NULL))
20225     {
20226       /* Avoid creating a duplicate psymtab for PST.
20227          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20228          Before we do the comparison, however, we need to account
20229          for DIR_NAME and COMP_DIR.
20230          First prepend dir_name (if non-NULL).  If we still don't
20231          have an absolute path prepend comp_dir (if non-NULL).
20232          However, the directory we record in the include-file's
20233          psymtab does not contain COMP_DIR (to match the
20234          corresponding symtab(s)).
20235
20236          Example:
20237
20238          bash$ cd /tmp
20239          bash$ gcc -g ./hello.c
20240          include_name = "hello.c"
20241          dir_name = "."
20242          DW_AT_comp_dir = comp_dir = "/tmp"
20243          DW_AT_name = "./hello.c"
20244
20245       */
20246
20247       if (dir_name != NULL)
20248         {
20249           name_holder->reset (concat (dir_name, SLASH_STRING,
20250                                       include_name, (char *) NULL));
20251           include_name = name_holder->get ();
20252           include_name_to_compare = include_name;
20253         }
20254       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20255         {
20256           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20257                                       include_name, (char *) NULL));
20258           include_name_to_compare = hold_compare.get ();
20259         }
20260     }
20261
20262   pst_filename = pst->filename;
20263   gdb::unique_xmalloc_ptr<char> copied_name;
20264   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20265     {
20266       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20267                                  pst_filename, (char *) NULL));
20268       pst_filename = copied_name.get ();
20269     }
20270
20271   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20272
20273   if (file_is_pst)
20274     return NULL;
20275   return include_name;
20276 }
20277
20278 /* State machine to track the state of the line number program.  */
20279
20280 class lnp_state_machine
20281 {
20282 public:
20283   /* Initialize a machine state for the start of a line number
20284      program.  */
20285   lnp_state_machine (gdbarch *arch, line_header *lh, bool record_lines_p);
20286
20287   file_entry *current_file ()
20288   {
20289     /* lh->file_names is 0-based, but the file name numbers in the
20290        statement program are 1-based.  */
20291     return m_line_header->file_name_at (m_file);
20292   }
20293
20294   /* Record the line in the state machine.  END_SEQUENCE is true if
20295      we're processing the end of a sequence.  */
20296   void record_line (bool end_sequence);
20297
20298   /* Check address and if invalid nop-out the rest of the lines in this
20299      sequence.  */
20300   void check_line_address (struct dwarf2_cu *cu,
20301                            const gdb_byte *line_ptr,
20302                            CORE_ADDR lowpc, CORE_ADDR address);
20303
20304   void handle_set_discriminator (unsigned int discriminator)
20305   {
20306     m_discriminator = discriminator;
20307     m_line_has_non_zero_discriminator |= discriminator != 0;
20308   }
20309
20310   /* Handle DW_LNE_set_address.  */
20311   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20312   {
20313     m_op_index = 0;
20314     address += baseaddr;
20315     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20316   }
20317
20318   /* Handle DW_LNS_advance_pc.  */
20319   void handle_advance_pc (CORE_ADDR adjust);
20320
20321   /* Handle a special opcode.  */
20322   void handle_special_opcode (unsigned char op_code);
20323
20324   /* Handle DW_LNS_advance_line.  */
20325   void handle_advance_line (int line_delta)
20326   {
20327     advance_line (line_delta);
20328   }
20329
20330   /* Handle DW_LNS_set_file.  */
20331   void handle_set_file (file_name_index file);
20332
20333   /* Handle DW_LNS_negate_stmt.  */
20334   void handle_negate_stmt ()
20335   {
20336     m_is_stmt = !m_is_stmt;
20337   }
20338
20339   /* Handle DW_LNS_const_add_pc.  */
20340   void handle_const_add_pc ();
20341
20342   /* Handle DW_LNS_fixed_advance_pc.  */
20343   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20344   {
20345     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20346     m_op_index = 0;
20347   }
20348
20349   /* Handle DW_LNS_copy.  */
20350   void handle_copy ()
20351   {
20352     record_line (false);
20353     m_discriminator = 0;
20354   }
20355
20356   /* Handle DW_LNE_end_sequence.  */
20357   void handle_end_sequence ()
20358   {
20359     m_record_line_callback = ::record_line;
20360   }
20361
20362 private:
20363   /* Advance the line by LINE_DELTA.  */
20364   void advance_line (int line_delta)
20365   {
20366     m_line += line_delta;
20367
20368     if (line_delta != 0)
20369       m_line_has_non_zero_discriminator = m_discriminator != 0;
20370   }
20371
20372   gdbarch *m_gdbarch;
20373
20374   /* True if we're recording lines.
20375      Otherwise we're building partial symtabs and are just interested in
20376      finding include files mentioned by the line number program.  */
20377   bool m_record_lines_p;
20378
20379   /* The line number header.  */
20380   line_header *m_line_header;
20381
20382   /* These are part of the standard DWARF line number state machine,
20383      and initialized according to the DWARF spec.  */
20384
20385   unsigned char m_op_index = 0;
20386   /* The line table index (1-based) of the current file.  */
20387   file_name_index m_file = (file_name_index) 1;
20388   unsigned int m_line = 1;
20389
20390   /* These are initialized in the constructor.  */
20391
20392   CORE_ADDR m_address;
20393   bool m_is_stmt;
20394   unsigned int m_discriminator;
20395
20396   /* Additional bits of state we need to track.  */
20397
20398   /* The last file that we called dwarf2_start_subfile for.
20399      This is only used for TLLs.  */
20400   unsigned int m_last_file = 0;
20401   /* The last file a line number was recorded for.  */
20402   struct subfile *m_last_subfile = NULL;
20403
20404   /* The function to call to record a line.  */
20405   record_line_ftype *m_record_line_callback = NULL;
20406
20407   /* The last line number that was recorded, used to coalesce
20408      consecutive entries for the same line.  This can happen, for
20409      example, when discriminators are present.  PR 17276.  */
20410   unsigned int m_last_line = 0;
20411   bool m_line_has_non_zero_discriminator = false;
20412 };
20413
20414 void
20415 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20416 {
20417   CORE_ADDR addr_adj = (((m_op_index + adjust)
20418                          / m_line_header->maximum_ops_per_instruction)
20419                         * m_line_header->minimum_instruction_length);
20420   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20421   m_op_index = ((m_op_index + adjust)
20422                 % m_line_header->maximum_ops_per_instruction);
20423 }
20424
20425 void
20426 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20427 {
20428   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20429   CORE_ADDR addr_adj = (((m_op_index
20430                           + (adj_opcode / m_line_header->line_range))
20431                          / m_line_header->maximum_ops_per_instruction)
20432                         * m_line_header->minimum_instruction_length);
20433   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20434   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20435                 % m_line_header->maximum_ops_per_instruction);
20436
20437   int line_delta = (m_line_header->line_base
20438                     + (adj_opcode % m_line_header->line_range));
20439   advance_line (line_delta);
20440   record_line (false);
20441   m_discriminator = 0;
20442 }
20443
20444 void
20445 lnp_state_machine::handle_set_file (file_name_index file)
20446 {
20447   m_file = file;
20448
20449   const file_entry *fe = current_file ();
20450   if (fe == NULL)
20451     dwarf2_debug_line_missing_file_complaint ();
20452   else if (m_record_lines_p)
20453     {
20454       const char *dir = fe->include_dir (m_line_header);
20455
20456       m_last_subfile = current_subfile;
20457       m_line_has_non_zero_discriminator = m_discriminator != 0;
20458       dwarf2_start_subfile (fe->name, dir);
20459     }
20460 }
20461
20462 void
20463 lnp_state_machine::handle_const_add_pc ()
20464 {
20465   CORE_ADDR adjust
20466     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20467
20468   CORE_ADDR addr_adj
20469     = (((m_op_index + adjust)
20470         / m_line_header->maximum_ops_per_instruction)
20471        * m_line_header->minimum_instruction_length);
20472
20473   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20474   m_op_index = ((m_op_index + adjust)
20475                 % m_line_header->maximum_ops_per_instruction);
20476 }
20477
20478 /* Ignore this record_line request.  */
20479
20480 static void
20481 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
20482 {
20483   return;
20484 }
20485
20486 /* Return non-zero if we should add LINE to the line number table.
20487    LINE is the line to add, LAST_LINE is the last line that was added,
20488    LAST_SUBFILE is the subfile for LAST_LINE.
20489    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20490    had a non-zero discriminator.
20491
20492    We have to be careful in the presence of discriminators.
20493    E.g., for this line:
20494
20495      for (i = 0; i < 100000; i++);
20496
20497    clang can emit four line number entries for that one line,
20498    each with a different discriminator.
20499    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20500
20501    However, we want gdb to coalesce all four entries into one.
20502    Otherwise the user could stepi into the middle of the line and
20503    gdb would get confused about whether the pc really was in the
20504    middle of the line.
20505
20506    Things are further complicated by the fact that two consecutive
20507    line number entries for the same line is a heuristic used by gcc
20508    to denote the end of the prologue.  So we can't just discard duplicate
20509    entries, we have to be selective about it.  The heuristic we use is
20510    that we only collapse consecutive entries for the same line if at least
20511    one of those entries has a non-zero discriminator.  PR 17276.
20512
20513    Note: Addresses in the line number state machine can never go backwards
20514    within one sequence, thus this coalescing is ok.  */
20515
20516 static int
20517 dwarf_record_line_p (unsigned int line, unsigned int last_line,
20518                      int line_has_non_zero_discriminator,
20519                      struct subfile *last_subfile)
20520 {
20521   if (current_subfile != last_subfile)
20522     return 1;
20523   if (line != last_line)
20524     return 1;
20525   /* Same line for the same file that we've seen already.
20526      As a last check, for pr 17276, only record the line if the line
20527      has never had a non-zero discriminator.  */
20528   if (!line_has_non_zero_discriminator)
20529     return 1;
20530   return 0;
20531 }
20532
20533 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
20534    in the line table of subfile SUBFILE.  */
20535
20536 static void
20537 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20538                      unsigned int line, CORE_ADDR address,
20539                      record_line_ftype p_record_line)
20540 {
20541   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20542
20543   if (dwarf_line_debug)
20544     {
20545       fprintf_unfiltered (gdb_stdlog,
20546                           "Recording line %u, file %s, address %s\n",
20547                           line, lbasename (subfile->name),
20548                           paddress (gdbarch, address));
20549     }
20550
20551   (*p_record_line) (subfile, line, addr);
20552 }
20553
20554 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20555    Mark the end of a set of line number records.
20556    The arguments are the same as for dwarf_record_line_1.
20557    If SUBFILE is NULL the request is ignored.  */
20558
20559 static void
20560 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20561                    CORE_ADDR address, record_line_ftype p_record_line)
20562 {
20563   if (subfile == NULL)
20564     return;
20565
20566   if (dwarf_line_debug)
20567     {
20568       fprintf_unfiltered (gdb_stdlog,
20569                           "Finishing current line, file %s, address %s\n",
20570                           lbasename (subfile->name),
20571                           paddress (gdbarch, address));
20572     }
20573
20574   dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
20575 }
20576
20577 void
20578 lnp_state_machine::record_line (bool end_sequence)
20579 {
20580   if (dwarf_line_debug)
20581     {
20582       fprintf_unfiltered (gdb_stdlog,
20583                           "Processing actual line %u: file %u,"
20584                           " address %s, is_stmt %u, discrim %u\n",
20585                           m_line, to_underlying (m_file),
20586                           paddress (m_gdbarch, m_address),
20587                           m_is_stmt, m_discriminator);
20588     }
20589
20590   file_entry *fe = current_file ();
20591
20592   if (fe == NULL)
20593     dwarf2_debug_line_missing_file_complaint ();
20594   /* For now we ignore lines not starting on an instruction boundary.
20595      But not when processing end_sequence for compatibility with the
20596      previous version of the code.  */
20597   else if (m_op_index == 0 || end_sequence)
20598     {
20599       fe->included_p = 1;
20600       if (m_record_lines_p && m_is_stmt)
20601         {
20602           if (m_last_subfile != current_subfile || end_sequence)
20603             {
20604               dwarf_finish_line (m_gdbarch, m_last_subfile,
20605                                  m_address, m_record_line_callback);
20606             }
20607
20608           if (!end_sequence)
20609             {
20610               if (dwarf_record_line_p (m_line, m_last_line,
20611                                        m_line_has_non_zero_discriminator,
20612                                        m_last_subfile))
20613                 {
20614                   dwarf_record_line_1 (m_gdbarch, current_subfile,
20615                                        m_line, m_address,
20616                                        m_record_line_callback);
20617                 }
20618               m_last_subfile = current_subfile;
20619               m_last_line = m_line;
20620             }
20621         }
20622     }
20623 }
20624
20625 lnp_state_machine::lnp_state_machine (gdbarch *arch, line_header *lh,
20626                                       bool record_lines_p)
20627 {
20628   m_gdbarch = arch;
20629   m_record_lines_p = record_lines_p;
20630   m_line_header = lh;
20631
20632   m_record_line_callback = ::record_line;
20633
20634   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20635      was a line entry for it so that the backend has a chance to adjust it
20636      and also record it in case it needs it.  This is currently used by MIPS
20637      code, cf. `mips_adjust_dwarf2_line'.  */
20638   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20639   m_is_stmt = lh->default_is_stmt;
20640   m_discriminator = 0;
20641 }
20642
20643 void
20644 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20645                                        const gdb_byte *line_ptr,
20646                                        CORE_ADDR lowpc, CORE_ADDR address)
20647 {
20648   /* If address < lowpc then it's not a usable value, it's outside the
20649      pc range of the CU.  However, we restrict the test to only address
20650      values of zero to preserve GDB's previous behaviour which is to
20651      handle the specific case of a function being GC'd by the linker.  */
20652
20653   if (address == 0 && address < lowpc)
20654     {
20655       /* This line table is for a function which has been
20656          GCd by the linker.  Ignore it.  PR gdb/12528 */
20657
20658       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20659       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20660
20661       complaint (&symfile_complaints,
20662                  _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20663                  line_offset, objfile_name (objfile));
20664       m_record_line_callback = noop_record_line;
20665       /* Note: record_line_callback is left as noop_record_line until
20666          we see DW_LNE_end_sequence.  */
20667     }
20668 }
20669
20670 /* Subroutine of dwarf_decode_lines to simplify it.
20671    Process the line number information in LH.
20672    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20673    program in order to set included_p for every referenced header.  */
20674
20675 static void
20676 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20677                       const int decode_for_pst_p, CORE_ADDR lowpc)
20678 {
20679   const gdb_byte *line_ptr, *extended_end;
20680   const gdb_byte *line_end;
20681   unsigned int bytes_read, extended_len;
20682   unsigned char op_code, extended_op;
20683   CORE_ADDR baseaddr;
20684   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20685   bfd *abfd = objfile->obfd;
20686   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20687   /* True if we're recording line info (as opposed to building partial
20688      symtabs and just interested in finding include files mentioned by
20689      the line number program).  */
20690   bool record_lines_p = !decode_for_pst_p;
20691
20692   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20693
20694   line_ptr = lh->statement_program_start;
20695   line_end = lh->statement_program_end;
20696
20697   /* Read the statement sequences until there's nothing left.  */
20698   while (line_ptr < line_end)
20699     {
20700       /* The DWARF line number program state machine.  Reset the state
20701          machine at the start of each sequence.  */
20702       lnp_state_machine state_machine (gdbarch, lh, record_lines_p);
20703       bool end_sequence = false;
20704
20705       if (record_lines_p)
20706         {
20707           /* Start a subfile for the current file of the state
20708              machine.  */
20709           const file_entry *fe = state_machine.current_file ();
20710
20711           if (fe != NULL)
20712             dwarf2_start_subfile (fe->name, fe->include_dir (lh));
20713         }
20714
20715       /* Decode the table.  */
20716       while (line_ptr < line_end && !end_sequence)
20717         {
20718           op_code = read_1_byte (abfd, line_ptr);
20719           line_ptr += 1;
20720
20721           if (op_code >= lh->opcode_base)
20722             {
20723               /* Special opcode.  */
20724               state_machine.handle_special_opcode (op_code);
20725             }
20726           else switch (op_code)
20727             {
20728             case DW_LNS_extended_op:
20729               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20730                                                    &bytes_read);
20731               line_ptr += bytes_read;
20732               extended_end = line_ptr + extended_len;
20733               extended_op = read_1_byte (abfd, line_ptr);
20734               line_ptr += 1;
20735               switch (extended_op)
20736                 {
20737                 case DW_LNE_end_sequence:
20738                   state_machine.handle_end_sequence ();
20739                   end_sequence = true;
20740                   break;
20741                 case DW_LNE_set_address:
20742                   {
20743                     CORE_ADDR address
20744                       = read_address (abfd, line_ptr, cu, &bytes_read);
20745                     line_ptr += bytes_read;
20746
20747                     state_machine.check_line_address (cu, line_ptr,
20748                                                       lowpc, address);
20749                     state_machine.handle_set_address (baseaddr, address);
20750                   }
20751                   break;
20752                 case DW_LNE_define_file:
20753                   {
20754                     const char *cur_file;
20755                     unsigned int mod_time, length;
20756                     dir_index dindex;
20757
20758                     cur_file = read_direct_string (abfd, line_ptr,
20759                                                    &bytes_read);
20760                     line_ptr += bytes_read;
20761                     dindex = (dir_index)
20762                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20763                     line_ptr += bytes_read;
20764                     mod_time =
20765                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20766                     line_ptr += bytes_read;
20767                     length =
20768                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20769                     line_ptr += bytes_read;
20770                     lh->add_file_name (cur_file, dindex, mod_time, length);
20771                   }
20772                   break;
20773                 case DW_LNE_set_discriminator:
20774                   {
20775                     /* The discriminator is not interesting to the
20776                        debugger; just ignore it.  We still need to
20777                        check its value though:
20778                        if there are consecutive entries for the same
20779                        (non-prologue) line we want to coalesce them.
20780                        PR 17276.  */
20781                     unsigned int discr
20782                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20783                     line_ptr += bytes_read;
20784
20785                     state_machine.handle_set_discriminator (discr);
20786                   }
20787                   break;
20788                 default:
20789                   complaint (&symfile_complaints,
20790                              _("mangled .debug_line section"));
20791                   return;
20792                 }
20793               /* Make sure that we parsed the extended op correctly.  If e.g.
20794                  we expected a different address size than the producer used,
20795                  we may have read the wrong number of bytes.  */
20796               if (line_ptr != extended_end)
20797                 {
20798                   complaint (&symfile_complaints,
20799                              _("mangled .debug_line section"));
20800                   return;
20801                 }
20802               break;
20803             case DW_LNS_copy:
20804               state_machine.handle_copy ();
20805               break;
20806             case DW_LNS_advance_pc:
20807               {
20808                 CORE_ADDR adjust
20809                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20810                 line_ptr += bytes_read;
20811
20812                 state_machine.handle_advance_pc (adjust);
20813               }
20814               break;
20815             case DW_LNS_advance_line:
20816               {
20817                 int line_delta
20818                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
20819                 line_ptr += bytes_read;
20820
20821                 state_machine.handle_advance_line (line_delta);
20822               }
20823               break;
20824             case DW_LNS_set_file:
20825               {
20826                 file_name_index file
20827                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
20828                                                             &bytes_read);
20829                 line_ptr += bytes_read;
20830
20831                 state_machine.handle_set_file (file);
20832               }
20833               break;
20834             case DW_LNS_set_column:
20835               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20836               line_ptr += bytes_read;
20837               break;
20838             case DW_LNS_negate_stmt:
20839               state_machine.handle_negate_stmt ();
20840               break;
20841             case DW_LNS_set_basic_block:
20842               break;
20843             /* Add to the address register of the state machine the
20844                address increment value corresponding to special opcode
20845                255.  I.e., this value is scaled by the minimum
20846                instruction length since special opcode 255 would have
20847                scaled the increment.  */
20848             case DW_LNS_const_add_pc:
20849               state_machine.handle_const_add_pc ();
20850               break;
20851             case DW_LNS_fixed_advance_pc:
20852               {
20853                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
20854                 line_ptr += 2;
20855
20856                 state_machine.handle_fixed_advance_pc (addr_adj);
20857               }
20858               break;
20859             default:
20860               {
20861                 /* Unknown standard opcode, ignore it.  */
20862                 int i;
20863
20864                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
20865                   {
20866                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20867                     line_ptr += bytes_read;
20868                   }
20869               }
20870             }
20871         }
20872
20873       if (!end_sequence)
20874         dwarf2_debug_line_missing_end_sequence_complaint ();
20875
20876       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
20877          in which case we still finish recording the last line).  */
20878       state_machine.record_line (true);
20879     }
20880 }
20881
20882 /* Decode the Line Number Program (LNP) for the given line_header
20883    structure and CU.  The actual information extracted and the type
20884    of structures created from the LNP depends on the value of PST.
20885
20886    1. If PST is NULL, then this procedure uses the data from the program
20887       to create all necessary symbol tables, and their linetables.
20888
20889    2. If PST is not NULL, this procedure reads the program to determine
20890       the list of files included by the unit represented by PST, and
20891       builds all the associated partial symbol tables.
20892
20893    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20894    It is used for relative paths in the line table.
20895    NOTE: When processing partial symtabs (pst != NULL),
20896    comp_dir == pst->dirname.
20897
20898    NOTE: It is important that psymtabs have the same file name (via strcmp)
20899    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
20900    symtab we don't use it in the name of the psymtabs we create.
20901    E.g. expand_line_sal requires this when finding psymtabs to expand.
20902    A good testcase for this is mb-inline.exp.
20903
20904    LOWPC is the lowest address in CU (or 0 if not known).
20905
20906    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
20907    for its PC<->lines mapping information.  Otherwise only the filename
20908    table is read in.  */
20909
20910 static void
20911 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
20912                     struct dwarf2_cu *cu, struct partial_symtab *pst,
20913                     CORE_ADDR lowpc, int decode_mapping)
20914 {
20915   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20916   const int decode_for_pst_p = (pst != NULL);
20917
20918   if (decode_mapping)
20919     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
20920
20921   if (decode_for_pst_p)
20922     {
20923       int file_index;
20924
20925       /* Now that we're done scanning the Line Header Program, we can
20926          create the psymtab of each included file.  */
20927       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
20928         if (lh->file_names[file_index].included_p == 1)
20929           {
20930             gdb::unique_xmalloc_ptr<char> name_holder;
20931             const char *include_name =
20932               psymtab_include_file_name (lh, file_index, pst, comp_dir,
20933                                          &name_holder);
20934             if (include_name != NULL)
20935               dwarf2_create_include_psymtab (include_name, pst, objfile);
20936           }
20937     }
20938   else
20939     {
20940       /* Make sure a symtab is created for every file, even files
20941          which contain only variables (i.e. no code with associated
20942          line numbers).  */
20943       struct compunit_symtab *cust = buildsym_compunit_symtab ();
20944       int i;
20945
20946       for (i = 0; i < lh->file_names.size (); i++)
20947         {
20948           file_entry &fe = lh->file_names[i];
20949
20950           dwarf2_start_subfile (fe.name, fe.include_dir (lh));
20951
20952           if (current_subfile->symtab == NULL)
20953             {
20954               current_subfile->symtab
20955                 = allocate_symtab (cust, current_subfile->name);
20956             }
20957           fe.symtab = current_subfile->symtab;
20958         }
20959     }
20960 }
20961
20962 /* Start a subfile for DWARF.  FILENAME is the name of the file and
20963    DIRNAME the name of the source directory which contains FILENAME
20964    or NULL if not known.
20965    This routine tries to keep line numbers from identical absolute and
20966    relative file names in a common subfile.
20967
20968    Using the `list' example from the GDB testsuite, which resides in
20969    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
20970    of /srcdir/list0.c yields the following debugging information for list0.c:
20971
20972    DW_AT_name:          /srcdir/list0.c
20973    DW_AT_comp_dir:      /compdir
20974    files.files[0].name: list0.h
20975    files.files[0].dir:  /srcdir
20976    files.files[1].name: list0.c
20977    files.files[1].dir:  /srcdir
20978
20979    The line number information for list0.c has to end up in a single
20980    subfile, so that `break /srcdir/list0.c:1' works as expected.
20981    start_subfile will ensure that this happens provided that we pass the
20982    concatenation of files.files[1].dir and files.files[1].name as the
20983    subfile's name.  */
20984
20985 static void
20986 dwarf2_start_subfile (const char *filename, const char *dirname)
20987 {
20988   char *copy = NULL;
20989
20990   /* In order not to lose the line information directory,
20991      we concatenate it to the filename when it makes sense.
20992      Note that the Dwarf3 standard says (speaking of filenames in line
20993      information): ``The directory index is ignored for file names
20994      that represent full path names''.  Thus ignoring dirname in the
20995      `else' branch below isn't an issue.  */
20996
20997   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
20998     {
20999       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21000       filename = copy;
21001     }
21002
21003   start_subfile (filename);
21004
21005   if (copy != NULL)
21006     xfree (copy);
21007 }
21008
21009 /* Start a symtab for DWARF.
21010    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
21011
21012 static struct compunit_symtab *
21013 dwarf2_start_symtab (struct dwarf2_cu *cu,
21014                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21015 {
21016   struct compunit_symtab *cust
21017     = start_symtab (cu->per_cu->dwarf2_per_objfile->objfile, name, comp_dir,
21018                     low_pc, cu->language);
21019
21020   record_debugformat ("DWARF 2");
21021   record_producer (cu->producer);
21022
21023   /* We assume that we're processing GCC output.  */
21024   processing_gcc_compilation = 2;
21025
21026   cu->processing_has_namespace_info = 0;
21027
21028   return cust;
21029 }
21030
21031 static void
21032 var_decode_location (struct attribute *attr, struct symbol *sym,
21033                      struct dwarf2_cu *cu)
21034 {
21035   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21036   struct comp_unit_head *cu_header = &cu->header;
21037
21038   /* NOTE drow/2003-01-30: There used to be a comment and some special
21039      code here to turn a symbol with DW_AT_external and a
21040      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21041      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21042      with some versions of binutils) where shared libraries could have
21043      relocations against symbols in their debug information - the
21044      minimal symbol would have the right address, but the debug info
21045      would not.  It's no longer necessary, because we will explicitly
21046      apply relocations when we read in the debug information now.  */
21047
21048   /* A DW_AT_location attribute with no contents indicates that a
21049      variable has been optimized away.  */
21050   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21051     {
21052       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21053       return;
21054     }
21055
21056   /* Handle one degenerate form of location expression specially, to
21057      preserve GDB's previous behavior when section offsets are
21058      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21059      then mark this symbol as LOC_STATIC.  */
21060
21061   if (attr_form_is_block (attr)
21062       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21063            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21064           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21065               && (DW_BLOCK (attr)->size
21066                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21067     {
21068       unsigned int dummy;
21069
21070       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21071         SYMBOL_VALUE_ADDRESS (sym) =
21072           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21073       else
21074         SYMBOL_VALUE_ADDRESS (sym) =
21075           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21076       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21077       fixup_symbol_section (sym, objfile);
21078       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21079                                               SYMBOL_SECTION (sym));
21080       return;
21081     }
21082
21083   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21084      expression evaluator, and use LOC_COMPUTED only when necessary
21085      (i.e. when the value of a register or memory location is
21086      referenced, or a thread-local block, etc.).  Then again, it might
21087      not be worthwhile.  I'm assuming that it isn't unless performance
21088      or memory numbers show me otherwise.  */
21089
21090   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21091
21092   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21093     cu->has_loclist = 1;
21094 }
21095
21096 /* Given a pointer to a DWARF information entry, figure out if we need
21097    to make a symbol table entry for it, and if so, create a new entry
21098    and return a pointer to it.
21099    If TYPE is NULL, determine symbol type from the die, otherwise
21100    used the passed type.
21101    If SPACE is not NULL, use it to hold the new symbol.  If it is
21102    NULL, allocate a new symbol on the objfile's obstack.  */
21103
21104 static struct symbol *
21105 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21106             struct symbol *space)
21107 {
21108   struct dwarf2_per_objfile *dwarf2_per_objfile
21109     = cu->per_cu->dwarf2_per_objfile;
21110   struct objfile *objfile = dwarf2_per_objfile->objfile;
21111   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21112   struct symbol *sym = NULL;
21113   const char *name;
21114   struct attribute *attr = NULL;
21115   struct attribute *attr2 = NULL;
21116   CORE_ADDR baseaddr;
21117   struct pending **list_to_add = NULL;
21118
21119   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21120
21121   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21122
21123   name = dwarf2_name (die, cu);
21124   if (name)
21125     {
21126       const char *linkagename;
21127       int suppress_add = 0;
21128
21129       if (space)
21130         sym = space;
21131       else
21132         sym = allocate_symbol (objfile);
21133       OBJSTAT (objfile, n_syms++);
21134
21135       /* Cache this symbol's name and the name's demangled form (if any).  */
21136       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21137       linkagename = dwarf2_physname (name, die, cu);
21138       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21139
21140       /* Fortran does not have mangling standard and the mangling does differ
21141          between gfortran, iFort etc.  */
21142       if (cu->language == language_fortran
21143           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21144         symbol_set_demangled_name (&(sym->ginfo),
21145                                    dwarf2_full_name (name, die, cu),
21146                                    NULL);
21147
21148       /* Default assumptions.
21149          Use the passed type or decode it from the die.  */
21150       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21151       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21152       if (type != NULL)
21153         SYMBOL_TYPE (sym) = type;
21154       else
21155         SYMBOL_TYPE (sym) = die_type (die, cu);
21156       attr = dwarf2_attr (die,
21157                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21158                           cu);
21159       if (attr)
21160         {
21161           SYMBOL_LINE (sym) = DW_UNSND (attr);
21162         }
21163
21164       attr = dwarf2_attr (die,
21165                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21166                           cu);
21167       if (attr)
21168         {
21169           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21170           struct file_entry *fe;
21171
21172           if (cu->line_header != NULL)
21173             fe = cu->line_header->file_name_at (file_index);
21174           else
21175             fe = NULL;
21176
21177           if (fe == NULL)
21178             complaint (&symfile_complaints,
21179                        _("file index out of range"));
21180           else
21181             symbol_set_symtab (sym, fe->symtab);
21182         }
21183
21184       switch (die->tag)
21185         {
21186         case DW_TAG_label:
21187           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21188           if (attr)
21189             {
21190               CORE_ADDR addr;
21191
21192               addr = attr_value_as_address (attr);
21193               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21194               SYMBOL_VALUE_ADDRESS (sym) = addr;
21195             }
21196           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21197           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21198           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21199           add_symbol_to_list (sym, cu->list_in_scope);
21200           break;
21201         case DW_TAG_subprogram:
21202           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21203              finish_block.  */
21204           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21205           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21206           if ((attr2 && (DW_UNSND (attr2) != 0))
21207               || cu->language == language_ada)
21208             {
21209               /* Subprograms marked external are stored as a global symbol.
21210                  Ada subprograms, whether marked external or not, are always
21211                  stored as a global symbol, because we want to be able to
21212                  access them globally.  For instance, we want to be able
21213                  to break on a nested subprogram without having to
21214                  specify the context.  */
21215               list_to_add = &global_symbols;
21216             }
21217           else
21218             {
21219               list_to_add = cu->list_in_scope;
21220             }
21221           break;
21222         case DW_TAG_inlined_subroutine:
21223           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21224              finish_block.  */
21225           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21226           SYMBOL_INLINED (sym) = 1;
21227           list_to_add = cu->list_in_scope;
21228           break;
21229         case DW_TAG_template_value_param:
21230           suppress_add = 1;
21231           /* Fall through.  */
21232         case DW_TAG_constant:
21233         case DW_TAG_variable:
21234         case DW_TAG_member:
21235           /* Compilation with minimal debug info may result in
21236              variables with missing type entries.  Change the
21237              misleading `void' type to something sensible.  */
21238           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21239             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21240
21241           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21242           /* In the case of DW_TAG_member, we should only be called for
21243              static const members.  */
21244           if (die->tag == DW_TAG_member)
21245             {
21246               /* dwarf2_add_field uses die_is_declaration,
21247                  so we do the same.  */
21248               gdb_assert (die_is_declaration (die, cu));
21249               gdb_assert (attr);
21250             }
21251           if (attr)
21252             {
21253               dwarf2_const_value (attr, sym, cu);
21254               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21255               if (!suppress_add)
21256                 {
21257                   if (attr2 && (DW_UNSND (attr2) != 0))
21258                     list_to_add = &global_symbols;
21259                   else
21260                     list_to_add = cu->list_in_scope;
21261                 }
21262               break;
21263             }
21264           attr = dwarf2_attr (die, DW_AT_location, cu);
21265           if (attr)
21266             {
21267               var_decode_location (attr, sym, cu);
21268               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21269
21270               /* Fortran explicitly imports any global symbols to the local
21271                  scope by DW_TAG_common_block.  */
21272               if (cu->language == language_fortran && die->parent
21273                   && die->parent->tag == DW_TAG_common_block)
21274                 attr2 = NULL;
21275
21276               if (SYMBOL_CLASS (sym) == LOC_STATIC
21277                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21278                   && !dwarf2_per_objfile->has_section_at_zero)
21279                 {
21280                   /* When a static variable is eliminated by the linker,
21281                      the corresponding debug information is not stripped
21282                      out, but the variable address is set to null;
21283                      do not add such variables into symbol table.  */
21284                 }
21285               else if (attr2 && (DW_UNSND (attr2) != 0))
21286                 {
21287                   /* Workaround gfortran PR debug/40040 - it uses
21288                      DW_AT_location for variables in -fPIC libraries which may
21289                      get overriden by other libraries/executable and get
21290                      a different address.  Resolve it by the minimal symbol
21291                      which may come from inferior's executable using copy
21292                      relocation.  Make this workaround only for gfortran as for
21293                      other compilers GDB cannot guess the minimal symbol
21294                      Fortran mangling kind.  */
21295                   if (cu->language == language_fortran && die->parent
21296                       && die->parent->tag == DW_TAG_module
21297                       && cu->producer
21298                       && startswith (cu->producer, "GNU Fortran"))
21299                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21300
21301                   /* A variable with DW_AT_external is never static,
21302                      but it may be block-scoped.  */
21303                   list_to_add = (cu->list_in_scope == &file_symbols
21304                                  ? &global_symbols : cu->list_in_scope);
21305                 }
21306               else
21307                 list_to_add = cu->list_in_scope;
21308             }
21309           else
21310             {
21311               /* We do not know the address of this symbol.
21312                  If it is an external symbol and we have type information
21313                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21314                  The address of the variable will then be determined from
21315                  the minimal symbol table whenever the variable is
21316                  referenced.  */
21317               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21318
21319               /* Fortran explicitly imports any global symbols to the local
21320                  scope by DW_TAG_common_block.  */
21321               if (cu->language == language_fortran && die->parent
21322                   && die->parent->tag == DW_TAG_common_block)
21323                 {
21324                   /* SYMBOL_CLASS doesn't matter here because
21325                      read_common_block is going to reset it.  */
21326                   if (!suppress_add)
21327                     list_to_add = cu->list_in_scope;
21328                 }
21329               else if (attr2 && (DW_UNSND (attr2) != 0)
21330                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21331                 {
21332                   /* A variable with DW_AT_external is never static, but it
21333                      may be block-scoped.  */
21334                   list_to_add = (cu->list_in_scope == &file_symbols
21335                                  ? &global_symbols : cu->list_in_scope);
21336
21337                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21338                 }
21339               else if (!die_is_declaration (die, cu))
21340                 {
21341                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21342                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21343                   if (!suppress_add)
21344                     list_to_add = cu->list_in_scope;
21345                 }
21346             }
21347           break;
21348         case DW_TAG_formal_parameter:
21349           /* If we are inside a function, mark this as an argument.  If
21350              not, we might be looking at an argument to an inlined function
21351              when we do not have enough information to show inlined frames;
21352              pretend it's a local variable in that case so that the user can
21353              still see it.  */
21354           if (context_stack_depth > 0
21355               && context_stack[context_stack_depth - 1].name != NULL)
21356             SYMBOL_IS_ARGUMENT (sym) = 1;
21357           attr = dwarf2_attr (die, DW_AT_location, cu);
21358           if (attr)
21359             {
21360               var_decode_location (attr, sym, cu);
21361             }
21362           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21363           if (attr)
21364             {
21365               dwarf2_const_value (attr, sym, cu);
21366             }
21367
21368           list_to_add = cu->list_in_scope;
21369           break;
21370         case DW_TAG_unspecified_parameters:
21371           /* From varargs functions; gdb doesn't seem to have any
21372              interest in this information, so just ignore it for now.
21373              (FIXME?) */
21374           break;
21375         case DW_TAG_template_type_param:
21376           suppress_add = 1;
21377           /* Fall through.  */
21378         case DW_TAG_class_type:
21379         case DW_TAG_interface_type:
21380         case DW_TAG_structure_type:
21381         case DW_TAG_union_type:
21382         case DW_TAG_set_type:
21383         case DW_TAG_enumeration_type:
21384           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21385           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21386
21387           {
21388             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21389                really ever be static objects: otherwise, if you try
21390                to, say, break of a class's method and you're in a file
21391                which doesn't mention that class, it won't work unless
21392                the check for all static symbols in lookup_symbol_aux
21393                saves you.  See the OtherFileClass tests in
21394                gdb.c++/namespace.exp.  */
21395
21396             if (!suppress_add)
21397               {
21398                 list_to_add = (cu->list_in_scope == &file_symbols
21399                                && cu->language == language_cplus
21400                                ? &global_symbols : cu->list_in_scope);
21401
21402                 /* The semantics of C++ state that "struct foo {
21403                    ... }" also defines a typedef for "foo".  */
21404                 if (cu->language == language_cplus
21405                     || cu->language == language_ada
21406                     || cu->language == language_d
21407                     || cu->language == language_rust)
21408                   {
21409                     /* The symbol's name is already allocated along
21410                        with this objfile, so we don't need to
21411                        duplicate it for the type.  */
21412                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21413                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21414                   }
21415               }
21416           }
21417           break;
21418         case DW_TAG_typedef:
21419           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21420           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21421           list_to_add = cu->list_in_scope;
21422           break;
21423         case DW_TAG_base_type:
21424         case DW_TAG_subrange_type:
21425           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21426           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21427           list_to_add = cu->list_in_scope;
21428           break;
21429         case DW_TAG_enumerator:
21430           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21431           if (attr)
21432             {
21433               dwarf2_const_value (attr, sym, cu);
21434             }
21435           {
21436             /* NOTE: carlton/2003-11-10: See comment above in the
21437                DW_TAG_class_type, etc. block.  */
21438
21439             list_to_add = (cu->list_in_scope == &file_symbols
21440                            && cu->language == language_cplus
21441                            ? &global_symbols : cu->list_in_scope);
21442           }
21443           break;
21444         case DW_TAG_imported_declaration:
21445         case DW_TAG_namespace:
21446           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21447           list_to_add = &global_symbols;
21448           break;
21449         case DW_TAG_module:
21450           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21451           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21452           list_to_add = &global_symbols;
21453           break;
21454         case DW_TAG_common_block:
21455           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21456           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21457           add_symbol_to_list (sym, cu->list_in_scope);
21458           break;
21459         default:
21460           /* Not a tag we recognize.  Hopefully we aren't processing
21461              trash data, but since we must specifically ignore things
21462              we don't recognize, there is nothing else we should do at
21463              this point.  */
21464           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
21465                      dwarf_tag_name (die->tag));
21466           break;
21467         }
21468
21469       if (suppress_add)
21470         {
21471           sym->hash_next = objfile->template_symbols;
21472           objfile->template_symbols = sym;
21473           list_to_add = NULL;
21474         }
21475
21476       if (list_to_add != NULL)
21477         add_symbol_to_list (sym, list_to_add);
21478
21479       /* For the benefit of old versions of GCC, check for anonymous
21480          namespaces based on the demangled name.  */
21481       if (!cu->processing_has_namespace_info
21482           && cu->language == language_cplus)
21483         cp_scan_for_anonymous_namespaces (sym, objfile);
21484     }
21485   return (sym);
21486 }
21487
21488 /* Given an attr with a DW_FORM_dataN value in host byte order,
21489    zero-extend it as appropriate for the symbol's type.  The DWARF
21490    standard (v4) is not entirely clear about the meaning of using
21491    DW_FORM_dataN for a constant with a signed type, where the type is
21492    wider than the data.  The conclusion of a discussion on the DWARF
21493    list was that this is unspecified.  We choose to always zero-extend
21494    because that is the interpretation long in use by GCC.  */
21495
21496 static gdb_byte *
21497 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21498                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21499 {
21500   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21501   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21502                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21503   LONGEST l = DW_UNSND (attr);
21504
21505   if (bits < sizeof (*value) * 8)
21506     {
21507       l &= ((LONGEST) 1 << bits) - 1;
21508       *value = l;
21509     }
21510   else if (bits == sizeof (*value) * 8)
21511     *value = l;
21512   else
21513     {
21514       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21515       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21516       return bytes;
21517     }
21518
21519   return NULL;
21520 }
21521
21522 /* Read a constant value from an attribute.  Either set *VALUE, or if
21523    the value does not fit in *VALUE, set *BYTES - either already
21524    allocated on the objfile obstack, or newly allocated on OBSTACK,
21525    or, set *BATON, if we translated the constant to a location
21526    expression.  */
21527
21528 static void
21529 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21530                          const char *name, struct obstack *obstack,
21531                          struct dwarf2_cu *cu,
21532                          LONGEST *value, const gdb_byte **bytes,
21533                          struct dwarf2_locexpr_baton **baton)
21534 {
21535   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21536   struct comp_unit_head *cu_header = &cu->header;
21537   struct dwarf_block *blk;
21538   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21539                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21540
21541   *value = 0;
21542   *bytes = NULL;
21543   *baton = NULL;
21544
21545   switch (attr->form)
21546     {
21547     case DW_FORM_addr:
21548     case DW_FORM_GNU_addr_index:
21549       {
21550         gdb_byte *data;
21551
21552         if (TYPE_LENGTH (type) != cu_header->addr_size)
21553           dwarf2_const_value_length_mismatch_complaint (name,
21554                                                         cu_header->addr_size,
21555                                                         TYPE_LENGTH (type));
21556         /* Symbols of this form are reasonably rare, so we just
21557            piggyback on the existing location code rather than writing
21558            a new implementation of symbol_computed_ops.  */
21559         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21560         (*baton)->per_cu = cu->per_cu;
21561         gdb_assert ((*baton)->per_cu);
21562
21563         (*baton)->size = 2 + cu_header->addr_size;
21564         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21565         (*baton)->data = data;
21566
21567         data[0] = DW_OP_addr;
21568         store_unsigned_integer (&data[1], cu_header->addr_size,
21569                                 byte_order, DW_ADDR (attr));
21570         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21571       }
21572       break;
21573     case DW_FORM_string:
21574     case DW_FORM_strp:
21575     case DW_FORM_GNU_str_index:
21576     case DW_FORM_GNU_strp_alt:
21577       /* DW_STRING is already allocated on the objfile obstack, point
21578          directly to it.  */
21579       *bytes = (const gdb_byte *) DW_STRING (attr);
21580       break;
21581     case DW_FORM_block1:
21582     case DW_FORM_block2:
21583     case DW_FORM_block4:
21584     case DW_FORM_block:
21585     case DW_FORM_exprloc:
21586     case DW_FORM_data16:
21587       blk = DW_BLOCK (attr);
21588       if (TYPE_LENGTH (type) != blk->size)
21589         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21590                                                       TYPE_LENGTH (type));
21591       *bytes = blk->data;
21592       break;
21593
21594       /* The DW_AT_const_value attributes are supposed to carry the
21595          symbol's value "represented as it would be on the target
21596          architecture."  By the time we get here, it's already been
21597          converted to host endianness, so we just need to sign- or
21598          zero-extend it as appropriate.  */
21599     case DW_FORM_data1:
21600       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21601       break;
21602     case DW_FORM_data2:
21603       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21604       break;
21605     case DW_FORM_data4:
21606       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21607       break;
21608     case DW_FORM_data8:
21609       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21610       break;
21611
21612     case DW_FORM_sdata:
21613     case DW_FORM_implicit_const:
21614       *value = DW_SND (attr);
21615       break;
21616
21617     case DW_FORM_udata:
21618       *value = DW_UNSND (attr);
21619       break;
21620
21621     default:
21622       complaint (&symfile_complaints,
21623                  _("unsupported const value attribute form: '%s'"),
21624                  dwarf_form_name (attr->form));
21625       *value = 0;
21626       break;
21627     }
21628 }
21629
21630
21631 /* Copy constant value from an attribute to a symbol.  */
21632
21633 static void
21634 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21635                     struct dwarf2_cu *cu)
21636 {
21637   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21638   LONGEST value;
21639   const gdb_byte *bytes;
21640   struct dwarf2_locexpr_baton *baton;
21641
21642   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21643                            SYMBOL_PRINT_NAME (sym),
21644                            &objfile->objfile_obstack, cu,
21645                            &value, &bytes, &baton);
21646
21647   if (baton != NULL)
21648     {
21649       SYMBOL_LOCATION_BATON (sym) = baton;
21650       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21651     }
21652   else if (bytes != NULL)
21653      {
21654       SYMBOL_VALUE_BYTES (sym) = bytes;
21655       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21656     }
21657   else
21658     {
21659       SYMBOL_VALUE (sym) = value;
21660       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21661     }
21662 }
21663
21664 /* Return the type of the die in question using its DW_AT_type attribute.  */
21665
21666 static struct type *
21667 die_type (struct die_info *die, struct dwarf2_cu *cu)
21668 {
21669   struct attribute *type_attr;
21670
21671   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21672   if (!type_attr)
21673     {
21674       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21675       /* A missing DW_AT_type represents a void type.  */
21676       return objfile_type (objfile)->builtin_void;
21677     }
21678
21679   return lookup_die_type (die, type_attr, cu);
21680 }
21681
21682 /* True iff CU's producer generates GNAT Ada auxiliary information
21683    that allows to find parallel types through that information instead
21684    of having to do expensive parallel lookups by type name.  */
21685
21686 static int
21687 need_gnat_info (struct dwarf2_cu *cu)
21688 {
21689   /* Assume that the Ada compiler was GNAT, which always produces
21690      the auxiliary information.  */
21691   return (cu->language == language_ada);
21692 }
21693
21694 /* Return the auxiliary type of the die in question using its
21695    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21696    attribute is not present.  */
21697
21698 static struct type *
21699 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21700 {
21701   struct attribute *type_attr;
21702
21703   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21704   if (!type_attr)
21705     return NULL;
21706
21707   return lookup_die_type (die, type_attr, cu);
21708 }
21709
21710 /* If DIE has a descriptive_type attribute, then set the TYPE's
21711    descriptive type accordingly.  */
21712
21713 static void
21714 set_descriptive_type (struct type *type, struct die_info *die,
21715                       struct dwarf2_cu *cu)
21716 {
21717   struct type *descriptive_type = die_descriptive_type (die, cu);
21718
21719   if (descriptive_type)
21720     {
21721       ALLOCATE_GNAT_AUX_TYPE (type);
21722       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21723     }
21724 }
21725
21726 /* Return the containing type of the die in question using its
21727    DW_AT_containing_type attribute.  */
21728
21729 static struct type *
21730 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21731 {
21732   struct attribute *type_attr;
21733   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21734
21735   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21736   if (!type_attr)
21737     error (_("Dwarf Error: Problem turning containing type into gdb type "
21738              "[in module %s]"), objfile_name (objfile));
21739
21740   return lookup_die_type (die, type_attr, cu);
21741 }
21742
21743 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21744
21745 static struct type *
21746 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21747 {
21748   struct dwarf2_per_objfile *dwarf2_per_objfile
21749     = cu->per_cu->dwarf2_per_objfile;
21750   struct objfile *objfile = dwarf2_per_objfile->objfile;
21751   char *message, *saved;
21752
21753   message = xstrprintf (_("<unknown type in %s, CU %s, DIE %s>"),
21754                         objfile_name (objfile),
21755                         sect_offset_str (cu->header.sect_off),
21756                         sect_offset_str (die->sect_off));
21757   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21758                                   message, strlen (message));
21759   xfree (message);
21760
21761   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21762 }
21763
21764 /* Look up the type of DIE in CU using its type attribute ATTR.
21765    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21766    DW_AT_containing_type.
21767    If there is no type substitute an error marker.  */
21768
21769 static struct type *
21770 lookup_die_type (struct die_info *die, const struct attribute *attr,
21771                  struct dwarf2_cu *cu)
21772 {
21773   struct dwarf2_per_objfile *dwarf2_per_objfile
21774     = cu->per_cu->dwarf2_per_objfile;
21775   struct objfile *objfile = dwarf2_per_objfile->objfile;
21776   struct type *this_type;
21777
21778   gdb_assert (attr->name == DW_AT_type
21779               || attr->name == DW_AT_GNAT_descriptive_type
21780               || attr->name == DW_AT_containing_type);
21781
21782   /* First see if we have it cached.  */
21783
21784   if (attr->form == DW_FORM_GNU_ref_alt)
21785     {
21786       struct dwarf2_per_cu_data *per_cu;
21787       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21788
21789       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21790                                                  dwarf2_per_objfile);
21791       this_type = get_die_type_at_offset (sect_off, per_cu);
21792     }
21793   else if (attr_form_is_ref (attr))
21794     {
21795       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21796
21797       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
21798     }
21799   else if (attr->form == DW_FORM_ref_sig8)
21800     {
21801       ULONGEST signature = DW_SIGNATURE (attr);
21802
21803       return get_signatured_type (die, signature, cu);
21804     }
21805   else
21806     {
21807       complaint (&symfile_complaints,
21808                  _("Dwarf Error: Bad type attribute %s in DIE"
21809                    " at %s [in module %s]"),
21810                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
21811                  objfile_name (objfile));
21812       return build_error_marker_type (cu, die);
21813     }
21814
21815   /* If not cached we need to read it in.  */
21816
21817   if (this_type == NULL)
21818     {
21819       struct die_info *type_die = NULL;
21820       struct dwarf2_cu *type_cu = cu;
21821
21822       if (attr_form_is_ref (attr))
21823         type_die = follow_die_ref (die, attr, &type_cu);
21824       if (type_die == NULL)
21825         return build_error_marker_type (cu, die);
21826       /* If we find the type now, it's probably because the type came
21827          from an inter-CU reference and the type's CU got expanded before
21828          ours.  */
21829       this_type = read_type_die (type_die, type_cu);
21830     }
21831
21832   /* If we still don't have a type use an error marker.  */
21833
21834   if (this_type == NULL)
21835     return build_error_marker_type (cu, die);
21836
21837   return this_type;
21838 }
21839
21840 /* Return the type in DIE, CU.
21841    Returns NULL for invalid types.
21842
21843    This first does a lookup in die_type_hash,
21844    and only reads the die in if necessary.
21845
21846    NOTE: This can be called when reading in partial or full symbols.  */
21847
21848 static struct type *
21849 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
21850 {
21851   struct type *this_type;
21852
21853   this_type = get_die_type (die, cu);
21854   if (this_type)
21855     return this_type;
21856
21857   return read_type_die_1 (die, cu);
21858 }
21859
21860 /* Read the type in DIE, CU.
21861    Returns NULL for invalid types.  */
21862
21863 static struct type *
21864 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
21865 {
21866   struct type *this_type = NULL;
21867
21868   switch (die->tag)
21869     {
21870     case DW_TAG_class_type:
21871     case DW_TAG_interface_type:
21872     case DW_TAG_structure_type:
21873     case DW_TAG_union_type:
21874       this_type = read_structure_type (die, cu);
21875       break;
21876     case DW_TAG_enumeration_type:
21877       this_type = read_enumeration_type (die, cu);
21878       break;
21879     case DW_TAG_subprogram:
21880     case DW_TAG_subroutine_type:
21881     case DW_TAG_inlined_subroutine:
21882       this_type = read_subroutine_type (die, cu);
21883       break;
21884     case DW_TAG_array_type:
21885       this_type = read_array_type (die, cu);
21886       break;
21887     case DW_TAG_set_type:
21888       this_type = read_set_type (die, cu);
21889       break;
21890     case DW_TAG_pointer_type:
21891       this_type = read_tag_pointer_type (die, cu);
21892       break;
21893     case DW_TAG_ptr_to_member_type:
21894       this_type = read_tag_ptr_to_member_type (die, cu);
21895       break;
21896     case DW_TAG_reference_type:
21897       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
21898       break;
21899     case DW_TAG_rvalue_reference_type:
21900       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
21901       break;
21902     case DW_TAG_const_type:
21903       this_type = read_tag_const_type (die, cu);
21904       break;
21905     case DW_TAG_volatile_type:
21906       this_type = read_tag_volatile_type (die, cu);
21907       break;
21908     case DW_TAG_restrict_type:
21909       this_type = read_tag_restrict_type (die, cu);
21910       break;
21911     case DW_TAG_string_type:
21912       this_type = read_tag_string_type (die, cu);
21913       break;
21914     case DW_TAG_typedef:
21915       this_type = read_typedef (die, cu);
21916       break;
21917     case DW_TAG_subrange_type:
21918       this_type = read_subrange_type (die, cu);
21919       break;
21920     case DW_TAG_base_type:
21921       this_type = read_base_type (die, cu);
21922       break;
21923     case DW_TAG_unspecified_type:
21924       this_type = read_unspecified_type (die, cu);
21925       break;
21926     case DW_TAG_namespace:
21927       this_type = read_namespace_type (die, cu);
21928       break;
21929     case DW_TAG_module:
21930       this_type = read_module_type (die, cu);
21931       break;
21932     case DW_TAG_atomic_type:
21933       this_type = read_tag_atomic_type (die, cu);
21934       break;
21935     default:
21936       complaint (&symfile_complaints,
21937                  _("unexpected tag in read_type_die: '%s'"),
21938                  dwarf_tag_name (die->tag));
21939       break;
21940     }
21941
21942   return this_type;
21943 }
21944
21945 /* See if we can figure out if the class lives in a namespace.  We do
21946    this by looking for a member function; its demangled name will
21947    contain namespace info, if there is any.
21948    Return the computed name or NULL.
21949    Space for the result is allocated on the objfile's obstack.
21950    This is the full-die version of guess_partial_die_structure_name.
21951    In this case we know DIE has no useful parent.  */
21952
21953 static char *
21954 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
21955 {
21956   struct die_info *spec_die;
21957   struct dwarf2_cu *spec_cu;
21958   struct die_info *child;
21959   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21960
21961   spec_cu = cu;
21962   spec_die = die_specification (die, &spec_cu);
21963   if (spec_die != NULL)
21964     {
21965       die = spec_die;
21966       cu = spec_cu;
21967     }
21968
21969   for (child = die->child;
21970        child != NULL;
21971        child = child->sibling)
21972     {
21973       if (child->tag == DW_TAG_subprogram)
21974         {
21975           const char *linkage_name = dw2_linkage_name (child, cu);
21976
21977           if (linkage_name != NULL)
21978             {
21979               char *actual_name
21980                 = language_class_name_from_physname (cu->language_defn,
21981                                                      linkage_name);
21982               char *name = NULL;
21983
21984               if (actual_name != NULL)
21985                 {
21986                   const char *die_name = dwarf2_name (die, cu);
21987
21988                   if (die_name != NULL
21989                       && strcmp (die_name, actual_name) != 0)
21990                     {
21991                       /* Strip off the class name from the full name.
21992                          We want the prefix.  */
21993                       int die_name_len = strlen (die_name);
21994                       int actual_name_len = strlen (actual_name);
21995
21996                       /* Test for '::' as a sanity check.  */
21997                       if (actual_name_len > die_name_len + 2
21998                           && actual_name[actual_name_len
21999                                          - die_name_len - 1] == ':')
22000                         name = (char *) obstack_copy0 (
22001                           &objfile->per_bfd->storage_obstack,
22002                           actual_name, actual_name_len - die_name_len - 2);
22003                     }
22004                 }
22005               xfree (actual_name);
22006               return name;
22007             }
22008         }
22009     }
22010
22011   return NULL;
22012 }
22013
22014 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22015    prefix part in such case.  See
22016    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22017
22018 static const char *
22019 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22020 {
22021   struct attribute *attr;
22022   const char *base;
22023
22024   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22025       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22026     return NULL;
22027
22028   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22029     return NULL;
22030
22031   attr = dw2_linkage_name_attr (die, cu);
22032   if (attr == NULL || DW_STRING (attr) == NULL)
22033     return NULL;
22034
22035   /* dwarf2_name had to be already called.  */
22036   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22037
22038   /* Strip the base name, keep any leading namespaces/classes.  */
22039   base = strrchr (DW_STRING (attr), ':');
22040   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22041     return "";
22042
22043   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22044   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22045                                  DW_STRING (attr),
22046                                  &base[-1] - DW_STRING (attr));
22047 }
22048
22049 /* Return the name of the namespace/class that DIE is defined within,
22050    or "" if we can't tell.  The caller should not xfree the result.
22051
22052    For example, if we're within the method foo() in the following
22053    code:
22054
22055    namespace N {
22056      class C {
22057        void foo () {
22058        }
22059      };
22060    }
22061
22062    then determine_prefix on foo's die will return "N::C".  */
22063
22064 static const char *
22065 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22066 {
22067   struct dwarf2_per_objfile *dwarf2_per_objfile
22068     = cu->per_cu->dwarf2_per_objfile;
22069   struct die_info *parent, *spec_die;
22070   struct dwarf2_cu *spec_cu;
22071   struct type *parent_type;
22072   const char *retval;
22073
22074   if (cu->language != language_cplus
22075       && cu->language != language_fortran && cu->language != language_d
22076       && cu->language != language_rust)
22077     return "";
22078
22079   retval = anonymous_struct_prefix (die, cu);
22080   if (retval)
22081     return retval;
22082
22083   /* We have to be careful in the presence of DW_AT_specification.
22084      For example, with GCC 3.4, given the code
22085
22086      namespace N {
22087        void foo() {
22088          // Definition of N::foo.
22089        }
22090      }
22091
22092      then we'll have a tree of DIEs like this:
22093
22094      1: DW_TAG_compile_unit
22095        2: DW_TAG_namespace        // N
22096          3: DW_TAG_subprogram     // declaration of N::foo
22097        4: DW_TAG_subprogram       // definition of N::foo
22098             DW_AT_specification   // refers to die #3
22099
22100      Thus, when processing die #4, we have to pretend that we're in
22101      the context of its DW_AT_specification, namely the contex of die
22102      #3.  */
22103   spec_cu = cu;
22104   spec_die = die_specification (die, &spec_cu);
22105   if (spec_die == NULL)
22106     parent = die->parent;
22107   else
22108     {
22109       parent = spec_die->parent;
22110       cu = spec_cu;
22111     }
22112
22113   if (parent == NULL)
22114     return "";
22115   else if (parent->building_fullname)
22116     {
22117       const char *name;
22118       const char *parent_name;
22119
22120       /* It has been seen on RealView 2.2 built binaries,
22121          DW_TAG_template_type_param types actually _defined_ as
22122          children of the parent class:
22123
22124          enum E {};
22125          template class <class Enum> Class{};
22126          Class<enum E> class_e;
22127
22128          1: DW_TAG_class_type (Class)
22129            2: DW_TAG_enumeration_type (E)
22130              3: DW_TAG_enumerator (enum1:0)
22131              3: DW_TAG_enumerator (enum2:1)
22132              ...
22133            2: DW_TAG_template_type_param
22134               DW_AT_type  DW_FORM_ref_udata (E)
22135
22136          Besides being broken debug info, it can put GDB into an
22137          infinite loop.  Consider:
22138
22139          When we're building the full name for Class<E>, we'll start
22140          at Class, and go look over its template type parameters,
22141          finding E.  We'll then try to build the full name of E, and
22142          reach here.  We're now trying to build the full name of E,
22143          and look over the parent DIE for containing scope.  In the
22144          broken case, if we followed the parent DIE of E, we'd again
22145          find Class, and once again go look at its template type
22146          arguments, etc., etc.  Simply don't consider such parent die
22147          as source-level parent of this die (it can't be, the language
22148          doesn't allow it), and break the loop here.  */
22149       name = dwarf2_name (die, cu);
22150       parent_name = dwarf2_name (parent, cu);
22151       complaint (&symfile_complaints,
22152                  _("template param type '%s' defined within parent '%s'"),
22153                  name ? name : "<unknown>",
22154                  parent_name ? parent_name : "<unknown>");
22155       return "";
22156     }
22157   else
22158     switch (parent->tag)
22159       {
22160       case DW_TAG_namespace:
22161         parent_type = read_type_die (parent, cu);
22162         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22163            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22164            Work around this problem here.  */
22165         if (cu->language == language_cplus
22166             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
22167           return "";
22168         /* We give a name to even anonymous namespaces.  */
22169         return TYPE_TAG_NAME (parent_type);
22170       case DW_TAG_class_type:
22171       case DW_TAG_interface_type:
22172       case DW_TAG_structure_type:
22173       case DW_TAG_union_type:
22174       case DW_TAG_module:
22175         parent_type = read_type_die (parent, cu);
22176         if (TYPE_TAG_NAME (parent_type) != NULL)
22177           return TYPE_TAG_NAME (parent_type);
22178         else
22179           /* An anonymous structure is only allowed non-static data
22180              members; no typedefs, no member functions, et cetera.
22181              So it does not need a prefix.  */
22182           return "";
22183       case DW_TAG_compile_unit:
22184       case DW_TAG_partial_unit:
22185         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22186         if (cu->language == language_cplus
22187             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22188             && die->child != NULL
22189             && (die->tag == DW_TAG_class_type
22190                 || die->tag == DW_TAG_structure_type
22191                 || die->tag == DW_TAG_union_type))
22192           {
22193             char *name = guess_full_die_structure_name (die, cu);
22194             if (name != NULL)
22195               return name;
22196           }
22197         return "";
22198       case DW_TAG_enumeration_type:
22199         parent_type = read_type_die (parent, cu);
22200         if (TYPE_DECLARED_CLASS (parent_type))
22201           {
22202             if (TYPE_TAG_NAME (parent_type) != NULL)
22203               return TYPE_TAG_NAME (parent_type);
22204             return "";
22205           }
22206         /* Fall through.  */
22207       default:
22208         return determine_prefix (parent, cu);
22209       }
22210 }
22211
22212 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22213    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22214    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22215    an obconcat, otherwise allocate storage for the result.  The CU argument is
22216    used to determine the language and hence, the appropriate separator.  */
22217
22218 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22219
22220 static char *
22221 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22222                  int physname, struct dwarf2_cu *cu)
22223 {
22224   const char *lead = "";
22225   const char *sep;
22226
22227   if (suffix == NULL || suffix[0] == '\0'
22228       || prefix == NULL || prefix[0] == '\0')
22229     sep = "";
22230   else if (cu->language == language_d)
22231     {
22232       /* For D, the 'main' function could be defined in any module, but it
22233          should never be prefixed.  */
22234       if (strcmp (suffix, "D main") == 0)
22235         {
22236           prefix = "";
22237           sep = "";
22238         }
22239       else
22240         sep = ".";
22241     }
22242   else if (cu->language == language_fortran && physname)
22243     {
22244       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22245          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22246
22247       lead = "__";
22248       sep = "_MOD_";
22249     }
22250   else
22251     sep = "::";
22252
22253   if (prefix == NULL)
22254     prefix = "";
22255   if (suffix == NULL)
22256     suffix = "";
22257
22258   if (obs == NULL)
22259     {
22260       char *retval
22261         = ((char *)
22262            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22263
22264       strcpy (retval, lead);
22265       strcat (retval, prefix);
22266       strcat (retval, sep);
22267       strcat (retval, suffix);
22268       return retval;
22269     }
22270   else
22271     {
22272       /* We have an obstack.  */
22273       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22274     }
22275 }
22276
22277 /* Return sibling of die, NULL if no sibling.  */
22278
22279 static struct die_info *
22280 sibling_die (struct die_info *die)
22281 {
22282   return die->sibling;
22283 }
22284
22285 /* Get name of a die, return NULL if not found.  */
22286
22287 static const char *
22288 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22289                           struct obstack *obstack)
22290 {
22291   if (name && cu->language == language_cplus)
22292     {
22293       std::string canon_name = cp_canonicalize_string (name);
22294
22295       if (!canon_name.empty ())
22296         {
22297           if (canon_name != name)
22298             name = (const char *) obstack_copy0 (obstack,
22299                                                  canon_name.c_str (),
22300                                                  canon_name.length ());
22301         }
22302     }
22303
22304   return name;
22305 }
22306
22307 /* Get name of a die, return NULL if not found.
22308    Anonymous namespaces are converted to their magic string.  */
22309
22310 static const char *
22311 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22312 {
22313   struct attribute *attr;
22314   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22315
22316   attr = dwarf2_attr (die, DW_AT_name, cu);
22317   if ((!attr || !DW_STRING (attr))
22318       && die->tag != DW_TAG_namespace
22319       && die->tag != DW_TAG_class_type
22320       && die->tag != DW_TAG_interface_type
22321       && die->tag != DW_TAG_structure_type
22322       && die->tag != DW_TAG_union_type)
22323     return NULL;
22324
22325   switch (die->tag)
22326     {
22327     case DW_TAG_compile_unit:
22328     case DW_TAG_partial_unit:
22329       /* Compilation units have a DW_AT_name that is a filename, not
22330          a source language identifier.  */
22331     case DW_TAG_enumeration_type:
22332     case DW_TAG_enumerator:
22333       /* These tags always have simple identifiers already; no need
22334          to canonicalize them.  */
22335       return DW_STRING (attr);
22336
22337     case DW_TAG_namespace:
22338       if (attr != NULL && DW_STRING (attr) != NULL)
22339         return DW_STRING (attr);
22340       return CP_ANONYMOUS_NAMESPACE_STR;
22341
22342     case DW_TAG_class_type:
22343     case DW_TAG_interface_type:
22344     case DW_TAG_structure_type:
22345     case DW_TAG_union_type:
22346       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22347          structures or unions.  These were of the form "._%d" in GCC 4.1,
22348          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22349          and GCC 4.4.  We work around this problem by ignoring these.  */
22350       if (attr && DW_STRING (attr)
22351           && (startswith (DW_STRING (attr), "._")
22352               || startswith (DW_STRING (attr), "<anonymous")))
22353         return NULL;
22354
22355       /* GCC might emit a nameless typedef that has a linkage name.  See
22356          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22357       if (!attr || DW_STRING (attr) == NULL)
22358         {
22359           char *demangled = NULL;
22360
22361           attr = dw2_linkage_name_attr (die, cu);
22362           if (attr == NULL || DW_STRING (attr) == NULL)
22363             return NULL;
22364
22365           /* Avoid demangling DW_STRING (attr) the second time on a second
22366              call for the same DIE.  */
22367           if (!DW_STRING_IS_CANONICAL (attr))
22368             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22369
22370           if (demangled)
22371             {
22372               const char *base;
22373
22374               /* FIXME: we already did this for the partial symbol... */
22375               DW_STRING (attr)
22376                 = ((const char *)
22377                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22378                                   demangled, strlen (demangled)));
22379               DW_STRING_IS_CANONICAL (attr) = 1;
22380               xfree (demangled);
22381
22382               /* Strip any leading namespaces/classes, keep only the base name.
22383                  DW_AT_name for named DIEs does not contain the prefixes.  */
22384               base = strrchr (DW_STRING (attr), ':');
22385               if (base && base > DW_STRING (attr) && base[-1] == ':')
22386                 return &base[1];
22387               else
22388                 return DW_STRING (attr);
22389             }
22390         }
22391       break;
22392
22393     default:
22394       break;
22395     }
22396
22397   if (!DW_STRING_IS_CANONICAL (attr))
22398     {
22399       DW_STRING (attr)
22400         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22401                                     &objfile->per_bfd->storage_obstack);
22402       DW_STRING_IS_CANONICAL (attr) = 1;
22403     }
22404   return DW_STRING (attr);
22405 }
22406
22407 /* Return the die that this die in an extension of, or NULL if there
22408    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22409    containing the return value on output.  */
22410
22411 static struct die_info *
22412 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22413 {
22414   struct attribute *attr;
22415
22416   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22417   if (attr == NULL)
22418     return NULL;
22419
22420   return follow_die_ref (die, attr, ext_cu);
22421 }
22422
22423 /* Convert a DIE tag into its string name.  */
22424
22425 static const char *
22426 dwarf_tag_name (unsigned tag)
22427 {
22428   const char *name = get_DW_TAG_name (tag);
22429
22430   if (name == NULL)
22431     return "DW_TAG_<unknown>";
22432
22433   return name;
22434 }
22435
22436 /* Convert a DWARF attribute code into its string name.  */
22437
22438 static const char *
22439 dwarf_attr_name (unsigned attr)
22440 {
22441   const char *name;
22442
22443 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22444   if (attr == DW_AT_MIPS_fde)
22445     return "DW_AT_MIPS_fde";
22446 #else
22447   if (attr == DW_AT_HP_block_index)
22448     return "DW_AT_HP_block_index";
22449 #endif
22450
22451   name = get_DW_AT_name (attr);
22452
22453   if (name == NULL)
22454     return "DW_AT_<unknown>";
22455
22456   return name;
22457 }
22458
22459 /* Convert a DWARF value form code into its string name.  */
22460
22461 static const char *
22462 dwarf_form_name (unsigned form)
22463 {
22464   const char *name = get_DW_FORM_name (form);
22465
22466   if (name == NULL)
22467     return "DW_FORM_<unknown>";
22468
22469   return name;
22470 }
22471
22472 static const char *
22473 dwarf_bool_name (unsigned mybool)
22474 {
22475   if (mybool)
22476     return "TRUE";
22477   else
22478     return "FALSE";
22479 }
22480
22481 /* Convert a DWARF type code into its string name.  */
22482
22483 static const char *
22484 dwarf_type_encoding_name (unsigned enc)
22485 {
22486   const char *name = get_DW_ATE_name (enc);
22487
22488   if (name == NULL)
22489     return "DW_ATE_<unknown>";
22490
22491   return name;
22492 }
22493
22494 static void
22495 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22496 {
22497   unsigned int i;
22498
22499   print_spaces (indent, f);
22500   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22501                       dwarf_tag_name (die->tag), die->abbrev,
22502                       sect_offset_str (die->sect_off));
22503
22504   if (die->parent != NULL)
22505     {
22506       print_spaces (indent, f);
22507       fprintf_unfiltered (f, "  parent at offset: %s\n",
22508                           sect_offset_str (die->parent->sect_off));
22509     }
22510
22511   print_spaces (indent, f);
22512   fprintf_unfiltered (f, "  has children: %s\n",
22513            dwarf_bool_name (die->child != NULL));
22514
22515   print_spaces (indent, f);
22516   fprintf_unfiltered (f, "  attributes:\n");
22517
22518   for (i = 0; i < die->num_attrs; ++i)
22519     {
22520       print_spaces (indent, f);
22521       fprintf_unfiltered (f, "    %s (%s) ",
22522                dwarf_attr_name (die->attrs[i].name),
22523                dwarf_form_name (die->attrs[i].form));
22524
22525       switch (die->attrs[i].form)
22526         {
22527         case DW_FORM_addr:
22528         case DW_FORM_GNU_addr_index:
22529           fprintf_unfiltered (f, "address: ");
22530           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22531           break;
22532         case DW_FORM_block2:
22533         case DW_FORM_block4:
22534         case DW_FORM_block:
22535         case DW_FORM_block1:
22536           fprintf_unfiltered (f, "block: size %s",
22537                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22538           break;
22539         case DW_FORM_exprloc:
22540           fprintf_unfiltered (f, "expression: size %s",
22541                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22542           break;
22543         case DW_FORM_data16:
22544           fprintf_unfiltered (f, "constant of 16 bytes");
22545           break;
22546         case DW_FORM_ref_addr:
22547           fprintf_unfiltered (f, "ref address: ");
22548           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22549           break;
22550         case DW_FORM_GNU_ref_alt:
22551           fprintf_unfiltered (f, "alt ref address: ");
22552           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22553           break;
22554         case DW_FORM_ref1:
22555         case DW_FORM_ref2:
22556         case DW_FORM_ref4:
22557         case DW_FORM_ref8:
22558         case DW_FORM_ref_udata:
22559           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22560                               (long) (DW_UNSND (&die->attrs[i])));
22561           break;
22562         case DW_FORM_data1:
22563         case DW_FORM_data2:
22564         case DW_FORM_data4:
22565         case DW_FORM_data8:
22566         case DW_FORM_udata:
22567         case DW_FORM_sdata:
22568           fprintf_unfiltered (f, "constant: %s",
22569                               pulongest (DW_UNSND (&die->attrs[i])));
22570           break;
22571         case DW_FORM_sec_offset:
22572           fprintf_unfiltered (f, "section offset: %s",
22573                               pulongest (DW_UNSND (&die->attrs[i])));
22574           break;
22575         case DW_FORM_ref_sig8:
22576           fprintf_unfiltered (f, "signature: %s",
22577                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22578           break;
22579         case DW_FORM_string:
22580         case DW_FORM_strp:
22581         case DW_FORM_line_strp:
22582         case DW_FORM_GNU_str_index:
22583         case DW_FORM_GNU_strp_alt:
22584           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22585                    DW_STRING (&die->attrs[i])
22586                    ? DW_STRING (&die->attrs[i]) : "",
22587                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22588           break;
22589         case DW_FORM_flag:
22590           if (DW_UNSND (&die->attrs[i]))
22591             fprintf_unfiltered (f, "flag: TRUE");
22592           else
22593             fprintf_unfiltered (f, "flag: FALSE");
22594           break;
22595         case DW_FORM_flag_present:
22596           fprintf_unfiltered (f, "flag: TRUE");
22597           break;
22598         case DW_FORM_indirect:
22599           /* The reader will have reduced the indirect form to
22600              the "base form" so this form should not occur.  */
22601           fprintf_unfiltered (f, 
22602                               "unexpected attribute form: DW_FORM_indirect");
22603           break;
22604         case DW_FORM_implicit_const:
22605           fprintf_unfiltered (f, "constant: %s",
22606                               plongest (DW_SND (&die->attrs[i])));
22607           break;
22608         default:
22609           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22610                    die->attrs[i].form);
22611           break;
22612         }
22613       fprintf_unfiltered (f, "\n");
22614     }
22615 }
22616
22617 static void
22618 dump_die_for_error (struct die_info *die)
22619 {
22620   dump_die_shallow (gdb_stderr, 0, die);
22621 }
22622
22623 static void
22624 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22625 {
22626   int indent = level * 4;
22627
22628   gdb_assert (die != NULL);
22629
22630   if (level >= max_level)
22631     return;
22632
22633   dump_die_shallow (f, indent, die);
22634
22635   if (die->child != NULL)
22636     {
22637       print_spaces (indent, f);
22638       fprintf_unfiltered (f, "  Children:");
22639       if (level + 1 < max_level)
22640         {
22641           fprintf_unfiltered (f, "\n");
22642           dump_die_1 (f, level + 1, max_level, die->child);
22643         }
22644       else
22645         {
22646           fprintf_unfiltered (f,
22647                               " [not printed, max nesting level reached]\n");
22648         }
22649     }
22650
22651   if (die->sibling != NULL && level > 0)
22652     {
22653       dump_die_1 (f, level, max_level, die->sibling);
22654     }
22655 }
22656
22657 /* This is called from the pdie macro in gdbinit.in.
22658    It's not static so gcc will keep a copy callable from gdb.  */
22659
22660 void
22661 dump_die (struct die_info *die, int max_level)
22662 {
22663   dump_die_1 (gdb_stdlog, 0, max_level, die);
22664 }
22665
22666 static void
22667 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22668 {
22669   void **slot;
22670
22671   slot = htab_find_slot_with_hash (cu->die_hash, die,
22672                                    to_underlying (die->sect_off),
22673                                    INSERT);
22674
22675   *slot = die;
22676 }
22677
22678 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22679    required kind.  */
22680
22681 static sect_offset
22682 dwarf2_get_ref_die_offset (const struct attribute *attr)
22683 {
22684   if (attr_form_is_ref (attr))
22685     return (sect_offset) DW_UNSND (attr);
22686
22687   complaint (&symfile_complaints,
22688              _("unsupported die ref attribute form: '%s'"),
22689              dwarf_form_name (attr->form));
22690   return {};
22691 }
22692
22693 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22694  * the value held by the attribute is not constant.  */
22695
22696 static LONGEST
22697 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22698 {
22699   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22700     return DW_SND (attr);
22701   else if (attr->form == DW_FORM_udata
22702            || attr->form == DW_FORM_data1
22703            || attr->form == DW_FORM_data2
22704            || attr->form == DW_FORM_data4
22705            || attr->form == DW_FORM_data8)
22706     return DW_UNSND (attr);
22707   else
22708     {
22709       /* For DW_FORM_data16 see attr_form_is_constant.  */
22710       complaint (&symfile_complaints,
22711                  _("Attribute value is not a constant (%s)"),
22712                  dwarf_form_name (attr->form));
22713       return default_value;
22714     }
22715 }
22716
22717 /* Follow reference or signature attribute ATTR of SRC_DIE.
22718    On entry *REF_CU is the CU of SRC_DIE.
22719    On exit *REF_CU is the CU of the result.  */
22720
22721 static struct die_info *
22722 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22723                        struct dwarf2_cu **ref_cu)
22724 {
22725   struct die_info *die;
22726
22727   if (attr_form_is_ref (attr))
22728     die = follow_die_ref (src_die, attr, ref_cu);
22729   else if (attr->form == DW_FORM_ref_sig8)
22730     die = follow_die_sig (src_die, attr, ref_cu);
22731   else
22732     {
22733       dump_die_for_error (src_die);
22734       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22735              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22736     }
22737
22738   return die;
22739 }
22740
22741 /* Follow reference OFFSET.
22742    On entry *REF_CU is the CU of the source die referencing OFFSET.
22743    On exit *REF_CU is the CU of the result.
22744    Returns NULL if OFFSET is invalid.  */
22745
22746 static struct die_info *
22747 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22748                    struct dwarf2_cu **ref_cu)
22749 {
22750   struct die_info temp_die;
22751   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22752   struct dwarf2_per_objfile *dwarf2_per_objfile
22753     = cu->per_cu->dwarf2_per_objfile;
22754
22755   gdb_assert (cu->per_cu != NULL);
22756
22757   target_cu = cu;
22758
22759   if (cu->per_cu->is_debug_types)
22760     {
22761       /* .debug_types CUs cannot reference anything outside their CU.
22762          If they need to, they have to reference a signatured type via
22763          DW_FORM_ref_sig8.  */
22764       if (!offset_in_cu_p (&cu->header, sect_off))
22765         return NULL;
22766     }
22767   else if (offset_in_dwz != cu->per_cu->is_dwz
22768            || !offset_in_cu_p (&cu->header, sect_off))
22769     {
22770       struct dwarf2_per_cu_data *per_cu;
22771
22772       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22773                                                  dwarf2_per_objfile);
22774
22775       /* If necessary, add it to the queue and load its DIEs.  */
22776       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22777         load_full_comp_unit (per_cu, cu->language);
22778
22779       target_cu = per_cu->cu;
22780     }
22781   else if (cu->dies == NULL)
22782     {
22783       /* We're loading full DIEs during partial symbol reading.  */
22784       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22785       load_full_comp_unit (cu->per_cu, language_minimal);
22786     }
22787
22788   *ref_cu = target_cu;
22789   temp_die.sect_off = sect_off;
22790   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22791                                                   &temp_die,
22792                                                   to_underlying (sect_off));
22793 }
22794
22795 /* Follow reference attribute ATTR of SRC_DIE.
22796    On entry *REF_CU is the CU of SRC_DIE.
22797    On exit *REF_CU is the CU of the result.  */
22798
22799 static struct die_info *
22800 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22801                 struct dwarf2_cu **ref_cu)
22802 {
22803   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22804   struct dwarf2_cu *cu = *ref_cu;
22805   struct die_info *die;
22806
22807   die = follow_die_offset (sect_off,
22808                            (attr->form == DW_FORM_GNU_ref_alt
22809                             || cu->per_cu->is_dwz),
22810                            ref_cu);
22811   if (!die)
22812     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
22813            "at %s [in module %s]"),
22814            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
22815            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
22816
22817   return die;
22818 }
22819
22820 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
22821    Returned value is intended for DW_OP_call*.  Returned
22822    dwarf2_locexpr_baton->data has lifetime of
22823    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
22824
22825 struct dwarf2_locexpr_baton
22826 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
22827                                struct dwarf2_per_cu_data *per_cu,
22828                                CORE_ADDR (*get_frame_pc) (void *baton),
22829                                void *baton)
22830 {
22831   struct dwarf2_cu *cu;
22832   struct die_info *die;
22833   struct attribute *attr;
22834   struct dwarf2_locexpr_baton retval;
22835   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
22836   struct objfile *objfile = dwarf2_per_objfile->objfile;
22837
22838   if (per_cu->cu == NULL)
22839     load_cu (per_cu);
22840   cu = per_cu->cu;
22841   if (cu == NULL)
22842     {
22843       /* We shouldn't get here for a dummy CU, but don't crash on the user.
22844          Instead just throw an error, not much else we can do.  */
22845       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
22846              sect_offset_str (sect_off), objfile_name (objfile));
22847     }
22848
22849   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
22850   if (!die)
22851     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
22852            sect_offset_str (sect_off), objfile_name (objfile));
22853
22854   attr = dwarf2_attr (die, DW_AT_location, cu);
22855   if (!attr)
22856     {
22857       /* DWARF: "If there is no such attribute, then there is no effect.".
22858          DATA is ignored if SIZE is 0.  */
22859
22860       retval.data = NULL;
22861       retval.size = 0;
22862     }
22863   else if (attr_form_is_section_offset (attr))
22864     {
22865       struct dwarf2_loclist_baton loclist_baton;
22866       CORE_ADDR pc = (*get_frame_pc) (baton);
22867       size_t size;
22868
22869       fill_in_loclist_baton (cu, &loclist_baton, attr);
22870
22871       retval.data = dwarf2_find_location_expression (&loclist_baton,
22872                                                      &size, pc);
22873       retval.size = size;
22874     }
22875   else
22876     {
22877       if (!attr_form_is_block (attr))
22878         error (_("Dwarf Error: DIE at %s referenced in module %s "
22879                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
22880                sect_offset_str (sect_off), objfile_name (objfile));
22881
22882       retval.data = DW_BLOCK (attr)->data;
22883       retval.size = DW_BLOCK (attr)->size;
22884     }
22885   retval.per_cu = cu->per_cu;
22886
22887   age_cached_comp_units (dwarf2_per_objfile);
22888
22889   return retval;
22890 }
22891
22892 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
22893    offset.  */
22894
22895 struct dwarf2_locexpr_baton
22896 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
22897                              struct dwarf2_per_cu_data *per_cu,
22898                              CORE_ADDR (*get_frame_pc) (void *baton),
22899                              void *baton)
22900 {
22901   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
22902
22903   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
22904 }
22905
22906 /* Write a constant of a given type as target-ordered bytes into
22907    OBSTACK.  */
22908
22909 static const gdb_byte *
22910 write_constant_as_bytes (struct obstack *obstack,
22911                          enum bfd_endian byte_order,
22912                          struct type *type,
22913                          ULONGEST value,
22914                          LONGEST *len)
22915 {
22916   gdb_byte *result;
22917
22918   *len = TYPE_LENGTH (type);
22919   result = (gdb_byte *) obstack_alloc (obstack, *len);
22920   store_unsigned_integer (result, *len, byte_order, value);
22921
22922   return result;
22923 }
22924
22925 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
22926    pointer to the constant bytes and set LEN to the length of the
22927    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
22928    does not have a DW_AT_const_value, return NULL.  */
22929
22930 const gdb_byte *
22931 dwarf2_fetch_constant_bytes (sect_offset sect_off,
22932                              struct dwarf2_per_cu_data *per_cu,
22933                              struct obstack *obstack,
22934                              LONGEST *len)
22935 {
22936   struct dwarf2_cu *cu;
22937   struct die_info *die;
22938   struct attribute *attr;
22939   const gdb_byte *result = NULL;
22940   struct type *type;
22941   LONGEST value;
22942   enum bfd_endian byte_order;
22943   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
22944
22945   if (per_cu->cu == NULL)
22946     load_cu (per_cu);
22947   cu = per_cu->cu;
22948   if (cu == NULL)
22949     {
22950       /* We shouldn't get here for a dummy CU, but don't crash on the user.
22951          Instead just throw an error, not much else we can do.  */
22952       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
22953              sect_offset_str (sect_off), objfile_name (objfile));
22954     }
22955
22956   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
22957   if (!die)
22958     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
22959            sect_offset_str (sect_off), objfile_name (objfile));
22960
22961   attr = dwarf2_attr (die, DW_AT_const_value, cu);
22962   if (attr == NULL)
22963     return NULL;
22964
22965   byte_order = (bfd_big_endian (objfile->obfd)
22966                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
22967
22968   switch (attr->form)
22969     {
22970     case DW_FORM_addr:
22971     case DW_FORM_GNU_addr_index:
22972       {
22973         gdb_byte *tem;
22974
22975         *len = cu->header.addr_size;
22976         tem = (gdb_byte *) obstack_alloc (obstack, *len);
22977         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
22978         result = tem;
22979       }
22980       break;
22981     case DW_FORM_string:
22982     case DW_FORM_strp:
22983     case DW_FORM_GNU_str_index:
22984     case DW_FORM_GNU_strp_alt:
22985       /* DW_STRING is already allocated on the objfile obstack, point
22986          directly to it.  */
22987       result = (const gdb_byte *) DW_STRING (attr);
22988       *len = strlen (DW_STRING (attr));
22989       break;
22990     case DW_FORM_block1:
22991     case DW_FORM_block2:
22992     case DW_FORM_block4:
22993     case DW_FORM_block:
22994     case DW_FORM_exprloc:
22995     case DW_FORM_data16:
22996       result = DW_BLOCK (attr)->data;
22997       *len = DW_BLOCK (attr)->size;
22998       break;
22999
23000       /* The DW_AT_const_value attributes are supposed to carry the
23001          symbol's value "represented as it would be on the target
23002          architecture."  By the time we get here, it's already been
23003          converted to host endianness, so we just need to sign- or
23004          zero-extend it as appropriate.  */
23005     case DW_FORM_data1:
23006       type = die_type (die, cu);
23007       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23008       if (result == NULL)
23009         result = write_constant_as_bytes (obstack, byte_order,
23010                                           type, value, len);
23011       break;
23012     case DW_FORM_data2:
23013       type = die_type (die, cu);
23014       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23015       if (result == NULL)
23016         result = write_constant_as_bytes (obstack, byte_order,
23017                                           type, value, len);
23018       break;
23019     case DW_FORM_data4:
23020       type = die_type (die, cu);
23021       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23022       if (result == NULL)
23023         result = write_constant_as_bytes (obstack, byte_order,
23024                                           type, value, len);
23025       break;
23026     case DW_FORM_data8:
23027       type = die_type (die, cu);
23028       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23029       if (result == NULL)
23030         result = write_constant_as_bytes (obstack, byte_order,
23031                                           type, value, len);
23032       break;
23033
23034     case DW_FORM_sdata:
23035     case DW_FORM_implicit_const:
23036       type = die_type (die, cu);
23037       result = write_constant_as_bytes (obstack, byte_order,
23038                                         type, DW_SND (attr), len);
23039       break;
23040
23041     case DW_FORM_udata:
23042       type = die_type (die, cu);
23043       result = write_constant_as_bytes (obstack, byte_order,
23044                                         type, DW_UNSND (attr), len);
23045       break;
23046
23047     default:
23048       complaint (&symfile_complaints,
23049                  _("unsupported const value attribute form: '%s'"),
23050                  dwarf_form_name (attr->form));
23051       break;
23052     }
23053
23054   return result;
23055 }
23056
23057 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23058    valid type for this die is found.  */
23059
23060 struct type *
23061 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23062                                 struct dwarf2_per_cu_data *per_cu)
23063 {
23064   struct dwarf2_cu *cu;
23065   struct die_info *die;
23066
23067   if (per_cu->cu == NULL)
23068     load_cu (per_cu);
23069   cu = per_cu->cu;
23070   if (!cu)
23071     return NULL;
23072
23073   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23074   if (!die)
23075     return NULL;
23076
23077   return die_type (die, cu);
23078 }
23079
23080 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23081    PER_CU.  */
23082
23083 struct type *
23084 dwarf2_get_die_type (cu_offset die_offset,
23085                      struct dwarf2_per_cu_data *per_cu)
23086 {
23087   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23088   return get_die_type_at_offset (die_offset_sect, per_cu);
23089 }
23090
23091 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23092    On entry *REF_CU is the CU of SRC_DIE.
23093    On exit *REF_CU is the CU of the result.
23094    Returns NULL if the referenced DIE isn't found.  */
23095
23096 static struct die_info *
23097 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23098                   struct dwarf2_cu **ref_cu)
23099 {
23100   struct die_info temp_die;
23101   struct dwarf2_cu *sig_cu;
23102   struct die_info *die;
23103
23104   /* While it might be nice to assert sig_type->type == NULL here,
23105      we can get here for DW_AT_imported_declaration where we need
23106      the DIE not the type.  */
23107
23108   /* If necessary, add it to the queue and load its DIEs.  */
23109
23110   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23111     read_signatured_type (sig_type);
23112
23113   sig_cu = sig_type->per_cu.cu;
23114   gdb_assert (sig_cu != NULL);
23115   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23116   temp_die.sect_off = sig_type->type_offset_in_section;
23117   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23118                                                  to_underlying (temp_die.sect_off));
23119   if (die)
23120     {
23121       struct dwarf2_per_objfile *dwarf2_per_objfile
23122         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23123
23124       /* For .gdb_index version 7 keep track of included TUs.
23125          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23126       if (dwarf2_per_objfile->index_table != NULL
23127           && dwarf2_per_objfile->index_table->version <= 7)
23128         {
23129           VEC_safe_push (dwarf2_per_cu_ptr,
23130                          (*ref_cu)->per_cu->imported_symtabs,
23131                          sig_cu->per_cu);
23132         }
23133
23134       *ref_cu = sig_cu;
23135       return die;
23136     }
23137
23138   return NULL;
23139 }
23140
23141 /* Follow signatured type referenced by ATTR in SRC_DIE.
23142    On entry *REF_CU is the CU of SRC_DIE.
23143    On exit *REF_CU is the CU of the result.
23144    The result is the DIE of the type.
23145    If the referenced type cannot be found an error is thrown.  */
23146
23147 static struct die_info *
23148 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23149                 struct dwarf2_cu **ref_cu)
23150 {
23151   ULONGEST signature = DW_SIGNATURE (attr);
23152   struct signatured_type *sig_type;
23153   struct die_info *die;
23154
23155   gdb_assert (attr->form == DW_FORM_ref_sig8);
23156
23157   sig_type = lookup_signatured_type (*ref_cu, signature);
23158   /* sig_type will be NULL if the signatured type is missing from
23159      the debug info.  */
23160   if (sig_type == NULL)
23161     {
23162       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23163                " from DIE at %s [in module %s]"),
23164              hex_string (signature), sect_offset_str (src_die->sect_off),
23165              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23166     }
23167
23168   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23169   if (die == NULL)
23170     {
23171       dump_die_for_error (src_die);
23172       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23173                " from DIE at %s [in module %s]"),
23174              hex_string (signature), sect_offset_str (src_die->sect_off),
23175              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23176     }
23177
23178   return die;
23179 }
23180
23181 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23182    reading in and processing the type unit if necessary.  */
23183
23184 static struct type *
23185 get_signatured_type (struct die_info *die, ULONGEST signature,
23186                      struct dwarf2_cu *cu)
23187 {
23188   struct dwarf2_per_objfile *dwarf2_per_objfile
23189     = cu->per_cu->dwarf2_per_objfile;
23190   struct signatured_type *sig_type;
23191   struct dwarf2_cu *type_cu;
23192   struct die_info *type_die;
23193   struct type *type;
23194
23195   sig_type = lookup_signatured_type (cu, signature);
23196   /* sig_type will be NULL if the signatured type is missing from
23197      the debug info.  */
23198   if (sig_type == NULL)
23199     {
23200       complaint (&symfile_complaints,
23201                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
23202                    " from DIE at %s [in module %s]"),
23203                  hex_string (signature), sect_offset_str (die->sect_off),
23204                  objfile_name (dwarf2_per_objfile->objfile));
23205       return build_error_marker_type (cu, die);
23206     }
23207
23208   /* If we already know the type we're done.  */
23209   if (sig_type->type != NULL)
23210     return sig_type->type;
23211
23212   type_cu = cu;
23213   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23214   if (type_die != NULL)
23215     {
23216       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23217          is created.  This is important, for example, because for c++ classes
23218          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23219       type = read_type_die (type_die, type_cu);
23220       if (type == NULL)
23221         {
23222           complaint (&symfile_complaints,
23223                      _("Dwarf Error: Cannot build signatured type %s"
23224                        " referenced from DIE at %s [in module %s]"),
23225                      hex_string (signature), sect_offset_str (die->sect_off),
23226                      objfile_name (dwarf2_per_objfile->objfile));
23227           type = build_error_marker_type (cu, die);
23228         }
23229     }
23230   else
23231     {
23232       complaint (&symfile_complaints,
23233                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
23234                    " from DIE at %s [in module %s]"),
23235                  hex_string (signature), sect_offset_str (die->sect_off),
23236                  objfile_name (dwarf2_per_objfile->objfile));
23237       type = build_error_marker_type (cu, die);
23238     }
23239   sig_type->type = type;
23240
23241   return type;
23242 }
23243
23244 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23245    reading in and processing the type unit if necessary.  */
23246
23247 static struct type *
23248 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23249                           struct dwarf2_cu *cu) /* ARI: editCase function */
23250 {
23251   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23252   if (attr_form_is_ref (attr))
23253     {
23254       struct dwarf2_cu *type_cu = cu;
23255       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23256
23257       return read_type_die (type_die, type_cu);
23258     }
23259   else if (attr->form == DW_FORM_ref_sig8)
23260     {
23261       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23262     }
23263   else
23264     {
23265       struct dwarf2_per_objfile *dwarf2_per_objfile
23266         = cu->per_cu->dwarf2_per_objfile;
23267
23268       complaint (&symfile_complaints,
23269                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23270                    " at %s [in module %s]"),
23271                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23272                  objfile_name (dwarf2_per_objfile->objfile));
23273       return build_error_marker_type (cu, die);
23274     }
23275 }
23276
23277 /* Load the DIEs associated with type unit PER_CU into memory.  */
23278
23279 static void
23280 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23281 {
23282   struct signatured_type *sig_type;
23283
23284   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23285   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23286
23287   /* We have the per_cu, but we need the signatured_type.
23288      Fortunately this is an easy translation.  */
23289   gdb_assert (per_cu->is_debug_types);
23290   sig_type = (struct signatured_type *) per_cu;
23291
23292   gdb_assert (per_cu->cu == NULL);
23293
23294   read_signatured_type (sig_type);
23295
23296   gdb_assert (per_cu->cu != NULL);
23297 }
23298
23299 /* die_reader_func for read_signatured_type.
23300    This is identical to load_full_comp_unit_reader,
23301    but is kept separate for now.  */
23302
23303 static void
23304 read_signatured_type_reader (const struct die_reader_specs *reader,
23305                              const gdb_byte *info_ptr,
23306                              struct die_info *comp_unit_die,
23307                              int has_children,
23308                              void *data)
23309 {
23310   struct dwarf2_cu *cu = reader->cu;
23311
23312   gdb_assert (cu->die_hash == NULL);
23313   cu->die_hash =
23314     htab_create_alloc_ex (cu->header.length / 12,
23315                           die_hash,
23316                           die_eq,
23317                           NULL,
23318                           &cu->comp_unit_obstack,
23319                           hashtab_obstack_allocate,
23320                           dummy_obstack_deallocate);
23321
23322   if (has_children)
23323     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23324                                                   &info_ptr, comp_unit_die);
23325   cu->dies = comp_unit_die;
23326   /* comp_unit_die is not stored in die_hash, no need.  */
23327
23328   /* We try not to read any attributes in this function, because not
23329      all CUs needed for references have been loaded yet, and symbol
23330      table processing isn't initialized.  But we have to set the CU language,
23331      or we won't be able to build types correctly.
23332      Similarly, if we do not read the producer, we can not apply
23333      producer-specific interpretation.  */
23334   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23335 }
23336
23337 /* Read in a signatured type and build its CU and DIEs.
23338    If the type is a stub for the real type in a DWO file,
23339    read in the real type from the DWO file as well.  */
23340
23341 static void
23342 read_signatured_type (struct signatured_type *sig_type)
23343 {
23344   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23345
23346   gdb_assert (per_cu->is_debug_types);
23347   gdb_assert (per_cu->cu == NULL);
23348
23349   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
23350                            read_signatured_type_reader, NULL);
23351   sig_type->per_cu.tu_read = 1;
23352 }
23353
23354 /* Decode simple location descriptions.
23355    Given a pointer to a dwarf block that defines a location, compute
23356    the location and return the value.
23357
23358    NOTE drow/2003-11-18: This function is called in two situations
23359    now: for the address of static or global variables (partial symbols
23360    only) and for offsets into structures which are expected to be
23361    (more or less) constant.  The partial symbol case should go away,
23362    and only the constant case should remain.  That will let this
23363    function complain more accurately.  A few special modes are allowed
23364    without complaint for global variables (for instance, global
23365    register values and thread-local values).
23366
23367    A location description containing no operations indicates that the
23368    object is optimized out.  The return value is 0 for that case.
23369    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23370    callers will only want a very basic result and this can become a
23371    complaint.
23372
23373    Note that stack[0] is unused except as a default error return.  */
23374
23375 static CORE_ADDR
23376 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23377 {
23378   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23379   size_t i;
23380   size_t size = blk->size;
23381   const gdb_byte *data = blk->data;
23382   CORE_ADDR stack[64];
23383   int stacki;
23384   unsigned int bytes_read, unsnd;
23385   gdb_byte op;
23386
23387   i = 0;
23388   stacki = 0;
23389   stack[stacki] = 0;
23390   stack[++stacki] = 0;
23391
23392   while (i < size)
23393     {
23394       op = data[i++];
23395       switch (op)
23396         {
23397         case DW_OP_lit0:
23398         case DW_OP_lit1:
23399         case DW_OP_lit2:
23400         case DW_OP_lit3:
23401         case DW_OP_lit4:
23402         case DW_OP_lit5:
23403         case DW_OP_lit6:
23404         case DW_OP_lit7:
23405         case DW_OP_lit8:
23406         case DW_OP_lit9:
23407         case DW_OP_lit10:
23408         case DW_OP_lit11:
23409         case DW_OP_lit12:
23410         case DW_OP_lit13:
23411         case DW_OP_lit14:
23412         case DW_OP_lit15:
23413         case DW_OP_lit16:
23414         case DW_OP_lit17:
23415         case DW_OP_lit18:
23416         case DW_OP_lit19:
23417         case DW_OP_lit20:
23418         case DW_OP_lit21:
23419         case DW_OP_lit22:
23420         case DW_OP_lit23:
23421         case DW_OP_lit24:
23422         case DW_OP_lit25:
23423         case DW_OP_lit26:
23424         case DW_OP_lit27:
23425         case DW_OP_lit28:
23426         case DW_OP_lit29:
23427         case DW_OP_lit30:
23428         case DW_OP_lit31:
23429           stack[++stacki] = op - DW_OP_lit0;
23430           break;
23431
23432         case DW_OP_reg0:
23433         case DW_OP_reg1:
23434         case DW_OP_reg2:
23435         case DW_OP_reg3:
23436         case DW_OP_reg4:
23437         case DW_OP_reg5:
23438         case DW_OP_reg6:
23439         case DW_OP_reg7:
23440         case DW_OP_reg8:
23441         case DW_OP_reg9:
23442         case DW_OP_reg10:
23443         case DW_OP_reg11:
23444         case DW_OP_reg12:
23445         case DW_OP_reg13:
23446         case DW_OP_reg14:
23447         case DW_OP_reg15:
23448         case DW_OP_reg16:
23449         case DW_OP_reg17:
23450         case DW_OP_reg18:
23451         case DW_OP_reg19:
23452         case DW_OP_reg20:
23453         case DW_OP_reg21:
23454         case DW_OP_reg22:
23455         case DW_OP_reg23:
23456         case DW_OP_reg24:
23457         case DW_OP_reg25:
23458         case DW_OP_reg26:
23459         case DW_OP_reg27:
23460         case DW_OP_reg28:
23461         case DW_OP_reg29:
23462         case DW_OP_reg30:
23463         case DW_OP_reg31:
23464           stack[++stacki] = op - DW_OP_reg0;
23465           if (i < size)
23466             dwarf2_complex_location_expr_complaint ();
23467           break;
23468
23469         case DW_OP_regx:
23470           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23471           i += bytes_read;
23472           stack[++stacki] = unsnd;
23473           if (i < size)
23474             dwarf2_complex_location_expr_complaint ();
23475           break;
23476
23477         case DW_OP_addr:
23478           stack[++stacki] = read_address (objfile->obfd, &data[i],
23479                                           cu, &bytes_read);
23480           i += bytes_read;
23481           break;
23482
23483         case DW_OP_const1u:
23484           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23485           i += 1;
23486           break;
23487
23488         case DW_OP_const1s:
23489           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23490           i += 1;
23491           break;
23492
23493         case DW_OP_const2u:
23494           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23495           i += 2;
23496           break;
23497
23498         case DW_OP_const2s:
23499           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23500           i += 2;
23501           break;
23502
23503         case DW_OP_const4u:
23504           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23505           i += 4;
23506           break;
23507
23508         case DW_OP_const4s:
23509           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23510           i += 4;
23511           break;
23512
23513         case DW_OP_const8u:
23514           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23515           i += 8;
23516           break;
23517
23518         case DW_OP_constu:
23519           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23520                                                   &bytes_read);
23521           i += bytes_read;
23522           break;
23523
23524         case DW_OP_consts:
23525           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23526           i += bytes_read;
23527           break;
23528
23529         case DW_OP_dup:
23530           stack[stacki + 1] = stack[stacki];
23531           stacki++;
23532           break;
23533
23534         case DW_OP_plus:
23535           stack[stacki - 1] += stack[stacki];
23536           stacki--;
23537           break;
23538
23539         case DW_OP_plus_uconst:
23540           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23541                                                  &bytes_read);
23542           i += bytes_read;
23543           break;
23544
23545         case DW_OP_minus:
23546           stack[stacki - 1] -= stack[stacki];
23547           stacki--;
23548           break;
23549
23550         case DW_OP_deref:
23551           /* If we're not the last op, then we definitely can't encode
23552              this using GDB's address_class enum.  This is valid for partial
23553              global symbols, although the variable's address will be bogus
23554              in the psymtab.  */
23555           if (i < size)
23556             dwarf2_complex_location_expr_complaint ();
23557           break;
23558
23559         case DW_OP_GNU_push_tls_address:
23560         case DW_OP_form_tls_address:
23561           /* The top of the stack has the offset from the beginning
23562              of the thread control block at which the variable is located.  */
23563           /* Nothing should follow this operator, so the top of stack would
23564              be returned.  */
23565           /* This is valid for partial global symbols, but the variable's
23566              address will be bogus in the psymtab.  Make it always at least
23567              non-zero to not look as a variable garbage collected by linker
23568              which have DW_OP_addr 0.  */
23569           if (i < size)
23570             dwarf2_complex_location_expr_complaint ();
23571           stack[stacki]++;
23572           break;
23573
23574         case DW_OP_GNU_uninit:
23575           break;
23576
23577         case DW_OP_GNU_addr_index:
23578         case DW_OP_GNU_const_index:
23579           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23580                                                          &bytes_read);
23581           i += bytes_read;
23582           break;
23583
23584         default:
23585           {
23586             const char *name = get_DW_OP_name (op);
23587
23588             if (name)
23589               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
23590                          name);
23591             else
23592               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
23593                          op);
23594           }
23595
23596           return (stack[stacki]);
23597         }
23598
23599       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23600          outside of the allocated space.  Also enforce minimum>0.  */
23601       if (stacki >= ARRAY_SIZE (stack) - 1)
23602         {
23603           complaint (&symfile_complaints,
23604                      _("location description stack overflow"));
23605           return 0;
23606         }
23607
23608       if (stacki <= 0)
23609         {
23610           complaint (&symfile_complaints,
23611                      _("location description stack underflow"));
23612           return 0;
23613         }
23614     }
23615   return (stack[stacki]);
23616 }
23617
23618 /* memory allocation interface */
23619
23620 static struct dwarf_block *
23621 dwarf_alloc_block (struct dwarf2_cu *cu)
23622 {
23623   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23624 }
23625
23626 static struct die_info *
23627 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23628 {
23629   struct die_info *die;
23630   size_t size = sizeof (struct die_info);
23631
23632   if (num_attrs > 1)
23633     size += (num_attrs - 1) * sizeof (struct attribute);
23634
23635   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23636   memset (die, 0, sizeof (struct die_info));
23637   return (die);
23638 }
23639
23640 \f
23641 /* Macro support.  */
23642
23643 /* Return file name relative to the compilation directory of file number I in
23644    *LH's file name table.  The result is allocated using xmalloc; the caller is
23645    responsible for freeing it.  */
23646
23647 static char *
23648 file_file_name (int file, struct line_header *lh)
23649 {
23650   /* Is the file number a valid index into the line header's file name
23651      table?  Remember that file numbers start with one, not zero.  */
23652   if (1 <= file && file <= lh->file_names.size ())
23653     {
23654       const file_entry &fe = lh->file_names[file - 1];
23655
23656       if (!IS_ABSOLUTE_PATH (fe.name))
23657         {
23658           const char *dir = fe.include_dir (lh);
23659           if (dir != NULL)
23660             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23661         }
23662       return xstrdup (fe.name);
23663     }
23664   else
23665     {
23666       /* The compiler produced a bogus file number.  We can at least
23667          record the macro definitions made in the file, even if we
23668          won't be able to find the file by name.  */
23669       char fake_name[80];
23670
23671       xsnprintf (fake_name, sizeof (fake_name),
23672                  "<bad macro file number %d>", file);
23673
23674       complaint (&symfile_complaints,
23675                  _("bad file number in macro information (%d)"),
23676                  file);
23677
23678       return xstrdup (fake_name);
23679     }
23680 }
23681
23682 /* Return the full name of file number I in *LH's file name table.
23683    Use COMP_DIR as the name of the current directory of the
23684    compilation.  The result is allocated using xmalloc; the caller is
23685    responsible for freeing it.  */
23686 static char *
23687 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23688 {
23689   /* Is the file number a valid index into the line header's file name
23690      table?  Remember that file numbers start with one, not zero.  */
23691   if (1 <= file && file <= lh->file_names.size ())
23692     {
23693       char *relative = file_file_name (file, lh);
23694
23695       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23696         return relative;
23697       return reconcat (relative, comp_dir, SLASH_STRING,
23698                        relative, (char *) NULL);
23699     }
23700   else
23701     return file_file_name (file, lh);
23702 }
23703
23704
23705 static struct macro_source_file *
23706 macro_start_file (int file, int line,
23707                   struct macro_source_file *current_file,
23708                   struct line_header *lh)
23709 {
23710   /* File name relative to the compilation directory of this source file.  */
23711   char *file_name = file_file_name (file, lh);
23712
23713   if (! current_file)
23714     {
23715       /* Note: We don't create a macro table for this compilation unit
23716          at all until we actually get a filename.  */
23717       struct macro_table *macro_table = get_macro_table ();
23718
23719       /* If we have no current file, then this must be the start_file
23720          directive for the compilation unit's main source file.  */
23721       current_file = macro_set_main (macro_table, file_name);
23722       macro_define_special (macro_table);
23723     }
23724   else
23725     current_file = macro_include (current_file, line, file_name);
23726
23727   xfree (file_name);
23728
23729   return current_file;
23730 }
23731
23732 static const char *
23733 consume_improper_spaces (const char *p, const char *body)
23734 {
23735   if (*p == ' ')
23736     {
23737       complaint (&symfile_complaints,
23738                  _("macro definition contains spaces "
23739                    "in formal argument list:\n`%s'"),
23740                  body);
23741
23742       while (*p == ' ')
23743         p++;
23744     }
23745
23746   return p;
23747 }
23748
23749
23750 static void
23751 parse_macro_definition (struct macro_source_file *file, int line,
23752                         const char *body)
23753 {
23754   const char *p;
23755
23756   /* The body string takes one of two forms.  For object-like macro
23757      definitions, it should be:
23758
23759         <macro name> " " <definition>
23760
23761      For function-like macro definitions, it should be:
23762
23763         <macro name> "() " <definition>
23764      or
23765         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23766
23767      Spaces may appear only where explicitly indicated, and in the
23768      <definition>.
23769
23770      The Dwarf 2 spec says that an object-like macro's name is always
23771      followed by a space, but versions of GCC around March 2002 omit
23772      the space when the macro's definition is the empty string.
23773
23774      The Dwarf 2 spec says that there should be no spaces between the
23775      formal arguments in a function-like macro's formal argument list,
23776      but versions of GCC around March 2002 include spaces after the
23777      commas.  */
23778
23779
23780   /* Find the extent of the macro name.  The macro name is terminated
23781      by either a space or null character (for an object-like macro) or
23782      an opening paren (for a function-like macro).  */
23783   for (p = body; *p; p++)
23784     if (*p == ' ' || *p == '(')
23785       break;
23786
23787   if (*p == ' ' || *p == '\0')
23788     {
23789       /* It's an object-like macro.  */
23790       int name_len = p - body;
23791       char *name = savestring (body, name_len);
23792       const char *replacement;
23793
23794       if (*p == ' ')
23795         replacement = body + name_len + 1;
23796       else
23797         {
23798           dwarf2_macro_malformed_definition_complaint (body);
23799           replacement = body + name_len;
23800         }
23801
23802       macro_define_object (file, line, name, replacement);
23803
23804       xfree (name);
23805     }
23806   else if (*p == '(')
23807     {
23808       /* It's a function-like macro.  */
23809       char *name = savestring (body, p - body);
23810       int argc = 0;
23811       int argv_size = 1;
23812       char **argv = XNEWVEC (char *, argv_size);
23813
23814       p++;
23815
23816       p = consume_improper_spaces (p, body);
23817
23818       /* Parse the formal argument list.  */
23819       while (*p && *p != ')')
23820         {
23821           /* Find the extent of the current argument name.  */
23822           const char *arg_start = p;
23823
23824           while (*p && *p != ',' && *p != ')' && *p != ' ')
23825             p++;
23826
23827           if (! *p || p == arg_start)
23828             dwarf2_macro_malformed_definition_complaint (body);
23829           else
23830             {
23831               /* Make sure argv has room for the new argument.  */
23832               if (argc >= argv_size)
23833                 {
23834                   argv_size *= 2;
23835                   argv = XRESIZEVEC (char *, argv, argv_size);
23836                 }
23837
23838               argv[argc++] = savestring (arg_start, p - arg_start);
23839             }
23840
23841           p = consume_improper_spaces (p, body);
23842
23843           /* Consume the comma, if present.  */
23844           if (*p == ',')
23845             {
23846               p++;
23847
23848               p = consume_improper_spaces (p, body);
23849             }
23850         }
23851
23852       if (*p == ')')
23853         {
23854           p++;
23855
23856           if (*p == ' ')
23857             /* Perfectly formed definition, no complaints.  */
23858             macro_define_function (file, line, name,
23859                                    argc, (const char **) argv,
23860                                    p + 1);
23861           else if (*p == '\0')
23862             {
23863               /* Complain, but do define it.  */
23864               dwarf2_macro_malformed_definition_complaint (body);
23865               macro_define_function (file, line, name,
23866                                      argc, (const char **) argv,
23867                                      p);
23868             }
23869           else
23870             /* Just complain.  */
23871             dwarf2_macro_malformed_definition_complaint (body);
23872         }
23873       else
23874         /* Just complain.  */
23875         dwarf2_macro_malformed_definition_complaint (body);
23876
23877       xfree (name);
23878       {
23879         int i;
23880
23881         for (i = 0; i < argc; i++)
23882           xfree (argv[i]);
23883       }
23884       xfree (argv);
23885     }
23886   else
23887     dwarf2_macro_malformed_definition_complaint (body);
23888 }
23889
23890 /* Skip some bytes from BYTES according to the form given in FORM.
23891    Returns the new pointer.  */
23892
23893 static const gdb_byte *
23894 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
23895                  enum dwarf_form form,
23896                  unsigned int offset_size,
23897                  struct dwarf2_section_info *section)
23898 {
23899   unsigned int bytes_read;
23900
23901   switch (form)
23902     {
23903     case DW_FORM_data1:
23904     case DW_FORM_flag:
23905       ++bytes;
23906       break;
23907
23908     case DW_FORM_data2:
23909       bytes += 2;
23910       break;
23911
23912     case DW_FORM_data4:
23913       bytes += 4;
23914       break;
23915
23916     case DW_FORM_data8:
23917       bytes += 8;
23918       break;
23919
23920     case DW_FORM_data16:
23921       bytes += 16;
23922       break;
23923
23924     case DW_FORM_string:
23925       read_direct_string (abfd, bytes, &bytes_read);
23926       bytes += bytes_read;
23927       break;
23928
23929     case DW_FORM_sec_offset:
23930     case DW_FORM_strp:
23931     case DW_FORM_GNU_strp_alt:
23932       bytes += offset_size;
23933       break;
23934
23935     case DW_FORM_block:
23936       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
23937       bytes += bytes_read;
23938       break;
23939
23940     case DW_FORM_block1:
23941       bytes += 1 + read_1_byte (abfd, bytes);
23942       break;
23943     case DW_FORM_block2:
23944       bytes += 2 + read_2_bytes (abfd, bytes);
23945       break;
23946     case DW_FORM_block4:
23947       bytes += 4 + read_4_bytes (abfd, bytes);
23948       break;
23949
23950     case DW_FORM_sdata:
23951     case DW_FORM_udata:
23952     case DW_FORM_GNU_addr_index:
23953     case DW_FORM_GNU_str_index:
23954       bytes = gdb_skip_leb128 (bytes, buffer_end);
23955       if (bytes == NULL)
23956         {
23957           dwarf2_section_buffer_overflow_complaint (section);
23958           return NULL;
23959         }
23960       break;
23961
23962     case DW_FORM_implicit_const:
23963       break;
23964
23965     default:
23966       {
23967         complaint (&symfile_complaints,
23968                    _("invalid form 0x%x in `%s'"),
23969                    form, get_section_name (section));
23970         return NULL;
23971       }
23972     }
23973
23974   return bytes;
23975 }
23976
23977 /* A helper for dwarf_decode_macros that handles skipping an unknown
23978    opcode.  Returns an updated pointer to the macro data buffer; or,
23979    on error, issues a complaint and returns NULL.  */
23980
23981 static const gdb_byte *
23982 skip_unknown_opcode (unsigned int opcode,
23983                      const gdb_byte **opcode_definitions,
23984                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
23985                      bfd *abfd,
23986                      unsigned int offset_size,
23987                      struct dwarf2_section_info *section)
23988 {
23989   unsigned int bytes_read, i;
23990   unsigned long arg;
23991   const gdb_byte *defn;
23992
23993   if (opcode_definitions[opcode] == NULL)
23994     {
23995       complaint (&symfile_complaints,
23996                  _("unrecognized DW_MACFINO opcode 0x%x"),
23997                  opcode);
23998       return NULL;
23999     }
24000
24001   defn = opcode_definitions[opcode];
24002   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24003   defn += bytes_read;
24004
24005   for (i = 0; i < arg; ++i)
24006     {
24007       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24008                                  (enum dwarf_form) defn[i], offset_size,
24009                                  section);
24010       if (mac_ptr == NULL)
24011         {
24012           /* skip_form_bytes already issued the complaint.  */
24013           return NULL;
24014         }
24015     }
24016
24017   return mac_ptr;
24018 }
24019
24020 /* A helper function which parses the header of a macro section.
24021    If the macro section is the extended (for now called "GNU") type,
24022    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24023    the header, or issues a complaint and returns NULL on error.  */
24024
24025 static const gdb_byte *
24026 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24027                           bfd *abfd,
24028                           const gdb_byte *mac_ptr,
24029                           unsigned int *offset_size,
24030                           int section_is_gnu)
24031 {
24032   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24033
24034   if (section_is_gnu)
24035     {
24036       unsigned int version, flags;
24037
24038       version = read_2_bytes (abfd, mac_ptr);
24039       if (version != 4 && version != 5)
24040         {
24041           complaint (&symfile_complaints,
24042                      _("unrecognized version `%d' in .debug_macro section"),
24043                      version);
24044           return NULL;
24045         }
24046       mac_ptr += 2;
24047
24048       flags = read_1_byte (abfd, mac_ptr);
24049       ++mac_ptr;
24050       *offset_size = (flags & 1) ? 8 : 4;
24051
24052       if ((flags & 2) != 0)
24053         /* We don't need the line table offset.  */
24054         mac_ptr += *offset_size;
24055
24056       /* Vendor opcode descriptions.  */
24057       if ((flags & 4) != 0)
24058         {
24059           unsigned int i, count;
24060
24061           count = read_1_byte (abfd, mac_ptr);
24062           ++mac_ptr;
24063           for (i = 0; i < count; ++i)
24064             {
24065               unsigned int opcode, bytes_read;
24066               unsigned long arg;
24067
24068               opcode = read_1_byte (abfd, mac_ptr);
24069               ++mac_ptr;
24070               opcode_definitions[opcode] = mac_ptr;
24071               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24072               mac_ptr += bytes_read;
24073               mac_ptr += arg;
24074             }
24075         }
24076     }
24077
24078   return mac_ptr;
24079 }
24080
24081 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24082    including DW_MACRO_import.  */
24083
24084 static void
24085 dwarf_decode_macro_bytes (struct dwarf2_per_objfile *dwarf2_per_objfile,
24086                           bfd *abfd,
24087                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24088                           struct macro_source_file *current_file,
24089                           struct line_header *lh,
24090                           struct dwarf2_section_info *section,
24091                           int section_is_gnu, int section_is_dwz,
24092                           unsigned int offset_size,
24093                           htab_t include_hash)
24094 {
24095   struct objfile *objfile = dwarf2_per_objfile->objfile;
24096   enum dwarf_macro_record_type macinfo_type;
24097   int at_commandline;
24098   const gdb_byte *opcode_definitions[256];
24099
24100   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24101                                       &offset_size, section_is_gnu);
24102   if (mac_ptr == NULL)
24103     {
24104       /* We already issued a complaint.  */
24105       return;
24106     }
24107
24108   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24109      GDB is still reading the definitions from command line.  First
24110      DW_MACINFO_start_file will need to be ignored as it was already executed
24111      to create CURRENT_FILE for the main source holding also the command line
24112      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24113      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24114
24115   at_commandline = 1;
24116
24117   do
24118     {
24119       /* Do we at least have room for a macinfo type byte?  */
24120       if (mac_ptr >= mac_end)
24121         {
24122           dwarf2_section_buffer_overflow_complaint (section);
24123           break;
24124         }
24125
24126       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24127       mac_ptr++;
24128
24129       /* Note that we rely on the fact that the corresponding GNU and
24130          DWARF constants are the same.  */
24131       DIAGNOSTIC_PUSH
24132       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24133       switch (macinfo_type)
24134         {
24135           /* A zero macinfo type indicates the end of the macro
24136              information.  */
24137         case 0:
24138           break;
24139
24140         case DW_MACRO_define:
24141         case DW_MACRO_undef:
24142         case DW_MACRO_define_strp:
24143         case DW_MACRO_undef_strp:
24144         case DW_MACRO_define_sup:
24145         case DW_MACRO_undef_sup:
24146           {
24147             unsigned int bytes_read;
24148             int line;
24149             const char *body;
24150             int is_define;
24151
24152             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24153             mac_ptr += bytes_read;
24154
24155             if (macinfo_type == DW_MACRO_define
24156                 || macinfo_type == DW_MACRO_undef)
24157               {
24158                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24159                 mac_ptr += bytes_read;
24160               }
24161             else
24162               {
24163                 LONGEST str_offset;
24164
24165                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24166                 mac_ptr += offset_size;
24167
24168                 if (macinfo_type == DW_MACRO_define_sup
24169                     || macinfo_type == DW_MACRO_undef_sup
24170                     || section_is_dwz)
24171                   {
24172                     struct dwz_file *dwz
24173                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24174
24175                     body = read_indirect_string_from_dwz (objfile,
24176                                                           dwz, str_offset);
24177                   }
24178                 else
24179                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24180                                                          abfd, str_offset);
24181               }
24182
24183             is_define = (macinfo_type == DW_MACRO_define
24184                          || macinfo_type == DW_MACRO_define_strp
24185                          || macinfo_type == DW_MACRO_define_sup);
24186             if (! current_file)
24187               {
24188                 /* DWARF violation as no main source is present.  */
24189                 complaint (&symfile_complaints,
24190                            _("debug info with no main source gives macro %s "
24191                              "on line %d: %s"),
24192                            is_define ? _("definition") : _("undefinition"),
24193                            line, body);
24194                 break;
24195               }
24196             if ((line == 0 && !at_commandline)
24197                 || (line != 0 && at_commandline))
24198               complaint (&symfile_complaints,
24199                          _("debug info gives %s macro %s with %s line %d: %s"),
24200                          at_commandline ? _("command-line") : _("in-file"),
24201                          is_define ? _("definition") : _("undefinition"),
24202                          line == 0 ? _("zero") : _("non-zero"), line, body);
24203
24204             if (is_define)
24205               parse_macro_definition (current_file, line, body);
24206             else
24207               {
24208                 gdb_assert (macinfo_type == DW_MACRO_undef
24209                             || macinfo_type == DW_MACRO_undef_strp
24210                             || macinfo_type == DW_MACRO_undef_sup);
24211                 macro_undef (current_file, line, body);
24212               }
24213           }
24214           break;
24215
24216         case DW_MACRO_start_file:
24217           {
24218             unsigned int bytes_read;
24219             int line, file;
24220
24221             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24222             mac_ptr += bytes_read;
24223             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24224             mac_ptr += bytes_read;
24225
24226             if ((line == 0 && !at_commandline)
24227                 || (line != 0 && at_commandline))
24228               complaint (&symfile_complaints,
24229                          _("debug info gives source %d included "
24230                            "from %s at %s line %d"),
24231                          file, at_commandline ? _("command-line") : _("file"),
24232                          line == 0 ? _("zero") : _("non-zero"), line);
24233
24234             if (at_commandline)
24235               {
24236                 /* This DW_MACRO_start_file was executed in the
24237                    pass one.  */
24238                 at_commandline = 0;
24239               }
24240             else
24241               current_file = macro_start_file (file, line, current_file, lh);
24242           }
24243           break;
24244
24245         case DW_MACRO_end_file:
24246           if (! current_file)
24247             complaint (&symfile_complaints,
24248                        _("macro debug info has an unmatched "
24249                          "`close_file' directive"));
24250           else
24251             {
24252               current_file = current_file->included_by;
24253               if (! current_file)
24254                 {
24255                   enum dwarf_macro_record_type next_type;
24256
24257                   /* GCC circa March 2002 doesn't produce the zero
24258                      type byte marking the end of the compilation
24259                      unit.  Complain if it's not there, but exit no
24260                      matter what.  */
24261
24262                   /* Do we at least have room for a macinfo type byte?  */
24263                   if (mac_ptr >= mac_end)
24264                     {
24265                       dwarf2_section_buffer_overflow_complaint (section);
24266                       return;
24267                     }
24268
24269                   /* We don't increment mac_ptr here, so this is just
24270                      a look-ahead.  */
24271                   next_type
24272                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24273                                                                   mac_ptr);
24274                   if (next_type != 0)
24275                     complaint (&symfile_complaints,
24276                                _("no terminating 0-type entry for "
24277                                  "macros in `.debug_macinfo' section"));
24278
24279                   return;
24280                 }
24281             }
24282           break;
24283
24284         case DW_MACRO_import:
24285         case DW_MACRO_import_sup:
24286           {
24287             LONGEST offset;
24288             void **slot;
24289             bfd *include_bfd = abfd;
24290             struct dwarf2_section_info *include_section = section;
24291             const gdb_byte *include_mac_end = mac_end;
24292             int is_dwz = section_is_dwz;
24293             const gdb_byte *new_mac_ptr;
24294
24295             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24296             mac_ptr += offset_size;
24297
24298             if (macinfo_type == DW_MACRO_import_sup)
24299               {
24300                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24301
24302                 dwarf2_read_section (objfile, &dwz->macro);
24303
24304                 include_section = &dwz->macro;
24305                 include_bfd = get_section_bfd_owner (include_section);
24306                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24307                 is_dwz = 1;
24308               }
24309
24310             new_mac_ptr = include_section->buffer + offset;
24311             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24312
24313             if (*slot != NULL)
24314               {
24315                 /* This has actually happened; see
24316                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24317                 complaint (&symfile_complaints,
24318                            _("recursive DW_MACRO_import in "
24319                              ".debug_macro section"));
24320               }
24321             else
24322               {
24323                 *slot = (void *) new_mac_ptr;
24324
24325                 dwarf_decode_macro_bytes (dwarf2_per_objfile,
24326                                           include_bfd, new_mac_ptr,
24327                                           include_mac_end, current_file, lh,
24328                                           section, section_is_gnu, is_dwz,
24329                                           offset_size, include_hash);
24330
24331                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24332               }
24333           }
24334           break;
24335
24336         case DW_MACINFO_vendor_ext:
24337           if (!section_is_gnu)
24338             {
24339               unsigned int bytes_read;
24340
24341               /* This reads the constant, but since we don't recognize
24342                  any vendor extensions, we ignore it.  */
24343               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24344               mac_ptr += bytes_read;
24345               read_direct_string (abfd, mac_ptr, &bytes_read);
24346               mac_ptr += bytes_read;
24347
24348               /* We don't recognize any vendor extensions.  */
24349               break;
24350             }
24351           /* FALLTHROUGH */
24352
24353         default:
24354           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24355                                          mac_ptr, mac_end, abfd, offset_size,
24356                                          section);
24357           if (mac_ptr == NULL)
24358             return;
24359           break;
24360         }
24361       DIAGNOSTIC_POP
24362     } while (macinfo_type != 0);
24363 }
24364
24365 static void
24366 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24367                      int section_is_gnu)
24368 {
24369   struct dwarf2_per_objfile *dwarf2_per_objfile
24370     = cu->per_cu->dwarf2_per_objfile;
24371   struct objfile *objfile = dwarf2_per_objfile->objfile;
24372   struct line_header *lh = cu->line_header;
24373   bfd *abfd;
24374   const gdb_byte *mac_ptr, *mac_end;
24375   struct macro_source_file *current_file = 0;
24376   enum dwarf_macro_record_type macinfo_type;
24377   unsigned int offset_size = cu->header.offset_size;
24378   const gdb_byte *opcode_definitions[256];
24379   void **slot;
24380   struct dwarf2_section_info *section;
24381   const char *section_name;
24382
24383   if (cu->dwo_unit != NULL)
24384     {
24385       if (section_is_gnu)
24386         {
24387           section = &cu->dwo_unit->dwo_file->sections.macro;
24388           section_name = ".debug_macro.dwo";
24389         }
24390       else
24391         {
24392           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24393           section_name = ".debug_macinfo.dwo";
24394         }
24395     }
24396   else
24397     {
24398       if (section_is_gnu)
24399         {
24400           section = &dwarf2_per_objfile->macro;
24401           section_name = ".debug_macro";
24402         }
24403       else
24404         {
24405           section = &dwarf2_per_objfile->macinfo;
24406           section_name = ".debug_macinfo";
24407         }
24408     }
24409
24410   dwarf2_read_section (objfile, section);
24411   if (section->buffer == NULL)
24412     {
24413       complaint (&symfile_complaints, _("missing %s section"), section_name);
24414       return;
24415     }
24416   abfd = get_section_bfd_owner (section);
24417
24418   /* First pass: Find the name of the base filename.
24419      This filename is needed in order to process all macros whose definition
24420      (or undefinition) comes from the command line.  These macros are defined
24421      before the first DW_MACINFO_start_file entry, and yet still need to be
24422      associated to the base file.
24423
24424      To determine the base file name, we scan the macro definitions until we
24425      reach the first DW_MACINFO_start_file entry.  We then initialize
24426      CURRENT_FILE accordingly so that any macro definition found before the
24427      first DW_MACINFO_start_file can still be associated to the base file.  */
24428
24429   mac_ptr = section->buffer + offset;
24430   mac_end = section->buffer + section->size;
24431
24432   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24433                                       &offset_size, section_is_gnu);
24434   if (mac_ptr == NULL)
24435     {
24436       /* We already issued a complaint.  */
24437       return;
24438     }
24439
24440   do
24441     {
24442       /* Do we at least have room for a macinfo type byte?  */
24443       if (mac_ptr >= mac_end)
24444         {
24445           /* Complaint is printed during the second pass as GDB will probably
24446              stop the first pass earlier upon finding
24447              DW_MACINFO_start_file.  */
24448           break;
24449         }
24450
24451       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24452       mac_ptr++;
24453
24454       /* Note that we rely on the fact that the corresponding GNU and
24455          DWARF constants are the same.  */
24456       DIAGNOSTIC_PUSH
24457       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24458       switch (macinfo_type)
24459         {
24460           /* A zero macinfo type indicates the end of the macro
24461              information.  */
24462         case 0:
24463           break;
24464
24465         case DW_MACRO_define:
24466         case DW_MACRO_undef:
24467           /* Only skip the data by MAC_PTR.  */
24468           {
24469             unsigned int bytes_read;
24470
24471             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24472             mac_ptr += bytes_read;
24473             read_direct_string (abfd, mac_ptr, &bytes_read);
24474             mac_ptr += bytes_read;
24475           }
24476           break;
24477
24478         case DW_MACRO_start_file:
24479           {
24480             unsigned int bytes_read;
24481             int line, file;
24482
24483             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24484             mac_ptr += bytes_read;
24485             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24486             mac_ptr += bytes_read;
24487
24488             current_file = macro_start_file (file, line, current_file, lh);
24489           }
24490           break;
24491
24492         case DW_MACRO_end_file:
24493           /* No data to skip by MAC_PTR.  */
24494           break;
24495
24496         case DW_MACRO_define_strp:
24497         case DW_MACRO_undef_strp:
24498         case DW_MACRO_define_sup:
24499         case DW_MACRO_undef_sup:
24500           {
24501             unsigned int bytes_read;
24502
24503             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24504             mac_ptr += bytes_read;
24505             mac_ptr += offset_size;
24506           }
24507           break;
24508
24509         case DW_MACRO_import:
24510         case DW_MACRO_import_sup:
24511           /* Note that, according to the spec, a transparent include
24512              chain cannot call DW_MACRO_start_file.  So, we can just
24513              skip this opcode.  */
24514           mac_ptr += offset_size;
24515           break;
24516
24517         case DW_MACINFO_vendor_ext:
24518           /* Only skip the data by MAC_PTR.  */
24519           if (!section_is_gnu)
24520             {
24521               unsigned int bytes_read;
24522
24523               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24524               mac_ptr += bytes_read;
24525               read_direct_string (abfd, mac_ptr, &bytes_read);
24526               mac_ptr += bytes_read;
24527             }
24528           /* FALLTHROUGH */
24529
24530         default:
24531           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24532                                          mac_ptr, mac_end, abfd, offset_size,
24533                                          section);
24534           if (mac_ptr == NULL)
24535             return;
24536           break;
24537         }
24538       DIAGNOSTIC_POP
24539     } while (macinfo_type != 0 && current_file == NULL);
24540
24541   /* Second pass: Process all entries.
24542
24543      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24544      command-line macro definitions/undefinitions.  This flag is unset when we
24545      reach the first DW_MACINFO_start_file entry.  */
24546
24547   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24548                                            htab_eq_pointer,
24549                                            NULL, xcalloc, xfree));
24550   mac_ptr = section->buffer + offset;
24551   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24552   *slot = (void *) mac_ptr;
24553   dwarf_decode_macro_bytes (dwarf2_per_objfile,
24554                             abfd, mac_ptr, mac_end,
24555                             current_file, lh, section,
24556                             section_is_gnu, 0, offset_size,
24557                             include_hash.get ());
24558 }
24559
24560 /* Check if the attribute's form is a DW_FORM_block*
24561    if so return true else false.  */
24562
24563 static int
24564 attr_form_is_block (const struct attribute *attr)
24565 {
24566   return (attr == NULL ? 0 :
24567       attr->form == DW_FORM_block1
24568       || attr->form == DW_FORM_block2
24569       || attr->form == DW_FORM_block4
24570       || attr->form == DW_FORM_block
24571       || attr->form == DW_FORM_exprloc);
24572 }
24573
24574 /* Return non-zero if ATTR's value is a section offset --- classes
24575    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24576    You may use DW_UNSND (attr) to retrieve such offsets.
24577
24578    Section 7.5.4, "Attribute Encodings", explains that no attribute
24579    may have a value that belongs to more than one of these classes; it
24580    would be ambiguous if we did, because we use the same forms for all
24581    of them.  */
24582
24583 static int
24584 attr_form_is_section_offset (const struct attribute *attr)
24585 {
24586   return (attr->form == DW_FORM_data4
24587           || attr->form == DW_FORM_data8
24588           || attr->form == DW_FORM_sec_offset);
24589 }
24590
24591 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24592    zero otherwise.  When this function returns true, you can apply
24593    dwarf2_get_attr_constant_value to it.
24594
24595    However, note that for some attributes you must check
24596    attr_form_is_section_offset before using this test.  DW_FORM_data4
24597    and DW_FORM_data8 are members of both the constant class, and of
24598    the classes that contain offsets into other debug sections
24599    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24600    that, if an attribute's can be either a constant or one of the
24601    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24602    taken as section offsets, not constants.
24603
24604    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24605    cannot handle that.  */
24606
24607 static int
24608 attr_form_is_constant (const struct attribute *attr)
24609 {
24610   switch (attr->form)
24611     {
24612     case DW_FORM_sdata:
24613     case DW_FORM_udata:
24614     case DW_FORM_data1:
24615     case DW_FORM_data2:
24616     case DW_FORM_data4:
24617     case DW_FORM_data8:
24618     case DW_FORM_implicit_const:
24619       return 1;
24620     default:
24621       return 0;
24622     }
24623 }
24624
24625
24626 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24627    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24628
24629 static int
24630 attr_form_is_ref (const struct attribute *attr)
24631 {
24632   switch (attr->form)
24633     {
24634     case DW_FORM_ref_addr:
24635     case DW_FORM_ref1:
24636     case DW_FORM_ref2:
24637     case DW_FORM_ref4:
24638     case DW_FORM_ref8:
24639     case DW_FORM_ref_udata:
24640     case DW_FORM_GNU_ref_alt:
24641       return 1;
24642     default:
24643       return 0;
24644     }
24645 }
24646
24647 /* Return the .debug_loc section to use for CU.
24648    For DWO files use .debug_loc.dwo.  */
24649
24650 static struct dwarf2_section_info *
24651 cu_debug_loc_section (struct dwarf2_cu *cu)
24652 {
24653   struct dwarf2_per_objfile *dwarf2_per_objfile
24654     = cu->per_cu->dwarf2_per_objfile;
24655
24656   if (cu->dwo_unit)
24657     {
24658       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24659       
24660       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24661     }
24662   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24663                                   : &dwarf2_per_objfile->loc);
24664 }
24665
24666 /* A helper function that fills in a dwarf2_loclist_baton.  */
24667
24668 static void
24669 fill_in_loclist_baton (struct dwarf2_cu *cu,
24670                        struct dwarf2_loclist_baton *baton,
24671                        const struct attribute *attr)
24672 {
24673   struct dwarf2_per_objfile *dwarf2_per_objfile
24674     = cu->per_cu->dwarf2_per_objfile;
24675   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24676
24677   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24678
24679   baton->per_cu = cu->per_cu;
24680   gdb_assert (baton->per_cu);
24681   /* We don't know how long the location list is, but make sure we
24682      don't run off the edge of the section.  */
24683   baton->size = section->size - DW_UNSND (attr);
24684   baton->data = section->buffer + DW_UNSND (attr);
24685   baton->base_address = cu->base_address;
24686   baton->from_dwo = cu->dwo_unit != NULL;
24687 }
24688
24689 static void
24690 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24691                              struct dwarf2_cu *cu, int is_block)
24692 {
24693   struct dwarf2_per_objfile *dwarf2_per_objfile
24694     = cu->per_cu->dwarf2_per_objfile;
24695   struct objfile *objfile = dwarf2_per_objfile->objfile;
24696   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24697
24698   if (attr_form_is_section_offset (attr)
24699       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24700          the section.  If so, fall through to the complaint in the
24701          other branch.  */
24702       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24703     {
24704       struct dwarf2_loclist_baton *baton;
24705
24706       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24707
24708       fill_in_loclist_baton (cu, baton, attr);
24709
24710       if (cu->base_known == 0)
24711         complaint (&symfile_complaints,
24712                    _("Location list used without "
24713                      "specifying the CU base address."));
24714
24715       SYMBOL_ACLASS_INDEX (sym) = (is_block
24716                                    ? dwarf2_loclist_block_index
24717                                    : dwarf2_loclist_index);
24718       SYMBOL_LOCATION_BATON (sym) = baton;
24719     }
24720   else
24721     {
24722       struct dwarf2_locexpr_baton *baton;
24723
24724       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24725       baton->per_cu = cu->per_cu;
24726       gdb_assert (baton->per_cu);
24727
24728       if (attr_form_is_block (attr))
24729         {
24730           /* Note that we're just copying the block's data pointer
24731              here, not the actual data.  We're still pointing into the
24732              info_buffer for SYM's objfile; right now we never release
24733              that buffer, but when we do clean up properly this may
24734              need to change.  */
24735           baton->size = DW_BLOCK (attr)->size;
24736           baton->data = DW_BLOCK (attr)->data;
24737         }
24738       else
24739         {
24740           dwarf2_invalid_attrib_class_complaint ("location description",
24741                                                  SYMBOL_NATURAL_NAME (sym));
24742           baton->size = 0;
24743         }
24744
24745       SYMBOL_ACLASS_INDEX (sym) = (is_block
24746                                    ? dwarf2_locexpr_block_index
24747                                    : dwarf2_locexpr_index);
24748       SYMBOL_LOCATION_BATON (sym) = baton;
24749     }
24750 }
24751
24752 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24753    came from a separate debuginfo file, then the master objfile is
24754    returned.  */
24755
24756 struct objfile *
24757 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24758 {
24759   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24760
24761   /* Return the master objfile, so that we can report and look up the
24762      correct file containing this variable.  */
24763   if (objfile->separate_debug_objfile_backlink)
24764     objfile = objfile->separate_debug_objfile_backlink;
24765
24766   return objfile;
24767 }
24768
24769 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24770    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24771    CU_HEADERP first.  */
24772
24773 static const struct comp_unit_head *
24774 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24775                        struct dwarf2_per_cu_data *per_cu)
24776 {
24777   const gdb_byte *info_ptr;
24778
24779   if (per_cu->cu)
24780     return &per_cu->cu->header;
24781
24782   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24783
24784   memset (cu_headerp, 0, sizeof (*cu_headerp));
24785   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24786                        rcuh_kind::COMPILE);
24787
24788   return cu_headerp;
24789 }
24790
24791 /* Return the address size given in the compilation unit header for CU.  */
24792
24793 int
24794 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24795 {
24796   struct comp_unit_head cu_header_local;
24797   const struct comp_unit_head *cu_headerp;
24798
24799   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24800
24801   return cu_headerp->addr_size;
24802 }
24803
24804 /* Return the offset size given in the compilation unit header for CU.  */
24805
24806 int
24807 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
24808 {
24809   struct comp_unit_head cu_header_local;
24810   const struct comp_unit_head *cu_headerp;
24811
24812   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24813
24814   return cu_headerp->offset_size;
24815 }
24816
24817 /* See its dwarf2loc.h declaration.  */
24818
24819 int
24820 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
24821 {
24822   struct comp_unit_head cu_header_local;
24823   const struct comp_unit_head *cu_headerp;
24824
24825   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24826
24827   if (cu_headerp->version == 2)
24828     return cu_headerp->addr_size;
24829   else
24830     return cu_headerp->offset_size;
24831 }
24832
24833 /* Return the text offset of the CU.  The returned offset comes from
24834    this CU's objfile.  If this objfile came from a separate debuginfo
24835    file, then the offset may be different from the corresponding
24836    offset in the parent objfile.  */
24837
24838 CORE_ADDR
24839 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
24840 {
24841   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24842
24843   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
24844 }
24845
24846 /* Return DWARF version number of PER_CU.  */
24847
24848 short
24849 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
24850 {
24851   return per_cu->dwarf_version;
24852 }
24853
24854 /* Locate the .debug_info compilation unit from CU's objfile which contains
24855    the DIE at OFFSET.  Raises an error on failure.  */
24856
24857 static struct dwarf2_per_cu_data *
24858 dwarf2_find_containing_comp_unit (sect_offset sect_off,
24859                                   unsigned int offset_in_dwz,
24860                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
24861 {
24862   struct dwarf2_per_cu_data *this_cu;
24863   int low, high;
24864   const sect_offset *cu_off;
24865
24866   low = 0;
24867   high = dwarf2_per_objfile->all_comp_units.size () - 1;
24868   while (high > low)
24869     {
24870       struct dwarf2_per_cu_data *mid_cu;
24871       int mid = low + (high - low) / 2;
24872
24873       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
24874       cu_off = &mid_cu->sect_off;
24875       if (mid_cu->is_dwz > offset_in_dwz
24876           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
24877         high = mid;
24878       else
24879         low = mid + 1;
24880     }
24881   gdb_assert (low == high);
24882   this_cu = dwarf2_per_objfile->all_comp_units[low];
24883   cu_off = &this_cu->sect_off;
24884   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
24885     {
24886       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
24887         error (_("Dwarf Error: could not find partial DIE containing "
24888                "offset %s [in module %s]"),
24889                sect_offset_str (sect_off),
24890                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
24891
24892       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
24893                   <= sect_off);
24894       return dwarf2_per_objfile->all_comp_units[low-1];
24895     }
24896   else
24897     {
24898       this_cu = dwarf2_per_objfile->all_comp_units[low];
24899       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
24900           && sect_off >= this_cu->sect_off + this_cu->length)
24901         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
24902       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
24903       return this_cu;
24904     }
24905 }
24906
24907 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
24908
24909 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
24910   : per_cu (per_cu_),
24911     mark (0),
24912     has_loclist (0),
24913     checked_producer (0),
24914     producer_is_gxx_lt_4_6 (0),
24915     producer_is_gcc_lt_4_3 (0),
24916     producer_is_icc_lt_14 (0),
24917     processing_has_namespace_info (0)
24918 {
24919   per_cu->cu = this;
24920 }
24921
24922 /* Destroy a dwarf2_cu.  */
24923
24924 dwarf2_cu::~dwarf2_cu ()
24925 {
24926   per_cu->cu = NULL;
24927 }
24928
24929 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
24930
24931 static void
24932 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
24933                        enum language pretend_language)
24934 {
24935   struct attribute *attr;
24936
24937   /* Set the language we're debugging.  */
24938   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
24939   if (attr)
24940     set_cu_language (DW_UNSND (attr), cu);
24941   else
24942     {
24943       cu->language = pretend_language;
24944       cu->language_defn = language_def (cu->language);
24945     }
24946
24947   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
24948 }
24949
24950 /* Increase the age counter on each cached compilation unit, and free
24951    any that are too old.  */
24952
24953 static void
24954 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
24955 {
24956   struct dwarf2_per_cu_data *per_cu, **last_chain;
24957
24958   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
24959   per_cu = dwarf2_per_objfile->read_in_chain;
24960   while (per_cu != NULL)
24961     {
24962       per_cu->cu->last_used ++;
24963       if (per_cu->cu->last_used <= dwarf_max_cache_age)
24964         dwarf2_mark (per_cu->cu);
24965       per_cu = per_cu->cu->read_in_chain;
24966     }
24967
24968   per_cu = dwarf2_per_objfile->read_in_chain;
24969   last_chain = &dwarf2_per_objfile->read_in_chain;
24970   while (per_cu != NULL)
24971     {
24972       struct dwarf2_per_cu_data *next_cu;
24973
24974       next_cu = per_cu->cu->read_in_chain;
24975
24976       if (!per_cu->cu->mark)
24977         {
24978           delete per_cu->cu;
24979           *last_chain = next_cu;
24980         }
24981       else
24982         last_chain = &per_cu->cu->read_in_chain;
24983
24984       per_cu = next_cu;
24985     }
24986 }
24987
24988 /* Remove a single compilation unit from the cache.  */
24989
24990 static void
24991 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
24992 {
24993   struct dwarf2_per_cu_data *per_cu, **last_chain;
24994   struct dwarf2_per_objfile *dwarf2_per_objfile
24995     = target_per_cu->dwarf2_per_objfile;
24996
24997   per_cu = dwarf2_per_objfile->read_in_chain;
24998   last_chain = &dwarf2_per_objfile->read_in_chain;
24999   while (per_cu != NULL)
25000     {
25001       struct dwarf2_per_cu_data *next_cu;
25002
25003       next_cu = per_cu->cu->read_in_chain;
25004
25005       if (per_cu == target_per_cu)
25006         {
25007           delete per_cu->cu;
25008           per_cu->cu = NULL;
25009           *last_chain = next_cu;
25010           break;
25011         }
25012       else
25013         last_chain = &per_cu->cu->read_in_chain;
25014
25015       per_cu = next_cu;
25016     }
25017 }
25018
25019 /* Release all extra memory associated with OBJFILE.  */
25020
25021 void
25022 dwarf2_free_objfile (struct objfile *objfile)
25023 {
25024   struct dwarf2_per_objfile *dwarf2_per_objfile
25025     = get_dwarf2_per_objfile (objfile);
25026
25027   delete dwarf2_per_objfile;
25028 }
25029
25030 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25031    We store these in a hash table separate from the DIEs, and preserve them
25032    when the DIEs are flushed out of cache.
25033
25034    The CU "per_cu" pointer is needed because offset alone is not enough to
25035    uniquely identify the type.  A file may have multiple .debug_types sections,
25036    or the type may come from a DWO file.  Furthermore, while it's more logical
25037    to use per_cu->section+offset, with Fission the section with the data is in
25038    the DWO file but we don't know that section at the point we need it.
25039    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25040    because we can enter the lookup routine, get_die_type_at_offset, from
25041    outside this file, and thus won't necessarily have PER_CU->cu.
25042    Fortunately, PER_CU is stable for the life of the objfile.  */
25043
25044 struct dwarf2_per_cu_offset_and_type
25045 {
25046   const struct dwarf2_per_cu_data *per_cu;
25047   sect_offset sect_off;
25048   struct type *type;
25049 };
25050
25051 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25052
25053 static hashval_t
25054 per_cu_offset_and_type_hash (const void *item)
25055 {
25056   const struct dwarf2_per_cu_offset_and_type *ofs
25057     = (const struct dwarf2_per_cu_offset_and_type *) item;
25058
25059   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25060 }
25061
25062 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25063
25064 static int
25065 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25066 {
25067   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25068     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25069   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25070     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25071
25072   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25073           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25074 }
25075
25076 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25077    table if necessary.  For convenience, return TYPE.
25078
25079    The DIEs reading must have careful ordering to:
25080     * Not cause infite loops trying to read in DIEs as a prerequisite for
25081       reading current DIE.
25082     * Not trying to dereference contents of still incompletely read in types
25083       while reading in other DIEs.
25084     * Enable referencing still incompletely read in types just by a pointer to
25085       the type without accessing its fields.
25086
25087    Therefore caller should follow these rules:
25088      * Try to fetch any prerequisite types we may need to build this DIE type
25089        before building the type and calling set_die_type.
25090      * After building type call set_die_type for current DIE as soon as
25091        possible before fetching more types to complete the current type.
25092      * Make the type as complete as possible before fetching more types.  */
25093
25094 static struct type *
25095 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25096 {
25097   struct dwarf2_per_objfile *dwarf2_per_objfile
25098     = cu->per_cu->dwarf2_per_objfile;
25099   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25100   struct objfile *objfile = dwarf2_per_objfile->objfile;
25101   struct attribute *attr;
25102   struct dynamic_prop prop;
25103
25104   /* For Ada types, make sure that the gnat-specific data is always
25105      initialized (if not already set).  There are a few types where
25106      we should not be doing so, because the type-specific area is
25107      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25108      where the type-specific area is used to store the floatformat).
25109      But this is not a problem, because the gnat-specific information
25110      is actually not needed for these types.  */
25111   if (need_gnat_info (cu)
25112       && TYPE_CODE (type) != TYPE_CODE_FUNC
25113       && TYPE_CODE (type) != TYPE_CODE_FLT
25114       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25115       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25116       && TYPE_CODE (type) != TYPE_CODE_METHOD
25117       && !HAVE_GNAT_AUX_INFO (type))
25118     INIT_GNAT_SPECIFIC (type);
25119
25120   /* Read DW_AT_allocated and set in type.  */
25121   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25122   if (attr_form_is_block (attr))
25123     {
25124       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25125         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25126     }
25127   else if (attr != NULL)
25128     {
25129       complaint (&symfile_complaints,
25130                  _("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25131                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25132                  sect_offset_str (die->sect_off));
25133     }
25134
25135   /* Read DW_AT_associated and set in type.  */
25136   attr = dwarf2_attr (die, DW_AT_associated, cu);
25137   if (attr_form_is_block (attr))
25138     {
25139       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25140         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25141     }
25142   else if (attr != NULL)
25143     {
25144       complaint (&symfile_complaints,
25145                  _("DW_AT_associated has the wrong form (%s) at DIE %s"),
25146                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25147                  sect_offset_str (die->sect_off));
25148     }
25149
25150   /* Read DW_AT_data_location and set in type.  */
25151   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25152   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25153     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25154
25155   if (dwarf2_per_objfile->die_type_hash == NULL)
25156     {
25157       dwarf2_per_objfile->die_type_hash =
25158         htab_create_alloc_ex (127,
25159                               per_cu_offset_and_type_hash,
25160                               per_cu_offset_and_type_eq,
25161                               NULL,
25162                               &objfile->objfile_obstack,
25163                               hashtab_obstack_allocate,
25164                               dummy_obstack_deallocate);
25165     }
25166
25167   ofs.per_cu = cu->per_cu;
25168   ofs.sect_off = die->sect_off;
25169   ofs.type = type;
25170   slot = (struct dwarf2_per_cu_offset_and_type **)
25171     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25172   if (*slot)
25173     complaint (&symfile_complaints,
25174                _("A problem internal to GDB: DIE %s has type already set"),
25175                sect_offset_str (die->sect_off));
25176   *slot = XOBNEW (&objfile->objfile_obstack,
25177                   struct dwarf2_per_cu_offset_and_type);
25178   **slot = ofs;
25179   return type;
25180 }
25181
25182 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25183    or return NULL if the die does not have a saved type.  */
25184
25185 static struct type *
25186 get_die_type_at_offset (sect_offset sect_off,
25187                         struct dwarf2_per_cu_data *per_cu)
25188 {
25189   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25190   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25191
25192   if (dwarf2_per_objfile->die_type_hash == NULL)
25193     return NULL;
25194
25195   ofs.per_cu = per_cu;
25196   ofs.sect_off = sect_off;
25197   slot = ((struct dwarf2_per_cu_offset_and_type *)
25198           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25199   if (slot)
25200     return slot->type;
25201   else
25202     return NULL;
25203 }
25204
25205 /* Look up the type for DIE in CU in die_type_hash,
25206    or return NULL if DIE does not have a saved type.  */
25207
25208 static struct type *
25209 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25210 {
25211   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25212 }
25213
25214 /* Add a dependence relationship from CU to REF_PER_CU.  */
25215
25216 static void
25217 dwarf2_add_dependence (struct dwarf2_cu *cu,
25218                        struct dwarf2_per_cu_data *ref_per_cu)
25219 {
25220   void **slot;
25221
25222   if (cu->dependencies == NULL)
25223     cu->dependencies
25224       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25225                               NULL, &cu->comp_unit_obstack,
25226                               hashtab_obstack_allocate,
25227                               dummy_obstack_deallocate);
25228
25229   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25230   if (*slot == NULL)
25231     *slot = ref_per_cu;
25232 }
25233
25234 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25235    Set the mark field in every compilation unit in the
25236    cache that we must keep because we are keeping CU.  */
25237
25238 static int
25239 dwarf2_mark_helper (void **slot, void *data)
25240 {
25241   struct dwarf2_per_cu_data *per_cu;
25242
25243   per_cu = (struct dwarf2_per_cu_data *) *slot;
25244
25245   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25246      reading of the chain.  As such dependencies remain valid it is not much
25247      useful to track and undo them during QUIT cleanups.  */
25248   if (per_cu->cu == NULL)
25249     return 1;
25250
25251   if (per_cu->cu->mark)
25252     return 1;
25253   per_cu->cu->mark = 1;
25254
25255   if (per_cu->cu->dependencies != NULL)
25256     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25257
25258   return 1;
25259 }
25260
25261 /* Set the mark field in CU and in every other compilation unit in the
25262    cache that we must keep because we are keeping CU.  */
25263
25264 static void
25265 dwarf2_mark (struct dwarf2_cu *cu)
25266 {
25267   if (cu->mark)
25268     return;
25269   cu->mark = 1;
25270   if (cu->dependencies != NULL)
25271     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25272 }
25273
25274 static void
25275 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25276 {
25277   while (per_cu)
25278     {
25279       per_cu->cu->mark = 0;
25280       per_cu = per_cu->cu->read_in_chain;
25281     }
25282 }
25283
25284 /* Trivial hash function for partial_die_info: the hash value of a DIE
25285    is its offset in .debug_info for this objfile.  */
25286
25287 static hashval_t
25288 partial_die_hash (const void *item)
25289 {
25290   const struct partial_die_info *part_die
25291     = (const struct partial_die_info *) item;
25292
25293   return to_underlying (part_die->sect_off);
25294 }
25295
25296 /* Trivial comparison function for partial_die_info structures: two DIEs
25297    are equal if they have the same offset.  */
25298
25299 static int
25300 partial_die_eq (const void *item_lhs, const void *item_rhs)
25301 {
25302   const struct partial_die_info *part_die_lhs
25303     = (const struct partial_die_info *) item_lhs;
25304   const struct partial_die_info *part_die_rhs
25305     = (const struct partial_die_info *) item_rhs;
25306
25307   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25308 }
25309
25310 static struct cmd_list_element *set_dwarf_cmdlist;
25311 static struct cmd_list_element *show_dwarf_cmdlist;
25312
25313 static void
25314 set_dwarf_cmd (const char *args, int from_tty)
25315 {
25316   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25317              gdb_stdout);
25318 }
25319
25320 static void
25321 show_dwarf_cmd (const char *args, int from_tty)
25322 {
25323   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25324 }
25325
25326 int dwarf_always_disassemble;
25327
25328 static void
25329 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25330                                struct cmd_list_element *c, const char *value)
25331 {
25332   fprintf_filtered (file,
25333                     _("Whether to always disassemble "
25334                       "DWARF expressions is %s.\n"),
25335                     value);
25336 }
25337
25338 static void
25339 show_check_physname (struct ui_file *file, int from_tty,
25340                      struct cmd_list_element *c, const char *value)
25341 {
25342   fprintf_filtered (file,
25343                     _("Whether to check \"physname\" is %s.\n"),
25344                     value);
25345 }
25346
25347 void
25348 _initialize_dwarf2_read (void)
25349 {
25350
25351   dwarf2_objfile_data_key = register_objfile_data ();
25352
25353   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25354 Set DWARF specific variables.\n\
25355 Configure DWARF variables such as the cache size"),
25356                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25357                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25358
25359   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25360 Show DWARF specific variables\n\
25361 Show DWARF variables such as the cache size"),
25362                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25363                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25364
25365   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25366                             &dwarf_max_cache_age, _("\
25367 Set the upper bound on the age of cached DWARF compilation units."), _("\
25368 Show the upper bound on the age of cached DWARF compilation units."), _("\
25369 A higher limit means that cached compilation units will be stored\n\
25370 in memory longer, and more total memory will be used.  Zero disables\n\
25371 caching, which can slow down startup."),
25372                             NULL,
25373                             show_dwarf_max_cache_age,
25374                             &set_dwarf_cmdlist,
25375                             &show_dwarf_cmdlist);
25376
25377   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25378                            &dwarf_always_disassemble, _("\
25379 Set whether `info address' always disassembles DWARF expressions."), _("\
25380 Show whether `info address' always disassembles DWARF expressions."), _("\
25381 When enabled, DWARF expressions are always printed in an assembly-like\n\
25382 syntax.  When disabled, expressions will be printed in a more\n\
25383 conversational style, when possible."),
25384                            NULL,
25385                            show_dwarf_always_disassemble,
25386                            &set_dwarf_cmdlist,
25387                            &show_dwarf_cmdlist);
25388
25389   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25390 Set debugging of the DWARF reader."), _("\
25391 Show debugging of the DWARF reader."), _("\
25392 When enabled (non-zero), debugging messages are printed during DWARF\n\
25393 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25394 information.  A value greater than 1 provides more verbose information."),
25395                             NULL,
25396                             NULL,
25397                             &setdebuglist, &showdebuglist);
25398
25399   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25400 Set debugging of the DWARF DIE reader."), _("\
25401 Show debugging of the DWARF DIE reader."), _("\
25402 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25403 The value is the maximum depth to print."),
25404                              NULL,
25405                              NULL,
25406                              &setdebuglist, &showdebuglist);
25407
25408   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25409 Set debugging of the dwarf line reader."), _("\
25410 Show debugging of the dwarf line reader."), _("\
25411 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25412 A value of 1 (one) provides basic information.\n\
25413 A value greater than 1 provides more verbose information."),
25414                              NULL,
25415                              NULL,
25416                              &setdebuglist, &showdebuglist);
25417
25418   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25419 Set cross-checking of \"physname\" code against demangler."), _("\
25420 Show cross-checking of \"physname\" code against demangler."), _("\
25421 When enabled, GDB's internal \"physname\" code is checked against\n\
25422 the demangler."),
25423                            NULL, show_check_physname,
25424                            &setdebuglist, &showdebuglist);
25425
25426   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25427                            no_class, &use_deprecated_index_sections, _("\
25428 Set whether to use deprecated gdb_index sections."), _("\
25429 Show whether to use deprecated gdb_index sections."), _("\
25430 When enabled, deprecated .gdb_index sections are used anyway.\n\
25431 Normally they are ignored either because of a missing feature or\n\
25432 performance issue.\n\
25433 Warning: This option must be enabled before gdb reads the file."),
25434                            NULL,
25435                            NULL,
25436                            &setlist, &showlist);
25437
25438   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25439                                                         &dwarf2_locexpr_funcs);
25440   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25441                                                         &dwarf2_loclist_funcs);
25442
25443   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25444                                         &dwarf2_block_frame_base_locexpr_funcs);
25445   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25446                                         &dwarf2_block_frame_base_loclist_funcs);
25447
25448 #if GDB_SELF_TEST
25449   selftests::register_test ("dw2_expand_symtabs_matching",
25450                             selftests::dw2_expand_symtabs_matching::run_test);
25451 #endif
25452 }