dwarf2read: Silence -Wenum-compare-switch warning
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2017 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 "bfd.h"
33 #include "elf-bfd.h"
34 #include "symtab.h"
35 #include "gdbtypes.h"
36 #include "objfiles.h"
37 #include "dwarf2.h"
38 #include "buildsym.h"
39 #include "demangle.h"
40 #include "gdb-demangle.h"
41 #include "expression.h"
42 #include "filenames.h"  /* for DOSish file names */
43 #include "macrotab.h"
44 #include "language.h"
45 #include "complaints.h"
46 #include "bcache.h"
47 #include "dwarf2expr.h"
48 #include "dwarf2loc.h"
49 #include "cp-support.h"
50 #include "hashtab.h"
51 #include "command.h"
52 #include "gdbcmd.h"
53 #include "block.h"
54 #include "addrmap.h"
55 #include "typeprint.h"
56 #include "psympriv.h"
57 #include <sys/stat.h>
58 #include "completer.h"
59 #include "vec.h"
60 #include "c-lang.h"
61 #include "go-lang.h"
62 #include "valprint.h"
63 #include "gdbcore.h" /* for gnutarget */
64 #include "gdb/gdb-index.h"
65 #include <ctype.h>
66 #include "gdb_bfd.h"
67 #include "f-lang.h"
68 #include "source.h"
69 #include "filestuff.h"
70 #include "build-id.h"
71 #include "namespace.h"
72 #include "common/gdb_unlinker.h"
73 #include "common/function-view.h"
74 #include "common/gdb_optional.h"
75 #include "common/underlying.h"
76 #include "common/byte-vector.h"
77 #include "common/hash_enum.h"
78 #include "filename-seen-cache.h"
79 #include "producer.h"
80 #include <fcntl.h>
81 #include <sys/types.h>
82 #include <algorithm>
83 #include <unordered_set>
84 #include <unordered_map>
85 #include "selftest.h"
86 #include <cmath>
87 #include <set>
88 #include <forward_list>
89
90 typedef struct symbol *symbolp;
91 DEF_VEC_P (symbolp);
92
93 /* When == 1, print basic high level tracing messages.
94    When > 1, be more verbose.
95    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
96 static unsigned int dwarf_read_debug = 0;
97
98 /* When non-zero, dump DIEs after they are read in.  */
99 static unsigned int dwarf_die_debug = 0;
100
101 /* When non-zero, dump line number entries as they are read in.  */
102 static unsigned int dwarf_line_debug = 0;
103
104 /* When non-zero, cross-check physname against demangler.  */
105 static int check_physname = 0;
106
107 /* When non-zero, do not reject deprecated .gdb_index sections.  */
108 static int use_deprecated_index_sections = 0;
109
110 static const struct objfile_data *dwarf2_objfile_data_key;
111
112 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
113
114 static int dwarf2_locexpr_index;
115 static int dwarf2_loclist_index;
116 static int dwarf2_locexpr_block_index;
117 static int dwarf2_loclist_block_index;
118
119 /* A descriptor for dwarf sections.
120
121    S.ASECTION, SIZE are typically initialized when the objfile is first
122    scanned.  BUFFER, READIN are filled in later when the section is read.
123    If the section contained compressed data then SIZE is updated to record
124    the uncompressed size of the section.
125
126    DWP file format V2 introduces a wrinkle that is easiest to handle by
127    creating the concept of virtual sections contained within a real section.
128    In DWP V2 the sections of the input DWO files are concatenated together
129    into one section, but section offsets are kept relative to the original
130    input section.
131    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
132    the real section this "virtual" section is contained in, and BUFFER,SIZE
133    describe the virtual section.  */
134
135 struct dwarf2_section_info
136 {
137   union
138   {
139     /* If this is a real section, the bfd section.  */
140     asection *section;
141     /* If this is a virtual section, pointer to the containing ("real")
142        section.  */
143     struct dwarf2_section_info *containing_section;
144   } s;
145   /* Pointer to section data, only valid if readin.  */
146   const gdb_byte *buffer;
147   /* The size of the section, real or virtual.  */
148   bfd_size_type size;
149   /* If this is a virtual section, the offset in the real section.
150      Only valid if is_virtual.  */
151   bfd_size_type virtual_offset;
152   /* True if we have tried to read this section.  */
153   char readin;
154   /* True if this is a virtual section, False otherwise.
155      This specifies which of s.section and s.containing_section to use.  */
156   char is_virtual;
157 };
158
159 typedef struct dwarf2_section_info dwarf2_section_info_def;
160 DEF_VEC_O (dwarf2_section_info_def);
161
162 /* All offsets in the index are of this type.  It must be
163    architecture-independent.  */
164 typedef uint32_t offset_type;
165
166 DEF_VEC_I (offset_type);
167
168 /* Ensure only legit values are used.  */
169 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
170   do { \
171     gdb_assert ((unsigned int) (value) <= 1); \
172     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
173   } while (0)
174
175 /* Ensure only legit values are used.  */
176 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
177   do { \
178     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
179                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
180     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
181   } while (0)
182
183 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
184 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
185   do { \
186     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
187     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
188   } while (0)
189
190 #if WORDS_BIGENDIAN
191
192 /* Convert VALUE between big- and little-endian.  */
193
194 static offset_type
195 byte_swap (offset_type value)
196 {
197   offset_type result;
198
199   result = (value & 0xff) << 24;
200   result |= (value & 0xff00) << 8;
201   result |= (value & 0xff0000) >> 8;
202   result |= (value & 0xff000000) >> 24;
203   return result;
204 }
205
206 #define MAYBE_SWAP(V)  byte_swap (V)
207
208 #else
209 #define MAYBE_SWAP(V) static_cast<offset_type> (V)
210 #endif /* WORDS_BIGENDIAN */
211
212 /* An index into a (C++) symbol name component in a symbol name as
213    recorded in the mapped_index's symbol table.  For each C++ symbol
214    in the symbol table, we record one entry for the start of each
215    component in the symbol in a table of name components, and then
216    sort the table, in order to be able to binary search symbol names,
217    ignoring leading namespaces, both completion and regular look up.
218    For example, for symbol "A::B::C", we'll have an entry that points
219    to "A::B::C", another that points to "B::C", and another for "C".
220    Note that function symbols in GDB index have no parameter
221    information, just the function/method names.  You can convert a
222    name_component to a "const char *" using the
223    'mapped_index::symbol_name_at(offset_type)' method.  */
224
225 struct name_component
226 {
227   /* Offset in the symbol name where the component starts.  Stored as
228      a (32-bit) offset instead of a pointer to save memory and improve
229      locality on 64-bit architectures.  */
230   offset_type name_offset;
231
232   /* The symbol's index in the symbol and constant pool tables of a
233      mapped_index.  */
234   offset_type idx;
235 };
236
237 /* Base class containing bits shared by both .gdb_index and
238    .debug_name indexes.  */
239
240 struct mapped_index_base
241 {
242   /* The name_component table (a sorted vector).  See name_component's
243      description above.  */
244   std::vector<name_component> name_components;
245
246   /* How NAME_COMPONENTS is sorted.  */
247   enum case_sensitivity name_components_casing;
248
249   /* Return the number of names in the symbol table.  */
250   virtual size_t symbol_name_count () const = 0;
251
252   /* Get the name of the symbol at IDX in the symbol table.  */
253   virtual const char *symbol_name_at (offset_type idx) const = 0;
254
255   /* Return whether the name at IDX in the symbol table should be
256      ignored.  */
257   virtual bool symbol_name_slot_invalid (offset_type idx) const
258   {
259     return false;
260   }
261
262   /* Build the symbol name component sorted vector, if we haven't
263      yet.  */
264   void build_name_components ();
265
266   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
267      possible matches for LN_NO_PARAMS in the name component
268      vector.  */
269   std::pair<std::vector<name_component>::const_iterator,
270             std::vector<name_component>::const_iterator>
271     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
272
273   /* Prevent deleting/destroying via a base class pointer.  */
274 protected:
275   ~mapped_index_base() = default;
276 };
277
278 /* A description of the mapped index.  The file format is described in
279    a comment by the code that writes the index.  */
280 struct mapped_index final : public mapped_index_base
281 {
282   /* A slot/bucket in the symbol table hash.  */
283   struct symbol_table_slot
284   {
285     const offset_type name;
286     const offset_type vec;
287   };
288
289   /* Index data format version.  */
290   int version;
291
292   /* The total length of the buffer.  */
293   off_t total_size;
294
295   /* The address table data.  */
296   gdb::array_view<const gdb_byte> address_table;
297
298   /* The symbol table, implemented as a hash table.  */
299   gdb::array_view<symbol_table_slot> symbol_table;
300
301   /* A pointer to the constant pool.  */
302   const char *constant_pool;
303
304   bool symbol_name_slot_invalid (offset_type idx) const override
305   {
306     const auto &bucket = this->symbol_table[idx];
307     return bucket.name == 0 && bucket.vec;
308   }
309
310   /* Convenience method to get at the name of the symbol at IDX in the
311      symbol table.  */
312   const char *symbol_name_at (offset_type idx) const override
313   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
314
315   size_t symbol_name_count () const override
316   { return this->symbol_table.size (); }
317 };
318
319 /* A description of the mapped .debug_names.
320    Uninitialized map has CU_COUNT 0.  */
321 struct mapped_debug_names final : public mapped_index_base
322 {
323   bfd_endian dwarf5_byte_order;
324   bool dwarf5_is_dwarf64;
325   bool augmentation_is_gdb;
326   uint8_t offset_size;
327   uint32_t cu_count = 0;
328   uint32_t tu_count, bucket_count, name_count;
329   const gdb_byte *cu_table_reordered, *tu_table_reordered;
330   const uint32_t *bucket_table_reordered, *hash_table_reordered;
331   const gdb_byte *name_table_string_offs_reordered;
332   const gdb_byte *name_table_entry_offs_reordered;
333   const gdb_byte *entry_pool;
334
335   struct index_val
336   {
337     ULONGEST dwarf_tag;
338     struct attr
339     {
340       /* Attribute name DW_IDX_*.  */
341       ULONGEST dw_idx;
342
343       /* Attribute form DW_FORM_*.  */
344       ULONGEST form;
345
346       /* Value if FORM is DW_FORM_implicit_const.  */
347       LONGEST implicit_const;
348     };
349     std::vector<attr> attr_vec;
350   };
351
352   std::unordered_map<ULONGEST, index_val> abbrev_map;
353
354   const char *namei_to_name (uint32_t namei) const;
355
356   /* Implementation of the mapped_index_base virtual interface, for
357      the name_components cache.  */
358
359   const char *symbol_name_at (offset_type idx) const override
360   { return namei_to_name (idx); }
361
362   size_t symbol_name_count () const override
363   { return this->name_count; }
364 };
365
366 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
367 DEF_VEC_P (dwarf2_per_cu_ptr);
368
369 struct tu_stats
370 {
371   int nr_uniq_abbrev_tables;
372   int nr_symtabs;
373   int nr_symtab_sharers;
374   int nr_stmt_less_type_units;
375   int nr_all_type_units_reallocs;
376 };
377
378 /* Collection of data recorded per objfile.
379    This hangs off of dwarf2_objfile_data_key.  */
380
381 struct dwarf2_per_objfile
382 {
383   /* Construct a dwarf2_per_objfile for OBJFILE.  NAMES points to the
384      dwarf2 section names, or is NULL if the standard ELF names are
385      used.  */
386   dwarf2_per_objfile (struct objfile *objfile,
387                       const dwarf2_debug_sections *names);
388
389   ~dwarf2_per_objfile ();
390
391   DISABLE_COPY_AND_ASSIGN (dwarf2_per_objfile);
392
393   /* Free all cached compilation units.  */
394   void free_cached_comp_units ();
395 private:
396   /* This function is mapped across the sections and remembers the
397      offset and size of each of the debugging sections we are
398      interested in.  */
399   void locate_sections (bfd *abfd, asection *sectp,
400                         const dwarf2_debug_sections &names);
401
402 public:
403   dwarf2_section_info info {};
404   dwarf2_section_info abbrev {};
405   dwarf2_section_info line {};
406   dwarf2_section_info loc {};
407   dwarf2_section_info loclists {};
408   dwarf2_section_info macinfo {};
409   dwarf2_section_info macro {};
410   dwarf2_section_info str {};
411   dwarf2_section_info line_str {};
412   dwarf2_section_info ranges {};
413   dwarf2_section_info rnglists {};
414   dwarf2_section_info addr {};
415   dwarf2_section_info frame {};
416   dwarf2_section_info eh_frame {};
417   dwarf2_section_info gdb_index {};
418   dwarf2_section_info debug_names {};
419   dwarf2_section_info debug_aranges {};
420
421   VEC (dwarf2_section_info_def) *types = NULL;
422
423   /* Back link.  */
424   struct objfile *objfile = NULL;
425
426   /* Table of all the compilation units.  This is used to locate
427      the target compilation unit of a particular reference.  */
428   struct dwarf2_per_cu_data **all_comp_units = NULL;
429
430   /* The number of compilation units in ALL_COMP_UNITS.  */
431   int n_comp_units = 0;
432
433   /* The number of .debug_types-related CUs.  */
434   int n_type_units = 0;
435
436   /* The number of elements allocated in all_type_units.
437      If there are skeleton-less TUs, we add them to all_type_units lazily.  */
438   int n_allocated_type_units = 0;
439
440   /* The .debug_types-related CUs (TUs).
441      This is stored in malloc space because we may realloc it.  */
442   struct signatured_type **all_type_units = NULL;
443
444   /* Table of struct type_unit_group objects.
445      The hash key is the DW_AT_stmt_list value.  */
446   htab_t type_unit_groups {};
447
448   /* A table mapping .debug_types signatures to its signatured_type entry.
449      This is NULL if the .debug_types section hasn't been read in yet.  */
450   htab_t signatured_types {};
451
452   /* Type unit statistics, to see how well the scaling improvements
453      are doing.  */
454   struct tu_stats tu_stats {};
455
456   /* A chain of compilation units that are currently read in, so that
457      they can be freed later.  */
458   dwarf2_per_cu_data *read_in_chain = NULL;
459
460   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
461      This is NULL if the table hasn't been allocated yet.  */
462   htab_t dwo_files {};
463
464   /* True if we've checked for whether there is a DWP file.  */
465   bool dwp_checked = false;
466
467   /* The DWP file if there is one, or NULL.  */
468   struct dwp_file *dwp_file = NULL;
469
470   /* The shared '.dwz' file, if one exists.  This is used when the
471      original data was compressed using 'dwz -m'.  */
472   struct dwz_file *dwz_file = NULL;
473
474   /* A flag indicating whether this objfile has a section loaded at a
475      VMA of 0.  */
476   bool has_section_at_zero = false;
477
478   /* True if we are using the mapped index,
479      or we are faking it for OBJF_READNOW's sake.  */
480   bool using_index = false;
481
482   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
483   mapped_index *index_table = NULL;
484
485   /* The mapped index, or NULL if .debug_names is missing or not being used.  */
486   std::unique_ptr<mapped_debug_names> debug_names_table;
487
488   /* When using index_table, this keeps track of all quick_file_names entries.
489      TUs typically share line table entries with a CU, so we maintain a
490      separate table of all line table entries to support the sharing.
491      Note that while there can be way more TUs than CUs, we've already
492      sorted all the TUs into "type unit groups", grouped by their
493      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
494      CU and its associated TU group if there is one.  */
495   htab_t quick_file_names_table {};
496
497   /* Set during partial symbol reading, to prevent queueing of full
498      symbols.  */
499   bool reading_partial_symbols = false;
500
501   /* Table mapping type DIEs to their struct type *.
502      This is NULL if not allocated yet.
503      The mapping is done via (CU/TU + DIE offset) -> type.  */
504   htab_t die_type_hash {};
505
506   /* The CUs we recently read.  */
507   VEC (dwarf2_per_cu_ptr) *just_read_cus = NULL;
508
509   /* Table containing line_header indexed by offset and offset_in_dwz.  */
510   htab_t line_header_hash {};
511
512   /* Table containing all filenames.  This is an optional because the
513      table is lazily constructed on first access.  */
514   gdb::optional<filename_seen_cache> filenames_cache;
515 };
516
517 static struct dwarf2_per_objfile *dwarf2_per_objfile;
518
519 /* Default names of the debugging sections.  */
520
521 /* Note that if the debugging section has been compressed, it might
522    have a name like .zdebug_info.  */
523
524 static const struct dwarf2_debug_sections dwarf2_elf_names =
525 {
526   { ".debug_info", ".zdebug_info" },
527   { ".debug_abbrev", ".zdebug_abbrev" },
528   { ".debug_line", ".zdebug_line" },
529   { ".debug_loc", ".zdebug_loc" },
530   { ".debug_loclists", ".zdebug_loclists" },
531   { ".debug_macinfo", ".zdebug_macinfo" },
532   { ".debug_macro", ".zdebug_macro" },
533   { ".debug_str", ".zdebug_str" },
534   { ".debug_line_str", ".zdebug_line_str" },
535   { ".debug_ranges", ".zdebug_ranges" },
536   { ".debug_rnglists", ".zdebug_rnglists" },
537   { ".debug_types", ".zdebug_types" },
538   { ".debug_addr", ".zdebug_addr" },
539   { ".debug_frame", ".zdebug_frame" },
540   { ".eh_frame", NULL },
541   { ".gdb_index", ".zgdb_index" },
542   { ".debug_names", ".zdebug_names" },
543   { ".debug_aranges", ".zdebug_aranges" },
544   23
545 };
546
547 /* List of DWO/DWP sections.  */
548
549 static const struct dwop_section_names
550 {
551   struct dwarf2_section_names abbrev_dwo;
552   struct dwarf2_section_names info_dwo;
553   struct dwarf2_section_names line_dwo;
554   struct dwarf2_section_names loc_dwo;
555   struct dwarf2_section_names loclists_dwo;
556   struct dwarf2_section_names macinfo_dwo;
557   struct dwarf2_section_names macro_dwo;
558   struct dwarf2_section_names str_dwo;
559   struct dwarf2_section_names str_offsets_dwo;
560   struct dwarf2_section_names types_dwo;
561   struct dwarf2_section_names cu_index;
562   struct dwarf2_section_names tu_index;
563 }
564 dwop_section_names =
565 {
566   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
567   { ".debug_info.dwo", ".zdebug_info.dwo" },
568   { ".debug_line.dwo", ".zdebug_line.dwo" },
569   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
570   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
571   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
572   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
573   { ".debug_str.dwo", ".zdebug_str.dwo" },
574   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
575   { ".debug_types.dwo", ".zdebug_types.dwo" },
576   { ".debug_cu_index", ".zdebug_cu_index" },
577   { ".debug_tu_index", ".zdebug_tu_index" },
578 };
579
580 /* local data types */
581
582 /* The data in a compilation unit header, after target2host
583    translation, looks like this.  */
584 struct comp_unit_head
585 {
586   unsigned int length;
587   short version;
588   unsigned char addr_size;
589   unsigned char signed_addr_p;
590   sect_offset abbrev_sect_off;
591
592   /* Size of file offsets; either 4 or 8.  */
593   unsigned int offset_size;
594
595   /* Size of the length field; either 4 or 12.  */
596   unsigned int initial_length_size;
597
598   enum dwarf_unit_type unit_type;
599
600   /* Offset to the first byte of this compilation unit header in the
601      .debug_info section, for resolving relative reference dies.  */
602   sect_offset sect_off;
603
604   /* Offset to first die in this cu from the start of the cu.
605      This will be the first byte following the compilation unit header.  */
606   cu_offset first_die_cu_offset;
607
608   /* 64-bit signature of this type unit - it is valid only for
609      UNIT_TYPE DW_UT_type.  */
610   ULONGEST signature;
611
612   /* For types, offset in the type's DIE of the type defined by this TU.  */
613   cu_offset type_cu_offset_in_tu;
614 };
615
616 /* Type used for delaying computation of method physnames.
617    See comments for compute_delayed_physnames.  */
618 struct delayed_method_info
619 {
620   /* The type to which the method is attached, i.e., its parent class.  */
621   struct type *type;
622
623   /* The index of the method in the type's function fieldlists.  */
624   int fnfield_index;
625
626   /* The index of the method in the fieldlist.  */
627   int index;
628
629   /* The name of the DIE.  */
630   const char *name;
631
632   /*  The DIE associated with this method.  */
633   struct die_info *die;
634 };
635
636 typedef struct delayed_method_info delayed_method_info;
637 DEF_VEC_O (delayed_method_info);
638
639 /* Internal state when decoding a particular compilation unit.  */
640 struct dwarf2_cu
641 {
642   /* The objfile containing this compilation unit.  */
643   struct objfile *objfile;
644
645   /* The header of the compilation unit.  */
646   struct comp_unit_head header;
647
648   /* Base address of this compilation unit.  */
649   CORE_ADDR base_address;
650
651   /* Non-zero if base_address has been set.  */
652   int base_known;
653
654   /* The language we are debugging.  */
655   enum language language;
656   const struct language_defn *language_defn;
657
658   const char *producer;
659
660   /* The generic symbol table building routines have separate lists for
661      file scope symbols and all all other scopes (local scopes).  So
662      we need to select the right one to pass to add_symbol_to_list().
663      We do it by keeping a pointer to the correct list in list_in_scope.
664
665      FIXME: The original dwarf code just treated the file scope as the
666      first local scope, and all other local scopes as nested local
667      scopes, and worked fine.  Check to see if we really need to
668      distinguish these in buildsym.c.  */
669   struct pending **list_in_scope;
670
671   /* The abbrev table for this CU.
672      Normally this points to the abbrev table in the objfile.
673      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
674   struct abbrev_table *abbrev_table;
675
676   /* Hash table holding all the loaded partial DIEs
677      with partial_die->offset.SECT_OFF as hash.  */
678   htab_t partial_dies;
679
680   /* Storage for things with the same lifetime as this read-in compilation
681      unit, including partial DIEs.  */
682   struct obstack comp_unit_obstack;
683
684   /* When multiple dwarf2_cu structures are living in memory, this field
685      chains them all together, so that they can be released efficiently.
686      We will probably also want a generation counter so that most-recently-used
687      compilation units are cached...  */
688   struct dwarf2_per_cu_data *read_in_chain;
689
690   /* Backlink to our per_cu entry.  */
691   struct dwarf2_per_cu_data *per_cu;
692
693   /* How many compilation units ago was this CU last referenced?  */
694   int last_used;
695
696   /* A hash table of DIE cu_offset for following references with
697      die_info->offset.sect_off as hash.  */
698   htab_t die_hash;
699
700   /* Full DIEs if read in.  */
701   struct die_info *dies;
702
703   /* A set of pointers to dwarf2_per_cu_data objects for compilation
704      units referenced by this one.  Only set during full symbol processing;
705      partial symbol tables do not have dependencies.  */
706   htab_t dependencies;
707
708   /* Header data from the line table, during full symbol processing.  */
709   struct line_header *line_header;
710   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
711      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
712      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
713      to the line header as long as this DIE is being processed.  See
714      process_die_scope.  */
715   die_info *line_header_die_owner;
716
717   /* A list of methods which need to have physnames computed
718      after all type information has been read.  */
719   VEC (delayed_method_info) *method_list;
720
721   /* To be copied to symtab->call_site_htab.  */
722   htab_t call_site_htab;
723
724   /* Non-NULL if this CU came from a DWO file.
725      There is an invariant here that is important to remember:
726      Except for attributes copied from the top level DIE in the "main"
727      (or "stub") file in preparation for reading the DWO file
728      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
729      Either there isn't a DWO file (in which case this is NULL and the point
730      is moot), or there is and either we're not going to read it (in which
731      case this is NULL) or there is and we are reading it (in which case this
732      is non-NULL).  */
733   struct dwo_unit *dwo_unit;
734
735   /* The DW_AT_addr_base attribute if present, zero otherwise
736      (zero is a valid value though).
737      Note this value comes from the Fission stub CU/TU's DIE.  */
738   ULONGEST addr_base;
739
740   /* The DW_AT_ranges_base attribute if present, zero otherwise
741      (zero is a valid value though).
742      Note this value comes from the Fission stub CU/TU's DIE.
743      Also note that the value is zero in the non-DWO case so this value can
744      be used without needing to know whether DWO files are in use or not.
745      N.B. This does not apply to DW_AT_ranges appearing in
746      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
747      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
748      DW_AT_ranges_base *would* have to be applied, and we'd have to care
749      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
750   ULONGEST ranges_base;
751
752   /* Mark used when releasing cached dies.  */
753   unsigned int mark : 1;
754
755   /* This CU references .debug_loc.  See the symtab->locations_valid field.
756      This test is imperfect as there may exist optimized debug code not using
757      any location list and still facing inlining issues if handled as
758      unoptimized code.  For a future better test see GCC PR other/32998.  */
759   unsigned int has_loclist : 1;
760
761   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
762      if all the producer_is_* fields are valid.  This information is cached
763      because profiling CU expansion showed excessive time spent in
764      producer_is_gxx_lt_4_6.  */
765   unsigned int checked_producer : 1;
766   unsigned int producer_is_gxx_lt_4_6 : 1;
767   unsigned int producer_is_gcc_lt_4_3 : 1;
768   unsigned int producer_is_icc_lt_14 : 1;
769
770   /* When set, the file that we're processing is known to have
771      debugging info for C++ namespaces.  GCC 3.3.x did not produce
772      this information, but later versions do.  */
773
774   unsigned int processing_has_namespace_info : 1;
775 };
776
777 /* Persistent data held for a compilation unit, even when not
778    processing it.  We put a pointer to this structure in the
779    read_symtab_private field of the psymtab.  */
780
781 struct dwarf2_per_cu_data
782 {
783   /* The start offset and length of this compilation unit.
784      NOTE: Unlike comp_unit_head.length, this length includes
785      initial_length_size.
786      If the DIE refers to a DWO file, this is always of the original die,
787      not the DWO file.  */
788   sect_offset sect_off;
789   unsigned int length;
790
791   /* DWARF standard version this data has been read from (such as 4 or 5).  */
792   short dwarf_version;
793
794   /* Flag indicating this compilation unit will be read in before
795      any of the current compilation units are processed.  */
796   unsigned int queued : 1;
797
798   /* This flag will be set when reading partial DIEs if we need to load
799      absolutely all DIEs for this compilation unit, instead of just the ones
800      we think are interesting.  It gets set if we look for a DIE in the
801      hash table and don't find it.  */
802   unsigned int load_all_dies : 1;
803
804   /* Non-zero if this CU is from .debug_types.
805      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
806      this is non-zero.  */
807   unsigned int is_debug_types : 1;
808
809   /* Non-zero if this CU is from the .dwz file.  */
810   unsigned int is_dwz : 1;
811
812   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
813      This flag is only valid if is_debug_types is true.
814      We can't read a CU directly from a DWO file: There are required
815      attributes in the stub.  */
816   unsigned int reading_dwo_directly : 1;
817
818   /* Non-zero if the TU has been read.
819      This is used to assist the "Stay in DWO Optimization" for Fission:
820      When reading a DWO, it's faster to read TUs from the DWO instead of
821      fetching them from random other DWOs (due to comdat folding).
822      If the TU has already been read, the optimization is unnecessary
823      (and unwise - we don't want to change where gdb thinks the TU lives
824      "midflight").
825      This flag is only valid if is_debug_types is true.  */
826   unsigned int tu_read : 1;
827
828   /* The section this CU/TU lives in.
829      If the DIE refers to a DWO file, this is always the original die,
830      not the DWO file.  */
831   struct dwarf2_section_info *section;
832
833   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
834      of the CU cache it gets reset to NULL again.  This is left as NULL for
835      dummy CUs (a CU header, but nothing else).  */
836   struct dwarf2_cu *cu;
837
838   /* The corresponding objfile.
839      Normally we can get the objfile from dwarf2_per_objfile.
840      However we can enter this file with just a "per_cu" handle.  */
841   struct objfile *objfile;
842
843   /* When dwarf2_per_objfile->using_index is true, the 'quick' field
844      is active.  Otherwise, the 'psymtab' field is active.  */
845   union
846   {
847     /* The partial symbol table associated with this compilation unit,
848        or NULL for unread partial units.  */
849     struct partial_symtab *psymtab;
850
851     /* Data needed by the "quick" functions.  */
852     struct dwarf2_per_cu_quick_data *quick;
853   } v;
854
855   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
856      while reading psymtabs, used to compute the psymtab dependencies,
857      and then cleared.  Then it is filled in again while reading full
858      symbols, and only deleted when the objfile is destroyed.
859
860      This is also used to work around a difference between the way gold
861      generates .gdb_index version <=7 and the way gdb does.  Arguably this
862      is a gold bug.  For symbols coming from TUs, gold records in the index
863      the CU that includes the TU instead of the TU itself.  This breaks
864      dw2_lookup_symbol: It assumes that if the index says symbol X lives
865      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
866      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
867      we need to look in TU Z to find X.  Fortunately, this is akin to
868      DW_TAG_imported_unit, so we just use the same mechanism: For
869      .gdb_index version <=7 this also records the TUs that the CU referred
870      to.  Concurrently with this change gdb was modified to emit version 8
871      indices so we only pay a price for gold generated indices.
872      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
873   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
874 };
875
876 /* Entry in the signatured_types hash table.  */
877
878 struct signatured_type
879 {
880   /* The "per_cu" object of this type.
881      This struct is used iff per_cu.is_debug_types.
882      N.B.: This is the first member so that it's easy to convert pointers
883      between them.  */
884   struct dwarf2_per_cu_data per_cu;
885
886   /* The type's signature.  */
887   ULONGEST signature;
888
889   /* Offset in the TU of the type's DIE, as read from the TU header.
890      If this TU is a DWO stub and the definition lives in a DWO file
891      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
892   cu_offset type_offset_in_tu;
893
894   /* Offset in the section of the type's DIE.
895      If the definition lives in a DWO file, this is the offset in the
896      .debug_types.dwo section.
897      The value is zero until the actual value is known.
898      Zero is otherwise not a valid section offset.  */
899   sect_offset type_offset_in_section;
900
901   /* Type units are grouped by their DW_AT_stmt_list entry so that they
902      can share them.  This points to the containing symtab.  */
903   struct type_unit_group *type_unit_group;
904
905   /* The type.
906      The first time we encounter this type we fully read it in and install it
907      in the symbol tables.  Subsequent times we only need the type.  */
908   struct type *type;
909
910   /* Containing DWO unit.
911      This field is valid iff per_cu.reading_dwo_directly.  */
912   struct dwo_unit *dwo_unit;
913 };
914
915 typedef struct signatured_type *sig_type_ptr;
916 DEF_VEC_P (sig_type_ptr);
917
918 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
919    This includes type_unit_group and quick_file_names.  */
920
921 struct stmt_list_hash
922 {
923   /* The DWO unit this table is from or NULL if there is none.  */
924   struct dwo_unit *dwo_unit;
925
926   /* Offset in .debug_line or .debug_line.dwo.  */
927   sect_offset line_sect_off;
928 };
929
930 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
931    an object of this type.  */
932
933 struct type_unit_group
934 {
935   /* dwarf2read.c's main "handle" on a TU symtab.
936      To simplify things we create an artificial CU that "includes" all the
937      type units using this stmt_list so that the rest of the code still has
938      a "per_cu" handle on the symtab.
939      This PER_CU is recognized by having no section.  */
940 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
941   struct dwarf2_per_cu_data per_cu;
942
943   /* The TUs that share this DW_AT_stmt_list entry.
944      This is added to while parsing type units to build partial symtabs,
945      and is deleted afterwards and not used again.  */
946   VEC (sig_type_ptr) *tus;
947
948   /* The compunit symtab.
949      Type units in a group needn't all be defined in the same source file,
950      so we create an essentially anonymous symtab as the compunit symtab.  */
951   struct compunit_symtab *compunit_symtab;
952
953   /* The data used to construct the hash key.  */
954   struct stmt_list_hash hash;
955
956   /* The number of symtabs from the line header.
957      The value here must match line_header.num_file_names.  */
958   unsigned int num_symtabs;
959
960   /* The symbol tables for this TU (obtained from the files listed in
961      DW_AT_stmt_list).
962      WARNING: The order of entries here must match the order of entries
963      in the line header.  After the first TU using this type_unit_group, the
964      line header for the subsequent TUs is recreated from this.  This is done
965      because we need to use the same symtabs for each TU using the same
966      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
967      there's no guarantee the line header doesn't have duplicate entries.  */
968   struct symtab **symtabs;
969 };
970
971 /* These sections are what may appear in a (real or virtual) DWO file.  */
972
973 struct dwo_sections
974 {
975   struct dwarf2_section_info abbrev;
976   struct dwarf2_section_info line;
977   struct dwarf2_section_info loc;
978   struct dwarf2_section_info loclists;
979   struct dwarf2_section_info macinfo;
980   struct dwarf2_section_info macro;
981   struct dwarf2_section_info str;
982   struct dwarf2_section_info str_offsets;
983   /* In the case of a virtual DWO file, these two are unused.  */
984   struct dwarf2_section_info info;
985   VEC (dwarf2_section_info_def) *types;
986 };
987
988 /* CUs/TUs in DWP/DWO files.  */
989
990 struct dwo_unit
991 {
992   /* Backlink to the containing struct dwo_file.  */
993   struct dwo_file *dwo_file;
994
995   /* The "id" that distinguishes this CU/TU.
996      .debug_info calls this "dwo_id", .debug_types calls this "signature".
997      Since signatures came first, we stick with it for consistency.  */
998   ULONGEST signature;
999
1000   /* The section this CU/TU lives in, in the DWO file.  */
1001   struct dwarf2_section_info *section;
1002
1003   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
1004   sect_offset sect_off;
1005   unsigned int length;
1006
1007   /* For types, offset in the type's DIE of the type defined by this TU.  */
1008   cu_offset type_offset_in_tu;
1009 };
1010
1011 /* include/dwarf2.h defines the DWP section codes.
1012    It defines a max value but it doesn't define a min value, which we
1013    use for error checking, so provide one.  */
1014
1015 enum dwp_v2_section_ids
1016 {
1017   DW_SECT_MIN = 1
1018 };
1019
1020 /* Data for one DWO file.
1021
1022    This includes virtual DWO files (a virtual DWO file is a DWO file as it
1023    appears in a DWP file).  DWP files don't really have DWO files per se -
1024    comdat folding of types "loses" the DWO file they came from, and from
1025    a high level view DWP files appear to contain a mass of random types.
1026    However, to maintain consistency with the non-DWP case we pretend DWP
1027    files contain virtual DWO files, and we assign each TU with one virtual
1028    DWO file (generally based on the line and abbrev section offsets -
1029    a heuristic that seems to work in practice).  */
1030
1031 struct dwo_file
1032 {
1033   /* The DW_AT_GNU_dwo_name attribute.
1034      For virtual DWO files the name is constructed from the section offsets
1035      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
1036      from related CU+TUs.  */
1037   const char *dwo_name;
1038
1039   /* The DW_AT_comp_dir attribute.  */
1040   const char *comp_dir;
1041
1042   /* The bfd, when the file is open.  Otherwise this is NULL.
1043      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
1044   bfd *dbfd;
1045
1046   /* The sections that make up this DWO file.
1047      Remember that for virtual DWO files in DWP V2, these are virtual
1048      sections (for lack of a better name).  */
1049   struct dwo_sections sections;
1050
1051   /* The CUs in the file.
1052      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
1053      an extension to handle LLVM's Link Time Optimization output (where
1054      multiple source files may be compiled into a single object/dwo pair). */
1055   htab_t cus;
1056
1057   /* Table of TUs in the file.
1058      Each element is a struct dwo_unit.  */
1059   htab_t tus;
1060 };
1061
1062 /* These sections are what may appear in a DWP file.  */
1063
1064 struct dwp_sections
1065 {
1066   /* These are used by both DWP version 1 and 2.  */
1067   struct dwarf2_section_info str;
1068   struct dwarf2_section_info cu_index;
1069   struct dwarf2_section_info tu_index;
1070
1071   /* These are only used by DWP version 2 files.
1072      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
1073      sections are referenced by section number, and are not recorded here.
1074      In DWP version 2 there is at most one copy of all these sections, each
1075      section being (effectively) comprised of the concatenation of all of the
1076      individual sections that exist in the version 1 format.
1077      To keep the code simple we treat each of these concatenated pieces as a
1078      section itself (a virtual section?).  */
1079   struct dwarf2_section_info abbrev;
1080   struct dwarf2_section_info info;
1081   struct dwarf2_section_info line;
1082   struct dwarf2_section_info loc;
1083   struct dwarf2_section_info macinfo;
1084   struct dwarf2_section_info macro;
1085   struct dwarf2_section_info str_offsets;
1086   struct dwarf2_section_info types;
1087 };
1088
1089 /* These sections are what may appear in a virtual DWO file in DWP version 1.
1090    A virtual DWO file is a DWO file as it appears in a DWP file.  */
1091
1092 struct virtual_v1_dwo_sections
1093 {
1094   struct dwarf2_section_info abbrev;
1095   struct dwarf2_section_info line;
1096   struct dwarf2_section_info loc;
1097   struct dwarf2_section_info macinfo;
1098   struct dwarf2_section_info macro;
1099   struct dwarf2_section_info str_offsets;
1100   /* Each DWP hash table entry records one CU or one TU.
1101      That is recorded here, and copied to dwo_unit.section.  */
1102   struct dwarf2_section_info info_or_types;
1103 };
1104
1105 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
1106    In version 2, the sections of the DWO files are concatenated together
1107    and stored in one section of that name.  Thus each ELF section contains
1108    several "virtual" sections.  */
1109
1110 struct virtual_v2_dwo_sections
1111 {
1112   bfd_size_type abbrev_offset;
1113   bfd_size_type abbrev_size;
1114
1115   bfd_size_type line_offset;
1116   bfd_size_type line_size;
1117
1118   bfd_size_type loc_offset;
1119   bfd_size_type loc_size;
1120
1121   bfd_size_type macinfo_offset;
1122   bfd_size_type macinfo_size;
1123
1124   bfd_size_type macro_offset;
1125   bfd_size_type macro_size;
1126
1127   bfd_size_type str_offsets_offset;
1128   bfd_size_type str_offsets_size;
1129
1130   /* Each DWP hash table entry records one CU or one TU.
1131      That is recorded here, and copied to dwo_unit.section.  */
1132   bfd_size_type info_or_types_offset;
1133   bfd_size_type info_or_types_size;
1134 };
1135
1136 /* Contents of DWP hash tables.  */
1137
1138 struct dwp_hash_table
1139 {
1140   uint32_t version, nr_columns;
1141   uint32_t nr_units, nr_slots;
1142   const gdb_byte *hash_table, *unit_table;
1143   union
1144   {
1145     struct
1146     {
1147       const gdb_byte *indices;
1148     } v1;
1149     struct
1150     {
1151       /* This is indexed by column number and gives the id of the section
1152          in that column.  */
1153 #define MAX_NR_V2_DWO_SECTIONS \
1154   (1 /* .debug_info or .debug_types */ \
1155    + 1 /* .debug_abbrev */ \
1156    + 1 /* .debug_line */ \
1157    + 1 /* .debug_loc */ \
1158    + 1 /* .debug_str_offsets */ \
1159    + 1 /* .debug_macro or .debug_macinfo */)
1160       int section_ids[MAX_NR_V2_DWO_SECTIONS];
1161       const gdb_byte *offsets;
1162       const gdb_byte *sizes;
1163     } v2;
1164   } section_pool;
1165 };
1166
1167 /* Data for one DWP file.  */
1168
1169 struct dwp_file
1170 {
1171   /* Name of the file.  */
1172   const char *name;
1173
1174   /* File format version.  */
1175   int version;
1176
1177   /* The bfd.  */
1178   bfd *dbfd;
1179
1180   /* Section info for this file.  */
1181   struct dwp_sections sections;
1182
1183   /* Table of CUs in the file.  */
1184   const struct dwp_hash_table *cus;
1185
1186   /* Table of TUs in the file.  */
1187   const struct dwp_hash_table *tus;
1188
1189   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
1190   htab_t loaded_cus;
1191   htab_t loaded_tus;
1192
1193   /* Table to map ELF section numbers to their sections.
1194      This is only needed for the DWP V1 file format.  */
1195   unsigned int num_sections;
1196   asection **elf_sections;
1197 };
1198
1199 /* This represents a '.dwz' file.  */
1200
1201 struct dwz_file
1202 {
1203   /* A dwz file can only contain a few sections.  */
1204   struct dwarf2_section_info abbrev;
1205   struct dwarf2_section_info info;
1206   struct dwarf2_section_info str;
1207   struct dwarf2_section_info line;
1208   struct dwarf2_section_info macro;
1209   struct dwarf2_section_info gdb_index;
1210   struct dwarf2_section_info debug_names;
1211
1212   /* The dwz's BFD.  */
1213   bfd *dwz_bfd;
1214 };
1215
1216 /* Struct used to pass misc. parameters to read_die_and_children, et
1217    al.  which are used for both .debug_info and .debug_types dies.
1218    All parameters here are unchanging for the life of the call.  This
1219    struct exists to abstract away the constant parameters of die reading.  */
1220
1221 struct die_reader_specs
1222 {
1223   /* The bfd of die_section.  */
1224   bfd* abfd;
1225
1226   /* The CU of the DIE we are parsing.  */
1227   struct dwarf2_cu *cu;
1228
1229   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
1230   struct dwo_file *dwo_file;
1231
1232   /* The section the die comes from.
1233      This is either .debug_info or .debug_types, or the .dwo variants.  */
1234   struct dwarf2_section_info *die_section;
1235
1236   /* die_section->buffer.  */
1237   const gdb_byte *buffer;
1238
1239   /* The end of the buffer.  */
1240   const gdb_byte *buffer_end;
1241
1242   /* The value of the DW_AT_comp_dir attribute.  */
1243   const char *comp_dir;
1244 };
1245
1246 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1247 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1248                                       const gdb_byte *info_ptr,
1249                                       struct die_info *comp_unit_die,
1250                                       int has_children,
1251                                       void *data);
1252
1253 /* A 1-based directory index.  This is a strong typedef to prevent
1254    accidentally using a directory index as a 0-based index into an
1255    array/vector.  */
1256 enum class dir_index : unsigned int {};
1257
1258 /* Likewise, a 1-based file name index.  */
1259 enum class file_name_index : unsigned int {};
1260
1261 struct file_entry
1262 {
1263   file_entry () = default;
1264
1265   file_entry (const char *name_, dir_index d_index_,
1266               unsigned int mod_time_, unsigned int length_)
1267     : name (name_),
1268       d_index (d_index_),
1269       mod_time (mod_time_),
1270       length (length_)
1271   {}
1272
1273   /* Return the include directory at D_INDEX stored in LH.  Returns
1274      NULL if D_INDEX is out of bounds.  */
1275   const char *include_dir (const line_header *lh) const;
1276
1277   /* The file name.  Note this is an observing pointer.  The memory is
1278      owned by debug_line_buffer.  */
1279   const char *name {};
1280
1281   /* The directory index (1-based).  */
1282   dir_index d_index {};
1283
1284   unsigned int mod_time {};
1285
1286   unsigned int length {};
1287
1288   /* True if referenced by the Line Number Program.  */
1289   bool included_p {};
1290
1291   /* The associated symbol table, if any.  */
1292   struct symtab *symtab {};
1293 };
1294
1295 /* The line number information for a compilation unit (found in the
1296    .debug_line section) begins with a "statement program header",
1297    which contains the following information.  */
1298 struct line_header
1299 {
1300   line_header ()
1301     : offset_in_dwz {}
1302   {}
1303
1304   /* Add an entry to the include directory table.  */
1305   void add_include_dir (const char *include_dir);
1306
1307   /* Add an entry to the file name table.  */
1308   void add_file_name (const char *name, dir_index d_index,
1309                       unsigned int mod_time, unsigned int length);
1310
1311   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
1312      is out of bounds.  */
1313   const char *include_dir_at (dir_index index) const
1314   {
1315     /* Convert directory index number (1-based) to vector index
1316        (0-based).  */
1317     size_t vec_index = to_underlying (index) - 1;
1318
1319     if (vec_index >= include_dirs.size ())
1320       return NULL;
1321     return include_dirs[vec_index];
1322   }
1323
1324   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
1325      is out of bounds.  */
1326   file_entry *file_name_at (file_name_index index)
1327   {
1328     /* Convert file name index number (1-based) to vector index
1329        (0-based).  */
1330     size_t vec_index = to_underlying (index) - 1;
1331
1332     if (vec_index >= file_names.size ())
1333       return NULL;
1334     return &file_names[vec_index];
1335   }
1336
1337   /* Const version of the above.  */
1338   const file_entry *file_name_at (unsigned int index) const
1339   {
1340     if (index >= file_names.size ())
1341       return NULL;
1342     return &file_names[index];
1343   }
1344
1345   /* Offset of line number information in .debug_line section.  */
1346   sect_offset sect_off {};
1347
1348   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1349   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1350
1351   unsigned int total_length {};
1352   unsigned short version {};
1353   unsigned int header_length {};
1354   unsigned char minimum_instruction_length {};
1355   unsigned char maximum_ops_per_instruction {};
1356   unsigned char default_is_stmt {};
1357   int line_base {};
1358   unsigned char line_range {};
1359   unsigned char opcode_base {};
1360
1361   /* standard_opcode_lengths[i] is the number of operands for the
1362      standard opcode whose value is i.  This means that
1363      standard_opcode_lengths[0] is unused, and the last meaningful
1364      element is standard_opcode_lengths[opcode_base - 1].  */
1365   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1366
1367   /* The include_directories table.  Note these are observing
1368      pointers.  The memory is owned by debug_line_buffer.  */
1369   std::vector<const char *> include_dirs;
1370
1371   /* The file_names table.  */
1372   std::vector<file_entry> file_names;
1373
1374   /* The start and end of the statement program following this
1375      header.  These point into dwarf2_per_objfile->line_buffer.  */
1376   const gdb_byte *statement_program_start {}, *statement_program_end {};
1377 };
1378
1379 typedef std::unique_ptr<line_header> line_header_up;
1380
1381 const char *
1382 file_entry::include_dir (const line_header *lh) const
1383 {
1384   return lh->include_dir_at (d_index);
1385 }
1386
1387 /* When we construct a partial symbol table entry we only
1388    need this much information.  */
1389 struct partial_die_info
1390   {
1391     /* Offset of this DIE.  */
1392     sect_offset sect_off;
1393
1394     /* DWARF-2 tag for this DIE.  */
1395     ENUM_BITFIELD(dwarf_tag) tag : 16;
1396
1397     /* Assorted flags describing the data found in this DIE.  */
1398     unsigned int has_children : 1;
1399     unsigned int is_external : 1;
1400     unsigned int is_declaration : 1;
1401     unsigned int has_type : 1;
1402     unsigned int has_specification : 1;
1403     unsigned int has_pc_info : 1;
1404     unsigned int may_be_inlined : 1;
1405
1406     /* This DIE has been marked DW_AT_main_subprogram.  */
1407     unsigned int main_subprogram : 1;
1408
1409     /* Flag set if the SCOPE field of this structure has been
1410        computed.  */
1411     unsigned int scope_set : 1;
1412
1413     /* Flag set if the DIE has a byte_size attribute.  */
1414     unsigned int has_byte_size : 1;
1415
1416     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1417     unsigned int has_const_value : 1;
1418
1419     /* Flag set if any of the DIE's children are template arguments.  */
1420     unsigned int has_template_arguments : 1;
1421
1422     /* Flag set if fixup_partial_die has been called on this die.  */
1423     unsigned int fixup_called : 1;
1424
1425     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1426     unsigned int is_dwz : 1;
1427
1428     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1429     unsigned int spec_is_dwz : 1;
1430
1431     /* The name of this DIE.  Normally the value of DW_AT_name, but
1432        sometimes a default name for unnamed DIEs.  */
1433     const char *name;
1434
1435     /* The linkage name, if present.  */
1436     const char *linkage_name;
1437
1438     /* The scope to prepend to our children.  This is generally
1439        allocated on the comp_unit_obstack, so will disappear
1440        when this compilation unit leaves the cache.  */
1441     const char *scope;
1442
1443     /* Some data associated with the partial DIE.  The tag determines
1444        which field is live.  */
1445     union
1446     {
1447       /* The location description associated with this DIE, if any.  */
1448       struct dwarf_block *locdesc;
1449       /* The offset of an import, for DW_TAG_imported_unit.  */
1450       sect_offset sect_off;
1451     } d;
1452
1453     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1454     CORE_ADDR lowpc;
1455     CORE_ADDR highpc;
1456
1457     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1458        DW_AT_sibling, if any.  */
1459     /* NOTE: This member isn't strictly necessary, read_partial_die could
1460        return DW_AT_sibling values to its caller load_partial_dies.  */
1461     const gdb_byte *sibling;
1462
1463     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1464        DW_AT_specification (or DW_AT_abstract_origin or
1465        DW_AT_extension).  */
1466     sect_offset spec_offset;
1467
1468     /* Pointers to this DIE's parent, first child, and next sibling,
1469        if any.  */
1470     struct partial_die_info *die_parent, *die_child, *die_sibling;
1471   };
1472
1473 /* This data structure holds the information of an abbrev.  */
1474 struct abbrev_info
1475   {
1476     unsigned int number;        /* number identifying abbrev */
1477     enum dwarf_tag tag;         /* dwarf tag */
1478     unsigned short has_children;                /* boolean */
1479     unsigned short num_attrs;   /* number of attributes */
1480     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1481     struct abbrev_info *next;   /* next in chain */
1482   };
1483
1484 struct attr_abbrev
1485   {
1486     ENUM_BITFIELD(dwarf_attribute) name : 16;
1487     ENUM_BITFIELD(dwarf_form) form : 16;
1488
1489     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1490     LONGEST implicit_const;
1491   };
1492
1493 /* Size of abbrev_table.abbrev_hash_table.  */
1494 #define ABBREV_HASH_SIZE 121
1495
1496 /* Top level data structure to contain an abbreviation table.  */
1497
1498 struct abbrev_table
1499 {
1500   /* Where the abbrev table came from.
1501      This is used as a sanity check when the table is used.  */
1502   sect_offset sect_off;
1503
1504   /* Storage for the abbrev table.  */
1505   struct obstack abbrev_obstack;
1506
1507   /* Hash table of abbrevs.
1508      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1509      It could be statically allocated, but the previous code didn't so we
1510      don't either.  */
1511   struct abbrev_info **abbrevs;
1512 };
1513
1514 /* Attributes have a name and a value.  */
1515 struct attribute
1516   {
1517     ENUM_BITFIELD(dwarf_attribute) name : 16;
1518     ENUM_BITFIELD(dwarf_form) form : 15;
1519
1520     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1521        field should be in u.str (existing only for DW_STRING) but it is kept
1522        here for better struct attribute alignment.  */
1523     unsigned int string_is_canonical : 1;
1524
1525     union
1526       {
1527         const char *str;
1528         struct dwarf_block *blk;
1529         ULONGEST unsnd;
1530         LONGEST snd;
1531         CORE_ADDR addr;
1532         ULONGEST signature;
1533       }
1534     u;
1535   };
1536
1537 /* This data structure holds a complete die structure.  */
1538 struct die_info
1539   {
1540     /* DWARF-2 tag for this DIE.  */
1541     ENUM_BITFIELD(dwarf_tag) tag : 16;
1542
1543     /* Number of attributes */
1544     unsigned char num_attrs;
1545
1546     /* True if we're presently building the full type name for the
1547        type derived from this DIE.  */
1548     unsigned char building_fullname : 1;
1549
1550     /* True if this die is in process.  PR 16581.  */
1551     unsigned char in_process : 1;
1552
1553     /* Abbrev number */
1554     unsigned int abbrev;
1555
1556     /* Offset in .debug_info or .debug_types section.  */
1557     sect_offset sect_off;
1558
1559     /* The dies in a compilation unit form an n-ary tree.  PARENT
1560        points to this die's parent; CHILD points to the first child of
1561        this node; and all the children of a given node are chained
1562        together via their SIBLING fields.  */
1563     struct die_info *child;     /* Its first child, if any.  */
1564     struct die_info *sibling;   /* Its next sibling, if any.  */
1565     struct die_info *parent;    /* Its parent, if any.  */
1566
1567     /* An array of attributes, with NUM_ATTRS elements.  There may be
1568        zero, but it's not common and zero-sized arrays are not
1569        sufficiently portable C.  */
1570     struct attribute attrs[1];
1571   };
1572
1573 /* Get at parts of an attribute structure.  */
1574
1575 #define DW_STRING(attr)    ((attr)->u.str)
1576 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1577 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1578 #define DW_BLOCK(attr)     ((attr)->u.blk)
1579 #define DW_SND(attr)       ((attr)->u.snd)
1580 #define DW_ADDR(attr)      ((attr)->u.addr)
1581 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1582
1583 /* Blocks are a bunch of untyped bytes.  */
1584 struct dwarf_block
1585   {
1586     size_t size;
1587
1588     /* Valid only if SIZE is not zero.  */
1589     const gdb_byte *data;
1590   };
1591
1592 #ifndef ATTR_ALLOC_CHUNK
1593 #define ATTR_ALLOC_CHUNK 4
1594 #endif
1595
1596 /* Allocate fields for structs, unions and enums in this size.  */
1597 #ifndef DW_FIELD_ALLOC_CHUNK
1598 #define DW_FIELD_ALLOC_CHUNK 4
1599 #endif
1600
1601 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1602    but this would require a corresponding change in unpack_field_as_long
1603    and friends.  */
1604 static int bits_per_byte = 8;
1605
1606 struct nextfield
1607 {
1608   struct nextfield *next;
1609   int accessibility;
1610   int virtuality;
1611   struct field field;
1612 };
1613
1614 struct nextfnfield
1615 {
1616   struct nextfnfield *next;
1617   struct fn_field fnfield;
1618 };
1619
1620 struct fnfieldlist
1621 {
1622   const char *name;
1623   int length;
1624   struct nextfnfield *head;
1625 };
1626
1627 struct decl_field_list
1628 {
1629   struct decl_field field;
1630   struct decl_field_list *next;
1631 };
1632
1633 /* The routines that read and process dies for a C struct or C++ class
1634    pass lists of data member fields and lists of member function fields
1635    in an instance of a field_info structure, as defined below.  */
1636 struct field_info
1637   {
1638     /* List of data member and baseclasses fields.  */
1639     struct nextfield *fields, *baseclasses;
1640
1641     /* Number of fields (including baseclasses).  */
1642     int nfields;
1643
1644     /* Number of baseclasses.  */
1645     int nbaseclasses;
1646
1647     /* Set if the accesibility of one of the fields is not public.  */
1648     int non_public_fields;
1649
1650     /* Member function fieldlist array, contains name of possibly overloaded
1651        member function, number of overloaded member functions and a pointer
1652        to the head of the member function field chain.  */
1653     struct fnfieldlist *fnfieldlists;
1654
1655     /* Number of entries in the fnfieldlists array.  */
1656     int nfnfields;
1657
1658     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1659        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1660     struct decl_field_list *typedef_field_list;
1661     unsigned typedef_field_list_count;
1662
1663     /* Nested types defined by this class and the number of elements in this
1664        list.  */
1665     struct decl_field_list *nested_types_list;
1666     unsigned nested_types_list_count;
1667   };
1668
1669 /* One item on the queue of compilation units to read in full symbols
1670    for.  */
1671 struct dwarf2_queue_item
1672 {
1673   struct dwarf2_per_cu_data *per_cu;
1674   enum language pretend_language;
1675   struct dwarf2_queue_item *next;
1676 };
1677
1678 /* The current queue.  */
1679 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1680
1681 /* Loaded secondary compilation units are kept in memory until they
1682    have not been referenced for the processing of this many
1683    compilation units.  Set this to zero to disable caching.  Cache
1684    sizes of up to at least twenty will improve startup time for
1685    typical inter-CU-reference binaries, at an obvious memory cost.  */
1686 static int dwarf_max_cache_age = 5;
1687 static void
1688 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1689                           struct cmd_list_element *c, const char *value)
1690 {
1691   fprintf_filtered (file, _("The upper bound on the age of cached "
1692                             "DWARF compilation units is %s.\n"),
1693                     value);
1694 }
1695 \f
1696 /* local function prototypes */
1697
1698 static const char *get_section_name (const struct dwarf2_section_info *);
1699
1700 static const char *get_section_file_name (const struct dwarf2_section_info *);
1701
1702 static void dwarf2_find_base_address (struct die_info *die,
1703                                       struct dwarf2_cu *cu);
1704
1705 static struct partial_symtab *create_partial_symtab
1706   (struct dwarf2_per_cu_data *per_cu, const char *name);
1707
1708 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1709                                         const gdb_byte *info_ptr,
1710                                         struct die_info *type_unit_die,
1711                                         int has_children, void *data);
1712
1713 static void dwarf2_build_psymtabs_hard (struct objfile *);
1714
1715 static void scan_partial_symbols (struct partial_die_info *,
1716                                   CORE_ADDR *, CORE_ADDR *,
1717                                   int, struct dwarf2_cu *);
1718
1719 static void add_partial_symbol (struct partial_die_info *,
1720                                 struct dwarf2_cu *);
1721
1722 static void add_partial_namespace (struct partial_die_info *pdi,
1723                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1724                                    int set_addrmap, struct dwarf2_cu *cu);
1725
1726 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1727                                 CORE_ADDR *highpc, int set_addrmap,
1728                                 struct dwarf2_cu *cu);
1729
1730 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1731                                      struct dwarf2_cu *cu);
1732
1733 static void add_partial_subprogram (struct partial_die_info *pdi,
1734                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1735                                     int need_pc, struct dwarf2_cu *cu);
1736
1737 static void dwarf2_read_symtab (struct partial_symtab *,
1738                                 struct objfile *);
1739
1740 static void psymtab_to_symtab_1 (struct partial_symtab *);
1741
1742 static struct abbrev_info *abbrev_table_lookup_abbrev
1743   (const struct abbrev_table *, unsigned int);
1744
1745 static struct abbrev_table *abbrev_table_read_table
1746   (struct dwarf2_section_info *, sect_offset);
1747
1748 static void abbrev_table_free (struct abbrev_table *);
1749
1750 static void abbrev_table_free_cleanup (void *);
1751
1752 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1753                                  struct dwarf2_section_info *);
1754
1755 static void dwarf2_free_abbrev_table (void *);
1756
1757 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1758
1759 static struct partial_die_info *load_partial_dies
1760   (const struct die_reader_specs *, const gdb_byte *, int);
1761
1762 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1763                                          struct partial_die_info *,
1764                                          struct abbrev_info *,
1765                                          unsigned int,
1766                                          const gdb_byte *);
1767
1768 static struct partial_die_info *find_partial_die (sect_offset, int,
1769                                                   struct dwarf2_cu *);
1770
1771 static void fixup_partial_die (struct partial_die_info *,
1772                                struct dwarf2_cu *);
1773
1774 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1775                                        struct attribute *, struct attr_abbrev *,
1776                                        const gdb_byte *);
1777
1778 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1779
1780 static int read_1_signed_byte (bfd *, const gdb_byte *);
1781
1782 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1783
1784 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1785
1786 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1787
1788 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1789                                unsigned int *);
1790
1791 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1792
1793 static LONGEST read_checked_initial_length_and_offset
1794   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1795    unsigned int *, unsigned int *);
1796
1797 static LONGEST read_offset (bfd *, const gdb_byte *,
1798                             const struct comp_unit_head *,
1799                             unsigned int *);
1800
1801 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1802
1803 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1804                                        sect_offset);
1805
1806 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1807
1808 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1809
1810 static const char *read_indirect_string (bfd *, const gdb_byte *,
1811                                          const struct comp_unit_head *,
1812                                          unsigned int *);
1813
1814 static const char *read_indirect_line_string (bfd *, const gdb_byte *,
1815                                               const struct comp_unit_head *,
1816                                               unsigned int *);
1817
1818 static const char *read_indirect_string_at_offset (bfd *abfd,
1819                                                    LONGEST str_offset);
1820
1821 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1822
1823 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1824
1825 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1826                                               const gdb_byte *,
1827                                               unsigned int *);
1828
1829 static const char *read_str_index (const struct die_reader_specs *reader,
1830                                    ULONGEST str_index);
1831
1832 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1833
1834 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1835                                       struct dwarf2_cu *);
1836
1837 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1838                                                 unsigned int);
1839
1840 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1841                                        struct dwarf2_cu *cu);
1842
1843 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1844                                struct dwarf2_cu *cu);
1845
1846 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1847
1848 static struct die_info *die_specification (struct die_info *die,
1849                                            struct dwarf2_cu **);
1850
1851 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1852                                                 struct dwarf2_cu *cu);
1853
1854 static void dwarf_decode_lines (struct line_header *, const char *,
1855                                 struct dwarf2_cu *, struct partial_symtab *,
1856                                 CORE_ADDR, int decode_mapping);
1857
1858 static void dwarf2_start_subfile (const char *, const char *);
1859
1860 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1861                                                     const char *, const char *,
1862                                                     CORE_ADDR);
1863
1864 static struct symbol *new_symbol (struct die_info *, struct type *,
1865                                   struct dwarf2_cu *);
1866
1867 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1868                                        struct dwarf2_cu *, struct symbol *);
1869
1870 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1871                                 struct dwarf2_cu *);
1872
1873 static void dwarf2_const_value_attr (const struct attribute *attr,
1874                                      struct type *type,
1875                                      const char *name,
1876                                      struct obstack *obstack,
1877                                      struct dwarf2_cu *cu, LONGEST *value,
1878                                      const gdb_byte **bytes,
1879                                      struct dwarf2_locexpr_baton **baton);
1880
1881 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1882
1883 static int need_gnat_info (struct dwarf2_cu *);
1884
1885 static struct type *die_descriptive_type (struct die_info *,
1886                                           struct dwarf2_cu *);
1887
1888 static void set_descriptive_type (struct type *, struct die_info *,
1889                                   struct dwarf2_cu *);
1890
1891 static struct type *die_containing_type (struct die_info *,
1892                                          struct dwarf2_cu *);
1893
1894 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1895                                      struct dwarf2_cu *);
1896
1897 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1898
1899 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1900
1901 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1902
1903 static char *typename_concat (struct obstack *obs, const char *prefix,
1904                               const char *suffix, int physname,
1905                               struct dwarf2_cu *cu);
1906
1907 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1908
1909 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1910
1911 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1912
1913 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1914
1915 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1916
1917 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1918
1919 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1920                                struct dwarf2_cu *, struct partial_symtab *);
1921
1922 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1923    values.  Keep the items ordered with increasing constraints compliance.  */
1924 enum pc_bounds_kind
1925 {
1926   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1927   PC_BOUNDS_NOT_PRESENT,
1928
1929   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1930      were present but they do not form a valid range of PC addresses.  */
1931   PC_BOUNDS_INVALID,
1932
1933   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1934   PC_BOUNDS_RANGES,
1935
1936   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1937   PC_BOUNDS_HIGH_LOW,
1938 };
1939
1940 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1941                                                  CORE_ADDR *, CORE_ADDR *,
1942                                                  struct dwarf2_cu *,
1943                                                  struct partial_symtab *);
1944
1945 static void get_scope_pc_bounds (struct die_info *,
1946                                  CORE_ADDR *, CORE_ADDR *,
1947                                  struct dwarf2_cu *);
1948
1949 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1950                                         CORE_ADDR, struct dwarf2_cu *);
1951
1952 static void dwarf2_add_field (struct field_info *, struct die_info *,
1953                               struct dwarf2_cu *);
1954
1955 static void dwarf2_attach_fields_to_type (struct field_info *,
1956                                           struct type *, struct dwarf2_cu *);
1957
1958 static void dwarf2_add_member_fn (struct field_info *,
1959                                   struct die_info *, struct type *,
1960                                   struct dwarf2_cu *);
1961
1962 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1963                                              struct type *,
1964                                              struct dwarf2_cu *);
1965
1966 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1967
1968 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1969
1970 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1971
1972 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1973
1974 static struct using_direct **using_directives (enum language);
1975
1976 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1977
1978 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1979
1980 static struct type *read_module_type (struct die_info *die,
1981                                       struct dwarf2_cu *cu);
1982
1983 static const char *namespace_name (struct die_info *die,
1984                                    int *is_anonymous, struct dwarf2_cu *);
1985
1986 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1987
1988 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1989
1990 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1991                                                        struct dwarf2_cu *);
1992
1993 static struct die_info *read_die_and_siblings_1
1994   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1995    struct die_info *);
1996
1997 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1998                                                const gdb_byte *info_ptr,
1999                                                const gdb_byte **new_info_ptr,
2000                                                struct die_info *parent);
2001
2002 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
2003                                         struct die_info **, const gdb_byte *,
2004                                         int *, int);
2005
2006 static const gdb_byte *read_full_die (const struct die_reader_specs *,
2007                                       struct die_info **, const gdb_byte *,
2008                                       int *);
2009
2010 static void process_die (struct die_info *, struct dwarf2_cu *);
2011
2012 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
2013                                              struct obstack *);
2014
2015 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
2016
2017 static const char *dwarf2_full_name (const char *name,
2018                                      struct die_info *die,
2019                                      struct dwarf2_cu *cu);
2020
2021 static const char *dwarf2_physname (const char *name, struct die_info *die,
2022                                     struct dwarf2_cu *cu);
2023
2024 static struct die_info *dwarf2_extension (struct die_info *die,
2025                                           struct dwarf2_cu **);
2026
2027 static const char *dwarf_tag_name (unsigned int);
2028
2029 static const char *dwarf_attr_name (unsigned int);
2030
2031 static const char *dwarf_form_name (unsigned int);
2032
2033 static const char *dwarf_bool_name (unsigned int);
2034
2035 static const char *dwarf_type_encoding_name (unsigned int);
2036
2037 static struct die_info *sibling_die (struct die_info *);
2038
2039 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
2040
2041 static void dump_die_for_error (struct die_info *);
2042
2043 static void dump_die_1 (struct ui_file *, int level, int max_level,
2044                         struct die_info *);
2045
2046 /*static*/ void dump_die (struct die_info *, int max_level);
2047
2048 static void store_in_ref_table (struct die_info *,
2049                                 struct dwarf2_cu *);
2050
2051 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
2052
2053 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
2054
2055 static struct die_info *follow_die_ref_or_sig (struct die_info *,
2056                                                const struct attribute *,
2057                                                struct dwarf2_cu **);
2058
2059 static struct die_info *follow_die_ref (struct die_info *,
2060                                         const struct attribute *,
2061                                         struct dwarf2_cu **);
2062
2063 static struct die_info *follow_die_sig (struct die_info *,
2064                                         const struct attribute *,
2065                                         struct dwarf2_cu **);
2066
2067 static struct type *get_signatured_type (struct die_info *, ULONGEST,
2068                                          struct dwarf2_cu *);
2069
2070 static struct type *get_DW_AT_signature_type (struct die_info *,
2071                                               const struct attribute *,
2072                                               struct dwarf2_cu *);
2073
2074 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
2075
2076 static void read_signatured_type (struct signatured_type *);
2077
2078 static int attr_to_dynamic_prop (const struct attribute *attr,
2079                                  struct die_info *die, struct dwarf2_cu *cu,
2080                                  struct dynamic_prop *prop);
2081
2082 /* memory allocation interface */
2083
2084 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
2085
2086 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
2087
2088 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2089
2090 static int attr_form_is_block (const struct attribute *);
2091
2092 static int attr_form_is_section_offset (const struct attribute *);
2093
2094 static int attr_form_is_constant (const struct attribute *);
2095
2096 static int attr_form_is_ref (const struct attribute *);
2097
2098 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
2099                                    struct dwarf2_loclist_baton *baton,
2100                                    const struct attribute *attr);
2101
2102 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
2103                                          struct symbol *sym,
2104                                          struct dwarf2_cu *cu,
2105                                          int is_block);
2106
2107 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
2108                                      const gdb_byte *info_ptr,
2109                                      struct abbrev_info *abbrev);
2110
2111 static void free_stack_comp_unit (void *);
2112
2113 static hashval_t partial_die_hash (const void *item);
2114
2115 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
2116
2117 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
2118   (sect_offset sect_off, unsigned int offset_in_dwz, struct objfile *objfile);
2119
2120 static void init_one_comp_unit (struct dwarf2_cu *cu,
2121                                 struct dwarf2_per_cu_data *per_cu);
2122
2123 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
2124                                    struct die_info *comp_unit_die,
2125                                    enum language pretend_language);
2126
2127 static void free_heap_comp_unit (void *);
2128
2129 static void free_cached_comp_units (void *);
2130
2131 static void age_cached_comp_units (void);
2132
2133 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
2134
2135 static struct type *set_die_type (struct die_info *, struct type *,
2136                                   struct dwarf2_cu *);
2137
2138 static void create_all_comp_units (struct objfile *);
2139
2140 static int create_all_type_units (struct objfile *);
2141
2142 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
2143                                  enum language);
2144
2145 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
2146                                     enum language);
2147
2148 static void process_full_type_unit (struct dwarf2_per_cu_data *,
2149                                     enum language);
2150
2151 static void dwarf2_add_dependence (struct dwarf2_cu *,
2152                                    struct dwarf2_per_cu_data *);
2153
2154 static void dwarf2_mark (struct dwarf2_cu *);
2155
2156 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
2157
2158 static struct type *get_die_type_at_offset (sect_offset,
2159                                             struct dwarf2_per_cu_data *);
2160
2161 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
2162
2163 static void dwarf2_release_queue (void *dummy);
2164
2165 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
2166                              enum language pretend_language);
2167
2168 static void process_queue (void);
2169
2170 /* The return type of find_file_and_directory.  Note, the enclosed
2171    string pointers are only valid while this object is valid.  */
2172
2173 struct file_and_directory
2174 {
2175   /* The filename.  This is never NULL.  */
2176   const char *name;
2177
2178   /* The compilation directory.  NULL if not known.  If we needed to
2179      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
2180      points directly to the DW_AT_comp_dir string attribute owned by
2181      the obstack that owns the DIE.  */
2182   const char *comp_dir;
2183
2184   /* If we needed to build a new string for comp_dir, this is what
2185      owns the storage.  */
2186   std::string comp_dir_storage;
2187 };
2188
2189 static file_and_directory find_file_and_directory (struct die_info *die,
2190                                                    struct dwarf2_cu *cu);
2191
2192 static char *file_full_name (int file, struct line_header *lh,
2193                              const char *comp_dir);
2194
2195 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
2196 enum class rcuh_kind { COMPILE, TYPE };
2197
2198 static const gdb_byte *read_and_check_comp_unit_head
2199   (struct comp_unit_head *header,
2200    struct dwarf2_section_info *section,
2201    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
2202    rcuh_kind section_kind);
2203
2204 static void init_cutu_and_read_dies
2205   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
2206    int use_existing_cu, int keep,
2207    die_reader_func_ftype *die_reader_func, void *data);
2208
2209 static void init_cutu_and_read_dies_simple
2210   (struct dwarf2_per_cu_data *this_cu,
2211    die_reader_func_ftype *die_reader_func, void *data);
2212
2213 static htab_t allocate_signatured_type_table (struct objfile *objfile);
2214
2215 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
2216
2217 static struct dwo_unit *lookup_dwo_unit_in_dwp
2218   (struct dwp_file *dwp_file, const char *comp_dir,
2219    ULONGEST signature, int is_debug_types);
2220
2221 static struct dwp_file *get_dwp_file (void);
2222
2223 static struct dwo_unit *lookup_dwo_comp_unit
2224   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
2225
2226 static struct dwo_unit *lookup_dwo_type_unit
2227   (struct signatured_type *, const char *, const char *);
2228
2229 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2230
2231 static void free_dwo_file_cleanup (void *);
2232
2233 static void process_cu_includes (void);
2234
2235 static void check_producer (struct dwarf2_cu *cu);
2236
2237 static void free_line_header_voidp (void *arg);
2238 \f
2239 /* Various complaints about symbol reading that don't abort the process.  */
2240
2241 static void
2242 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2243 {
2244   complaint (&symfile_complaints,
2245              _("statement list doesn't fit in .debug_line section"));
2246 }
2247
2248 static void
2249 dwarf2_debug_line_missing_file_complaint (void)
2250 {
2251   complaint (&symfile_complaints,
2252              _(".debug_line section has line data without a file"));
2253 }
2254
2255 static void
2256 dwarf2_debug_line_missing_end_sequence_complaint (void)
2257 {
2258   complaint (&symfile_complaints,
2259              _(".debug_line section has line "
2260                "program sequence without an end"));
2261 }
2262
2263 static void
2264 dwarf2_complex_location_expr_complaint (void)
2265 {
2266   complaint (&symfile_complaints, _("location expression too complex"));
2267 }
2268
2269 static void
2270 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2271                                               int arg3)
2272 {
2273   complaint (&symfile_complaints,
2274              _("const value length mismatch for '%s', got %d, expected %d"),
2275              arg1, arg2, arg3);
2276 }
2277
2278 static void
2279 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2280 {
2281   complaint (&symfile_complaints,
2282              _("debug info runs off end of %s section"
2283                " [in module %s]"),
2284              get_section_name (section),
2285              get_section_file_name (section));
2286 }
2287
2288 static void
2289 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2290 {
2291   complaint (&symfile_complaints,
2292              _("macro debug info contains a "
2293                "malformed macro definition:\n`%s'"),
2294              arg1);
2295 }
2296
2297 static void
2298 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2299 {
2300   complaint (&symfile_complaints,
2301              _("invalid attribute class or form for '%s' in '%s'"),
2302              arg1, arg2);
2303 }
2304
2305 /* Hash function for line_header_hash.  */
2306
2307 static hashval_t
2308 line_header_hash (const struct line_header *ofs)
2309 {
2310   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2311 }
2312
2313 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2314
2315 static hashval_t
2316 line_header_hash_voidp (const void *item)
2317 {
2318   const struct line_header *ofs = (const struct line_header *) item;
2319
2320   return line_header_hash (ofs);
2321 }
2322
2323 /* Equality function for line_header_hash.  */
2324
2325 static int
2326 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2327 {
2328   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2329   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2330
2331   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2332           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2333 }
2334
2335 \f
2336
2337 /* Read the given attribute value as an address, taking the attribute's
2338    form into account.  */
2339
2340 static CORE_ADDR
2341 attr_value_as_address (struct attribute *attr)
2342 {
2343   CORE_ADDR addr;
2344
2345   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2346     {
2347       /* Aside from a few clearly defined exceptions, attributes that
2348          contain an address must always be in DW_FORM_addr form.
2349          Unfortunately, some compilers happen to be violating this
2350          requirement by encoding addresses using other forms, such
2351          as DW_FORM_data4 for example.  For those broken compilers,
2352          we try to do our best, without any guarantee of success,
2353          to interpret the address correctly.  It would also be nice
2354          to generate a complaint, but that would require us to maintain
2355          a list of legitimate cases where a non-address form is allowed,
2356          as well as update callers to pass in at least the CU's DWARF
2357          version.  This is more overhead than what we're willing to
2358          expand for a pretty rare case.  */
2359       addr = DW_UNSND (attr);
2360     }
2361   else
2362     addr = DW_ADDR (attr);
2363
2364   return addr;
2365 }
2366
2367 /* The suffix for an index file.  */
2368 #define INDEX4_SUFFIX ".gdb-index"
2369 #define INDEX5_SUFFIX ".debug_names"
2370 #define DEBUG_STR_SUFFIX ".debug_str"
2371
2372 /* See declaration.  */
2373
2374 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2375                                         const dwarf2_debug_sections *names)
2376   : objfile (objfile_)
2377 {
2378   if (names == NULL)
2379     names = &dwarf2_elf_names;
2380
2381   bfd *obfd = objfile->obfd;
2382
2383   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2384     locate_sections (obfd, sec, *names);
2385 }
2386
2387 dwarf2_per_objfile::~dwarf2_per_objfile ()
2388 {
2389   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2390   free_cached_comp_units ();
2391
2392   if (quick_file_names_table)
2393     htab_delete (quick_file_names_table);
2394
2395   if (line_header_hash)
2396     htab_delete (line_header_hash);
2397
2398   /* Everything else should be on the objfile obstack.  */
2399 }
2400
2401 /* See declaration.  */
2402
2403 void
2404 dwarf2_per_objfile::free_cached_comp_units ()
2405 {
2406   dwarf2_per_cu_data *per_cu = read_in_chain;
2407   dwarf2_per_cu_data **last_chain = &read_in_chain;
2408   while (per_cu != NULL)
2409     {
2410       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2411
2412       free_heap_comp_unit (per_cu->cu);
2413       *last_chain = next_cu;
2414       per_cu = next_cu;
2415     }
2416 }
2417
2418 /* Try to locate the sections we need for DWARF 2 debugging
2419    information and return true if we have enough to do something.
2420    NAMES points to the dwarf2 section names, or is NULL if the standard
2421    ELF names are used.  */
2422
2423 int
2424 dwarf2_has_info (struct objfile *objfile,
2425                  const struct dwarf2_debug_sections *names)
2426 {
2427   if (objfile->flags & OBJF_READNEVER)
2428     return 0;
2429
2430   dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
2431                         objfile_data (objfile, dwarf2_objfile_data_key));
2432   if (!dwarf2_per_objfile)
2433     {
2434       /* Initialize per-objfile state.  */
2435       struct dwarf2_per_objfile *data
2436         = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_objfile);
2437
2438       dwarf2_per_objfile = new (data) struct dwarf2_per_objfile (objfile, names);
2439       set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
2440     }
2441   return (!dwarf2_per_objfile->info.is_virtual
2442           && dwarf2_per_objfile->info.s.section != NULL
2443           && !dwarf2_per_objfile->abbrev.is_virtual
2444           && dwarf2_per_objfile->abbrev.s.section != NULL);
2445 }
2446
2447 /* Return the containing section of virtual section SECTION.  */
2448
2449 static struct dwarf2_section_info *
2450 get_containing_section (const struct dwarf2_section_info *section)
2451 {
2452   gdb_assert (section->is_virtual);
2453   return section->s.containing_section;
2454 }
2455
2456 /* Return the bfd owner of SECTION.  */
2457
2458 static struct bfd *
2459 get_section_bfd_owner (const struct dwarf2_section_info *section)
2460 {
2461   if (section->is_virtual)
2462     {
2463       section = get_containing_section (section);
2464       gdb_assert (!section->is_virtual);
2465     }
2466   return section->s.section->owner;
2467 }
2468
2469 /* Return the bfd section of SECTION.
2470    Returns NULL if the section is not present.  */
2471
2472 static asection *
2473 get_section_bfd_section (const struct dwarf2_section_info *section)
2474 {
2475   if (section->is_virtual)
2476     {
2477       section = get_containing_section (section);
2478       gdb_assert (!section->is_virtual);
2479     }
2480   return section->s.section;
2481 }
2482
2483 /* Return the name of SECTION.  */
2484
2485 static const char *
2486 get_section_name (const struct dwarf2_section_info *section)
2487 {
2488   asection *sectp = get_section_bfd_section (section);
2489
2490   gdb_assert (sectp != NULL);
2491   return bfd_section_name (get_section_bfd_owner (section), sectp);
2492 }
2493
2494 /* Return the name of the file SECTION is in.  */
2495
2496 static const char *
2497 get_section_file_name (const struct dwarf2_section_info *section)
2498 {
2499   bfd *abfd = get_section_bfd_owner (section);
2500
2501   return bfd_get_filename (abfd);
2502 }
2503
2504 /* Return the id of SECTION.
2505    Returns 0 if SECTION doesn't exist.  */
2506
2507 static int
2508 get_section_id (const struct dwarf2_section_info *section)
2509 {
2510   asection *sectp = get_section_bfd_section (section);
2511
2512   if (sectp == NULL)
2513     return 0;
2514   return sectp->id;
2515 }
2516
2517 /* Return the flags of SECTION.
2518    SECTION (or containing section if this is a virtual section) must exist.  */
2519
2520 static int
2521 get_section_flags (const struct dwarf2_section_info *section)
2522 {
2523   asection *sectp = get_section_bfd_section (section);
2524
2525   gdb_assert (sectp != NULL);
2526   return bfd_get_section_flags (sectp->owner, sectp);
2527 }
2528
2529 /* When loading sections, we look either for uncompressed section or for
2530    compressed section names.  */
2531
2532 static int
2533 section_is_p (const char *section_name,
2534               const struct dwarf2_section_names *names)
2535 {
2536   if (names->normal != NULL
2537       && strcmp (section_name, names->normal) == 0)
2538     return 1;
2539   if (names->compressed != NULL
2540       && strcmp (section_name, names->compressed) == 0)
2541     return 1;
2542   return 0;
2543 }
2544
2545 /* See declaration.  */
2546
2547 void
2548 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2549                                      const dwarf2_debug_sections &names)
2550 {
2551   flagword aflag = bfd_get_section_flags (abfd, sectp);
2552
2553   if ((aflag & SEC_HAS_CONTENTS) == 0)
2554     {
2555     }
2556   else if (section_is_p (sectp->name, &names.info))
2557     {
2558       this->info.s.section = sectp;
2559       this->info.size = bfd_get_section_size (sectp);
2560     }
2561   else if (section_is_p (sectp->name, &names.abbrev))
2562     {
2563       this->abbrev.s.section = sectp;
2564       this->abbrev.size = bfd_get_section_size (sectp);
2565     }
2566   else if (section_is_p (sectp->name, &names.line))
2567     {
2568       this->line.s.section = sectp;
2569       this->line.size = bfd_get_section_size (sectp);
2570     }
2571   else if (section_is_p (sectp->name, &names.loc))
2572     {
2573       this->loc.s.section = sectp;
2574       this->loc.size = bfd_get_section_size (sectp);
2575     }
2576   else if (section_is_p (sectp->name, &names.loclists))
2577     {
2578       this->loclists.s.section = sectp;
2579       this->loclists.size = bfd_get_section_size (sectp);
2580     }
2581   else if (section_is_p (sectp->name, &names.macinfo))
2582     {
2583       this->macinfo.s.section = sectp;
2584       this->macinfo.size = bfd_get_section_size (sectp);
2585     }
2586   else if (section_is_p (sectp->name, &names.macro))
2587     {
2588       this->macro.s.section = sectp;
2589       this->macro.size = bfd_get_section_size (sectp);
2590     }
2591   else if (section_is_p (sectp->name, &names.str))
2592     {
2593       this->str.s.section = sectp;
2594       this->str.size = bfd_get_section_size (sectp);
2595     }
2596   else if (section_is_p (sectp->name, &names.line_str))
2597     {
2598       this->line_str.s.section = sectp;
2599       this->line_str.size = bfd_get_section_size (sectp);
2600     }
2601   else if (section_is_p (sectp->name, &names.addr))
2602     {
2603       this->addr.s.section = sectp;
2604       this->addr.size = bfd_get_section_size (sectp);
2605     }
2606   else if (section_is_p (sectp->name, &names.frame))
2607     {
2608       this->frame.s.section = sectp;
2609       this->frame.size = bfd_get_section_size (sectp);
2610     }
2611   else if (section_is_p (sectp->name, &names.eh_frame))
2612     {
2613       this->eh_frame.s.section = sectp;
2614       this->eh_frame.size = bfd_get_section_size (sectp);
2615     }
2616   else if (section_is_p (sectp->name, &names.ranges))
2617     {
2618       this->ranges.s.section = sectp;
2619       this->ranges.size = bfd_get_section_size (sectp);
2620     }
2621   else if (section_is_p (sectp->name, &names.rnglists))
2622     {
2623       this->rnglists.s.section = sectp;
2624       this->rnglists.size = bfd_get_section_size (sectp);
2625     }
2626   else if (section_is_p (sectp->name, &names.types))
2627     {
2628       struct dwarf2_section_info type_section;
2629
2630       memset (&type_section, 0, sizeof (type_section));
2631       type_section.s.section = sectp;
2632       type_section.size = bfd_get_section_size (sectp);
2633
2634       VEC_safe_push (dwarf2_section_info_def, this->types,
2635                      &type_section);
2636     }
2637   else if (section_is_p (sectp->name, &names.gdb_index))
2638     {
2639       this->gdb_index.s.section = sectp;
2640       this->gdb_index.size = bfd_get_section_size (sectp);
2641     }
2642   else if (section_is_p (sectp->name, &names.debug_names))
2643     {
2644       this->debug_names.s.section = sectp;
2645       this->debug_names.size = bfd_get_section_size (sectp);
2646     }
2647   else if (section_is_p (sectp->name, &names.debug_aranges))
2648     {
2649       this->debug_aranges.s.section = sectp;
2650       this->debug_aranges.size = bfd_get_section_size (sectp);
2651     }
2652
2653   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2654       && bfd_section_vma (abfd, sectp) == 0)
2655     this->has_section_at_zero = true;
2656 }
2657
2658 /* A helper function that decides whether a section is empty,
2659    or not present.  */
2660
2661 static int
2662 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2663 {
2664   if (section->is_virtual)
2665     return section->size == 0;
2666   return section->s.section == NULL || section->size == 0;
2667 }
2668
2669 /* Read the contents of the section INFO.
2670    OBJFILE is the main object file, but not necessarily the file where
2671    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2672    of the DWO file.
2673    If the section is compressed, uncompress it before returning.  */
2674
2675 static void
2676 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2677 {
2678   asection *sectp;
2679   bfd *abfd;
2680   gdb_byte *buf, *retbuf;
2681
2682   if (info->readin)
2683     return;
2684   info->buffer = NULL;
2685   info->readin = 1;
2686
2687   if (dwarf2_section_empty_p (info))
2688     return;
2689
2690   sectp = get_section_bfd_section (info);
2691
2692   /* If this is a virtual section we need to read in the real one first.  */
2693   if (info->is_virtual)
2694     {
2695       struct dwarf2_section_info *containing_section =
2696         get_containing_section (info);
2697
2698       gdb_assert (sectp != NULL);
2699       if ((sectp->flags & SEC_RELOC) != 0)
2700         {
2701           error (_("Dwarf Error: DWP format V2 with relocations is not"
2702                    " supported in section %s [in module %s]"),
2703                  get_section_name (info), get_section_file_name (info));
2704         }
2705       dwarf2_read_section (objfile, containing_section);
2706       /* Other code should have already caught virtual sections that don't
2707          fit.  */
2708       gdb_assert (info->virtual_offset + info->size
2709                   <= containing_section->size);
2710       /* If the real section is empty or there was a problem reading the
2711          section we shouldn't get here.  */
2712       gdb_assert (containing_section->buffer != NULL);
2713       info->buffer = containing_section->buffer + info->virtual_offset;
2714       return;
2715     }
2716
2717   /* If the section has relocations, we must read it ourselves.
2718      Otherwise we attach it to the BFD.  */
2719   if ((sectp->flags & SEC_RELOC) == 0)
2720     {
2721       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2722       return;
2723     }
2724
2725   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2726   info->buffer = buf;
2727
2728   /* When debugging .o files, we may need to apply relocations; see
2729      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2730      We never compress sections in .o files, so we only need to
2731      try this when the section is not compressed.  */
2732   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2733   if (retbuf != NULL)
2734     {
2735       info->buffer = retbuf;
2736       return;
2737     }
2738
2739   abfd = get_section_bfd_owner (info);
2740   gdb_assert (abfd != NULL);
2741
2742   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2743       || bfd_bread (buf, info->size, abfd) != info->size)
2744     {
2745       error (_("Dwarf Error: Can't read DWARF data"
2746                " in section %s [in module %s]"),
2747              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2748     }
2749 }
2750
2751 /* A helper function that returns the size of a section in a safe way.
2752    If you are positive that the section has been read before using the
2753    size, then it is safe to refer to the dwarf2_section_info object's
2754    "size" field directly.  In other cases, you must call this
2755    function, because for compressed sections the size field is not set
2756    correctly until the section has been read.  */
2757
2758 static bfd_size_type
2759 dwarf2_section_size (struct objfile *objfile,
2760                      struct dwarf2_section_info *info)
2761 {
2762   if (!info->readin)
2763     dwarf2_read_section (objfile, info);
2764   return info->size;
2765 }
2766
2767 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2768    SECTION_NAME.  */
2769
2770 void
2771 dwarf2_get_section_info (struct objfile *objfile,
2772                          enum dwarf2_section_enum sect,
2773                          asection **sectp, const gdb_byte **bufp,
2774                          bfd_size_type *sizep)
2775 {
2776   struct dwarf2_per_objfile *data
2777     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2778                                                   dwarf2_objfile_data_key);
2779   struct dwarf2_section_info *info;
2780
2781   /* We may see an objfile without any DWARF, in which case we just
2782      return nothing.  */
2783   if (data == NULL)
2784     {
2785       *sectp = NULL;
2786       *bufp = NULL;
2787       *sizep = 0;
2788       return;
2789     }
2790   switch (sect)
2791     {
2792     case DWARF2_DEBUG_FRAME:
2793       info = &data->frame;
2794       break;
2795     case DWARF2_EH_FRAME:
2796       info = &data->eh_frame;
2797       break;
2798     default:
2799       gdb_assert_not_reached ("unexpected section");
2800     }
2801
2802   dwarf2_read_section (objfile, info);
2803
2804   *sectp = get_section_bfd_section (info);
2805   *bufp = info->buffer;
2806   *sizep = info->size;
2807 }
2808
2809 /* A helper function to find the sections for a .dwz file.  */
2810
2811 static void
2812 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2813 {
2814   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2815
2816   /* Note that we only support the standard ELF names, because .dwz
2817      is ELF-only (at the time of writing).  */
2818   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2819     {
2820       dwz_file->abbrev.s.section = sectp;
2821       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2822     }
2823   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2824     {
2825       dwz_file->info.s.section = sectp;
2826       dwz_file->info.size = bfd_get_section_size (sectp);
2827     }
2828   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2829     {
2830       dwz_file->str.s.section = sectp;
2831       dwz_file->str.size = bfd_get_section_size (sectp);
2832     }
2833   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2834     {
2835       dwz_file->line.s.section = sectp;
2836       dwz_file->line.size = bfd_get_section_size (sectp);
2837     }
2838   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2839     {
2840       dwz_file->macro.s.section = sectp;
2841       dwz_file->macro.size = bfd_get_section_size (sectp);
2842     }
2843   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2844     {
2845       dwz_file->gdb_index.s.section = sectp;
2846       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2847     }
2848   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2849     {
2850       dwz_file->debug_names.s.section = sectp;
2851       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2852     }
2853 }
2854
2855 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2856    there is no .gnu_debugaltlink section in the file.  Error if there
2857    is such a section but the file cannot be found.  */
2858
2859 static struct dwz_file *
2860 dwarf2_get_dwz_file (void)
2861 {
2862   const char *filename;
2863   struct dwz_file *result;
2864   bfd_size_type buildid_len_arg;
2865   size_t buildid_len;
2866   bfd_byte *buildid;
2867
2868   if (dwarf2_per_objfile->dwz_file != NULL)
2869     return dwarf2_per_objfile->dwz_file;
2870
2871   bfd_set_error (bfd_error_no_error);
2872   gdb::unique_xmalloc_ptr<char> data
2873     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2874                                   &buildid_len_arg, &buildid));
2875   if (data == NULL)
2876     {
2877       if (bfd_get_error () == bfd_error_no_error)
2878         return NULL;
2879       error (_("could not read '.gnu_debugaltlink' section: %s"),
2880              bfd_errmsg (bfd_get_error ()));
2881     }
2882
2883   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2884
2885   buildid_len = (size_t) buildid_len_arg;
2886
2887   filename = data.get ();
2888
2889   std::string abs_storage;
2890   if (!IS_ABSOLUTE_PATH (filename))
2891     {
2892       gdb::unique_xmalloc_ptr<char> abs
2893         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2894
2895       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2896       filename = abs_storage.c_str ();
2897     }
2898
2899   /* First try the file name given in the section.  If that doesn't
2900      work, try to use the build-id instead.  */
2901   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2902   if (dwz_bfd != NULL)
2903     {
2904       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2905         dwz_bfd.release ();
2906     }
2907
2908   if (dwz_bfd == NULL)
2909     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2910
2911   if (dwz_bfd == NULL)
2912     error (_("could not find '.gnu_debugaltlink' file for %s"),
2913            objfile_name (dwarf2_per_objfile->objfile));
2914
2915   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2916                            struct dwz_file);
2917   result->dwz_bfd = dwz_bfd.release ();
2918
2919   bfd_map_over_sections (result->dwz_bfd, locate_dwz_sections, result);
2920
2921   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, result->dwz_bfd);
2922   dwarf2_per_objfile->dwz_file = result;
2923   return result;
2924 }
2925 \f
2926 /* DWARF quick_symbols_functions support.  */
2927
2928 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2929    unique line tables, so we maintain a separate table of all .debug_line
2930    derived entries to support the sharing.
2931    All the quick functions need is the list of file names.  We discard the
2932    line_header when we're done and don't need to record it here.  */
2933 struct quick_file_names
2934 {
2935   /* The data used to construct the hash key.  */
2936   struct stmt_list_hash hash;
2937
2938   /* The number of entries in file_names, real_names.  */
2939   unsigned int num_file_names;
2940
2941   /* The file names from the line table, after being run through
2942      file_full_name.  */
2943   const char **file_names;
2944
2945   /* The file names from the line table after being run through
2946      gdb_realpath.  These are computed lazily.  */
2947   const char **real_names;
2948 };
2949
2950 /* When using the index (and thus not using psymtabs), each CU has an
2951    object of this type.  This is used to hold information needed by
2952    the various "quick" methods.  */
2953 struct dwarf2_per_cu_quick_data
2954 {
2955   /* The file table.  This can be NULL if there was no file table
2956      or it's currently not read in.
2957      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2958   struct quick_file_names *file_names;
2959
2960   /* The corresponding symbol table.  This is NULL if symbols for this
2961      CU have not yet been read.  */
2962   struct compunit_symtab *compunit_symtab;
2963
2964   /* A temporary mark bit used when iterating over all CUs in
2965      expand_symtabs_matching.  */
2966   unsigned int mark : 1;
2967
2968   /* True if we've tried to read the file table and found there isn't one.
2969      There will be no point in trying to read it again next time.  */
2970   unsigned int no_file_data : 1;
2971 };
2972
2973 /* Utility hash function for a stmt_list_hash.  */
2974
2975 static hashval_t
2976 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2977 {
2978   hashval_t v = 0;
2979
2980   if (stmt_list_hash->dwo_unit != NULL)
2981     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2982   v += to_underlying (stmt_list_hash->line_sect_off);
2983   return v;
2984 }
2985
2986 /* Utility equality function for a stmt_list_hash.  */
2987
2988 static int
2989 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2990                     const struct stmt_list_hash *rhs)
2991 {
2992   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2993     return 0;
2994   if (lhs->dwo_unit != NULL
2995       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2996     return 0;
2997
2998   return lhs->line_sect_off == rhs->line_sect_off;
2999 }
3000
3001 /* Hash function for a quick_file_names.  */
3002
3003 static hashval_t
3004 hash_file_name_entry (const void *e)
3005 {
3006   const struct quick_file_names *file_data
3007     = (const struct quick_file_names *) e;
3008
3009   return hash_stmt_list_entry (&file_data->hash);
3010 }
3011
3012 /* Equality function for a quick_file_names.  */
3013
3014 static int
3015 eq_file_name_entry (const void *a, const void *b)
3016 {
3017   const struct quick_file_names *ea = (const struct quick_file_names *) a;
3018   const struct quick_file_names *eb = (const struct quick_file_names *) b;
3019
3020   return eq_stmt_list_entry (&ea->hash, &eb->hash);
3021 }
3022
3023 /* Delete function for a quick_file_names.  */
3024
3025 static void
3026 delete_file_name_entry (void *e)
3027 {
3028   struct quick_file_names *file_data = (struct quick_file_names *) e;
3029   int i;
3030
3031   for (i = 0; i < file_data->num_file_names; ++i)
3032     {
3033       xfree ((void*) file_data->file_names[i]);
3034       if (file_data->real_names)
3035         xfree ((void*) file_data->real_names[i]);
3036     }
3037
3038   /* The space for the struct itself lives on objfile_obstack,
3039      so we don't free it here.  */
3040 }
3041
3042 /* Create a quick_file_names hash table.  */
3043
3044 static htab_t
3045 create_quick_file_names_table (unsigned int nr_initial_entries)
3046 {
3047   return htab_create_alloc (nr_initial_entries,
3048                             hash_file_name_entry, eq_file_name_entry,
3049                             delete_file_name_entry, xcalloc, xfree);
3050 }
3051
3052 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
3053    have to be created afterwards.  You should call age_cached_comp_units after
3054    processing PER_CU->CU.  dw2_setup must have been already called.  */
3055
3056 static void
3057 load_cu (struct dwarf2_per_cu_data *per_cu)
3058 {
3059   if (per_cu->is_debug_types)
3060     load_full_type_unit (per_cu);
3061   else
3062     load_full_comp_unit (per_cu, language_minimal);
3063
3064   if (per_cu->cu == NULL)
3065     return;  /* Dummy CU.  */
3066
3067   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
3068 }
3069
3070 /* Read in the symbols for PER_CU.  */
3071
3072 static void
3073 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
3074 {
3075   struct cleanup *back_to;
3076
3077   /* Skip type_unit_groups, reading the type units they contain
3078      is handled elsewhere.  */
3079   if (IS_TYPE_UNIT_GROUP (per_cu))
3080     return;
3081
3082   back_to = make_cleanup (dwarf2_release_queue, NULL);
3083
3084   if (dwarf2_per_objfile->using_index
3085       ? per_cu->v.quick->compunit_symtab == NULL
3086       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
3087     {
3088       queue_comp_unit (per_cu, language_minimal);
3089       load_cu (per_cu);
3090
3091       /* If we just loaded a CU from a DWO, and we're working with an index
3092          that may badly handle TUs, load all the TUs in that DWO as well.
3093          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
3094       if (!per_cu->is_debug_types
3095           && per_cu->cu != NULL
3096           && per_cu->cu->dwo_unit != NULL
3097           && dwarf2_per_objfile->index_table != NULL
3098           && dwarf2_per_objfile->index_table->version <= 7
3099           /* DWP files aren't supported yet.  */
3100           && get_dwp_file () == NULL)
3101         queue_and_load_all_dwo_tus (per_cu);
3102     }
3103
3104   process_queue ();
3105
3106   /* Age the cache, releasing compilation units that have not
3107      been used recently.  */
3108   age_cached_comp_units ();
3109
3110   do_cleanups (back_to);
3111 }
3112
3113 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
3114    the objfile from which this CU came.  Returns the resulting symbol
3115    table.  */
3116
3117 static struct compunit_symtab *
3118 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
3119 {
3120   gdb_assert (dwarf2_per_objfile->using_index);
3121   if (!per_cu->v.quick->compunit_symtab)
3122     {
3123       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
3124       scoped_restore decrementer = increment_reading_symtab ();
3125       dw2_do_instantiate_symtab (per_cu);
3126       process_cu_includes ();
3127       do_cleanups (back_to);
3128     }
3129
3130   return per_cu->v.quick->compunit_symtab;
3131 }
3132
3133 /* Return the CU/TU given its index.
3134
3135    This is intended for loops like:
3136
3137    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3138                     + dwarf2_per_objfile->n_type_units); ++i)
3139      {
3140        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3141
3142        ...;
3143      }
3144 */
3145
3146 static struct dwarf2_per_cu_data *
3147 dw2_get_cutu (int index)
3148 {
3149   if (index >= dwarf2_per_objfile->n_comp_units)
3150     {
3151       index -= dwarf2_per_objfile->n_comp_units;
3152       gdb_assert (index < dwarf2_per_objfile->n_type_units);
3153       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
3154     }
3155
3156   return dwarf2_per_objfile->all_comp_units[index];
3157 }
3158
3159 /* Return the CU given its index.
3160    This differs from dw2_get_cutu in that it's for when you know INDEX
3161    refers to a CU.  */
3162
3163 static struct dwarf2_per_cu_data *
3164 dw2_get_cu (int index)
3165 {
3166   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
3167
3168   return dwarf2_per_objfile->all_comp_units[index];
3169 }
3170
3171 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
3172    objfile_obstack, and constructed with the specified field
3173    values.  */
3174
3175 static dwarf2_per_cu_data *
3176 create_cu_from_index_list (struct objfile *objfile,
3177                           struct dwarf2_section_info *section,
3178                           int is_dwz,
3179                           sect_offset sect_off, ULONGEST length)
3180 {
3181   dwarf2_per_cu_data *the_cu
3182     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3183                      struct dwarf2_per_cu_data);
3184   the_cu->sect_off = sect_off;
3185   the_cu->length = length;
3186   the_cu->objfile = objfile;
3187   the_cu->section = section;
3188   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3189                                    struct dwarf2_per_cu_quick_data);
3190   the_cu->is_dwz = is_dwz;
3191   return the_cu;
3192 }
3193
3194 /* A helper for create_cus_from_index that handles a given list of
3195    CUs.  */
3196
3197 static void
3198 create_cus_from_index_list (struct objfile *objfile,
3199                             const gdb_byte *cu_list, offset_type n_elements,
3200                             struct dwarf2_section_info *section,
3201                             int is_dwz,
3202                             int base_offset)
3203 {
3204   offset_type i;
3205
3206   for (i = 0; i < n_elements; i += 2)
3207     {
3208       gdb_static_assert (sizeof (ULONGEST) >= 8);
3209
3210       sect_offset sect_off
3211         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
3212       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
3213       cu_list += 2 * 8;
3214
3215       dwarf2_per_objfile->all_comp_units[base_offset + i / 2]
3216         = create_cu_from_index_list (objfile, section, is_dwz, sect_off, length);
3217     }
3218 }
3219
3220 /* Read the CU list from the mapped index, and use it to create all
3221    the CU objects for this objfile.  */
3222
3223 static void
3224 create_cus_from_index (struct objfile *objfile,
3225                        const gdb_byte *cu_list, offset_type cu_list_elements,
3226                        const gdb_byte *dwz_list, offset_type dwz_elements)
3227 {
3228   struct dwz_file *dwz;
3229
3230   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
3231   dwarf2_per_objfile->all_comp_units =
3232     XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
3233                dwarf2_per_objfile->n_comp_units);
3234
3235   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
3236                               &dwarf2_per_objfile->info, 0, 0);
3237
3238   if (dwz_elements == 0)
3239     return;
3240
3241   dwz = dwarf2_get_dwz_file ();
3242   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
3243                               cu_list_elements / 2);
3244 }
3245
3246 /* Create the signatured type hash table from the index.  */
3247
3248 static void
3249 create_signatured_type_table_from_index (struct objfile *objfile,
3250                                          struct dwarf2_section_info *section,
3251                                          const gdb_byte *bytes,
3252                                          offset_type elements)
3253 {
3254   offset_type i;
3255   htab_t sig_types_hash;
3256
3257   dwarf2_per_objfile->n_type_units
3258     = dwarf2_per_objfile->n_allocated_type_units
3259     = elements / 3;
3260   dwarf2_per_objfile->all_type_units =
3261     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
3262
3263   sig_types_hash = allocate_signatured_type_table (objfile);
3264
3265   for (i = 0; i < elements; i += 3)
3266     {
3267       struct signatured_type *sig_type;
3268       ULONGEST signature;
3269       void **slot;
3270       cu_offset type_offset_in_tu;
3271
3272       gdb_static_assert (sizeof (ULONGEST) >= 8);
3273       sect_offset sect_off
3274         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3275       type_offset_in_tu
3276         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3277                                                 BFD_ENDIAN_LITTLE);
3278       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3279       bytes += 3 * 8;
3280
3281       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3282                                  struct signatured_type);
3283       sig_type->signature = signature;
3284       sig_type->type_offset_in_tu = type_offset_in_tu;
3285       sig_type->per_cu.is_debug_types = 1;
3286       sig_type->per_cu.section = section;
3287       sig_type->per_cu.sect_off = sect_off;
3288       sig_type->per_cu.objfile = objfile;
3289       sig_type->per_cu.v.quick
3290         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3291                           struct dwarf2_per_cu_quick_data);
3292
3293       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3294       *slot = sig_type;
3295
3296       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
3297     }
3298
3299   dwarf2_per_objfile->signatured_types = sig_types_hash;
3300 }
3301
3302 /* Create the signatured type hash table from .debug_names.  */
3303
3304 static void
3305 create_signatured_type_table_from_debug_names
3306   (struct objfile *objfile,
3307    const mapped_debug_names &map,
3308    struct dwarf2_section_info *section,
3309    struct dwarf2_section_info *abbrev_section)
3310 {
3311   dwarf2_read_section (objfile, section);
3312   dwarf2_read_section (objfile, abbrev_section);
3313
3314   dwarf2_per_objfile->n_type_units
3315     = dwarf2_per_objfile->n_allocated_type_units
3316     = map.tu_count;
3317   dwarf2_per_objfile->all_type_units
3318     = XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
3319
3320   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3321
3322   for (uint32_t i = 0; i < map.tu_count; ++i)
3323     {
3324       struct signatured_type *sig_type;
3325       ULONGEST signature;
3326       void **slot;
3327       cu_offset type_offset_in_tu;
3328
3329       sect_offset sect_off
3330         = (sect_offset) (extract_unsigned_integer
3331                          (map.tu_table_reordered + i * map.offset_size,
3332                           map.offset_size,
3333                           map.dwarf5_byte_order));
3334
3335       comp_unit_head cu_header;
3336       read_and_check_comp_unit_head (&cu_header, section, abbrev_section,
3337                                      section->buffer + to_underlying (sect_off),
3338                                      rcuh_kind::TYPE);
3339
3340       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3341                                  struct signatured_type);
3342       sig_type->signature = cu_header.signature;
3343       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3344       sig_type->per_cu.is_debug_types = 1;
3345       sig_type->per_cu.section = section;
3346       sig_type->per_cu.sect_off = sect_off;
3347       sig_type->per_cu.objfile = objfile;
3348       sig_type->per_cu.v.quick
3349         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3350                           struct dwarf2_per_cu_quick_data);
3351
3352       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3353       *slot = sig_type;
3354
3355       dwarf2_per_objfile->all_type_units[i] = sig_type;
3356     }
3357
3358   dwarf2_per_objfile->signatured_types = sig_types_hash;
3359 }
3360
3361 /* Read the address map data from the mapped index, and use it to
3362    populate the objfile's psymtabs_addrmap.  */
3363
3364 static void
3365 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
3366 {
3367   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3368   const gdb_byte *iter, *end;
3369   struct addrmap *mutable_map;
3370   CORE_ADDR baseaddr;
3371
3372   auto_obstack temp_obstack;
3373
3374   mutable_map = addrmap_create_mutable (&temp_obstack);
3375
3376   iter = index->address_table.data ();
3377   end = iter + index->address_table.size ();
3378
3379   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3380
3381   while (iter < end)
3382     {
3383       ULONGEST hi, lo, cu_index;
3384       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3385       iter += 8;
3386       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3387       iter += 8;
3388       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3389       iter += 4;
3390
3391       if (lo > hi)
3392         {
3393           complaint (&symfile_complaints,
3394                      _(".gdb_index address table has invalid range (%s - %s)"),
3395                      hex_string (lo), hex_string (hi));
3396           continue;
3397         }
3398
3399       if (cu_index >= dwarf2_per_objfile->n_comp_units)
3400         {
3401           complaint (&symfile_complaints,
3402                      _(".gdb_index address table has invalid CU number %u"),
3403                      (unsigned) cu_index);
3404           continue;
3405         }
3406
3407       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
3408       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
3409       addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
3410     }
3411
3412   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3413                                                     &objfile->objfile_obstack);
3414 }
3415
3416 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3417    populate the objfile's psymtabs_addrmap.  */
3418
3419 static void
3420 create_addrmap_from_aranges (struct objfile *objfile,
3421                              struct dwarf2_section_info *section)
3422 {
3423   bfd *abfd = objfile->obfd;
3424   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3425   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3426                                        SECT_OFF_TEXT (objfile));
3427
3428   auto_obstack temp_obstack;
3429   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3430
3431   std::unordered_map<sect_offset,
3432                      dwarf2_per_cu_data *,
3433                      gdb::hash_enum<sect_offset>>
3434     debug_info_offset_to_per_cu;
3435   for (int cui = 0; cui < dwarf2_per_objfile->n_comp_units; ++cui)
3436     {
3437       dwarf2_per_cu_data *per_cu = dw2_get_cutu (cui);
3438       const auto insertpair
3439         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3440       if (!insertpair.second)
3441         {
3442           warning (_("Section .debug_aranges in %s has duplicate "
3443                      "debug_info_offset %u, ignoring .debug_aranges."),
3444                    objfile_name (objfile), to_underlying (per_cu->sect_off));
3445           return;
3446         }
3447     }
3448
3449   dwarf2_read_section (objfile, section);
3450
3451   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3452
3453   const gdb_byte *addr = section->buffer;
3454
3455   while (addr < section->buffer + section->size)
3456     {
3457       const gdb_byte *const entry_addr = addr;
3458       unsigned int bytes_read;
3459
3460       const LONGEST entry_length = read_initial_length (abfd, addr,
3461                                                         &bytes_read);
3462       addr += bytes_read;
3463
3464       const gdb_byte *const entry_end = addr + entry_length;
3465       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3466       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3467       if (addr + entry_length > section->buffer + section->size)
3468         {
3469           warning (_("Section .debug_aranges in %s entry at offset %zu "
3470                      "length %s exceeds section length %s, "
3471                      "ignoring .debug_aranges."),
3472                    objfile_name (objfile), entry_addr - section->buffer,
3473                    plongest (bytes_read + entry_length),
3474                    pulongest (section->size));
3475           return;
3476         }
3477
3478       /* The version number.  */
3479       const uint16_t version = read_2_bytes (abfd, addr);
3480       addr += 2;
3481       if (version != 2)
3482         {
3483           warning (_("Section .debug_aranges in %s entry at offset %zu "
3484                      "has unsupported version %d, ignoring .debug_aranges."),
3485                    objfile_name (objfile), entry_addr - section->buffer,
3486                    version);
3487           return;
3488         }
3489
3490       const uint64_t debug_info_offset
3491         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3492       addr += offset_size;
3493       const auto per_cu_it
3494         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3495       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3496         {
3497           warning (_("Section .debug_aranges in %s entry at offset %zu "
3498                      "debug_info_offset %s does not exists, "
3499                      "ignoring .debug_aranges."),
3500                    objfile_name (objfile), entry_addr - section->buffer,
3501                    pulongest (debug_info_offset));
3502           return;
3503         }
3504       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3505
3506       const uint8_t address_size = *addr++;
3507       if (address_size < 1 || address_size > 8)
3508         {
3509           warning (_("Section .debug_aranges in %s entry at offset %zu "
3510                      "address_size %u is invalid, ignoring .debug_aranges."),
3511                    objfile_name (objfile), entry_addr - section->buffer,
3512                    address_size);
3513           return;
3514         }
3515
3516       const uint8_t segment_selector_size = *addr++;
3517       if (segment_selector_size != 0)
3518         {
3519           warning (_("Section .debug_aranges in %s entry at offset %zu "
3520                      "segment_selector_size %u is not supported, "
3521                      "ignoring .debug_aranges."),
3522                    objfile_name (objfile), entry_addr - section->buffer,
3523                    segment_selector_size);
3524           return;
3525         }
3526
3527       /* Must pad to an alignment boundary that is twice the address
3528          size.  It is undocumented by the DWARF standard but GCC does
3529          use it.  */
3530       for (size_t padding = ((-(addr - section->buffer))
3531                              & (2 * address_size - 1));
3532            padding > 0; padding--)
3533         if (*addr++ != 0)
3534           {
3535             warning (_("Section .debug_aranges in %s entry at offset %zu "
3536                        "padding is not zero, ignoring .debug_aranges."),
3537                      objfile_name (objfile), entry_addr - section->buffer);
3538             return;
3539           }
3540
3541       for (;;)
3542         {
3543           if (addr + 2 * address_size > entry_end)
3544             {
3545               warning (_("Section .debug_aranges in %s entry at offset %zu "
3546                          "address list is not properly terminated, "
3547                          "ignoring .debug_aranges."),
3548                        objfile_name (objfile), entry_addr - section->buffer);
3549               return;
3550             }
3551           ULONGEST start = extract_unsigned_integer (addr, address_size,
3552                                                      dwarf5_byte_order);
3553           addr += address_size;
3554           ULONGEST length = extract_unsigned_integer (addr, address_size,
3555                                                       dwarf5_byte_order);
3556           addr += address_size;
3557           if (start == 0 && length == 0)
3558             break;
3559           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3560             {
3561               /* Symbol was eliminated due to a COMDAT group.  */
3562               continue;
3563             }
3564           ULONGEST end = start + length;
3565           start = gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr);
3566           end = gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr);
3567           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3568         }
3569     }
3570
3571   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3572                                                     &objfile->objfile_obstack);
3573 }
3574
3575 /* The hash function for strings in the mapped index.  This is the same as
3576    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
3577    implementation.  This is necessary because the hash function is tied to the
3578    format of the mapped index file.  The hash values do not have to match with
3579    SYMBOL_HASH_NEXT.
3580    
3581    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
3582
3583 static hashval_t
3584 mapped_index_string_hash (int index_version, const void *p)
3585 {
3586   const unsigned char *str = (const unsigned char *) p;
3587   hashval_t r = 0;
3588   unsigned char c;
3589
3590   while ((c = *str++) != 0)
3591     {
3592       if (index_version >= 5)
3593         c = tolower (c);
3594       r = r * 67 + c - 113;
3595     }
3596
3597   return r;
3598 }
3599
3600 /* Find a slot in the mapped index INDEX for the object named NAME.
3601    If NAME is found, set *VEC_OUT to point to the CU vector in the
3602    constant pool and return true.  If NAME cannot be found, return
3603    false.  */
3604
3605 static bool
3606 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3607                           offset_type **vec_out)
3608 {
3609   offset_type hash;
3610   offset_type slot, step;
3611   int (*cmp) (const char *, const char *);
3612
3613   gdb::unique_xmalloc_ptr<char> without_params;
3614   if (current_language->la_language == language_cplus
3615       || current_language->la_language == language_fortran
3616       || current_language->la_language == language_d)
3617     {
3618       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3619          not contain any.  */
3620
3621       if (strchr (name, '(') != NULL)
3622         {
3623           without_params = cp_remove_params (name);
3624
3625           if (without_params != NULL)
3626             name = without_params.get ();
3627         }
3628     }
3629
3630   /* Index version 4 did not support case insensitive searches.  But the
3631      indices for case insensitive languages are built in lowercase, therefore
3632      simulate our NAME being searched is also lowercased.  */
3633   hash = mapped_index_string_hash ((index->version == 4
3634                                     && case_sensitivity == case_sensitive_off
3635                                     ? 5 : index->version),
3636                                    name);
3637
3638   slot = hash & (index->symbol_table.size () - 1);
3639   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3640   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3641
3642   for (;;)
3643     {
3644       const char *str;
3645
3646       const auto &bucket = index->symbol_table[slot];
3647       if (bucket.name == 0 && bucket.vec == 0)
3648         return false;
3649
3650       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3651       if (!cmp (name, str))
3652         {
3653           *vec_out = (offset_type *) (index->constant_pool
3654                                       + MAYBE_SWAP (bucket.vec));
3655           return true;
3656         }
3657
3658       slot = (slot + step) & (index->symbol_table.size () - 1);
3659     }
3660 }
3661
3662 /* A helper function that reads the .gdb_index from SECTION and fills
3663    in MAP.  FILENAME is the name of the file containing the section;
3664    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
3665    ok to use deprecated sections.
3666
3667    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3668    out parameters that are filled in with information about the CU and
3669    TU lists in the section.
3670
3671    Returns 1 if all went well, 0 otherwise.  */
3672
3673 static int
3674 read_index_from_section (struct objfile *objfile,
3675                          const char *filename,
3676                          int deprecated_ok,
3677                          struct dwarf2_section_info *section,
3678                          struct mapped_index *map,
3679                          const gdb_byte **cu_list,
3680                          offset_type *cu_list_elements,
3681                          const gdb_byte **types_list,
3682                          offset_type *types_list_elements)
3683 {
3684   const gdb_byte *addr;
3685   offset_type version;
3686   offset_type *metadata;
3687   int i;
3688
3689   if (dwarf2_section_empty_p (section))
3690     return 0;
3691
3692   /* Older elfutils strip versions could keep the section in the main
3693      executable while splitting it for the separate debug info file.  */
3694   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3695     return 0;
3696
3697   dwarf2_read_section (objfile, section);
3698
3699   addr = section->buffer;
3700   /* Version check.  */
3701   version = MAYBE_SWAP (*(offset_type *) addr);
3702   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3703      causes the index to behave very poorly for certain requests.  Version 3
3704      contained incomplete addrmap.  So, it seems better to just ignore such
3705      indices.  */
3706   if (version < 4)
3707     {
3708       static int warning_printed = 0;
3709       if (!warning_printed)
3710         {
3711           warning (_("Skipping obsolete .gdb_index section in %s."),
3712                    filename);
3713           warning_printed = 1;
3714         }
3715       return 0;
3716     }
3717   /* Index version 4 uses a different hash function than index version
3718      5 and later.
3719
3720      Versions earlier than 6 did not emit psymbols for inlined
3721      functions.  Using these files will cause GDB not to be able to
3722      set breakpoints on inlined functions by name, so we ignore these
3723      indices unless the user has done
3724      "set use-deprecated-index-sections on".  */
3725   if (version < 6 && !deprecated_ok)
3726     {
3727       static int warning_printed = 0;
3728       if (!warning_printed)
3729         {
3730           warning (_("\
3731 Skipping deprecated .gdb_index section in %s.\n\
3732 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3733 to use the section anyway."),
3734                    filename);
3735           warning_printed = 1;
3736         }
3737       return 0;
3738     }
3739   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3740      of the TU (for symbols coming from TUs),
3741      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3742      Plus gold-generated indices can have duplicate entries for global symbols,
3743      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3744      These are just performance bugs, and we can't distinguish gdb-generated
3745      indices from gold-generated ones, so issue no warning here.  */
3746
3747   /* Indexes with higher version than the one supported by GDB may be no
3748      longer backward compatible.  */
3749   if (version > 8)
3750     return 0;
3751
3752   map->version = version;
3753   map->total_size = section->size;
3754
3755   metadata = (offset_type *) (addr + sizeof (offset_type));
3756
3757   i = 0;
3758   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3759   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3760                        / 8);
3761   ++i;
3762
3763   *types_list = addr + MAYBE_SWAP (metadata[i]);
3764   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3765                            - MAYBE_SWAP (metadata[i]))
3766                           / 8);
3767   ++i;
3768
3769   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3770   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3771   map->address_table
3772     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3773   ++i;
3774
3775   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3776   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3777   map->symbol_table
3778     = gdb::array_view<mapped_index::symbol_table_slot>
3779        ((mapped_index::symbol_table_slot *) symbol_table,
3780         (mapped_index::symbol_table_slot *) symbol_table_end);
3781
3782   ++i;
3783   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3784
3785   return 1;
3786 }
3787
3788 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3789    elements of all the CUs and return 1.  Otherwise, return 0.  */
3790
3791 static int
3792 dwarf2_read_index (struct objfile *objfile)
3793 {
3794   struct mapped_index local_map, *map;
3795   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3796   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3797   struct dwz_file *dwz;
3798
3799   if (!read_index_from_section (objfile, objfile_name (objfile),
3800                                 use_deprecated_index_sections,
3801                                 &dwarf2_per_objfile->gdb_index, &local_map,
3802                                 &cu_list, &cu_list_elements,
3803                                 &types_list, &types_list_elements))
3804     return 0;
3805
3806   /* Don't use the index if it's empty.  */
3807   if (local_map.symbol_table.empty ())
3808     return 0;
3809
3810   /* If there is a .dwz file, read it so we can get its CU list as
3811      well.  */
3812   dwz = dwarf2_get_dwz_file ();
3813   if (dwz != NULL)
3814     {
3815       struct mapped_index dwz_map;
3816       const gdb_byte *dwz_types_ignore;
3817       offset_type dwz_types_elements_ignore;
3818
3819       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3820                                     1,
3821                                     &dwz->gdb_index, &dwz_map,
3822                                     &dwz_list, &dwz_list_elements,
3823                                     &dwz_types_ignore,
3824                                     &dwz_types_elements_ignore))
3825         {
3826           warning (_("could not read '.gdb_index' section from %s; skipping"),
3827                    bfd_get_filename (dwz->dwz_bfd));
3828           return 0;
3829         }
3830     }
3831
3832   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3833                          dwz_list_elements);
3834
3835   if (types_list_elements)
3836     {
3837       struct dwarf2_section_info *section;
3838
3839       /* We can only handle a single .debug_types when we have an
3840          index.  */
3841       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3842         return 0;
3843
3844       section = VEC_index (dwarf2_section_info_def,
3845                            dwarf2_per_objfile->types, 0);
3846
3847       create_signatured_type_table_from_index (objfile, section, types_list,
3848                                                types_list_elements);
3849     }
3850
3851   create_addrmap_from_index (objfile, &local_map);
3852
3853   map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
3854   map = new (map) mapped_index ();
3855   *map = local_map;
3856
3857   dwarf2_per_objfile->index_table = map;
3858   dwarf2_per_objfile->using_index = 1;
3859   dwarf2_per_objfile->quick_file_names_table =
3860     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3861
3862   return 1;
3863 }
3864
3865 /* A helper for the "quick" functions which sets the global
3866    dwarf2_per_objfile according to OBJFILE.  */
3867
3868 static void
3869 dw2_setup (struct objfile *objfile)
3870 {
3871   dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
3872                         objfile_data (objfile, dwarf2_objfile_data_key));
3873   gdb_assert (dwarf2_per_objfile);
3874 }
3875
3876 /* die_reader_func for dw2_get_file_names.  */
3877
3878 static void
3879 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3880                            const gdb_byte *info_ptr,
3881                            struct die_info *comp_unit_die,
3882                            int has_children,
3883                            void *data)
3884 {
3885   struct dwarf2_cu *cu = reader->cu;
3886   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3887   struct objfile *objfile = dwarf2_per_objfile->objfile;
3888   struct dwarf2_per_cu_data *lh_cu;
3889   struct attribute *attr;
3890   int i;
3891   void **slot;
3892   struct quick_file_names *qfn;
3893
3894   gdb_assert (! this_cu->is_debug_types);
3895
3896   /* Our callers never want to match partial units -- instead they
3897      will match the enclosing full CU.  */
3898   if (comp_unit_die->tag == DW_TAG_partial_unit)
3899     {
3900       this_cu->v.quick->no_file_data = 1;
3901       return;
3902     }
3903
3904   lh_cu = this_cu;
3905   slot = NULL;
3906
3907   line_header_up lh;
3908   sect_offset line_offset {};
3909
3910   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3911   if (attr)
3912     {
3913       struct quick_file_names find_entry;
3914
3915       line_offset = (sect_offset) DW_UNSND (attr);
3916
3917       /* We may have already read in this line header (TU line header sharing).
3918          If we have we're done.  */
3919       find_entry.hash.dwo_unit = cu->dwo_unit;
3920       find_entry.hash.line_sect_off = line_offset;
3921       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3922                              &find_entry, INSERT);
3923       if (*slot != NULL)
3924         {
3925           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3926           return;
3927         }
3928
3929       lh = dwarf_decode_line_header (line_offset, cu);
3930     }
3931   if (lh == NULL)
3932     {
3933       lh_cu->v.quick->no_file_data = 1;
3934       return;
3935     }
3936
3937   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3938   qfn->hash.dwo_unit = cu->dwo_unit;
3939   qfn->hash.line_sect_off = line_offset;
3940   gdb_assert (slot != NULL);
3941   *slot = qfn;
3942
3943   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3944
3945   qfn->num_file_names = lh->file_names.size ();
3946   qfn->file_names =
3947     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3948   for (i = 0; i < lh->file_names.size (); ++i)
3949     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3950   qfn->real_names = NULL;
3951
3952   lh_cu->v.quick->file_names = qfn;
3953 }
3954
3955 /* A helper for the "quick" functions which attempts to read the line
3956    table for THIS_CU.  */
3957
3958 static struct quick_file_names *
3959 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3960 {
3961   /* This should never be called for TUs.  */
3962   gdb_assert (! this_cu->is_debug_types);
3963   /* Nor type unit groups.  */
3964   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3965
3966   if (this_cu->v.quick->file_names != NULL)
3967     return this_cu->v.quick->file_names;
3968   /* If we know there is no line data, no point in looking again.  */
3969   if (this_cu->v.quick->no_file_data)
3970     return NULL;
3971
3972   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3973
3974   if (this_cu->v.quick->no_file_data)
3975     return NULL;
3976   return this_cu->v.quick->file_names;
3977 }
3978
3979 /* A helper for the "quick" functions which computes and caches the
3980    real path for a given file name from the line table.  */
3981
3982 static const char *
3983 dw2_get_real_path (struct objfile *objfile,
3984                    struct quick_file_names *qfn, int index)
3985 {
3986   if (qfn->real_names == NULL)
3987     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3988                                       qfn->num_file_names, const char *);
3989
3990   if (qfn->real_names[index] == NULL)
3991     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3992
3993   return qfn->real_names[index];
3994 }
3995
3996 static struct symtab *
3997 dw2_find_last_source_symtab (struct objfile *objfile)
3998 {
3999   struct compunit_symtab *cust;
4000   int index;
4001
4002   dw2_setup (objfile);
4003   index = dwarf2_per_objfile->n_comp_units - 1;
4004   cust = dw2_instantiate_symtab (dw2_get_cutu (index));
4005   if (cust == NULL)
4006     return NULL;
4007   return compunit_primary_filetab (cust);
4008 }
4009
4010 /* Traversal function for dw2_forget_cached_source_info.  */
4011
4012 static int
4013 dw2_free_cached_file_names (void **slot, void *info)
4014 {
4015   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
4016
4017   if (file_data->real_names)
4018     {
4019       int i;
4020
4021       for (i = 0; i < file_data->num_file_names; ++i)
4022         {
4023           xfree ((void*) file_data->real_names[i]);
4024           file_data->real_names[i] = NULL;
4025         }
4026     }
4027
4028   return 1;
4029 }
4030
4031 static void
4032 dw2_forget_cached_source_info (struct objfile *objfile)
4033 {
4034   dw2_setup (objfile);
4035
4036   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
4037                           dw2_free_cached_file_names, NULL);
4038 }
4039
4040 /* Helper function for dw2_map_symtabs_matching_filename that expands
4041    the symtabs and calls the iterator.  */
4042
4043 static int
4044 dw2_map_expand_apply (struct objfile *objfile,
4045                       struct dwarf2_per_cu_data *per_cu,
4046                       const char *name, const char *real_path,
4047                       gdb::function_view<bool (symtab *)> callback)
4048 {
4049   struct compunit_symtab *last_made = objfile->compunit_symtabs;
4050
4051   /* Don't visit already-expanded CUs.  */
4052   if (per_cu->v.quick->compunit_symtab)
4053     return 0;
4054
4055   /* This may expand more than one symtab, and we want to iterate over
4056      all of them.  */
4057   dw2_instantiate_symtab (per_cu);
4058
4059   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
4060                                     last_made, callback);
4061 }
4062
4063 /* Implementation of the map_symtabs_matching_filename method.  */
4064
4065 static bool
4066 dw2_map_symtabs_matching_filename
4067   (struct objfile *objfile, const char *name, const char *real_path,
4068    gdb::function_view<bool (symtab *)> callback)
4069 {
4070   int i;
4071   const char *name_basename = lbasename (name);
4072
4073   dw2_setup (objfile);
4074
4075   /* The rule is CUs specify all the files, including those used by
4076      any TU, so there's no need to scan TUs here.  */
4077
4078   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4079     {
4080       int j;
4081       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4082       struct quick_file_names *file_data;
4083
4084       /* We only need to look at symtabs not already expanded.  */
4085       if (per_cu->v.quick->compunit_symtab)
4086         continue;
4087
4088       file_data = dw2_get_file_names (per_cu);
4089       if (file_data == NULL)
4090         continue;
4091
4092       for (j = 0; j < file_data->num_file_names; ++j)
4093         {
4094           const char *this_name = file_data->file_names[j];
4095           const char *this_real_name;
4096
4097           if (compare_filenames_for_search (this_name, name))
4098             {
4099               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
4100                                         callback))
4101                 return true;
4102               continue;
4103             }
4104
4105           /* Before we invoke realpath, which can get expensive when many
4106              files are involved, do a quick comparison of the basenames.  */
4107           if (! basenames_may_differ
4108               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
4109             continue;
4110
4111           this_real_name = dw2_get_real_path (objfile, file_data, j);
4112           if (compare_filenames_for_search (this_real_name, name))
4113             {
4114               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
4115                                         callback))
4116                 return true;
4117               continue;
4118             }
4119
4120           if (real_path != NULL)
4121             {
4122               gdb_assert (IS_ABSOLUTE_PATH (real_path));
4123               gdb_assert (IS_ABSOLUTE_PATH (name));
4124               if (this_real_name != NULL
4125                   && FILENAME_CMP (real_path, this_real_name) == 0)
4126                 {
4127                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
4128                                             callback))
4129                     return true;
4130                   continue;
4131                 }
4132             }
4133         }
4134     }
4135
4136   return false;
4137 }
4138
4139 /* Struct used to manage iterating over all CUs looking for a symbol.  */
4140
4141 struct dw2_symtab_iterator
4142 {
4143   /* The internalized form of .gdb_index.  */
4144   struct mapped_index *index;
4145   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
4146   int want_specific_block;
4147   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
4148      Unused if !WANT_SPECIFIC_BLOCK.  */
4149   int block_index;
4150   /* The kind of symbol we're looking for.  */
4151   domain_enum domain;
4152   /* The list of CUs from the index entry of the symbol,
4153      or NULL if not found.  */
4154   offset_type *vec;
4155   /* The next element in VEC to look at.  */
4156   int next;
4157   /* The number of elements in VEC, or zero if there is no match.  */
4158   int length;
4159   /* Have we seen a global version of the symbol?
4160      If so we can ignore all further global instances.
4161      This is to work around gold/15646, inefficient gold-generated
4162      indices.  */
4163   int global_seen;
4164 };
4165
4166 /* Initialize the index symtab iterator ITER.
4167    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
4168    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
4169
4170 static void
4171 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
4172                       struct mapped_index *index,
4173                       int want_specific_block,
4174                       int block_index,
4175                       domain_enum domain,
4176                       const char *name)
4177 {
4178   iter->index = index;
4179   iter->want_specific_block = want_specific_block;
4180   iter->block_index = block_index;
4181   iter->domain = domain;
4182   iter->next = 0;
4183   iter->global_seen = 0;
4184
4185   if (find_slot_in_mapped_hash (index, name, &iter->vec))
4186     iter->length = MAYBE_SWAP (*iter->vec);
4187   else
4188     {
4189       iter->vec = NULL;
4190       iter->length = 0;
4191     }
4192 }
4193
4194 /* Return the next matching CU or NULL if there are no more.  */
4195
4196 static struct dwarf2_per_cu_data *
4197 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
4198 {
4199   for ( ; iter->next < iter->length; ++iter->next)
4200     {
4201       offset_type cu_index_and_attrs =
4202         MAYBE_SWAP (iter->vec[iter->next + 1]);
4203       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4204       struct dwarf2_per_cu_data *per_cu;
4205       int want_static = iter->block_index != GLOBAL_BLOCK;
4206       /* This value is only valid for index versions >= 7.  */
4207       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4208       gdb_index_symbol_kind symbol_kind =
4209         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4210       /* Only check the symbol attributes if they're present.
4211          Indices prior to version 7 don't record them,
4212          and indices >= 7 may elide them for certain symbols
4213          (gold does this).  */
4214       int attrs_valid =
4215         (iter->index->version >= 7
4216          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4217
4218       /* Don't crash on bad data.  */
4219       if (cu_index >= (dwarf2_per_objfile->n_comp_units
4220                        + dwarf2_per_objfile->n_type_units))
4221         {
4222           complaint (&symfile_complaints,
4223                      _(".gdb_index entry has bad CU index"
4224                        " [in module %s]"),
4225                      objfile_name (dwarf2_per_objfile->objfile));
4226           continue;
4227         }
4228
4229       per_cu = dw2_get_cutu (cu_index);
4230
4231       /* Skip if already read in.  */
4232       if (per_cu->v.quick->compunit_symtab)
4233         continue;
4234
4235       /* Check static vs global.  */
4236       if (attrs_valid)
4237         {
4238           if (iter->want_specific_block
4239               && want_static != is_static)
4240             continue;
4241           /* Work around gold/15646.  */
4242           if (!is_static && iter->global_seen)
4243             continue;
4244           if (!is_static)
4245             iter->global_seen = 1;
4246         }
4247
4248       /* Only check the symbol's kind if it has one.  */
4249       if (attrs_valid)
4250         {
4251           switch (iter->domain)
4252             {
4253             case VAR_DOMAIN:
4254               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4255                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4256                   /* Some types are also in VAR_DOMAIN.  */
4257                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4258                 continue;
4259               break;
4260             case STRUCT_DOMAIN:
4261               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4262                 continue;
4263               break;
4264             case LABEL_DOMAIN:
4265               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4266                 continue;
4267               break;
4268             default:
4269               break;
4270             }
4271         }
4272
4273       ++iter->next;
4274       return per_cu;
4275     }
4276
4277   return NULL;
4278 }
4279
4280 static struct compunit_symtab *
4281 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4282                    const char *name, domain_enum domain)
4283 {
4284   struct compunit_symtab *stab_best = NULL;
4285   struct mapped_index *index;
4286
4287   dw2_setup (objfile);
4288
4289   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4290
4291   index = dwarf2_per_objfile->index_table;
4292
4293   /* index is NULL if OBJF_READNOW.  */
4294   if (index)
4295     {
4296       struct dw2_symtab_iterator iter;
4297       struct dwarf2_per_cu_data *per_cu;
4298
4299       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
4300
4301       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4302         {
4303           struct symbol *sym, *with_opaque = NULL;
4304           struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
4305           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4306           struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4307
4308           sym = block_find_symbol (block, name, domain,
4309                                    block_find_non_opaque_type_preferred,
4310                                    &with_opaque);
4311
4312           /* Some caution must be observed with overloaded functions
4313              and methods, since the index will not contain any overload
4314              information (but NAME might contain it).  */
4315
4316           if (sym != NULL
4317               && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4318             return stab;
4319           if (with_opaque != NULL
4320               && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4321             stab_best = stab;
4322
4323           /* Keep looking through other CUs.  */
4324         }
4325     }
4326
4327   return stab_best;
4328 }
4329
4330 static void
4331 dw2_print_stats (struct objfile *objfile)
4332 {
4333   int i, total, count;
4334
4335   dw2_setup (objfile);
4336   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
4337   count = 0;
4338   for (i = 0; i < total; ++i)
4339     {
4340       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4341
4342       if (!per_cu->v.quick->compunit_symtab)
4343         ++count;
4344     }
4345   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4346   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4347 }
4348
4349 /* This dumps minimal information about the index.
4350    It is called via "mt print objfiles".
4351    One use is to verify .gdb_index has been loaded by the
4352    gdb.dwarf2/gdb-index.exp testcase.  */
4353
4354 static void
4355 dw2_dump (struct objfile *objfile)
4356 {
4357   dw2_setup (objfile);
4358   gdb_assert (dwarf2_per_objfile->using_index);
4359   printf_filtered (".gdb_index:");
4360   if (dwarf2_per_objfile->index_table != NULL)
4361     {
4362       printf_filtered (" version %d\n",
4363                        dwarf2_per_objfile->index_table->version);
4364     }
4365   else
4366     printf_filtered (" faked for \"readnow\"\n");
4367   printf_filtered ("\n");
4368 }
4369
4370 static void
4371 dw2_relocate (struct objfile *objfile,
4372               const struct section_offsets *new_offsets,
4373               const struct section_offsets *delta)
4374 {
4375   /* There's nothing to relocate here.  */
4376 }
4377
4378 static void
4379 dw2_expand_symtabs_for_function (struct objfile *objfile,
4380                                  const char *func_name)
4381 {
4382   struct mapped_index *index;
4383
4384   dw2_setup (objfile);
4385
4386   index = dwarf2_per_objfile->index_table;
4387
4388   /* index is NULL if OBJF_READNOW.  */
4389   if (index)
4390     {
4391       struct dw2_symtab_iterator iter;
4392       struct dwarf2_per_cu_data *per_cu;
4393
4394       /* Note: It doesn't matter what we pass for block_index here.  */
4395       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4396                             func_name);
4397
4398       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4399         dw2_instantiate_symtab (per_cu);
4400     }
4401 }
4402
4403 static void
4404 dw2_expand_all_symtabs (struct objfile *objfile)
4405 {
4406   int i;
4407
4408   dw2_setup (objfile);
4409
4410   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4411                    + dwarf2_per_objfile->n_type_units); ++i)
4412     {
4413       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4414
4415       dw2_instantiate_symtab (per_cu);
4416     }
4417 }
4418
4419 static void
4420 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4421                                   const char *fullname)
4422 {
4423   int i;
4424
4425   dw2_setup (objfile);
4426
4427   /* We don't need to consider type units here.
4428      This is only called for examining code, e.g. expand_line_sal.
4429      There can be an order of magnitude (or more) more type units
4430      than comp units, and we avoid them if we can.  */
4431
4432   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4433     {
4434       int j;
4435       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4436       struct quick_file_names *file_data;
4437
4438       /* We only need to look at symtabs not already expanded.  */
4439       if (per_cu->v.quick->compunit_symtab)
4440         continue;
4441
4442       file_data = dw2_get_file_names (per_cu);
4443       if (file_data == NULL)
4444         continue;
4445
4446       for (j = 0; j < file_data->num_file_names; ++j)
4447         {
4448           const char *this_fullname = file_data->file_names[j];
4449
4450           if (filename_cmp (this_fullname, fullname) == 0)
4451             {
4452               dw2_instantiate_symtab (per_cu);
4453               break;
4454             }
4455         }
4456     }
4457 }
4458
4459 static void
4460 dw2_map_matching_symbols (struct objfile *objfile,
4461                           const char * name, domain_enum domain,
4462                           int global,
4463                           int (*callback) (struct block *,
4464                                            struct symbol *, void *),
4465                           void *data, symbol_name_match_type match,
4466                           symbol_compare_ftype *ordered_compare)
4467 {
4468   /* Currently unimplemented; used for Ada.  The function can be called if the
4469      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4470      does not look for non-Ada symbols this function should just return.  */
4471 }
4472
4473 /* Symbol name matcher for .gdb_index names.
4474
4475    Symbol names in .gdb_index have a few particularities:
4476
4477    - There's no indication of which is the language of each symbol.
4478
4479      Since each language has its own symbol name matching algorithm,
4480      and we don't know which language is the right one, we must match
4481      each symbol against all languages.  This would be a potential
4482      performance problem if it were not mitigated by the
4483      mapped_index::name_components lookup table, which significantly
4484      reduces the number of times we need to call into this matcher,
4485      making it a non-issue.
4486
4487    - Symbol names in the index have no overload (parameter)
4488      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4489      appear as "foo" in the index, for example.
4490
4491      This means that the lookup names passed to the symbol name
4492      matcher functions must have no parameter information either
4493      because (e.g.) symbol search name "foo" does not match
4494      lookup-name "foo(int)" [while swapping search name for lookup
4495      name would match].
4496 */
4497 class gdb_index_symbol_name_matcher
4498 {
4499 public:
4500   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4501   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4502
4503   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4504      Returns true if any matcher matches.  */
4505   bool matches (const char *symbol_name);
4506
4507 private:
4508   /* A reference to the lookup name we're matching against.  */
4509   const lookup_name_info &m_lookup_name;
4510
4511   /* A vector holding all the different symbol name matchers, for all
4512      languages.  */
4513   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4514 };
4515
4516 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4517   (const lookup_name_info &lookup_name)
4518     : m_lookup_name (lookup_name)
4519 {
4520   /* Prepare the vector of comparison functions upfront, to avoid
4521      doing the same work for each symbol.  Care is taken to avoid
4522      matching with the same matcher more than once if/when multiple
4523      languages use the same matcher function.  */
4524   auto &matchers = m_symbol_name_matcher_funcs;
4525   matchers.reserve (nr_languages);
4526
4527   matchers.push_back (default_symbol_name_matcher);
4528
4529   for (int i = 0; i < nr_languages; i++)
4530     {
4531       const language_defn *lang = language_def ((enum language) i);
4532       if (lang->la_get_symbol_name_matcher != NULL)
4533         {
4534           symbol_name_matcher_ftype *name_matcher
4535             = lang->la_get_symbol_name_matcher (m_lookup_name);
4536
4537           /* Don't insert the same comparison routine more than once.
4538              Note that we do this linear walk instead of a cheaper
4539              sorted insert, or use a std::set or something like that,
4540              because relative order of function addresses is not
4541              stable.  This is not a problem in practice because the
4542              number of supported languages is low, and the cost here
4543              is tiny compared to the number of searches we'll do
4544              afterwards using this object.  */
4545           if (std::find (matchers.begin (), matchers.end (), name_matcher)
4546               == matchers.end ())
4547             matchers.push_back (name_matcher);
4548         }
4549     }
4550 }
4551
4552 bool
4553 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4554 {
4555   for (auto matches_name : m_symbol_name_matcher_funcs)
4556     if (matches_name (symbol_name, m_lookup_name, NULL))
4557       return true;
4558
4559   return false;
4560 }
4561
4562 /* Starting from a search name, return the string that finds the upper
4563    bound of all strings that start with SEARCH_NAME in a sorted name
4564    list.  Returns the empty string to indicate that the upper bound is
4565    the end of the list.  */
4566
4567 static std::string
4568 make_sort_after_prefix_name (const char *search_name)
4569 {
4570   /* When looking to complete "func", we find the upper bound of all
4571      symbols that start with "func" by looking for where we'd insert
4572      the closest string that would follow "func" in lexicographical
4573      order.  Usually, that's "func"-with-last-character-incremented,
4574      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4575      will be UTF-8 multi-byte sequences, but we can't be certain.
4576      Especially mind the 0xff character, which is a valid character in
4577      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4578      rule out compilers allowing it in identifiers.  Note that
4579      conveniently, strcmp/strcasecmp are specified to compare
4580      characters interpreted as unsigned char.  So what we do is treat
4581      the whole string as a base 256 number composed of a sequence of
4582      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4583      to 0, and carries 1 to the following more-significant position.
4584      If the very first character in SEARCH_NAME ends up incremented
4585      and carries/overflows, then the upper bound is the end of the
4586      list.  The string after the empty string is also the empty
4587      string.
4588
4589      Some examples of this operation:
4590
4591        SEARCH_NAME  => "+1" RESULT
4592
4593        "abc"              => "abd"
4594        "ab\xff"           => "ac"
4595        "\xff" "a" "\xff"  => "\xff" "b"
4596        "\xff"             => ""
4597        "\xff\xff"         => ""
4598        ""                 => ""
4599
4600      Then, with these symbols for example:
4601
4602       func
4603       func1
4604       fund
4605
4606      completing "func" looks for symbols between "func" and
4607      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4608      which finds "func" and "func1", but not "fund".
4609
4610      And with:
4611
4612       funcÿ     (Latin1 'ÿ' [0xff])
4613       funcÿ1
4614       fund
4615
4616      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4617      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4618
4619      And with:
4620
4621       ÿÿ        (Latin1 'ÿ' [0xff])
4622       ÿÿ1
4623
4624      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4625      the end of the list.
4626   */
4627   std::string after = search_name;
4628   while (!after.empty () && (unsigned char) after.back () == 0xff)
4629     after.pop_back ();
4630   if (!after.empty ())
4631     after.back () = (unsigned char) after.back () + 1;
4632   return after;
4633 }
4634
4635 /* See declaration.  */
4636
4637 std::pair<std::vector<name_component>::const_iterator,
4638           std::vector<name_component>::const_iterator>
4639 mapped_index_base::find_name_components_bounds
4640   (const lookup_name_info &lookup_name_without_params) const
4641 {
4642   auto *name_cmp
4643     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4644
4645   const char *cplus
4646     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4647
4648   /* Comparison function object for lower_bound that matches against a
4649      given symbol name.  */
4650   auto lookup_compare_lower = [&] (const name_component &elem,
4651                                    const char *name)
4652     {
4653       const char *elem_qualified = this->symbol_name_at (elem.idx);
4654       const char *elem_name = elem_qualified + elem.name_offset;
4655       return name_cmp (elem_name, name) < 0;
4656     };
4657
4658   /* Comparison function object for upper_bound that matches against a
4659      given symbol name.  */
4660   auto lookup_compare_upper = [&] (const char *name,
4661                                    const name_component &elem)
4662     {
4663       const char *elem_qualified = this->symbol_name_at (elem.idx);
4664       const char *elem_name = elem_qualified + elem.name_offset;
4665       return name_cmp (name, elem_name) < 0;
4666     };
4667
4668   auto begin = this->name_components.begin ();
4669   auto end = this->name_components.end ();
4670
4671   /* Find the lower bound.  */
4672   auto lower = [&] ()
4673     {
4674       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4675         return begin;
4676       else
4677         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4678     } ();
4679
4680   /* Find the upper bound.  */
4681   auto upper = [&] ()
4682     {
4683       if (lookup_name_without_params.completion_mode ())
4684         {
4685           /* In completion mode, we want UPPER to point past all
4686              symbols names that have the same prefix.  I.e., with
4687              these symbols, and completing "func":
4688
4689               function        << lower bound
4690               function1
4691               other_function  << upper bound
4692
4693              We find the upper bound by looking for the insertion
4694              point of "func"-with-last-character-incremented,
4695              i.e. "fund".  */
4696           std::string after = make_sort_after_prefix_name (cplus);
4697           if (after.empty ())
4698             return end;
4699           return std::lower_bound (lower, end, after.c_str (),
4700                                    lookup_compare_lower);
4701         }
4702       else
4703         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4704     } ();
4705
4706   return {lower, upper};
4707 }
4708
4709 /* See declaration.  */
4710
4711 void
4712 mapped_index_base::build_name_components ()
4713 {
4714   if (!this->name_components.empty ())
4715     return;
4716
4717   this->name_components_casing = case_sensitivity;
4718   auto *name_cmp
4719     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4720
4721   /* The code below only knows how to break apart components of C++
4722      symbol names (and other languages that use '::' as
4723      namespace/module separator).  If we add support for wild matching
4724      to some language that uses some other operator (E.g., Ada, Go and
4725      D use '.'), then we'll need to try splitting the symbol name
4726      according to that language too.  Note that Ada does support wild
4727      matching, but doesn't currently support .gdb_index.  */
4728   auto count = this->symbol_name_count ();
4729   for (offset_type idx = 0; idx < count; idx++)
4730     {
4731       if (this->symbol_name_slot_invalid (idx))
4732         continue;
4733
4734       const char *name = this->symbol_name_at (idx);
4735
4736       /* Add each name component to the name component table.  */
4737       unsigned int previous_len = 0;
4738       for (unsigned int current_len = cp_find_first_component (name);
4739            name[current_len] != '\0';
4740            current_len += cp_find_first_component (name + current_len))
4741         {
4742           gdb_assert (name[current_len] == ':');
4743           this->name_components.push_back ({previous_len, idx});
4744           /* Skip the '::'.  */
4745           current_len += 2;
4746           previous_len = current_len;
4747         }
4748       this->name_components.push_back ({previous_len, idx});
4749     }
4750
4751   /* Sort name_components elements by name.  */
4752   auto name_comp_compare = [&] (const name_component &left,
4753                                 const name_component &right)
4754     {
4755       const char *left_qualified = this->symbol_name_at (left.idx);
4756       const char *right_qualified = this->symbol_name_at (right.idx);
4757
4758       const char *left_name = left_qualified + left.name_offset;
4759       const char *right_name = right_qualified + right.name_offset;
4760
4761       return name_cmp (left_name, right_name) < 0;
4762     };
4763
4764   std::sort (this->name_components.begin (),
4765              this->name_components.end (),
4766              name_comp_compare);
4767 }
4768
4769 /* Helper for dw2_expand_symtabs_matching that works with a
4770    mapped_index_base instead of the containing objfile.  This is split
4771    to a separate function in order to be able to unit test the
4772    name_components matching using a mock mapped_index_base.  For each
4773    symbol name that matches, calls MATCH_CALLBACK, passing it the
4774    symbol's index in the mapped_index_base symbol table.  */
4775
4776 static void
4777 dw2_expand_symtabs_matching_symbol
4778   (mapped_index_base &index,
4779    const lookup_name_info &lookup_name_in,
4780    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4781    enum search_domain kind,
4782    gdb::function_view<void (offset_type)> match_callback)
4783 {
4784   lookup_name_info lookup_name_without_params
4785     = lookup_name_in.make_ignore_params ();
4786   gdb_index_symbol_name_matcher lookup_name_matcher
4787     (lookup_name_without_params);
4788
4789   /* Build the symbol name component sorted vector, if we haven't
4790      yet.  */
4791   index.build_name_components ();
4792
4793   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4794
4795   /* Now for each symbol name in range, check to see if we have a name
4796      match, and if so, call the MATCH_CALLBACK callback.  */
4797
4798   /* The same symbol may appear more than once in the range though.
4799      E.g., if we're looking for symbols that complete "w", and we have
4800      a symbol named "w1::w2", we'll find the two name components for
4801      that same symbol in the range.  To be sure we only call the
4802      callback once per symbol, we first collect the symbol name
4803      indexes that matched in a temporary vector and ignore
4804      duplicates.  */
4805   std::vector<offset_type> matches;
4806   matches.reserve (std::distance (bounds.first, bounds.second));
4807
4808   for (; bounds.first != bounds.second; ++bounds.first)
4809     {
4810       const char *qualified = index.symbol_name_at (bounds.first->idx);
4811
4812       if (!lookup_name_matcher.matches (qualified)
4813           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4814         continue;
4815
4816       matches.push_back (bounds.first->idx);
4817     }
4818
4819   std::sort (matches.begin (), matches.end ());
4820
4821   /* Finally call the callback, once per match.  */
4822   ULONGEST prev = -1;
4823   for (offset_type idx : matches)
4824     {
4825       if (prev != idx)
4826         {
4827           match_callback (idx);
4828           prev = idx;
4829         }
4830     }
4831
4832   /* Above we use a type wider than idx's for 'prev', since 0 and
4833      (offset_type)-1 are both possible values.  */
4834   static_assert (sizeof (prev) > sizeof (offset_type), "");
4835 }
4836
4837 #if GDB_SELF_TEST
4838
4839 namespace selftests { namespace dw2_expand_symtabs_matching {
4840
4841 /* A mock .gdb_index/.debug_names-like name index table, enough to
4842    exercise dw2_expand_symtabs_matching_symbol, which works with the
4843    mapped_index_base interface.  Builds an index from the symbol list
4844    passed as parameter to the constructor.  */
4845 class mock_mapped_index : public mapped_index_base
4846 {
4847 public:
4848   mock_mapped_index (gdb::array_view<const char *> symbols)
4849     : m_symbol_table (symbols)
4850   {}
4851
4852   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4853
4854   /* Return the number of names in the symbol table.  */
4855   virtual size_t symbol_name_count () const
4856   {
4857     return m_symbol_table.size ();
4858   }
4859
4860   /* Get the name of the symbol at IDX in the symbol table.  */
4861   virtual const char *symbol_name_at (offset_type idx) const
4862   {
4863     return m_symbol_table[idx];
4864   }
4865
4866 private:
4867   gdb::array_view<const char *> m_symbol_table;
4868 };
4869
4870 /* Convenience function that converts a NULL pointer to a "<null>"
4871    string, to pass to print routines.  */
4872
4873 static const char *
4874 string_or_null (const char *str)
4875 {
4876   return str != NULL ? str : "<null>";
4877 }
4878
4879 /* Check if a lookup_name_info built from
4880    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4881    index.  EXPECTED_LIST is the list of expected matches, in expected
4882    matching order.  If no match expected, then an empty list is
4883    specified.  Returns true on success.  On failure prints a warning
4884    indicating the file:line that failed, and returns false.  */
4885
4886 static bool
4887 check_match (const char *file, int line,
4888              mock_mapped_index &mock_index,
4889              const char *name, symbol_name_match_type match_type,
4890              bool completion_mode,
4891              std::initializer_list<const char *> expected_list)
4892 {
4893   lookup_name_info lookup_name (name, match_type, completion_mode);
4894
4895   bool matched = true;
4896
4897   auto mismatch = [&] (const char *expected_str,
4898                        const char *got)
4899   {
4900     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4901                "expected=\"%s\", got=\"%s\"\n"),
4902              file, line,
4903              (match_type == symbol_name_match_type::FULL
4904               ? "FULL" : "WILD"),
4905              name, string_or_null (expected_str), string_or_null (got));
4906     matched = false;
4907   };
4908
4909   auto expected_it = expected_list.begin ();
4910   auto expected_end = expected_list.end ();
4911
4912   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4913                                       NULL, ALL_DOMAIN,
4914                                       [&] (offset_type idx)
4915   {
4916     const char *matched_name = mock_index.symbol_name_at (idx);
4917     const char *expected_str
4918       = expected_it == expected_end ? NULL : *expected_it++;
4919
4920     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4921       mismatch (expected_str, matched_name);
4922   });
4923
4924   const char *expected_str
4925   = expected_it == expected_end ? NULL : *expected_it++;
4926   if (expected_str != NULL)
4927     mismatch (expected_str, NULL);
4928
4929   return matched;
4930 }
4931
4932 /* The symbols added to the mock mapped_index for testing (in
4933    canonical form).  */
4934 static const char *test_symbols[] = {
4935   "function",
4936   "std::bar",
4937   "std::zfunction",
4938   "std::zfunction2",
4939   "w1::w2",
4940   "ns::foo<char*>",
4941   "ns::foo<int>",
4942   "ns::foo<long>",
4943   "ns2::tmpl<int>::foo2",
4944   "(anonymous namespace)::A::B::C",
4945
4946   /* These are used to check that the increment-last-char in the
4947      matching algorithm for completion doesn't match "t1_fund" when
4948      completing "t1_func".  */
4949   "t1_func",
4950   "t1_func1",
4951   "t1_fund",
4952   "t1_fund1",
4953
4954   /* A UTF-8 name with multi-byte sequences to make sure that
4955      cp-name-parser understands this as a single identifier ("função"
4956      is "function" in PT).  */
4957   u8"u8função",
4958
4959   /* \377 (0xff) is Latin1 'ÿ'.  */
4960   "yfunc\377",
4961
4962   /* \377 (0xff) is Latin1 'ÿ'.  */
4963   "\377",
4964   "\377\377123",
4965
4966   /* A name with all sorts of complications.  Starts with "z" to make
4967      it easier for the completion tests below.  */
4968 #define Z_SYM_NAME \
4969   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4970     "::tuple<(anonymous namespace)::ui*, " \
4971     "std::default_delete<(anonymous namespace)::ui>, void>"
4972
4973   Z_SYM_NAME
4974 };
4975
4976 /* Returns true if the mapped_index_base::find_name_component_bounds
4977    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4978    in completion mode.  */
4979
4980 static bool
4981 check_find_bounds_finds (mapped_index_base &index,
4982                          const char *search_name,
4983                          gdb::array_view<const char *> expected_syms)
4984 {
4985   lookup_name_info lookup_name (search_name,
4986                                 symbol_name_match_type::FULL, true);
4987
4988   auto bounds = index.find_name_components_bounds (lookup_name);
4989
4990   size_t distance = std::distance (bounds.first, bounds.second);
4991   if (distance != expected_syms.size ())
4992     return false;
4993
4994   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4995     {
4996       auto nc_elem = bounds.first + exp_elem;
4997       const char *qualified = index.symbol_name_at (nc_elem->idx);
4998       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4999         return false;
5000     }
5001
5002   return true;
5003 }
5004
5005 /* Test the lower-level mapped_index::find_name_component_bounds
5006    method.  */
5007
5008 static void
5009 test_mapped_index_find_name_component_bounds ()
5010 {
5011   mock_mapped_index mock_index (test_symbols);
5012
5013   mock_index.build_name_components ();
5014
5015   /* Test the lower-level mapped_index::find_name_component_bounds
5016      method in completion mode.  */
5017   {
5018     static const char *expected_syms[] = {
5019       "t1_func",
5020       "t1_func1",
5021     };
5022
5023     SELF_CHECK (check_find_bounds_finds (mock_index,
5024                                          "t1_func", expected_syms));
5025   }
5026
5027   /* Check that the increment-last-char in the name matching algorithm
5028      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
5029   {
5030     static const char *expected_syms1[] = {
5031       "\377",
5032       "\377\377123",
5033     };
5034     SELF_CHECK (check_find_bounds_finds (mock_index,
5035                                          "\377", expected_syms1));
5036
5037     static const char *expected_syms2[] = {
5038       "\377\377123",
5039     };
5040     SELF_CHECK (check_find_bounds_finds (mock_index,
5041                                          "\377\377", expected_syms2));
5042   }
5043 }
5044
5045 /* Test dw2_expand_symtabs_matching_symbol.  */
5046
5047 static void
5048 test_dw2_expand_symtabs_matching_symbol ()
5049 {
5050   mock_mapped_index mock_index (test_symbols);
5051
5052   /* We let all tests run until the end even if some fails, for debug
5053      convenience.  */
5054   bool any_mismatch = false;
5055
5056   /* Create the expected symbols list (an initializer_list).  Needed
5057      because lists have commas, and we need to pass them to CHECK,
5058      which is a macro.  */
5059 #define EXPECT(...) { __VA_ARGS__ }
5060
5061   /* Wrapper for check_match that passes down the current
5062      __FILE__/__LINE__.  */
5063 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
5064   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
5065                                 mock_index,                             \
5066                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
5067                                 EXPECTED_LIST)
5068
5069   /* Identity checks.  */
5070   for (const char *sym : test_symbols)
5071     {
5072       /* Should be able to match all existing symbols.  */
5073       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
5074                    EXPECT (sym));
5075
5076       /* Should be able to match all existing symbols with
5077          parameters.  */
5078       std::string with_params = std::string (sym) + "(int)";
5079       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
5080                    EXPECT (sym));
5081
5082       /* Should be able to match all existing symbols with
5083          parameters and qualifiers.  */
5084       with_params = std::string (sym) + " ( int ) const";
5085       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
5086                    EXPECT (sym));
5087
5088       /* This should really find sym, but cp-name-parser.y doesn't
5089          know about lvalue/rvalue qualifiers yet.  */
5090       with_params = std::string (sym) + " ( int ) &&";
5091       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
5092                    {});
5093     }
5094
5095   /* Check that the name matching algorithm for completion doesn't get
5096      confused with Latin1 'ÿ' / 0xff.  */
5097   {
5098     static const char str[] = "\377";
5099     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
5100                  EXPECT ("\377", "\377\377123"));
5101   }
5102
5103   /* Check that the increment-last-char in the matching algorithm for
5104      completion doesn't match "t1_fund" when completing "t1_func".  */
5105   {
5106     static const char str[] = "t1_func";
5107     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
5108                  EXPECT ("t1_func", "t1_func1"));
5109   }
5110
5111   /* Check that completion mode works at each prefix of the expected
5112      symbol name.  */
5113   {
5114     static const char str[] = "function(int)";
5115     size_t len = strlen (str);
5116     std::string lookup;
5117
5118     for (size_t i = 1; i < len; i++)
5119       {
5120         lookup.assign (str, i);
5121         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
5122                      EXPECT ("function"));
5123       }
5124   }
5125
5126   /* While "w" is a prefix of both components, the match function
5127      should still only be called once.  */
5128   {
5129     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
5130                  EXPECT ("w1::w2"));
5131     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
5132                  EXPECT ("w1::w2"));
5133   }
5134
5135   /* Same, with a "complicated" symbol.  */
5136   {
5137     static const char str[] = Z_SYM_NAME;
5138     size_t len = strlen (str);
5139     std::string lookup;
5140
5141     for (size_t i = 1; i < len; i++)
5142       {
5143         lookup.assign (str, i);
5144         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
5145                      EXPECT (Z_SYM_NAME));
5146       }
5147   }
5148
5149   /* In FULL mode, an incomplete symbol doesn't match.  */
5150   {
5151     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
5152                  {});
5153   }
5154
5155   /* A complete symbol with parameters matches any overload, since the
5156      index has no overload info.  */
5157   {
5158     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
5159                  EXPECT ("std::zfunction", "std::zfunction2"));
5160     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
5161                  EXPECT ("std::zfunction", "std::zfunction2"));
5162     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
5163                  EXPECT ("std::zfunction", "std::zfunction2"));
5164   }
5165
5166   /* Check that whitespace is ignored appropriately.  A symbol with a
5167      template argument list. */
5168   {
5169     static const char expected[] = "ns::foo<int>";
5170     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
5171                  EXPECT (expected));
5172     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
5173                  EXPECT (expected));
5174   }
5175
5176   /* Check that whitespace is ignored appropriately.  A symbol with a
5177      template argument list that includes a pointer.  */
5178   {
5179     static const char expected[] = "ns::foo<char*>";
5180     /* Try both completion and non-completion modes.  */
5181     static const bool completion_mode[2] = {false, true};
5182     for (size_t i = 0; i < 2; i++)
5183       {
5184         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
5185                      completion_mode[i], EXPECT (expected));
5186         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
5187                      completion_mode[i], EXPECT (expected));
5188
5189         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
5190                      completion_mode[i], EXPECT (expected));
5191         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
5192                      completion_mode[i], EXPECT (expected));
5193       }
5194   }
5195
5196   {
5197     /* Check method qualifiers are ignored.  */
5198     static const char expected[] = "ns::foo<char*>";
5199     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
5200                  symbol_name_match_type::FULL, true, EXPECT (expected));
5201     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
5202                  symbol_name_match_type::FULL, true, EXPECT (expected));
5203     CHECK_MATCH ("foo < char * >  ( int ) const",
5204                  symbol_name_match_type::WILD, true, EXPECT (expected));
5205     CHECK_MATCH ("foo < char * >  ( int ) &&",
5206                  symbol_name_match_type::WILD, true, EXPECT (expected));
5207   }
5208
5209   /* Test lookup names that don't match anything.  */
5210   {
5211     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
5212                  {});
5213
5214     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
5215                  {});
5216   }
5217
5218   /* Some wild matching tests, exercising "(anonymous namespace)",
5219      which should not be confused with a parameter list.  */
5220   {
5221     static const char *syms[] = {
5222       "A::B::C",
5223       "B::C",
5224       "C",
5225       "A :: B :: C ( int )",
5226       "B :: C ( int )",
5227       "C ( int )",
5228     };
5229
5230     for (const char *s : syms)
5231       {
5232         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
5233                      EXPECT ("(anonymous namespace)::A::B::C"));
5234       }
5235   }
5236
5237   {
5238     static const char expected[] = "ns2::tmpl<int>::foo2";
5239     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
5240                  EXPECT (expected));
5241     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
5242                  EXPECT (expected));
5243   }
5244
5245   SELF_CHECK (!any_mismatch);
5246
5247 #undef EXPECT
5248 #undef CHECK_MATCH
5249 }
5250
5251 static void
5252 run_test ()
5253 {
5254   test_mapped_index_find_name_component_bounds ();
5255   test_dw2_expand_symtabs_matching_symbol ();
5256 }
5257
5258 }} // namespace selftests::dw2_expand_symtabs_matching
5259
5260 #endif /* GDB_SELF_TEST */
5261
5262 /* If FILE_MATCHER is NULL or if PER_CU has
5263    dwarf2_per_cu_quick_data::MARK set (see
5264    dw_expand_symtabs_matching_file_matcher), expand the CU and call
5265    EXPANSION_NOTIFY on it.  */
5266
5267 static void
5268 dw2_expand_symtabs_matching_one
5269   (struct dwarf2_per_cu_data *per_cu,
5270    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5271    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5272 {
5273   if (file_matcher == NULL || per_cu->v.quick->mark)
5274     {
5275       bool symtab_was_null
5276         = (per_cu->v.quick->compunit_symtab == NULL);
5277
5278       dw2_instantiate_symtab (per_cu);
5279
5280       if (expansion_notify != NULL
5281           && symtab_was_null
5282           && per_cu->v.quick->compunit_symtab != NULL)
5283         expansion_notify (per_cu->v.quick->compunit_symtab);
5284     }
5285 }
5286
5287 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5288    matched, to expand corresponding CUs that were marked.  IDX is the
5289    index of the symbol name that matched.  */
5290
5291 static void
5292 dw2_expand_marked_cus
5293   (mapped_index &index, offset_type idx,
5294    struct objfile *objfile,
5295    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5296    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5297    search_domain kind)
5298 {
5299   offset_type *vec, vec_len, vec_idx;
5300   bool global_seen = false;
5301
5302   vec = (offset_type *) (index.constant_pool
5303                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5304   vec_len = MAYBE_SWAP (vec[0]);
5305   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5306     {
5307       struct dwarf2_per_cu_data *per_cu;
5308       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5309       /* This value is only valid for index versions >= 7.  */
5310       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5311       gdb_index_symbol_kind symbol_kind =
5312         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5313       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5314       /* Only check the symbol attributes if they're present.
5315          Indices prior to version 7 don't record them,
5316          and indices >= 7 may elide them for certain symbols
5317          (gold does this).  */
5318       int attrs_valid =
5319         (index.version >= 7
5320          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5321
5322       /* Work around gold/15646.  */
5323       if (attrs_valid)
5324         {
5325           if (!is_static && global_seen)
5326             continue;
5327           if (!is_static)
5328             global_seen = true;
5329         }
5330
5331       /* Only check the symbol's kind if it has one.  */
5332       if (attrs_valid)
5333         {
5334           switch (kind)
5335             {
5336             case VARIABLES_DOMAIN:
5337               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5338                 continue;
5339               break;
5340             case FUNCTIONS_DOMAIN:
5341               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5342                 continue;
5343               break;
5344             case TYPES_DOMAIN:
5345               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5346                 continue;
5347               break;
5348             default:
5349               break;
5350             }
5351         }
5352
5353       /* Don't crash on bad data.  */
5354       if (cu_index >= (dwarf2_per_objfile->n_comp_units
5355                        + dwarf2_per_objfile->n_type_units))
5356         {
5357           complaint (&symfile_complaints,
5358                      _(".gdb_index entry has bad CU index"
5359                        " [in module %s]"), objfile_name (objfile));
5360           continue;
5361         }
5362
5363       per_cu = dw2_get_cutu (cu_index);
5364       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5365                                        expansion_notify);
5366     }
5367 }
5368
5369 /* If FILE_MATCHER is non-NULL, set all the
5370    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5371    that match FILE_MATCHER.  */
5372
5373 static void
5374 dw_expand_symtabs_matching_file_matcher
5375   (gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5376 {
5377   if (file_matcher == NULL)
5378     return;
5379
5380   objfile *const objfile = dwarf2_per_objfile->objfile;
5381
5382   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5383                                             htab_eq_pointer,
5384                                             NULL, xcalloc, xfree));
5385   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5386                                                 htab_eq_pointer,
5387                                                 NULL, xcalloc, xfree));
5388
5389   /* The rule is CUs specify all the files, including those used by
5390      any TU, so there's no need to scan TUs here.  */
5391
5392   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5393     {
5394       int j;
5395       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
5396       struct quick_file_names *file_data;
5397       void **slot;
5398
5399       QUIT;
5400
5401       per_cu->v.quick->mark = 0;
5402
5403       /* We only need to look at symtabs not already expanded.  */
5404       if (per_cu->v.quick->compunit_symtab)
5405         continue;
5406
5407       file_data = dw2_get_file_names (per_cu);
5408       if (file_data == NULL)
5409         continue;
5410
5411       if (htab_find (visited_not_found.get (), file_data) != NULL)
5412         continue;
5413       else if (htab_find (visited_found.get (), file_data) != NULL)
5414         {
5415           per_cu->v.quick->mark = 1;
5416           continue;
5417         }
5418
5419       for (j = 0; j < file_data->num_file_names; ++j)
5420         {
5421           const char *this_real_name;
5422
5423           if (file_matcher (file_data->file_names[j], false))
5424             {
5425               per_cu->v.quick->mark = 1;
5426               break;
5427             }
5428
5429           /* Before we invoke realpath, which can get expensive when many
5430              files are involved, do a quick comparison of the basenames.  */
5431           if (!basenames_may_differ
5432               && !file_matcher (lbasename (file_data->file_names[j]),
5433                                 true))
5434             continue;
5435
5436           this_real_name = dw2_get_real_path (objfile, file_data, j);
5437           if (file_matcher (this_real_name, false))
5438             {
5439               per_cu->v.quick->mark = 1;
5440               break;
5441             }
5442         }
5443
5444       slot = htab_find_slot (per_cu->v.quick->mark
5445                              ? visited_found.get ()
5446                              : visited_not_found.get (),
5447                              file_data, INSERT);
5448       *slot = file_data;
5449     }
5450 }
5451
5452 static void
5453 dw2_expand_symtabs_matching
5454   (struct objfile *objfile,
5455    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5456    const lookup_name_info &lookup_name,
5457    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5458    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5459    enum search_domain kind)
5460 {
5461   dw2_setup (objfile);
5462
5463   /* index_table is NULL if OBJF_READNOW.  */
5464   if (!dwarf2_per_objfile->index_table)
5465     return;
5466
5467   dw_expand_symtabs_matching_file_matcher (file_matcher);
5468
5469   mapped_index &index = *dwarf2_per_objfile->index_table;
5470
5471   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5472                                       symbol_matcher,
5473                                       kind, [&] (offset_type idx)
5474     {
5475       dw2_expand_marked_cus (index, idx, objfile, file_matcher,
5476                              expansion_notify, kind);
5477     });
5478 }
5479
5480 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5481    symtab.  */
5482
5483 static struct compunit_symtab *
5484 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5485                                           CORE_ADDR pc)
5486 {
5487   int i;
5488
5489   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5490       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5491     return cust;
5492
5493   if (cust->includes == NULL)
5494     return NULL;
5495
5496   for (i = 0; cust->includes[i]; ++i)
5497     {
5498       struct compunit_symtab *s = cust->includes[i];
5499
5500       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5501       if (s != NULL)
5502         return s;
5503     }
5504
5505   return NULL;
5506 }
5507
5508 static struct compunit_symtab *
5509 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5510                                   struct bound_minimal_symbol msymbol,
5511                                   CORE_ADDR pc,
5512                                   struct obj_section *section,
5513                                   int warn_if_readin)
5514 {
5515   struct dwarf2_per_cu_data *data;
5516   struct compunit_symtab *result;
5517
5518   dw2_setup (objfile);
5519
5520   if (!objfile->psymtabs_addrmap)
5521     return NULL;
5522
5523   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5524                                                      pc);
5525   if (!data)
5526     return NULL;
5527
5528   if (warn_if_readin && data->v.quick->compunit_symtab)
5529     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5530              paddress (get_objfile_arch (objfile), pc));
5531
5532   result
5533     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
5534                                                 pc);
5535   gdb_assert (result != NULL);
5536   return result;
5537 }
5538
5539 static void
5540 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5541                           void *data, int need_fullname)
5542 {
5543   dw2_setup (objfile);
5544
5545   if (!dwarf2_per_objfile->filenames_cache)
5546     {
5547       dwarf2_per_objfile->filenames_cache.emplace ();
5548
5549       htab_up visited (htab_create_alloc (10,
5550                                           htab_hash_pointer, htab_eq_pointer,
5551                                           NULL, xcalloc, xfree));
5552
5553       /* The rule is CUs specify all the files, including those used
5554          by any TU, so there's no need to scan TUs here.  We can
5555          ignore file names coming from already-expanded CUs.  */
5556
5557       for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5558         {
5559           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
5560
5561           if (per_cu->v.quick->compunit_symtab)
5562             {
5563               void **slot = htab_find_slot (visited.get (),
5564                                             per_cu->v.quick->file_names,
5565                                             INSERT);
5566
5567               *slot = per_cu->v.quick->file_names;
5568             }
5569         }
5570
5571       for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5572         {
5573           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
5574           struct quick_file_names *file_data;
5575           void **slot;
5576
5577           /* We only need to look at symtabs not already expanded.  */
5578           if (per_cu->v.quick->compunit_symtab)
5579             continue;
5580
5581           file_data = dw2_get_file_names (per_cu);
5582           if (file_data == NULL)
5583             continue;
5584
5585           slot = htab_find_slot (visited.get (), file_data, INSERT);
5586           if (*slot)
5587             {
5588               /* Already visited.  */
5589               continue;
5590             }
5591           *slot = file_data;
5592
5593           for (int j = 0; j < file_data->num_file_names; ++j)
5594             {
5595               const char *filename = file_data->file_names[j];
5596               dwarf2_per_objfile->filenames_cache->seen (filename);
5597             }
5598         }
5599     }
5600
5601   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5602     {
5603       gdb::unique_xmalloc_ptr<char> this_real_name;
5604
5605       if (need_fullname)
5606         this_real_name = gdb_realpath (filename);
5607       (*fun) (filename, this_real_name.get (), data);
5608     });
5609 }
5610
5611 static int
5612 dw2_has_symbols (struct objfile *objfile)
5613 {
5614   return 1;
5615 }
5616
5617 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5618 {
5619   dw2_has_symbols,
5620   dw2_find_last_source_symtab,
5621   dw2_forget_cached_source_info,
5622   dw2_map_symtabs_matching_filename,
5623   dw2_lookup_symbol,
5624   dw2_print_stats,
5625   dw2_dump,
5626   dw2_relocate,
5627   dw2_expand_symtabs_for_function,
5628   dw2_expand_all_symtabs,
5629   dw2_expand_symtabs_with_fullname,
5630   dw2_map_matching_symbols,
5631   dw2_expand_symtabs_matching,
5632   dw2_find_pc_sect_compunit_symtab,
5633   NULL,
5634   dw2_map_symbol_filenames
5635 };
5636
5637 /* DWARF-5 debug_names reader.  */
5638
5639 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5640 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5641
5642 /* A helper function that reads the .debug_names section in SECTION
5643    and fills in MAP.  FILENAME is the name of the file containing the
5644    section; it is used for error reporting.
5645
5646    Returns true if all went well, false otherwise.  */
5647
5648 static bool
5649 read_debug_names_from_section (struct objfile *objfile,
5650                                const char *filename,
5651                                struct dwarf2_section_info *section,
5652                                mapped_debug_names &map)
5653 {
5654   if (dwarf2_section_empty_p (section))
5655     return false;
5656
5657   /* Older elfutils strip versions could keep the section in the main
5658      executable while splitting it for the separate debug info file.  */
5659   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5660     return false;
5661
5662   dwarf2_read_section (objfile, section);
5663
5664   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5665
5666   const gdb_byte *addr = section->buffer;
5667
5668   bfd *const abfd = get_section_bfd_owner (section);
5669
5670   unsigned int bytes_read;
5671   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5672   addr += bytes_read;
5673
5674   map.dwarf5_is_dwarf64 = bytes_read != 4;
5675   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5676   if (bytes_read + length != section->size)
5677     {
5678       /* There may be multiple per-CU indices.  */
5679       warning (_("Section .debug_names in %s length %s does not match "
5680                  "section length %s, ignoring .debug_names."),
5681                filename, plongest (bytes_read + length),
5682                pulongest (section->size));
5683       return false;
5684     }
5685
5686   /* The version number.  */
5687   uint16_t version = read_2_bytes (abfd, addr);
5688   addr += 2;
5689   if (version != 5)
5690     {
5691       warning (_("Section .debug_names in %s has unsupported version %d, "
5692                  "ignoring .debug_names."),
5693                filename, version);
5694       return false;
5695     }
5696
5697   /* Padding.  */
5698   uint16_t padding = read_2_bytes (abfd, addr);
5699   addr += 2;
5700   if (padding != 0)
5701     {
5702       warning (_("Section .debug_names in %s has unsupported padding %d, "
5703                  "ignoring .debug_names."),
5704                filename, padding);
5705       return false;
5706     }
5707
5708   /* comp_unit_count - The number of CUs in the CU list.  */
5709   map.cu_count = read_4_bytes (abfd, addr);
5710   addr += 4;
5711
5712   /* local_type_unit_count - The number of TUs in the local TU
5713      list.  */
5714   map.tu_count = read_4_bytes (abfd, addr);
5715   addr += 4;
5716
5717   /* foreign_type_unit_count - The number of TUs in the foreign TU
5718      list.  */
5719   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5720   addr += 4;
5721   if (foreign_tu_count != 0)
5722     {
5723       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5724                  "ignoring .debug_names."),
5725                filename, static_cast<unsigned long> (foreign_tu_count));
5726       return false;
5727     }
5728
5729   /* bucket_count - The number of hash buckets in the hash lookup
5730      table.  */
5731   map.bucket_count = read_4_bytes (abfd, addr);
5732   addr += 4;
5733
5734   /* name_count - The number of unique names in the index.  */
5735   map.name_count = read_4_bytes (abfd, addr);
5736   addr += 4;
5737
5738   /* abbrev_table_size - The size in bytes of the abbreviations
5739      table.  */
5740   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5741   addr += 4;
5742
5743   /* augmentation_string_size - The size in bytes of the augmentation
5744      string.  This value is rounded up to a multiple of 4.  */
5745   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5746   addr += 4;
5747   map.augmentation_is_gdb = ((augmentation_string_size
5748                               == sizeof (dwarf5_augmentation))
5749                              && memcmp (addr, dwarf5_augmentation,
5750                                         sizeof (dwarf5_augmentation)) == 0);
5751   augmentation_string_size += (-augmentation_string_size) & 3;
5752   addr += augmentation_string_size;
5753
5754   /* List of CUs */
5755   map.cu_table_reordered = addr;
5756   addr += map.cu_count * map.offset_size;
5757
5758   /* List of Local TUs */
5759   map.tu_table_reordered = addr;
5760   addr += map.tu_count * map.offset_size;
5761
5762   /* Hash Lookup Table */
5763   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5764   addr += map.bucket_count * 4;
5765   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5766   addr += map.name_count * 4;
5767
5768   /* Name Table */
5769   map.name_table_string_offs_reordered = addr;
5770   addr += map.name_count * map.offset_size;
5771   map.name_table_entry_offs_reordered = addr;
5772   addr += map.name_count * map.offset_size;
5773
5774   const gdb_byte *abbrev_table_start = addr;
5775   for (;;)
5776     {
5777       unsigned int bytes_read;
5778       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5779       addr += bytes_read;
5780       if (index_num == 0)
5781         break;
5782
5783       const auto insertpair
5784         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5785       if (!insertpair.second)
5786         {
5787           warning (_("Section .debug_names in %s has duplicate index %s, "
5788                      "ignoring .debug_names."),
5789                    filename, pulongest (index_num));
5790           return false;
5791         }
5792       mapped_debug_names::index_val &indexval = insertpair.first->second;
5793       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5794       addr += bytes_read;
5795
5796       for (;;)
5797         {
5798           mapped_debug_names::index_val::attr attr;
5799           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5800           addr += bytes_read;
5801           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5802           addr += bytes_read;
5803           if (attr.form == DW_FORM_implicit_const)
5804             {
5805               attr.implicit_const = read_signed_leb128 (abfd, addr,
5806                                                         &bytes_read);
5807               addr += bytes_read;
5808             }
5809           if (attr.dw_idx == 0 && attr.form == 0)
5810             break;
5811           indexval.attr_vec.push_back (std::move (attr));
5812         }
5813     }
5814   if (addr != abbrev_table_start + abbrev_table_size)
5815     {
5816       warning (_("Section .debug_names in %s has abbreviation_table "
5817                  "of size %zu vs. written as %u, ignoring .debug_names."),
5818                filename, addr - abbrev_table_start, abbrev_table_size);
5819       return false;
5820     }
5821   map.entry_pool = addr;
5822
5823   return true;
5824 }
5825
5826 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5827    list.  */
5828
5829 static void
5830 create_cus_from_debug_names_list (struct objfile *objfile,
5831                                   const mapped_debug_names &map,
5832                                   dwarf2_section_info &section,
5833                                   bool is_dwz, int base_offset)
5834 {
5835   sect_offset sect_off_prev;
5836   for (uint32_t i = 0; i <= map.cu_count; ++i)
5837     {
5838       sect_offset sect_off_next;
5839       if (i < map.cu_count)
5840         {
5841           sect_off_next
5842             = (sect_offset) (extract_unsigned_integer
5843                              (map.cu_table_reordered + i * map.offset_size,
5844                               map.offset_size,
5845                               map.dwarf5_byte_order));
5846         }
5847       else
5848         sect_off_next = (sect_offset) section.size;
5849       if (i >= 1)
5850         {
5851           const ULONGEST length = sect_off_next - sect_off_prev;
5852           dwarf2_per_objfile->all_comp_units[base_offset + (i - 1)]
5853             = create_cu_from_index_list (objfile, &section, is_dwz,
5854                                          sect_off_prev, length);
5855         }
5856       sect_off_prev = sect_off_next;
5857     }
5858 }
5859
5860 /* Read the CU list from the mapped index, and use it to create all
5861    the CU objects for this objfile.  */
5862
5863 static void
5864 create_cus_from_debug_names (struct objfile *objfile,
5865                              const mapped_debug_names &map,
5866                              const mapped_debug_names &dwz_map)
5867 {
5868
5869   dwarf2_per_objfile->n_comp_units = map.cu_count + dwz_map.cu_count;
5870   dwarf2_per_objfile->all_comp_units
5871     = XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
5872                  dwarf2_per_objfile->n_comp_units);
5873
5874   create_cus_from_debug_names_list (objfile, map, dwarf2_per_objfile->info,
5875                                     false /* is_dwz */,
5876                                     0 /* base_offset */);
5877
5878   if (dwz_map.cu_count == 0)
5879     return;
5880
5881   dwz_file *dwz = dwarf2_get_dwz_file ();
5882   create_cus_from_debug_names_list (objfile, dwz_map, dwz->info,
5883                                     true /* is_dwz */,
5884                                     map.cu_count /* base_offset */);
5885 }
5886
5887 /* Read .debug_names.  If everything went ok, initialize the "quick"
5888    elements of all the CUs and return true.  Otherwise, return false.  */
5889
5890 static bool
5891 dwarf2_read_debug_names (struct objfile *objfile)
5892 {
5893   mapped_debug_names local_map, dwz_map;
5894
5895   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5896                                       &dwarf2_per_objfile->debug_names,
5897                                       local_map))
5898     return false;
5899
5900   /* Don't use the index if it's empty.  */
5901   if (local_map.name_count == 0)
5902     return false;
5903
5904   /* If there is a .dwz file, read it so we can get its CU list as
5905      well.  */
5906   dwz_file *dwz = dwarf2_get_dwz_file ();
5907   if (dwz != NULL)
5908     {
5909       if (!read_debug_names_from_section (objfile,
5910                                           bfd_get_filename (dwz->dwz_bfd),
5911                                           &dwz->debug_names, dwz_map))
5912         {
5913           warning (_("could not read '.debug_names' section from %s; skipping"),
5914                    bfd_get_filename (dwz->dwz_bfd));
5915           return false;
5916         }
5917     }
5918
5919   create_cus_from_debug_names (objfile, local_map, dwz_map);
5920
5921   if (local_map.tu_count != 0)
5922     {
5923       /* We can only handle a single .debug_types when we have an
5924          index.  */
5925       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5926         return false;
5927
5928       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5929                                                 dwarf2_per_objfile->types, 0);
5930
5931       create_signatured_type_table_from_debug_names
5932         (objfile, local_map, section, &dwarf2_per_objfile->abbrev);
5933     }
5934
5935   create_addrmap_from_aranges (objfile, &dwarf2_per_objfile->debug_aranges);
5936
5937   dwarf2_per_objfile->debug_names_table.reset (new mapped_debug_names);
5938   *dwarf2_per_objfile->debug_names_table = std::move (local_map);
5939   dwarf2_per_objfile->using_index = 1;
5940   dwarf2_per_objfile->quick_file_names_table =
5941     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
5942
5943   return true;
5944 }
5945
5946 /* Symbol name hashing function as specified by DWARF-5.  */
5947
5948 static uint32_t
5949 dwarf5_djb_hash (const char *str_)
5950 {
5951   const unsigned char *str = (const unsigned char *) str_;
5952
5953   /* Note: tolower here ignores UTF-8, which isn't fully compliant.
5954      See http://dwarfstd.org/ShowIssue.php?issue=161027.1.  */
5955
5956   uint32_t hash = 5381;
5957   while (int c = *str++)
5958     hash = hash * 33 + tolower (c);
5959   return hash;
5960 }
5961
5962 /* Type used to manage iterating over all CUs looking for a symbol for
5963    .debug_names.  */
5964
5965 class dw2_debug_names_iterator
5966 {
5967 public:
5968   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5969      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5970   dw2_debug_names_iterator (const mapped_debug_names &map,
5971                             bool want_specific_block,
5972                             block_enum block_index, domain_enum domain,
5973                             const char *name)
5974     : m_map (map), m_want_specific_block (want_specific_block),
5975       m_block_index (block_index), m_domain (domain),
5976       m_addr (find_vec_in_debug_names (map, name))
5977   {}
5978
5979   dw2_debug_names_iterator (const mapped_debug_names &map,
5980                             search_domain search, uint32_t namei)
5981     : m_map (map),
5982       m_search (search),
5983       m_addr (find_vec_in_debug_names (map, namei))
5984   {}
5985
5986   /* Return the next matching CU or NULL if there are no more.  */
5987   dwarf2_per_cu_data *next ();
5988
5989 private:
5990   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5991                                                   const char *name);
5992   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5993                                                   uint32_t namei);
5994
5995   /* The internalized form of .debug_names.  */
5996   const mapped_debug_names &m_map;
5997
5998   /* If true, only look for symbols that match BLOCK_INDEX.  */
5999   const bool m_want_specific_block = false;
6000
6001   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
6002      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
6003      value.  */
6004   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
6005
6006   /* The kind of symbol we're looking for.  */
6007   const domain_enum m_domain = UNDEF_DOMAIN;
6008   const search_domain m_search = ALL_DOMAIN;
6009
6010   /* The list of CUs from the index entry of the symbol, or NULL if
6011      not found.  */
6012   const gdb_byte *m_addr;
6013 };
6014
6015 const char *
6016 mapped_debug_names::namei_to_name (uint32_t namei) const
6017 {
6018   const ULONGEST namei_string_offs
6019     = extract_unsigned_integer ((name_table_string_offs_reordered
6020                                  + namei * offset_size),
6021                                 offset_size,
6022                                 dwarf5_byte_order);
6023   return read_indirect_string_at_offset
6024     (dwarf2_per_objfile->objfile->obfd, namei_string_offs);
6025 }
6026
6027 /* Find a slot in .debug_names for the object named NAME.  If NAME is
6028    found, return pointer to its pool data.  If NAME cannot be found,
6029    return NULL.  */
6030
6031 const gdb_byte *
6032 dw2_debug_names_iterator::find_vec_in_debug_names
6033   (const mapped_debug_names &map, const char *name)
6034 {
6035   int (*cmp) (const char *, const char *);
6036
6037   if (current_language->la_language == language_cplus
6038       || current_language->la_language == language_fortran
6039       || current_language->la_language == language_d)
6040     {
6041       /* NAME is already canonical.  Drop any qualifiers as
6042          .debug_names does not contain any.  */
6043
6044       if (strchr (name, '(') != NULL)
6045         {
6046           gdb::unique_xmalloc_ptr<char> without_params
6047             = cp_remove_params (name);
6048
6049           if (without_params != NULL)
6050             {
6051               name = without_params.get();
6052             }
6053         }
6054     }
6055
6056   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
6057
6058   const uint32_t full_hash = dwarf5_djb_hash (name);
6059   uint32_t namei
6060     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
6061                                 (map.bucket_table_reordered
6062                                  + (full_hash % map.bucket_count)), 4,
6063                                 map.dwarf5_byte_order);
6064   if (namei == 0)
6065     return NULL;
6066   --namei;
6067   if (namei >= map.name_count)
6068     {
6069       complaint (&symfile_complaints,
6070                  _("Wrong .debug_names with name index %u but name_count=%u "
6071                    "[in module %s]"),
6072                  namei, map.name_count,
6073                  objfile_name (dwarf2_per_objfile->objfile));
6074       return NULL;
6075     }
6076
6077   for (;;)
6078     {
6079       const uint32_t namei_full_hash
6080         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
6081                                     (map.hash_table_reordered + namei), 4,
6082                                     map.dwarf5_byte_order);
6083       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
6084         return NULL;
6085
6086       if (full_hash == namei_full_hash)
6087         {
6088           const char *const namei_string = map.namei_to_name (namei);
6089
6090 #if 0 /* An expensive sanity check.  */
6091           if (namei_full_hash != dwarf5_djb_hash (namei_string))
6092             {
6093               complaint (&symfile_complaints,
6094                          _("Wrong .debug_names hash for string at index %u "
6095                            "[in module %s]"),
6096                          namei, objfile_name (dwarf2_per_objfile->objfile));
6097               return NULL;
6098             }
6099 #endif
6100
6101           if (cmp (namei_string, name) == 0)
6102             {
6103               const ULONGEST namei_entry_offs
6104                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
6105                                              + namei * map.offset_size),
6106                                             map.offset_size, map.dwarf5_byte_order);
6107               return map.entry_pool + namei_entry_offs;
6108             }
6109         }
6110
6111       ++namei;
6112       if (namei >= map.name_count)
6113         return NULL;
6114     }
6115 }
6116
6117 const gdb_byte *
6118 dw2_debug_names_iterator::find_vec_in_debug_names
6119   (const mapped_debug_names &map, uint32_t namei)
6120 {
6121   if (namei >= map.name_count)
6122     {
6123       complaint (&symfile_complaints,
6124                  _("Wrong .debug_names with name index %u but name_count=%u "
6125                    "[in module %s]"),
6126                  namei, map.name_count,
6127                  objfile_name (dwarf2_per_objfile->objfile));
6128       return NULL;
6129     }
6130
6131   const ULONGEST namei_entry_offs
6132     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
6133                                  + namei * map.offset_size),
6134                                 map.offset_size, map.dwarf5_byte_order);
6135   return map.entry_pool + namei_entry_offs;
6136 }
6137
6138 /* See dw2_debug_names_iterator.  */
6139
6140 dwarf2_per_cu_data *
6141 dw2_debug_names_iterator::next ()
6142 {
6143   if (m_addr == NULL)
6144     return NULL;
6145
6146   bfd *const abfd = dwarf2_per_objfile->objfile->obfd;
6147
6148  again:
6149
6150   unsigned int bytes_read;
6151   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
6152   m_addr += bytes_read;
6153   if (abbrev == 0)
6154     return NULL;
6155
6156   const auto indexval_it = m_map.abbrev_map.find (abbrev);
6157   if (indexval_it == m_map.abbrev_map.cend ())
6158     {
6159       complaint (&symfile_complaints,
6160                  _("Wrong .debug_names undefined abbrev code %s "
6161                    "[in module %s]"),
6162                  pulongest (abbrev), objfile_name (dwarf2_per_objfile->objfile));
6163       return NULL;
6164     }
6165   const mapped_debug_names::index_val &indexval = indexval_it->second;
6166   bool have_is_static = false;
6167   bool is_static;
6168   dwarf2_per_cu_data *per_cu = NULL;
6169   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
6170     {
6171       ULONGEST ull;
6172       switch (attr.form)
6173         {
6174         case DW_FORM_implicit_const:
6175           ull = attr.implicit_const;
6176           break;
6177         case DW_FORM_flag_present:
6178           ull = 1;
6179           break;
6180         case DW_FORM_udata:
6181           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
6182           m_addr += bytes_read;
6183           break;
6184         default:
6185           complaint (&symfile_complaints,
6186                      _("Unsupported .debug_names form %s [in module %s]"),
6187                      dwarf_form_name (attr.form),
6188                      objfile_name (dwarf2_per_objfile->objfile));
6189           return NULL;
6190         }
6191       switch (attr.dw_idx)
6192         {
6193         case DW_IDX_compile_unit:
6194           /* Don't crash on bad data.  */
6195           if (ull >= dwarf2_per_objfile->n_comp_units)
6196             {
6197               complaint (&symfile_complaints,
6198                          _(".debug_names entry has bad CU index %s"
6199                            " [in module %s]"),
6200                          pulongest (ull),
6201                          objfile_name (dwarf2_per_objfile->objfile));
6202               continue;
6203             }
6204           per_cu = dw2_get_cutu (ull);
6205           break;
6206         case DW_IDX_type_unit:
6207           /* Don't crash on bad data.  */
6208           if (ull >= dwarf2_per_objfile->n_type_units)
6209             {
6210               complaint (&symfile_complaints,
6211                          _(".debug_names entry has bad TU index %s"
6212                            " [in module %s]"),
6213                          pulongest (ull),
6214                          objfile_name (dwarf2_per_objfile->objfile));
6215               continue;
6216             }
6217           per_cu = dw2_get_cutu (dwarf2_per_objfile->n_comp_units + ull);
6218           break;
6219         case DW_IDX_GNU_internal:
6220           if (!m_map.augmentation_is_gdb)
6221             break;
6222           have_is_static = true;
6223           is_static = true;
6224           break;
6225         case DW_IDX_GNU_external:
6226           if (!m_map.augmentation_is_gdb)
6227             break;
6228           have_is_static = true;
6229           is_static = false;
6230           break;
6231         }
6232     }
6233
6234   /* Skip if already read in.  */
6235   if (per_cu->v.quick->compunit_symtab)
6236     goto again;
6237
6238   /* Check static vs global.  */
6239   if (have_is_static)
6240     {
6241       const bool want_static = m_block_index != GLOBAL_BLOCK;
6242       if (m_want_specific_block && want_static != is_static)
6243         goto again;
6244     }
6245
6246   /* Match dw2_symtab_iter_next, symbol_kind
6247      and debug_names::psymbol_tag.  */
6248   switch (m_domain)
6249     {
6250     case VAR_DOMAIN:
6251       switch (indexval.dwarf_tag)
6252         {
6253         case DW_TAG_variable:
6254         case DW_TAG_subprogram:
6255         /* Some types are also in VAR_DOMAIN.  */
6256         case DW_TAG_typedef:
6257         case DW_TAG_structure_type:
6258           break;
6259         default:
6260           goto again;
6261         }
6262       break;
6263     case STRUCT_DOMAIN:
6264       switch (indexval.dwarf_tag)
6265         {
6266         case DW_TAG_typedef:
6267         case DW_TAG_structure_type:
6268           break;
6269         default:
6270           goto again;
6271         }
6272       break;
6273     case LABEL_DOMAIN:
6274       switch (indexval.dwarf_tag)
6275         {
6276         case 0:
6277         case DW_TAG_variable:
6278           break;
6279         default:
6280           goto again;
6281         }
6282       break;
6283     default:
6284       break;
6285     }
6286
6287   /* Match dw2_expand_symtabs_matching, symbol_kind and
6288      debug_names::psymbol_tag.  */
6289   switch (m_search)
6290     {
6291     case VARIABLES_DOMAIN:
6292       switch (indexval.dwarf_tag)
6293         {
6294         case DW_TAG_variable:
6295           break;
6296         default:
6297           goto again;
6298         }
6299       break;
6300     case FUNCTIONS_DOMAIN:
6301       switch (indexval.dwarf_tag)
6302         {
6303         case DW_TAG_subprogram:
6304           break;
6305         default:
6306           goto again;
6307         }
6308       break;
6309     case TYPES_DOMAIN:
6310       switch (indexval.dwarf_tag)
6311         {
6312         case DW_TAG_typedef:
6313         case DW_TAG_structure_type:
6314           break;
6315         default:
6316           goto again;
6317         }
6318       break;
6319     default:
6320       break;
6321     }
6322
6323   return per_cu;
6324 }
6325
6326 static struct compunit_symtab *
6327 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6328                                const char *name, domain_enum domain)
6329 {
6330   const block_enum block_index = static_cast<block_enum> (block_index_int);
6331   dw2_setup (objfile);
6332
6333   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6334   if (!mapp)
6335     {
6336       /* index is NULL if OBJF_READNOW.  */
6337       return NULL;
6338     }
6339   const auto &map = *mapp;
6340
6341   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6342                                  block_index, domain, name);
6343
6344   struct compunit_symtab *stab_best = NULL;
6345   struct dwarf2_per_cu_data *per_cu;
6346   while ((per_cu = iter.next ()) != NULL)
6347     {
6348       struct symbol *sym, *with_opaque = NULL;
6349       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
6350       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6351       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6352
6353       sym = block_find_symbol (block, name, domain,
6354                                block_find_non_opaque_type_preferred,
6355                                &with_opaque);
6356
6357       /* Some caution must be observed with overloaded functions and
6358          methods, since the index will not contain any overload
6359          information (but NAME might contain it).  */
6360
6361       if (sym != NULL
6362           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6363         return stab;
6364       if (with_opaque != NULL
6365           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6366         stab_best = stab;
6367
6368       /* Keep looking through other CUs.  */
6369     }
6370
6371   return stab_best;
6372 }
6373
6374 /* This dumps minimal information about .debug_names.  It is called
6375    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6376    uses this to verify that .debug_names has been loaded.  */
6377
6378 static void
6379 dw2_debug_names_dump (struct objfile *objfile)
6380 {
6381   dw2_setup (objfile);
6382   gdb_assert (dwarf2_per_objfile->using_index);
6383   printf_filtered (".debug_names:");
6384   if (dwarf2_per_objfile->debug_names_table)
6385     printf_filtered (" exists\n");
6386   else
6387     printf_filtered (" faked for \"readnow\"\n");
6388   printf_filtered ("\n");
6389 }
6390
6391 static void
6392 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6393                                              const char *func_name)
6394 {
6395   dw2_setup (objfile);
6396
6397   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6398   if (dwarf2_per_objfile->debug_names_table)
6399     {
6400       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6401
6402       /* Note: It doesn't matter what we pass for block_index here.  */
6403       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6404                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6405
6406       struct dwarf2_per_cu_data *per_cu;
6407       while ((per_cu = iter.next ()) != NULL)
6408         dw2_instantiate_symtab (per_cu);
6409     }
6410 }
6411
6412 static void
6413 dw2_debug_names_expand_symtabs_matching
6414   (struct objfile *objfile,
6415    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6416    const lookup_name_info &lookup_name,
6417    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6418    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6419    enum search_domain kind)
6420 {
6421   dw2_setup (objfile);
6422
6423   /* debug_names_table is NULL if OBJF_READNOW.  */
6424   if (!dwarf2_per_objfile->debug_names_table)
6425     return;
6426
6427   dw_expand_symtabs_matching_file_matcher (file_matcher);
6428
6429   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6430
6431   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6432                                       symbol_matcher,
6433                                       kind, [&] (offset_type namei)
6434     {
6435       /* The name was matched, now expand corresponding CUs that were
6436          marked.  */
6437       dw2_debug_names_iterator iter (map, kind, namei);
6438
6439       struct dwarf2_per_cu_data *per_cu;
6440       while ((per_cu = iter.next ()) != NULL)
6441         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6442                                          expansion_notify);
6443     });
6444 }
6445
6446 const struct quick_symbol_functions dwarf2_debug_names_functions =
6447 {
6448   dw2_has_symbols,
6449   dw2_find_last_source_symtab,
6450   dw2_forget_cached_source_info,
6451   dw2_map_symtabs_matching_filename,
6452   dw2_debug_names_lookup_symbol,
6453   dw2_print_stats,
6454   dw2_debug_names_dump,
6455   dw2_relocate,
6456   dw2_debug_names_expand_symtabs_for_function,
6457   dw2_expand_all_symtabs,
6458   dw2_expand_symtabs_with_fullname,
6459   dw2_map_matching_symbols,
6460   dw2_debug_names_expand_symtabs_matching,
6461   dw2_find_pc_sect_compunit_symtab,
6462   NULL,
6463   dw2_map_symbol_filenames
6464 };
6465
6466 /* See symfile.h.  */
6467
6468 bool
6469 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6470 {
6471   /* If we're about to read full symbols, don't bother with the
6472      indices.  In this case we also don't care if some other debug
6473      format is making psymtabs, because they are all about to be
6474      expanded anyway.  */
6475   if ((objfile->flags & OBJF_READNOW))
6476     {
6477       int i;
6478
6479       dwarf2_per_objfile->using_index = 1;
6480       create_all_comp_units (objfile);
6481       create_all_type_units (objfile);
6482       dwarf2_per_objfile->quick_file_names_table =
6483         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
6484
6485       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
6486                        + dwarf2_per_objfile->n_type_units); ++i)
6487         {
6488           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6489
6490           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6491                                             struct dwarf2_per_cu_quick_data);
6492         }
6493
6494       /* Return 1 so that gdb sees the "quick" functions.  However,
6495          these functions will be no-ops because we will have expanded
6496          all symtabs.  */
6497       *index_kind = dw_index_kind::GDB_INDEX;
6498       return true;
6499     }
6500
6501   if (dwarf2_read_debug_names (objfile))
6502     {
6503       *index_kind = dw_index_kind::DEBUG_NAMES;
6504       return true;
6505     }
6506
6507   if (dwarf2_read_index (objfile))
6508     {
6509       *index_kind = dw_index_kind::GDB_INDEX;
6510       return true;
6511     }
6512
6513   return false;
6514 }
6515
6516 \f
6517
6518 /* Build a partial symbol table.  */
6519
6520 void
6521 dwarf2_build_psymtabs (struct objfile *objfile)
6522 {
6523
6524   if (objfile->global_psymbols.capacity () == 0
6525       && objfile->static_psymbols.capacity () == 0)
6526     init_psymbol_list (objfile, 1024);
6527
6528   TRY
6529     {
6530       /* This isn't really ideal: all the data we allocate on the
6531          objfile's obstack is still uselessly kept around.  However,
6532          freeing it seems unsafe.  */
6533       psymtab_discarder psymtabs (objfile);
6534       dwarf2_build_psymtabs_hard (objfile);
6535       psymtabs.keep ();
6536     }
6537   CATCH (except, RETURN_MASK_ERROR)
6538     {
6539       exception_print (gdb_stderr, except);
6540     }
6541   END_CATCH
6542 }
6543
6544 /* Return the total length of the CU described by HEADER.  */
6545
6546 static unsigned int
6547 get_cu_length (const struct comp_unit_head *header)
6548 {
6549   return header->initial_length_size + header->length;
6550 }
6551
6552 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6553
6554 static inline bool
6555 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6556 {
6557   sect_offset bottom = cu_header->sect_off;
6558   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6559
6560   return sect_off >= bottom && sect_off < top;
6561 }
6562
6563 /* Find the base address of the compilation unit for range lists and
6564    location lists.  It will normally be specified by DW_AT_low_pc.
6565    In DWARF-3 draft 4, the base address could be overridden by
6566    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6567    compilation units with discontinuous ranges.  */
6568
6569 static void
6570 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6571 {
6572   struct attribute *attr;
6573
6574   cu->base_known = 0;
6575   cu->base_address = 0;
6576
6577   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6578   if (attr)
6579     {
6580       cu->base_address = attr_value_as_address (attr);
6581       cu->base_known = 1;
6582     }
6583   else
6584     {
6585       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6586       if (attr)
6587         {
6588           cu->base_address = attr_value_as_address (attr);
6589           cu->base_known = 1;
6590         }
6591     }
6592 }
6593
6594 /* Read in the comp unit header information from the debug_info at info_ptr.
6595    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6596    NOTE: This leaves members offset, first_die_offset to be filled in
6597    by the caller.  */
6598
6599 static const gdb_byte *
6600 read_comp_unit_head (struct comp_unit_head *cu_header,
6601                      const gdb_byte *info_ptr,
6602                      struct dwarf2_section_info *section,
6603                      rcuh_kind section_kind)
6604 {
6605   int signed_addr;
6606   unsigned int bytes_read;
6607   const char *filename = get_section_file_name (section);
6608   bfd *abfd = get_section_bfd_owner (section);
6609
6610   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6611   cu_header->initial_length_size = bytes_read;
6612   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6613   info_ptr += bytes_read;
6614   cu_header->version = read_2_bytes (abfd, info_ptr);
6615   info_ptr += 2;
6616   if (cu_header->version < 5)
6617     switch (section_kind)
6618       {
6619       case rcuh_kind::COMPILE:
6620         cu_header->unit_type = DW_UT_compile;
6621         break;
6622       case rcuh_kind::TYPE:
6623         cu_header->unit_type = DW_UT_type;
6624         break;
6625       default:
6626         internal_error (__FILE__, __LINE__,
6627                         _("read_comp_unit_head: invalid section_kind"));
6628       }
6629   else
6630     {
6631       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6632                                                  (read_1_byte (abfd, info_ptr));
6633       info_ptr += 1;
6634       switch (cu_header->unit_type)
6635         {
6636         case DW_UT_compile:
6637           if (section_kind != rcuh_kind::COMPILE)
6638             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6639                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6640                    filename);
6641           break;
6642         case DW_UT_type:
6643           section_kind = rcuh_kind::TYPE;
6644           break;
6645         default:
6646           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6647                  "(is %d, should be %d or %d) [in module %s]"),
6648                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6649         }
6650
6651       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6652       info_ptr += 1;
6653     }
6654   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6655                                                           cu_header,
6656                                                           &bytes_read);
6657   info_ptr += bytes_read;
6658   if (cu_header->version < 5)
6659     {
6660       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6661       info_ptr += 1;
6662     }
6663   signed_addr = bfd_get_sign_extend_vma (abfd);
6664   if (signed_addr < 0)
6665     internal_error (__FILE__, __LINE__,
6666                     _("read_comp_unit_head: dwarf from non elf file"));
6667   cu_header->signed_addr_p = signed_addr;
6668
6669   if (section_kind == rcuh_kind::TYPE)
6670     {
6671       LONGEST type_offset;
6672
6673       cu_header->signature = read_8_bytes (abfd, info_ptr);
6674       info_ptr += 8;
6675
6676       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6677       info_ptr += bytes_read;
6678       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6679       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6680         error (_("Dwarf Error: Too big type_offset in compilation unit "
6681                "header (is %s) [in module %s]"), plongest (type_offset),
6682                filename);
6683     }
6684
6685   return info_ptr;
6686 }
6687
6688 /* Helper function that returns the proper abbrev section for
6689    THIS_CU.  */
6690
6691 static struct dwarf2_section_info *
6692 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6693 {
6694   struct dwarf2_section_info *abbrev;
6695
6696   if (this_cu->is_dwz)
6697     abbrev = &dwarf2_get_dwz_file ()->abbrev;
6698   else
6699     abbrev = &dwarf2_per_objfile->abbrev;
6700
6701   return abbrev;
6702 }
6703
6704 /* Subroutine of read_and_check_comp_unit_head and
6705    read_and_check_type_unit_head to simplify them.
6706    Perform various error checking on the header.  */
6707
6708 static void
6709 error_check_comp_unit_head (struct comp_unit_head *header,
6710                             struct dwarf2_section_info *section,
6711                             struct dwarf2_section_info *abbrev_section)
6712 {
6713   const char *filename = get_section_file_name (section);
6714
6715   if (header->version < 2 || header->version > 5)
6716     error (_("Dwarf Error: wrong version in compilation unit header "
6717            "(is %d, should be 2, 3, 4 or 5) [in module %s]"), header->version,
6718            filename);
6719
6720   if (to_underlying (header->abbrev_sect_off)
6721       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6722     error (_("Dwarf Error: bad offset (0x%x) in compilation unit header "
6723            "(offset 0x%x + 6) [in module %s]"),
6724            to_underlying (header->abbrev_sect_off),
6725            to_underlying (header->sect_off),
6726            filename);
6727
6728   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6729      avoid potential 32-bit overflow.  */
6730   if (((ULONGEST) header->sect_off + get_cu_length (header))
6731       > section->size)
6732     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6733            "(offset 0x%x + 0) [in module %s]"),
6734            header->length, to_underlying (header->sect_off),
6735            filename);
6736 }
6737
6738 /* Read in a CU/TU header and perform some basic error checking.
6739    The contents of the header are stored in HEADER.
6740    The result is a pointer to the start of the first DIE.  */
6741
6742 static const gdb_byte *
6743 read_and_check_comp_unit_head (struct comp_unit_head *header,
6744                                struct dwarf2_section_info *section,
6745                                struct dwarf2_section_info *abbrev_section,
6746                                const gdb_byte *info_ptr,
6747                                rcuh_kind section_kind)
6748 {
6749   const gdb_byte *beg_of_comp_unit = info_ptr;
6750
6751   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6752
6753   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6754
6755   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6756
6757   error_check_comp_unit_head (header, section, abbrev_section);
6758
6759   return info_ptr;
6760 }
6761
6762 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6763
6764 static sect_offset
6765 read_abbrev_offset (struct dwarf2_section_info *section,
6766                     sect_offset sect_off)
6767 {
6768   bfd *abfd = get_section_bfd_owner (section);
6769   const gdb_byte *info_ptr;
6770   unsigned int initial_length_size, offset_size;
6771   uint16_t version;
6772
6773   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6774   info_ptr = section->buffer + to_underlying (sect_off);
6775   read_initial_length (abfd, info_ptr, &initial_length_size);
6776   offset_size = initial_length_size == 4 ? 4 : 8;
6777   info_ptr += initial_length_size;
6778
6779   version = read_2_bytes (abfd, info_ptr);
6780   info_ptr += 2;
6781   if (version >= 5)
6782     {
6783       /* Skip unit type and address size.  */
6784       info_ptr += 2;
6785     }
6786
6787   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6788 }
6789
6790 /* Allocate a new partial symtab for file named NAME and mark this new
6791    partial symtab as being an include of PST.  */
6792
6793 static void
6794 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6795                                struct objfile *objfile)
6796 {
6797   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6798
6799   if (!IS_ABSOLUTE_PATH (subpst->filename))
6800     {
6801       /* It shares objfile->objfile_obstack.  */
6802       subpst->dirname = pst->dirname;
6803     }
6804
6805   subpst->textlow = 0;
6806   subpst->texthigh = 0;
6807
6808   subpst->dependencies
6809     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6810   subpst->dependencies[0] = pst;
6811   subpst->number_of_dependencies = 1;
6812
6813   subpst->globals_offset = 0;
6814   subpst->n_global_syms = 0;
6815   subpst->statics_offset = 0;
6816   subpst->n_static_syms = 0;
6817   subpst->compunit_symtab = NULL;
6818   subpst->read_symtab = pst->read_symtab;
6819   subpst->readin = 0;
6820
6821   /* No private part is necessary for include psymtabs.  This property
6822      can be used to differentiate between such include psymtabs and
6823      the regular ones.  */
6824   subpst->read_symtab_private = NULL;
6825 }
6826
6827 /* Read the Line Number Program data and extract the list of files
6828    included by the source file represented by PST.  Build an include
6829    partial symtab for each of these included files.  */
6830
6831 static void
6832 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6833                                struct die_info *die,
6834                                struct partial_symtab *pst)
6835 {
6836   line_header_up lh;
6837   struct attribute *attr;
6838
6839   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6840   if (attr)
6841     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6842   if (lh == NULL)
6843     return;  /* No linetable, so no includes.  */
6844
6845   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
6846   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst, pst->textlow, 1);
6847 }
6848
6849 static hashval_t
6850 hash_signatured_type (const void *item)
6851 {
6852   const struct signatured_type *sig_type
6853     = (const struct signatured_type *) item;
6854
6855   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6856   return sig_type->signature;
6857 }
6858
6859 static int
6860 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6861 {
6862   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6863   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6864
6865   return lhs->signature == rhs->signature;
6866 }
6867
6868 /* Allocate a hash table for signatured types.  */
6869
6870 static htab_t
6871 allocate_signatured_type_table (struct objfile *objfile)
6872 {
6873   return htab_create_alloc_ex (41,
6874                                hash_signatured_type,
6875                                eq_signatured_type,
6876                                NULL,
6877                                &objfile->objfile_obstack,
6878                                hashtab_obstack_allocate,
6879                                dummy_obstack_deallocate);
6880 }
6881
6882 /* A helper function to add a signatured type CU to a table.  */
6883
6884 static int
6885 add_signatured_type_cu_to_table (void **slot, void *datum)
6886 {
6887   struct signatured_type *sigt = (struct signatured_type *) *slot;
6888   struct signatured_type ***datap = (struct signatured_type ***) datum;
6889
6890   **datap = sigt;
6891   ++*datap;
6892
6893   return 1;
6894 }
6895
6896 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6897    and fill them into TYPES_HTAB.  It will process only type units,
6898    therefore DW_UT_type.  */
6899
6900 static void
6901 create_debug_type_hash_table (struct dwo_file *dwo_file,
6902                               dwarf2_section_info *section, htab_t &types_htab,
6903                               rcuh_kind section_kind)
6904 {
6905   struct objfile *objfile = dwarf2_per_objfile->objfile;
6906   struct dwarf2_section_info *abbrev_section;
6907   bfd *abfd;
6908   const gdb_byte *info_ptr, *end_ptr;
6909
6910   abbrev_section = (dwo_file != NULL
6911                     ? &dwo_file->sections.abbrev
6912                     : &dwarf2_per_objfile->abbrev);
6913
6914   if (dwarf_read_debug)
6915     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6916                         get_section_name (section),
6917                         get_section_file_name (abbrev_section));
6918
6919   dwarf2_read_section (objfile, section);
6920   info_ptr = section->buffer;
6921
6922   if (info_ptr == NULL)
6923     return;
6924
6925   /* We can't set abfd until now because the section may be empty or
6926      not present, in which case the bfd is unknown.  */
6927   abfd = get_section_bfd_owner (section);
6928
6929   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6930      because we don't need to read any dies: the signature is in the
6931      header.  */
6932
6933   end_ptr = info_ptr + section->size;
6934   while (info_ptr < end_ptr)
6935     {
6936       struct signatured_type *sig_type;
6937       struct dwo_unit *dwo_tu;
6938       void **slot;
6939       const gdb_byte *ptr = info_ptr;
6940       struct comp_unit_head header;
6941       unsigned int length;
6942
6943       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6944
6945       /* Initialize it due to a false compiler warning.  */
6946       header.signature = -1;
6947       header.type_cu_offset_in_tu = (cu_offset) -1;
6948
6949       /* We need to read the type's signature in order to build the hash
6950          table, but we don't need anything else just yet.  */
6951
6952       ptr = read_and_check_comp_unit_head (&header, section,
6953                                            abbrev_section, ptr, section_kind);
6954
6955       length = get_cu_length (&header);
6956
6957       /* Skip dummy type units.  */
6958       if (ptr >= info_ptr + length
6959           || peek_abbrev_code (abfd, ptr) == 0
6960           || header.unit_type != DW_UT_type)
6961         {
6962           info_ptr += length;
6963           continue;
6964         }
6965
6966       if (types_htab == NULL)
6967         {
6968           if (dwo_file)
6969             types_htab = allocate_dwo_unit_table (objfile);
6970           else
6971             types_htab = allocate_signatured_type_table (objfile);
6972         }
6973
6974       if (dwo_file)
6975         {
6976           sig_type = NULL;
6977           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6978                                    struct dwo_unit);
6979           dwo_tu->dwo_file = dwo_file;
6980           dwo_tu->signature = header.signature;
6981           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6982           dwo_tu->section = section;
6983           dwo_tu->sect_off = sect_off;
6984           dwo_tu->length = length;
6985         }
6986       else
6987         {
6988           /* N.B.: type_offset is not usable if this type uses a DWO file.
6989              The real type_offset is in the DWO file.  */
6990           dwo_tu = NULL;
6991           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6992                                      struct signatured_type);
6993           sig_type->signature = header.signature;
6994           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6995           sig_type->per_cu.objfile = objfile;
6996           sig_type->per_cu.is_debug_types = 1;
6997           sig_type->per_cu.section = section;
6998           sig_type->per_cu.sect_off = sect_off;
6999           sig_type->per_cu.length = length;
7000         }
7001
7002       slot = htab_find_slot (types_htab,
7003                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
7004                              INSERT);
7005       gdb_assert (slot != NULL);
7006       if (*slot != NULL)
7007         {
7008           sect_offset dup_sect_off;
7009
7010           if (dwo_file)
7011             {
7012               const struct dwo_unit *dup_tu
7013                 = (const struct dwo_unit *) *slot;
7014
7015               dup_sect_off = dup_tu->sect_off;
7016             }
7017           else
7018             {
7019               const struct signatured_type *dup_tu
7020                 = (const struct signatured_type *) *slot;
7021
7022               dup_sect_off = dup_tu->per_cu.sect_off;
7023             }
7024
7025           complaint (&symfile_complaints,
7026                      _("debug type entry at offset 0x%x is duplicate to"
7027                        " the entry at offset 0x%x, signature %s"),
7028                      to_underlying (sect_off), to_underlying (dup_sect_off),
7029                      hex_string (header.signature));
7030         }
7031       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
7032
7033       if (dwarf_read_debug > 1)
7034         fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
7035                             to_underlying (sect_off),
7036                             hex_string (header.signature));
7037
7038       info_ptr += length;
7039     }
7040 }
7041
7042 /* Create the hash table of all entries in the .debug_types
7043    (or .debug_types.dwo) section(s).
7044    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
7045    otherwise it is NULL.
7046
7047    The result is a pointer to the hash table or NULL if there are no types.
7048
7049    Note: This function processes DWO files only, not DWP files.  */
7050
7051 static void
7052 create_debug_types_hash_table (struct dwo_file *dwo_file,
7053                                VEC (dwarf2_section_info_def) *types,
7054                                htab_t &types_htab)
7055 {
7056   int ix;
7057   struct dwarf2_section_info *section;
7058
7059   if (VEC_empty (dwarf2_section_info_def, types))
7060     return;
7061
7062   for (ix = 0;
7063        VEC_iterate (dwarf2_section_info_def, types, ix, section);
7064        ++ix)
7065     create_debug_type_hash_table (dwo_file, section, types_htab,
7066                                   rcuh_kind::TYPE);
7067 }
7068
7069 /* Create the hash table of all entries in the .debug_types section,
7070    and initialize all_type_units.
7071    The result is zero if there is an error (e.g. missing .debug_types section),
7072    otherwise non-zero.  */
7073
7074 static int
7075 create_all_type_units (struct objfile *objfile)
7076 {
7077   htab_t types_htab = NULL;
7078   struct signatured_type **iter;
7079
7080   create_debug_type_hash_table (NULL, &dwarf2_per_objfile->info, types_htab,
7081                                 rcuh_kind::COMPILE);
7082   create_debug_types_hash_table (NULL, dwarf2_per_objfile->types, types_htab);
7083   if (types_htab == NULL)
7084     {
7085       dwarf2_per_objfile->signatured_types = NULL;
7086       return 0;
7087     }
7088
7089   dwarf2_per_objfile->signatured_types = types_htab;
7090
7091   dwarf2_per_objfile->n_type_units
7092     = dwarf2_per_objfile->n_allocated_type_units
7093     = htab_elements (types_htab);
7094   dwarf2_per_objfile->all_type_units =
7095     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
7096   iter = &dwarf2_per_objfile->all_type_units[0];
7097   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
7098   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
7099               == dwarf2_per_objfile->n_type_units);
7100
7101   return 1;
7102 }
7103
7104 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
7105    If SLOT is non-NULL, it is the entry to use in the hash table.
7106    Otherwise we find one.  */
7107
7108 static struct signatured_type *
7109 add_type_unit (ULONGEST sig, void **slot)
7110 {
7111   struct objfile *objfile = dwarf2_per_objfile->objfile;
7112   int n_type_units = dwarf2_per_objfile->n_type_units;
7113   struct signatured_type *sig_type;
7114
7115   gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
7116   ++n_type_units;
7117   if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
7118     {
7119       if (dwarf2_per_objfile->n_allocated_type_units == 0)
7120         dwarf2_per_objfile->n_allocated_type_units = 1;
7121       dwarf2_per_objfile->n_allocated_type_units *= 2;
7122       dwarf2_per_objfile->all_type_units
7123         = XRESIZEVEC (struct signatured_type *,
7124                       dwarf2_per_objfile->all_type_units,
7125                       dwarf2_per_objfile->n_allocated_type_units);
7126       ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
7127     }
7128   dwarf2_per_objfile->n_type_units = n_type_units;
7129
7130   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7131                              struct signatured_type);
7132   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
7133   sig_type->signature = sig;
7134   sig_type->per_cu.is_debug_types = 1;
7135   if (dwarf2_per_objfile->using_index)
7136     {
7137       sig_type->per_cu.v.quick =
7138         OBSTACK_ZALLOC (&objfile->objfile_obstack,
7139                         struct dwarf2_per_cu_quick_data);
7140     }
7141
7142   if (slot == NULL)
7143     {
7144       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7145                              sig_type, INSERT);
7146     }
7147   gdb_assert (*slot == NULL);
7148   *slot = sig_type;
7149   /* The rest of sig_type must be filled in by the caller.  */
7150   return sig_type;
7151 }
7152
7153 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
7154    Fill in SIG_ENTRY with DWO_ENTRY.  */
7155
7156 static void
7157 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
7158                                   struct signatured_type *sig_entry,
7159                                   struct dwo_unit *dwo_entry)
7160 {
7161   /* Make sure we're not clobbering something we don't expect to.  */
7162   gdb_assert (! sig_entry->per_cu.queued);
7163   gdb_assert (sig_entry->per_cu.cu == NULL);
7164   if (dwarf2_per_objfile->using_index)
7165     {
7166       gdb_assert (sig_entry->per_cu.v.quick != NULL);
7167       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
7168     }
7169   else
7170       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
7171   gdb_assert (sig_entry->signature == dwo_entry->signature);
7172   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
7173   gdb_assert (sig_entry->type_unit_group == NULL);
7174   gdb_assert (sig_entry->dwo_unit == NULL);
7175
7176   sig_entry->per_cu.section = dwo_entry->section;
7177   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
7178   sig_entry->per_cu.length = dwo_entry->length;
7179   sig_entry->per_cu.reading_dwo_directly = 1;
7180   sig_entry->per_cu.objfile = objfile;
7181   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
7182   sig_entry->dwo_unit = dwo_entry;
7183 }
7184
7185 /* Subroutine of lookup_signatured_type.
7186    If we haven't read the TU yet, create the signatured_type data structure
7187    for a TU to be read in directly from a DWO file, bypassing the stub.
7188    This is the "Stay in DWO Optimization": When there is no DWP file and we're
7189    using .gdb_index, then when reading a CU we want to stay in the DWO file
7190    containing that CU.  Otherwise we could end up reading several other DWO
7191    files (due to comdat folding) to process the transitive closure of all the
7192    mentioned TUs, and that can be slow.  The current DWO file will have every
7193    type signature that it needs.
7194    We only do this for .gdb_index because in the psymtab case we already have
7195    to read all the DWOs to build the type unit groups.  */
7196
7197 static struct signatured_type *
7198 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7199 {
7200   struct objfile *objfile = dwarf2_per_objfile->objfile;
7201   struct dwo_file *dwo_file;
7202   struct dwo_unit find_dwo_entry, *dwo_entry;
7203   struct signatured_type find_sig_entry, *sig_entry;
7204   void **slot;
7205
7206   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7207
7208   /* If TU skeletons have been removed then we may not have read in any
7209      TUs yet.  */
7210   if (dwarf2_per_objfile->signatured_types == NULL)
7211     {
7212       dwarf2_per_objfile->signatured_types
7213         = allocate_signatured_type_table (objfile);
7214     }
7215
7216   /* We only ever need to read in one copy of a signatured type.
7217      Use the global signatured_types array to do our own comdat-folding
7218      of types.  If this is the first time we're reading this TU, and
7219      the TU has an entry in .gdb_index, replace the recorded data from
7220      .gdb_index with this TU.  */
7221
7222   find_sig_entry.signature = sig;
7223   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7224                          &find_sig_entry, INSERT);
7225   sig_entry = (struct signatured_type *) *slot;
7226
7227   /* We can get here with the TU already read, *or* in the process of being
7228      read.  Don't reassign the global entry to point to this DWO if that's
7229      the case.  Also note that if the TU is already being read, it may not
7230      have come from a DWO, the program may be a mix of Fission-compiled
7231      code and non-Fission-compiled code.  */
7232
7233   /* Have we already tried to read this TU?
7234      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7235      needn't exist in the global table yet).  */
7236   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7237     return sig_entry;
7238
7239   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7240      dwo_unit of the TU itself.  */
7241   dwo_file = cu->dwo_unit->dwo_file;
7242
7243   /* Ok, this is the first time we're reading this TU.  */
7244   if (dwo_file->tus == NULL)
7245     return NULL;
7246   find_dwo_entry.signature = sig;
7247   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7248   if (dwo_entry == NULL)
7249     return NULL;
7250
7251   /* If the global table doesn't have an entry for this TU, add one.  */
7252   if (sig_entry == NULL)
7253     sig_entry = add_type_unit (sig, slot);
7254
7255   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
7256   sig_entry->per_cu.tu_read = 1;
7257   return sig_entry;
7258 }
7259
7260 /* Subroutine of lookup_signatured_type.
7261    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7262    then try the DWP file.  If the TU stub (skeleton) has been removed then
7263    it won't be in .gdb_index.  */
7264
7265 static struct signatured_type *
7266 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7267 {
7268   struct objfile *objfile = dwarf2_per_objfile->objfile;
7269   struct dwp_file *dwp_file = get_dwp_file ();
7270   struct dwo_unit *dwo_entry;
7271   struct signatured_type find_sig_entry, *sig_entry;
7272   void **slot;
7273
7274   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7275   gdb_assert (dwp_file != NULL);
7276
7277   /* If TU skeletons have been removed then we may not have read in any
7278      TUs yet.  */
7279   if (dwarf2_per_objfile->signatured_types == NULL)
7280     {
7281       dwarf2_per_objfile->signatured_types
7282         = allocate_signatured_type_table (objfile);
7283     }
7284
7285   find_sig_entry.signature = sig;
7286   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7287                          &find_sig_entry, INSERT);
7288   sig_entry = (struct signatured_type *) *slot;
7289
7290   /* Have we already tried to read this TU?
7291      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7292      needn't exist in the global table yet).  */
7293   if (sig_entry != NULL)
7294     return sig_entry;
7295
7296   if (dwp_file->tus == NULL)
7297     return NULL;
7298   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
7299                                       sig, 1 /* is_debug_types */);
7300   if (dwo_entry == NULL)
7301     return NULL;
7302
7303   sig_entry = add_type_unit (sig, slot);
7304   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
7305
7306   return sig_entry;
7307 }
7308
7309 /* Lookup a signature based type for DW_FORM_ref_sig8.
7310    Returns NULL if signature SIG is not present in the table.
7311    It is up to the caller to complain about this.  */
7312
7313 static struct signatured_type *
7314 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7315 {
7316   if (cu->dwo_unit
7317       && dwarf2_per_objfile->using_index)
7318     {
7319       /* We're in a DWO/DWP file, and we're using .gdb_index.
7320          These cases require special processing.  */
7321       if (get_dwp_file () == NULL)
7322         return lookup_dwo_signatured_type (cu, sig);
7323       else
7324         return lookup_dwp_signatured_type (cu, sig);
7325     }
7326   else
7327     {
7328       struct signatured_type find_entry, *entry;
7329
7330       if (dwarf2_per_objfile->signatured_types == NULL)
7331         return NULL;
7332       find_entry.signature = sig;
7333       entry = ((struct signatured_type *)
7334                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7335       return entry;
7336     }
7337 }
7338 \f
7339 /* Low level DIE reading support.  */
7340
7341 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7342
7343 static void
7344 init_cu_die_reader (struct die_reader_specs *reader,
7345                     struct dwarf2_cu *cu,
7346                     struct dwarf2_section_info *section,
7347                     struct dwo_file *dwo_file)
7348 {
7349   gdb_assert (section->readin && section->buffer != NULL);
7350   reader->abfd = get_section_bfd_owner (section);
7351   reader->cu = cu;
7352   reader->dwo_file = dwo_file;
7353   reader->die_section = section;
7354   reader->buffer = section->buffer;
7355   reader->buffer_end = section->buffer + section->size;
7356   reader->comp_dir = NULL;
7357 }
7358
7359 /* Subroutine of init_cutu_and_read_dies to simplify it.
7360    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7361    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7362    already.
7363
7364    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7365    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7366    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7367    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7368    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7369    STUB_COMP_DIR may be non-NULL.
7370    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7371    are filled in with the info of the DIE from the DWO file.
7372    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
7373    provided an abbrev table to use.
7374    The result is non-zero if a valid (non-dummy) DIE was found.  */
7375
7376 static int
7377 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7378                         struct dwo_unit *dwo_unit,
7379                         int abbrev_table_provided,
7380                         struct die_info *stub_comp_unit_die,
7381                         const char *stub_comp_dir,
7382                         struct die_reader_specs *result_reader,
7383                         const gdb_byte **result_info_ptr,
7384                         struct die_info **result_comp_unit_die,
7385                         int *result_has_children)
7386 {
7387   struct objfile *objfile = dwarf2_per_objfile->objfile;
7388   struct dwarf2_cu *cu = this_cu->cu;
7389   struct dwarf2_section_info *section;
7390   bfd *abfd;
7391   const gdb_byte *begin_info_ptr, *info_ptr;
7392   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7393   int i,num_extra_attrs;
7394   struct dwarf2_section_info *dwo_abbrev_section;
7395   struct attribute *attr;
7396   struct die_info *comp_unit_die;
7397
7398   /* At most one of these may be provided.  */
7399   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7400
7401   /* These attributes aren't processed until later:
7402      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7403      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7404      referenced later.  However, these attributes are found in the stub
7405      which we won't have later.  In order to not impose this complication
7406      on the rest of the code, we read them here and copy them to the
7407      DWO CU/TU die.  */
7408
7409   stmt_list = NULL;
7410   low_pc = NULL;
7411   high_pc = NULL;
7412   ranges = NULL;
7413   comp_dir = NULL;
7414
7415   if (stub_comp_unit_die != NULL)
7416     {
7417       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7418          DWO file.  */
7419       if (! this_cu->is_debug_types)
7420         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7421       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7422       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7423       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7424       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7425
7426       /* There should be a DW_AT_addr_base attribute here (if needed).
7427          We need the value before we can process DW_FORM_GNU_addr_index.  */
7428       cu->addr_base = 0;
7429       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7430       if (attr)
7431         cu->addr_base = DW_UNSND (attr);
7432
7433       /* There should be a DW_AT_ranges_base attribute here (if needed).
7434          We need the value before we can process DW_AT_ranges.  */
7435       cu->ranges_base = 0;
7436       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7437       if (attr)
7438         cu->ranges_base = DW_UNSND (attr);
7439     }
7440   else if (stub_comp_dir != NULL)
7441     {
7442       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7443       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7444       comp_dir->name = DW_AT_comp_dir;
7445       comp_dir->form = DW_FORM_string;
7446       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7447       DW_STRING (comp_dir) = stub_comp_dir;
7448     }
7449
7450   /* Set up for reading the DWO CU/TU.  */
7451   cu->dwo_unit = dwo_unit;
7452   section = dwo_unit->section;
7453   dwarf2_read_section (objfile, section);
7454   abfd = get_section_bfd_owner (section);
7455   begin_info_ptr = info_ptr = (section->buffer
7456                                + to_underlying (dwo_unit->sect_off));
7457   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7458   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
7459
7460   if (this_cu->is_debug_types)
7461     {
7462       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7463
7464       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
7465                                                 dwo_abbrev_section,
7466                                                 info_ptr, rcuh_kind::TYPE);
7467       /* This is not an assert because it can be caused by bad debug info.  */
7468       if (sig_type->signature != cu->header.signature)
7469         {
7470           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7471                    " TU at offset 0x%x [in module %s]"),
7472                  hex_string (sig_type->signature),
7473                  hex_string (cu->header.signature),
7474                  to_underlying (dwo_unit->sect_off),
7475                  bfd_get_filename (abfd));
7476         }
7477       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7478       /* For DWOs coming from DWP files, we don't know the CU length
7479          nor the type's offset in the TU until now.  */
7480       dwo_unit->length = get_cu_length (&cu->header);
7481       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7482
7483       /* Establish the type offset that can be used to lookup the type.
7484          For DWO files, we don't know it until now.  */
7485       sig_type->type_offset_in_section
7486         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7487     }
7488   else
7489     {
7490       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
7491                                                 dwo_abbrev_section,
7492                                                 info_ptr, rcuh_kind::COMPILE);
7493       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7494       /* For DWOs coming from DWP files, we don't know the CU length
7495          until now.  */
7496       dwo_unit->length = get_cu_length (&cu->header);
7497     }
7498
7499   /* Replace the CU's original abbrev table with the DWO's.
7500      Reminder: We can't read the abbrev table until we've read the header.  */
7501   if (abbrev_table_provided)
7502     {
7503       /* Don't free the provided abbrev table, the caller of
7504          init_cutu_and_read_dies owns it.  */
7505       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
7506       /* Ensure the DWO abbrev table gets freed.  */
7507       make_cleanup (dwarf2_free_abbrev_table, cu);
7508     }
7509   else
7510     {
7511       dwarf2_free_abbrev_table (cu);
7512       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
7513       /* Leave any existing abbrev table cleanup as is.  */
7514     }
7515
7516   /* Read in the die, but leave space to copy over the attributes
7517      from the stub.  This has the benefit of simplifying the rest of
7518      the code - all the work to maintain the illusion of a single
7519      DW_TAG_{compile,type}_unit DIE is done here.  */
7520   num_extra_attrs = ((stmt_list != NULL)
7521                      + (low_pc != NULL)
7522                      + (high_pc != NULL)
7523                      + (ranges != NULL)
7524                      + (comp_dir != NULL));
7525   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7526                               result_has_children, num_extra_attrs);
7527
7528   /* Copy over the attributes from the stub to the DIE we just read in.  */
7529   comp_unit_die = *result_comp_unit_die;
7530   i = comp_unit_die->num_attrs;
7531   if (stmt_list != NULL)
7532     comp_unit_die->attrs[i++] = *stmt_list;
7533   if (low_pc != NULL)
7534     comp_unit_die->attrs[i++] = *low_pc;
7535   if (high_pc != NULL)
7536     comp_unit_die->attrs[i++] = *high_pc;
7537   if (ranges != NULL)
7538     comp_unit_die->attrs[i++] = *ranges;
7539   if (comp_dir != NULL)
7540     comp_unit_die->attrs[i++] = *comp_dir;
7541   comp_unit_die->num_attrs += num_extra_attrs;
7542
7543   if (dwarf_die_debug)
7544     {
7545       fprintf_unfiltered (gdb_stdlog,
7546                           "Read die from %s@0x%x of %s:\n",
7547                           get_section_name (section),
7548                           (unsigned) (begin_info_ptr - section->buffer),
7549                           bfd_get_filename (abfd));
7550       dump_die (comp_unit_die, dwarf_die_debug);
7551     }
7552
7553   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7554      TUs by skipping the stub and going directly to the entry in the DWO file.
7555      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7556      to get it via circuitous means.  Blech.  */
7557   if (comp_dir != NULL)
7558     result_reader->comp_dir = DW_STRING (comp_dir);
7559
7560   /* Skip dummy compilation units.  */
7561   if (info_ptr >= begin_info_ptr + dwo_unit->length
7562       || peek_abbrev_code (abfd, info_ptr) == 0)
7563     return 0;
7564
7565   *result_info_ptr = info_ptr;
7566   return 1;
7567 }
7568
7569 /* Subroutine of init_cutu_and_read_dies to simplify it.
7570    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7571    Returns NULL if the specified DWO unit cannot be found.  */
7572
7573 static struct dwo_unit *
7574 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7575                  struct die_info *comp_unit_die)
7576 {
7577   struct dwarf2_cu *cu = this_cu->cu;
7578   ULONGEST signature;
7579   struct dwo_unit *dwo_unit;
7580   const char *comp_dir, *dwo_name;
7581
7582   gdb_assert (cu != NULL);
7583
7584   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7585   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7586   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7587
7588   if (this_cu->is_debug_types)
7589     {
7590       struct signatured_type *sig_type;
7591
7592       /* Since this_cu is the first member of struct signatured_type,
7593          we can go from a pointer to one to a pointer to the other.  */
7594       sig_type = (struct signatured_type *) this_cu;
7595       signature = sig_type->signature;
7596       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7597     }
7598   else
7599     {
7600       struct attribute *attr;
7601
7602       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7603       if (! attr)
7604         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7605                  " [in module %s]"),
7606                dwo_name, objfile_name (this_cu->objfile));
7607       signature = DW_UNSND (attr);
7608       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7609                                        signature);
7610     }
7611
7612   return dwo_unit;
7613 }
7614
7615 /* Subroutine of init_cutu_and_read_dies to simplify it.
7616    See it for a description of the parameters.
7617    Read a TU directly from a DWO file, bypassing the stub.
7618
7619    Note: This function could be a little bit simpler if we shared cleanups
7620    with our caller, init_cutu_and_read_dies.  That's generally a fragile thing
7621    to do, so we keep this function self-contained.  Or we could move this
7622    into our caller, but it's complex enough already.  */
7623
7624 static void
7625 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7626                            int use_existing_cu, int keep,
7627                            die_reader_func_ftype *die_reader_func,
7628                            void *data)
7629 {
7630   struct dwarf2_cu *cu;
7631   struct signatured_type *sig_type;
7632   struct cleanup *cleanups, *free_cu_cleanup = NULL;
7633   struct die_reader_specs reader;
7634   const gdb_byte *info_ptr;
7635   struct die_info *comp_unit_die;
7636   int has_children;
7637
7638   /* Verify we can do the following downcast, and that we have the
7639      data we need.  */
7640   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7641   sig_type = (struct signatured_type *) this_cu;
7642   gdb_assert (sig_type->dwo_unit != NULL);
7643
7644   cleanups = make_cleanup (null_cleanup, NULL);
7645
7646   if (use_existing_cu && this_cu->cu != NULL)
7647     {
7648       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7649       cu = this_cu->cu;
7650       /* There's no need to do the rereading_dwo_cu handling that
7651          init_cutu_and_read_dies does since we don't read the stub.  */
7652     }
7653   else
7654     {
7655       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7656       gdb_assert (this_cu->cu == NULL);
7657       cu = XNEW (struct dwarf2_cu);
7658       init_one_comp_unit (cu, this_cu);
7659       /* If an error occurs while loading, release our storage.  */
7660       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
7661     }
7662
7663   /* A future optimization, if needed, would be to use an existing
7664      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7665      could share abbrev tables.  */
7666
7667   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7668                               0 /* abbrev_table_provided */,
7669                               NULL /* stub_comp_unit_die */,
7670                               sig_type->dwo_unit->dwo_file->comp_dir,
7671                               &reader, &info_ptr,
7672                               &comp_unit_die, &has_children) == 0)
7673     {
7674       /* Dummy die.  */
7675       do_cleanups (cleanups);
7676       return;
7677     }
7678
7679   /* All the "real" work is done here.  */
7680   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7681
7682   /* This duplicates the code in init_cutu_and_read_dies,
7683      but the alternative is making the latter more complex.
7684      This function is only for the special case of using DWO files directly:
7685      no point in overly complicating the general case just to handle this.  */
7686   if (free_cu_cleanup != NULL)
7687     {
7688       if (keep)
7689         {
7690           /* We've successfully allocated this compilation unit.  Let our
7691              caller clean it up when finished with it.  */
7692           discard_cleanups (free_cu_cleanup);
7693
7694           /* We can only discard free_cu_cleanup and all subsequent cleanups.
7695              So we have to manually free the abbrev table.  */
7696           dwarf2_free_abbrev_table (cu);
7697
7698           /* Link this CU into read_in_chain.  */
7699           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7700           dwarf2_per_objfile->read_in_chain = this_cu;
7701         }
7702       else
7703         do_cleanups (free_cu_cleanup);
7704     }
7705
7706   do_cleanups (cleanups);
7707 }
7708
7709 /* Initialize a CU (or TU) and read its DIEs.
7710    If the CU defers to a DWO file, read the DWO file as well.
7711
7712    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7713    Otherwise the table specified in the comp unit header is read in and used.
7714    This is an optimization for when we already have the abbrev table.
7715
7716    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7717    Otherwise, a new CU is allocated with xmalloc.
7718
7719    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7720    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7721
7722    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7723    linker) then DIE_READER_FUNC will not get called.  */
7724
7725 static void
7726 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7727                          struct abbrev_table *abbrev_table,
7728                          int use_existing_cu, int keep,
7729                          die_reader_func_ftype *die_reader_func,
7730                          void *data)
7731 {
7732   struct objfile *objfile = dwarf2_per_objfile->objfile;
7733   struct dwarf2_section_info *section = this_cu->section;
7734   bfd *abfd = get_section_bfd_owner (section);
7735   struct dwarf2_cu *cu;
7736   const gdb_byte *begin_info_ptr, *info_ptr;
7737   struct die_reader_specs reader;
7738   struct die_info *comp_unit_die;
7739   int has_children;
7740   struct attribute *attr;
7741   struct cleanup *cleanups, *free_cu_cleanup = NULL;
7742   struct signatured_type *sig_type = NULL;
7743   struct dwarf2_section_info *abbrev_section;
7744   /* Non-zero if CU currently points to a DWO file and we need to
7745      reread it.  When this happens we need to reread the skeleton die
7746      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7747   int rereading_dwo_cu = 0;
7748
7749   if (dwarf_die_debug)
7750     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
7751                         this_cu->is_debug_types ? "type" : "comp",
7752                         to_underlying (this_cu->sect_off));
7753
7754   if (use_existing_cu)
7755     gdb_assert (keep);
7756
7757   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7758      file (instead of going through the stub), short-circuit all of this.  */
7759   if (this_cu->reading_dwo_directly)
7760     {
7761       /* Narrow down the scope of possibilities to have to understand.  */
7762       gdb_assert (this_cu->is_debug_types);
7763       gdb_assert (abbrev_table == NULL);
7764       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7765                                  die_reader_func, data);
7766       return;
7767     }
7768
7769   cleanups = make_cleanup (null_cleanup, NULL);
7770
7771   /* This is cheap if the section is already read in.  */
7772   dwarf2_read_section (objfile, section);
7773
7774   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7775
7776   abbrev_section = get_abbrev_section_for_cu (this_cu);
7777
7778   if (use_existing_cu && this_cu->cu != NULL)
7779     {
7780       cu = this_cu->cu;
7781       /* If this CU is from a DWO file we need to start over, we need to
7782          refetch the attributes from the skeleton CU.
7783          This could be optimized by retrieving those attributes from when we
7784          were here the first time: the previous comp_unit_die was stored in
7785          comp_unit_obstack.  But there's no data yet that we need this
7786          optimization.  */
7787       if (cu->dwo_unit != NULL)
7788         rereading_dwo_cu = 1;
7789     }
7790   else
7791     {
7792       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7793       gdb_assert (this_cu->cu == NULL);
7794       cu = XNEW (struct dwarf2_cu);
7795       init_one_comp_unit (cu, this_cu);
7796       /* If an error occurs while loading, release our storage.  */
7797       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
7798     }
7799
7800   /* Get the header.  */
7801   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7802     {
7803       /* We already have the header, there's no need to read it in again.  */
7804       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7805     }
7806   else
7807     {
7808       if (this_cu->is_debug_types)
7809         {
7810           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
7811                                                     abbrev_section, info_ptr,
7812                                                     rcuh_kind::TYPE);
7813
7814           /* Since per_cu is the first member of struct signatured_type,
7815              we can go from a pointer to one to a pointer to the other.  */
7816           sig_type = (struct signatured_type *) this_cu;
7817           gdb_assert (sig_type->signature == cu->header.signature);
7818           gdb_assert (sig_type->type_offset_in_tu
7819                       == cu->header.type_cu_offset_in_tu);
7820           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7821
7822           /* LENGTH has not been set yet for type units if we're
7823              using .gdb_index.  */
7824           this_cu->length = get_cu_length (&cu->header);
7825
7826           /* Establish the type offset that can be used to lookup the type.  */
7827           sig_type->type_offset_in_section =
7828             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7829
7830           this_cu->dwarf_version = cu->header.version;
7831         }
7832       else
7833         {
7834           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
7835                                                     abbrev_section,
7836                                                     info_ptr,
7837                                                     rcuh_kind::COMPILE);
7838
7839           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7840           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7841           this_cu->dwarf_version = cu->header.version;
7842         }
7843     }
7844
7845   /* Skip dummy compilation units.  */
7846   if (info_ptr >= begin_info_ptr + this_cu->length
7847       || peek_abbrev_code (abfd, info_ptr) == 0)
7848     {
7849       do_cleanups (cleanups);
7850       return;
7851     }
7852
7853   /* If we don't have them yet, read the abbrevs for this compilation unit.
7854      And if we need to read them now, make sure they're freed when we're
7855      done.  Note that it's important that if the CU had an abbrev table
7856      on entry we don't free it when we're done: Somewhere up the call stack
7857      it may be in use.  */
7858   if (abbrev_table != NULL)
7859     {
7860       gdb_assert (cu->abbrev_table == NULL);
7861       gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7862       cu->abbrev_table = abbrev_table;
7863     }
7864   else if (cu->abbrev_table == NULL)
7865     {
7866       dwarf2_read_abbrevs (cu, abbrev_section);
7867       make_cleanup (dwarf2_free_abbrev_table, cu);
7868     }
7869   else if (rereading_dwo_cu)
7870     {
7871       dwarf2_free_abbrev_table (cu);
7872       dwarf2_read_abbrevs (cu, abbrev_section);
7873     }
7874
7875   /* Read the top level CU/TU die.  */
7876   init_cu_die_reader (&reader, cu, section, NULL);
7877   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7878
7879   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7880      from the DWO file.
7881      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7882      DWO CU, that this test will fail (the attribute will not be present).  */
7883   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7884   if (attr)
7885     {
7886       struct dwo_unit *dwo_unit;
7887       struct die_info *dwo_comp_unit_die;
7888
7889       if (has_children)
7890         {
7891           complaint (&symfile_complaints,
7892                      _("compilation unit with DW_AT_GNU_dwo_name"
7893                        " has children (offset 0x%x) [in module %s]"),
7894                      to_underlying (this_cu->sect_off), bfd_get_filename (abfd));
7895         }
7896       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7897       if (dwo_unit != NULL)
7898         {
7899           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7900                                       abbrev_table != NULL,
7901                                       comp_unit_die, NULL,
7902                                       &reader, &info_ptr,
7903                                       &dwo_comp_unit_die, &has_children) == 0)
7904             {
7905               /* Dummy die.  */
7906               do_cleanups (cleanups);
7907               return;
7908             }
7909           comp_unit_die = dwo_comp_unit_die;
7910         }
7911       else
7912         {
7913           /* Yikes, we couldn't find the rest of the DIE, we only have
7914              the stub.  A complaint has already been logged.  There's
7915              not much more we can do except pass on the stub DIE to
7916              die_reader_func.  We don't want to throw an error on bad
7917              debug info.  */
7918         }
7919     }
7920
7921   /* All of the above is setup for this call.  Yikes.  */
7922   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7923
7924   /* Done, clean up.  */
7925   if (free_cu_cleanup != NULL)
7926     {
7927       if (keep)
7928         {
7929           /* We've successfully allocated this compilation unit.  Let our
7930              caller clean it up when finished with it.  */
7931           discard_cleanups (free_cu_cleanup);
7932
7933           /* We can only discard free_cu_cleanup and all subsequent cleanups.
7934              So we have to manually free the abbrev table.  */
7935           dwarf2_free_abbrev_table (cu);
7936
7937           /* Link this CU into read_in_chain.  */
7938           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7939           dwarf2_per_objfile->read_in_chain = this_cu;
7940         }
7941       else
7942         do_cleanups (free_cu_cleanup);
7943     }
7944
7945   do_cleanups (cleanups);
7946 }
7947
7948 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7949    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7950    to have already done the lookup to find the DWO file).
7951
7952    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7953    THIS_CU->is_debug_types, but nothing else.
7954
7955    We fill in THIS_CU->length.
7956
7957    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7958    linker) then DIE_READER_FUNC will not get called.
7959
7960    THIS_CU->cu is always freed when done.
7961    This is done in order to not leave THIS_CU->cu in a state where we have
7962    to care whether it refers to the "main" CU or the DWO CU.  */
7963
7964 static void
7965 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7966                                    struct dwo_file *dwo_file,
7967                                    die_reader_func_ftype *die_reader_func,
7968                                    void *data)
7969 {
7970   struct objfile *objfile = dwarf2_per_objfile->objfile;
7971   struct dwarf2_section_info *section = this_cu->section;
7972   bfd *abfd = get_section_bfd_owner (section);
7973   struct dwarf2_section_info *abbrev_section;
7974   struct dwarf2_cu cu;
7975   const gdb_byte *begin_info_ptr, *info_ptr;
7976   struct die_reader_specs reader;
7977   struct cleanup *cleanups;
7978   struct die_info *comp_unit_die;
7979   int has_children;
7980
7981   if (dwarf_die_debug)
7982     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
7983                         this_cu->is_debug_types ? "type" : "comp",
7984                         to_underlying (this_cu->sect_off));
7985
7986   gdb_assert (this_cu->cu == NULL);
7987
7988   abbrev_section = (dwo_file != NULL
7989                     ? &dwo_file->sections.abbrev
7990                     : get_abbrev_section_for_cu (this_cu));
7991
7992   /* This is cheap if the section is already read in.  */
7993   dwarf2_read_section (objfile, section);
7994
7995   init_one_comp_unit (&cu, this_cu);
7996
7997   cleanups = make_cleanup (free_stack_comp_unit, &cu);
7998
7999   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
8000   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
8001                                             abbrev_section, info_ptr,
8002                                             (this_cu->is_debug_types
8003                                              ? rcuh_kind::TYPE
8004                                              : rcuh_kind::COMPILE));
8005
8006   this_cu->length = get_cu_length (&cu.header);
8007
8008   /* Skip dummy compilation units.  */
8009   if (info_ptr >= begin_info_ptr + this_cu->length
8010       || peek_abbrev_code (abfd, info_ptr) == 0)
8011     {
8012       do_cleanups (cleanups);
8013       return;
8014     }
8015
8016   dwarf2_read_abbrevs (&cu, abbrev_section);
8017   make_cleanup (dwarf2_free_abbrev_table, &cu);
8018
8019   init_cu_die_reader (&reader, &cu, section, dwo_file);
8020   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
8021
8022   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
8023
8024   do_cleanups (cleanups);
8025 }
8026
8027 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
8028    does not lookup the specified DWO file.
8029    This cannot be used to read DWO files.
8030
8031    THIS_CU->cu is always freed when done.
8032    This is done in order to not leave THIS_CU->cu in a state where we have
8033    to care whether it refers to the "main" CU or the DWO CU.
8034    We can revisit this if the data shows there's a performance issue.  */
8035
8036 static void
8037 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
8038                                 die_reader_func_ftype *die_reader_func,
8039                                 void *data)
8040 {
8041   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
8042 }
8043 \f
8044 /* Type Unit Groups.
8045
8046    Type Unit Groups are a way to collapse the set of all TUs (type units) into
8047    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
8048    so that all types coming from the same compilation (.o file) are grouped
8049    together.  A future step could be to put the types in the same symtab as
8050    the CU the types ultimately came from.  */
8051
8052 static hashval_t
8053 hash_type_unit_group (const void *item)
8054 {
8055   const struct type_unit_group *tu_group
8056     = (const struct type_unit_group *) item;
8057
8058   return hash_stmt_list_entry (&tu_group->hash);
8059 }
8060
8061 static int
8062 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
8063 {
8064   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
8065   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
8066
8067   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
8068 }
8069
8070 /* Allocate a hash table for type unit groups.  */
8071
8072 static htab_t
8073 allocate_type_unit_groups_table (void)
8074 {
8075   return htab_create_alloc_ex (3,
8076                                hash_type_unit_group,
8077                                eq_type_unit_group,
8078                                NULL,
8079                                &dwarf2_per_objfile->objfile->objfile_obstack,
8080                                hashtab_obstack_allocate,
8081                                dummy_obstack_deallocate);
8082 }
8083
8084 /* Type units that don't have DW_AT_stmt_list are grouped into their own
8085    partial symtabs.  We combine several TUs per psymtab to not let the size
8086    of any one psymtab grow too big.  */
8087 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
8088 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
8089
8090 /* Helper routine for get_type_unit_group.
8091    Create the type_unit_group object used to hold one or more TUs.  */
8092
8093 static struct type_unit_group *
8094 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
8095 {
8096   struct objfile *objfile = dwarf2_per_objfile->objfile;
8097   struct dwarf2_per_cu_data *per_cu;
8098   struct type_unit_group *tu_group;
8099
8100   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
8101                              struct type_unit_group);
8102   per_cu = &tu_group->per_cu;
8103   per_cu->objfile = objfile;
8104
8105   if (dwarf2_per_objfile->using_index)
8106     {
8107       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
8108                                         struct dwarf2_per_cu_quick_data);
8109     }
8110   else
8111     {
8112       unsigned int line_offset = to_underlying (line_offset_struct);
8113       struct partial_symtab *pst;
8114       char *name;
8115
8116       /* Give the symtab a useful name for debug purposes.  */
8117       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
8118         name = xstrprintf ("<type_units_%d>",
8119                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
8120       else
8121         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
8122
8123       pst = create_partial_symtab (per_cu, name);
8124       pst->anonymous = 1;
8125
8126       xfree (name);
8127     }
8128
8129   tu_group->hash.dwo_unit = cu->dwo_unit;
8130   tu_group->hash.line_sect_off = line_offset_struct;
8131
8132   return tu_group;
8133 }
8134
8135 /* Look up the type_unit_group for type unit CU, and create it if necessary.
8136    STMT_LIST is a DW_AT_stmt_list attribute.  */
8137
8138 static struct type_unit_group *
8139 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
8140 {
8141   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8142   struct type_unit_group *tu_group;
8143   void **slot;
8144   unsigned int line_offset;
8145   struct type_unit_group type_unit_group_for_lookup;
8146
8147   if (dwarf2_per_objfile->type_unit_groups == NULL)
8148     {
8149       dwarf2_per_objfile->type_unit_groups =
8150         allocate_type_unit_groups_table ();
8151     }
8152
8153   /* Do we need to create a new group, or can we use an existing one?  */
8154
8155   if (stmt_list)
8156     {
8157       line_offset = DW_UNSND (stmt_list);
8158       ++tu_stats->nr_symtab_sharers;
8159     }
8160   else
8161     {
8162       /* Ugh, no stmt_list.  Rare, but we have to handle it.
8163          We can do various things here like create one group per TU or
8164          spread them over multiple groups to split up the expansion work.
8165          To avoid worst case scenarios (too many groups or too large groups)
8166          we, umm, group them in bunches.  */
8167       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
8168                      | (tu_stats->nr_stmt_less_type_units
8169                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
8170       ++tu_stats->nr_stmt_less_type_units;
8171     }
8172
8173   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
8174   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
8175   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
8176                          &type_unit_group_for_lookup, INSERT);
8177   if (*slot != NULL)
8178     {
8179       tu_group = (struct type_unit_group *) *slot;
8180       gdb_assert (tu_group != NULL);
8181     }
8182   else
8183     {
8184       sect_offset line_offset_struct = (sect_offset) line_offset;
8185       tu_group = create_type_unit_group (cu, line_offset_struct);
8186       *slot = tu_group;
8187       ++tu_stats->nr_symtabs;
8188     }
8189
8190   return tu_group;
8191 }
8192 \f
8193 /* Partial symbol tables.  */
8194
8195 /* Create a psymtab named NAME and assign it to PER_CU.
8196
8197    The caller must fill in the following details:
8198    dirname, textlow, texthigh.  */
8199
8200 static struct partial_symtab *
8201 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
8202 {
8203   struct objfile *objfile = per_cu->objfile;
8204   struct partial_symtab *pst;
8205
8206   pst = start_psymtab_common (objfile, name, 0,
8207                               objfile->global_psymbols,
8208                               objfile->static_psymbols);
8209
8210   pst->psymtabs_addrmap_supported = 1;
8211
8212   /* This is the glue that links PST into GDB's symbol API.  */
8213   pst->read_symtab_private = per_cu;
8214   pst->read_symtab = dwarf2_read_symtab;
8215   per_cu->v.psymtab = pst;
8216
8217   return pst;
8218 }
8219
8220 /* The DATA object passed to process_psymtab_comp_unit_reader has this
8221    type.  */
8222
8223 struct process_psymtab_comp_unit_data
8224 {
8225   /* True if we are reading a DW_TAG_partial_unit.  */
8226
8227   int want_partial_unit;
8228
8229   /* The "pretend" language that is used if the CU doesn't declare a
8230      language.  */
8231
8232   enum language pretend_language;
8233 };
8234
8235 /* die_reader_func for process_psymtab_comp_unit.  */
8236
8237 static void
8238 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
8239                                   const gdb_byte *info_ptr,
8240                                   struct die_info *comp_unit_die,
8241                                   int has_children,
8242                                   void *data)
8243 {
8244   struct dwarf2_cu *cu = reader->cu;
8245   struct objfile *objfile = cu->objfile;
8246   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8247   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8248   CORE_ADDR baseaddr;
8249   CORE_ADDR best_lowpc = 0, best_highpc = 0;
8250   struct partial_symtab *pst;
8251   enum pc_bounds_kind cu_bounds_kind;
8252   const char *filename;
8253   struct process_psymtab_comp_unit_data *info
8254     = (struct process_psymtab_comp_unit_data *) data;
8255
8256   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
8257     return;
8258
8259   gdb_assert (! per_cu->is_debug_types);
8260
8261   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
8262
8263   cu->list_in_scope = &file_symbols;
8264
8265   /* Allocate a new partial symbol table structure.  */
8266   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
8267   if (filename == NULL)
8268     filename = "";
8269
8270   pst = create_partial_symtab (per_cu, filename);
8271
8272   /* This must be done before calling dwarf2_build_include_psymtabs.  */
8273   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
8274
8275   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8276
8277   dwarf2_find_base_address (comp_unit_die, cu);
8278
8279   /* Possibly set the default values of LOWPC and HIGHPC from
8280      `DW_AT_ranges'.  */
8281   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8282                                          &best_highpc, cu, pst);
8283   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8284     /* Store the contiguous range if it is not empty; it can be empty for
8285        CUs with no code.  */
8286     addrmap_set_empty (objfile->psymtabs_addrmap,
8287                        gdbarch_adjust_dwarf2_addr (gdbarch,
8288                                                    best_lowpc + baseaddr),
8289                        gdbarch_adjust_dwarf2_addr (gdbarch,
8290                                                    best_highpc + baseaddr) - 1,
8291                        pst);
8292
8293   /* Check if comp unit has_children.
8294      If so, read the rest of the partial symbols from this comp unit.
8295      If not, there's no more debug_info for this comp unit.  */
8296   if (has_children)
8297     {
8298       struct partial_die_info *first_die;
8299       CORE_ADDR lowpc, highpc;
8300
8301       lowpc = ((CORE_ADDR) -1);
8302       highpc = ((CORE_ADDR) 0);
8303
8304       first_die = load_partial_dies (reader, info_ptr, 1);
8305
8306       scan_partial_symbols (first_die, &lowpc, &highpc,
8307                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8308
8309       /* If we didn't find a lowpc, set it to highpc to avoid
8310          complaints from `maint check'.  */
8311       if (lowpc == ((CORE_ADDR) -1))
8312         lowpc = highpc;
8313
8314       /* If the compilation unit didn't have an explicit address range,
8315          then use the information extracted from its child dies.  */
8316       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8317         {
8318           best_lowpc = lowpc;
8319           best_highpc = highpc;
8320         }
8321     }
8322   pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
8323   pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
8324
8325   end_psymtab_common (objfile, pst);
8326
8327   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8328     {
8329       int i;
8330       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8331       struct dwarf2_per_cu_data *iter;
8332
8333       /* Fill in 'dependencies' here; we fill in 'users' in a
8334          post-pass.  */
8335       pst->number_of_dependencies = len;
8336       pst->dependencies =
8337         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8338       for (i = 0;
8339            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8340                         i, iter);
8341            ++i)
8342         pst->dependencies[i] = iter->v.psymtab;
8343
8344       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8345     }
8346
8347   /* Get the list of files included in the current compilation unit,
8348      and build a psymtab for each of them.  */
8349   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8350
8351   if (dwarf_read_debug)
8352     {
8353       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8354
8355       fprintf_unfiltered (gdb_stdlog,
8356                           "Psymtab for %s unit @0x%x: %s - %s"
8357                           ", %d global, %d static syms\n",
8358                           per_cu->is_debug_types ? "type" : "comp",
8359                           to_underlying (per_cu->sect_off),
8360                           paddress (gdbarch, pst->textlow),
8361                           paddress (gdbarch, pst->texthigh),
8362                           pst->n_global_syms, pst->n_static_syms);
8363     }
8364 }
8365
8366 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8367    Process compilation unit THIS_CU for a psymtab.  */
8368
8369 static void
8370 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8371                            int want_partial_unit,
8372                            enum language pretend_language)
8373 {
8374   /* If this compilation unit was already read in, free the
8375      cached copy in order to read it in again.  This is
8376      necessary because we skipped some symbols when we first
8377      read in the compilation unit (see load_partial_dies).
8378      This problem could be avoided, but the benefit is unclear.  */
8379   if (this_cu->cu != NULL)
8380     free_one_cached_comp_unit (this_cu);
8381
8382   if (this_cu->is_debug_types)
8383     init_cutu_and_read_dies (this_cu, NULL, 0, 0, build_type_psymtabs_reader,
8384                              NULL);
8385   else
8386     {
8387       process_psymtab_comp_unit_data info;
8388       info.want_partial_unit = want_partial_unit;
8389       info.pretend_language = pretend_language;
8390       init_cutu_and_read_dies (this_cu, NULL, 0, 0,
8391                                process_psymtab_comp_unit_reader, &info);
8392     }
8393
8394   /* Age out any secondary CUs.  */
8395   age_cached_comp_units ();
8396 }
8397
8398 /* Reader function for build_type_psymtabs.  */
8399
8400 static void
8401 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8402                             const gdb_byte *info_ptr,
8403                             struct die_info *type_unit_die,
8404                             int has_children,
8405                             void *data)
8406 {
8407   struct objfile *objfile = dwarf2_per_objfile->objfile;
8408   struct dwarf2_cu *cu = reader->cu;
8409   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8410   struct signatured_type *sig_type;
8411   struct type_unit_group *tu_group;
8412   struct attribute *attr;
8413   struct partial_die_info *first_die;
8414   CORE_ADDR lowpc, highpc;
8415   struct partial_symtab *pst;
8416
8417   gdb_assert (data == NULL);
8418   gdb_assert (per_cu->is_debug_types);
8419   sig_type = (struct signatured_type *) per_cu;
8420
8421   if (! has_children)
8422     return;
8423
8424   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8425   tu_group = get_type_unit_group (cu, attr);
8426
8427   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8428
8429   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8430   cu->list_in_scope = &file_symbols;
8431   pst = create_partial_symtab (per_cu, "");
8432   pst->anonymous = 1;
8433
8434   first_die = load_partial_dies (reader, info_ptr, 1);
8435
8436   lowpc = (CORE_ADDR) -1;
8437   highpc = (CORE_ADDR) 0;
8438   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8439
8440   end_psymtab_common (objfile, pst);
8441 }
8442
8443 /* Struct used to sort TUs by their abbreviation table offset.  */
8444
8445 struct tu_abbrev_offset
8446 {
8447   struct signatured_type *sig_type;
8448   sect_offset abbrev_offset;
8449 };
8450
8451 /* Helper routine for build_type_psymtabs_1, passed to qsort.  */
8452
8453 static int
8454 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
8455 {
8456   const struct tu_abbrev_offset * const *a
8457     = (const struct tu_abbrev_offset * const*) ap;
8458   const struct tu_abbrev_offset * const *b
8459     = (const struct tu_abbrev_offset * const*) bp;
8460   sect_offset aoff = (*a)->abbrev_offset;
8461   sect_offset boff = (*b)->abbrev_offset;
8462
8463   return (aoff > boff) - (aoff < boff);
8464 }
8465
8466 /* Efficiently read all the type units.
8467    This does the bulk of the work for build_type_psymtabs.
8468
8469    The efficiency is because we sort TUs by the abbrev table they use and
8470    only read each abbrev table once.  In one program there are 200K TUs
8471    sharing 8K abbrev tables.
8472
8473    The main purpose of this function is to support building the
8474    dwarf2_per_objfile->type_unit_groups table.
8475    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8476    can collapse the search space by grouping them by stmt_list.
8477    The savings can be significant, in the same program from above the 200K TUs
8478    share 8K stmt_list tables.
8479
8480    FUNC is expected to call get_type_unit_group, which will create the
8481    struct type_unit_group if necessary and add it to
8482    dwarf2_per_objfile->type_unit_groups.  */
8483
8484 static void
8485 build_type_psymtabs_1 (void)
8486 {
8487   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8488   struct cleanup *cleanups;
8489   struct abbrev_table *abbrev_table;
8490   sect_offset abbrev_offset;
8491   struct tu_abbrev_offset *sorted_by_abbrev;
8492   int i;
8493
8494   /* It's up to the caller to not call us multiple times.  */
8495   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8496
8497   if (dwarf2_per_objfile->n_type_units == 0)
8498     return;
8499
8500   /* TUs typically share abbrev tables, and there can be way more TUs than
8501      abbrev tables.  Sort by abbrev table to reduce the number of times we
8502      read each abbrev table in.
8503      Alternatives are to punt or to maintain a cache of abbrev tables.
8504      This is simpler and efficient enough for now.
8505
8506      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8507      symtab to use).  Typically TUs with the same abbrev offset have the same
8508      stmt_list value too so in practice this should work well.
8509
8510      The basic algorithm here is:
8511
8512       sort TUs by abbrev table
8513       for each TU with same abbrev table:
8514         read abbrev table if first user
8515         read TU top level DIE
8516           [IWBN if DWO skeletons had DW_AT_stmt_list]
8517         call FUNC  */
8518
8519   if (dwarf_read_debug)
8520     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8521
8522   /* Sort in a separate table to maintain the order of all_type_units
8523      for .gdb_index: TU indices directly index all_type_units.  */
8524   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
8525                               dwarf2_per_objfile->n_type_units);
8526   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
8527     {
8528       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
8529
8530       sorted_by_abbrev[i].sig_type = sig_type;
8531       sorted_by_abbrev[i].abbrev_offset =
8532         read_abbrev_offset (sig_type->per_cu.section,
8533                             sig_type->per_cu.sect_off);
8534     }
8535   cleanups = make_cleanup (xfree, sorted_by_abbrev);
8536   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
8537          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
8538
8539   abbrev_offset = (sect_offset) ~(unsigned) 0;
8540   abbrev_table = NULL;
8541   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
8542
8543   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
8544     {
8545       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
8546
8547       /* Switch to the next abbrev table if necessary.  */
8548       if (abbrev_table == NULL
8549           || tu->abbrev_offset != abbrev_offset)
8550         {
8551           if (abbrev_table != NULL)
8552             {
8553               abbrev_table_free (abbrev_table);
8554               /* Reset to NULL in case abbrev_table_read_table throws
8555                  an error: abbrev_table_free_cleanup will get called.  */
8556               abbrev_table = NULL;
8557             }
8558           abbrev_offset = tu->abbrev_offset;
8559           abbrev_table =
8560             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
8561                                      abbrev_offset);
8562           ++tu_stats->nr_uniq_abbrev_tables;
8563         }
8564
8565       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
8566                                build_type_psymtabs_reader, NULL);
8567     }
8568
8569   do_cleanups (cleanups);
8570 }
8571
8572 /* Print collected type unit statistics.  */
8573
8574 static void
8575 print_tu_stats (void)
8576 {
8577   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8578
8579   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8580   fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
8581                       dwarf2_per_objfile->n_type_units);
8582   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8583                       tu_stats->nr_uniq_abbrev_tables);
8584   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8585                       tu_stats->nr_symtabs);
8586   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8587                       tu_stats->nr_symtab_sharers);
8588   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8589                       tu_stats->nr_stmt_less_type_units);
8590   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8591                       tu_stats->nr_all_type_units_reallocs);
8592 }
8593
8594 /* Traversal function for build_type_psymtabs.  */
8595
8596 static int
8597 build_type_psymtab_dependencies (void **slot, void *info)
8598 {
8599   struct objfile *objfile = dwarf2_per_objfile->objfile;
8600   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8601   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8602   struct partial_symtab *pst = per_cu->v.psymtab;
8603   int len = VEC_length (sig_type_ptr, tu_group->tus);
8604   struct signatured_type *iter;
8605   int i;
8606
8607   gdb_assert (len > 0);
8608   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8609
8610   pst->number_of_dependencies = len;
8611   pst->dependencies =
8612     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8613   for (i = 0;
8614        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8615        ++i)
8616     {
8617       gdb_assert (iter->per_cu.is_debug_types);
8618       pst->dependencies[i] = iter->per_cu.v.psymtab;
8619       iter->type_unit_group = tu_group;
8620     }
8621
8622   VEC_free (sig_type_ptr, tu_group->tus);
8623
8624   return 1;
8625 }
8626
8627 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8628    Build partial symbol tables for the .debug_types comp-units.  */
8629
8630 static void
8631 build_type_psymtabs (struct objfile *objfile)
8632 {
8633   if (! create_all_type_units (objfile))
8634     return;
8635
8636   build_type_psymtabs_1 ();
8637 }
8638
8639 /* Traversal function for process_skeletonless_type_unit.
8640    Read a TU in a DWO file and build partial symbols for it.  */
8641
8642 static int
8643 process_skeletonless_type_unit (void **slot, void *info)
8644 {
8645   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8646   struct objfile *objfile = (struct objfile *) info;
8647   struct signatured_type find_entry, *entry;
8648
8649   /* If this TU doesn't exist in the global table, add it and read it in.  */
8650
8651   if (dwarf2_per_objfile->signatured_types == NULL)
8652     {
8653       dwarf2_per_objfile->signatured_types
8654         = allocate_signatured_type_table (objfile);
8655     }
8656
8657   find_entry.signature = dwo_unit->signature;
8658   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8659                          INSERT);
8660   /* If we've already seen this type there's nothing to do.  What's happening
8661      is we're doing our own version of comdat-folding here.  */
8662   if (*slot != NULL)
8663     return 1;
8664
8665   /* This does the job that create_all_type_units would have done for
8666      this TU.  */
8667   entry = add_type_unit (dwo_unit->signature, slot);
8668   fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
8669   *slot = entry;
8670
8671   /* This does the job that build_type_psymtabs_1 would have done.  */
8672   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
8673                            build_type_psymtabs_reader, NULL);
8674
8675   return 1;
8676 }
8677
8678 /* Traversal function for process_skeletonless_type_units.  */
8679
8680 static int
8681 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8682 {
8683   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8684
8685   if (dwo_file->tus != NULL)
8686     {
8687       htab_traverse_noresize (dwo_file->tus,
8688                               process_skeletonless_type_unit, info);
8689     }
8690
8691   return 1;
8692 }
8693
8694 /* Scan all TUs of DWO files, verifying we've processed them.
8695    This is needed in case a TU was emitted without its skeleton.
8696    Note: This can't be done until we know what all the DWO files are.  */
8697
8698 static void
8699 process_skeletonless_type_units (struct objfile *objfile)
8700 {
8701   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8702   if (get_dwp_file () == NULL
8703       && dwarf2_per_objfile->dwo_files != NULL)
8704     {
8705       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8706                               process_dwo_file_for_skeletonless_type_units,
8707                               objfile);
8708     }
8709 }
8710
8711 /* Compute the 'user' field for each psymtab in OBJFILE.  */
8712
8713 static void
8714 set_partial_user (struct objfile *objfile)
8715 {
8716   int i;
8717
8718   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
8719     {
8720       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
8721       struct partial_symtab *pst = per_cu->v.psymtab;
8722       int j;
8723
8724       if (pst == NULL)
8725         continue;
8726
8727       for (j = 0; j < pst->number_of_dependencies; ++j)
8728         {
8729           /* Set the 'user' field only if it is not already set.  */
8730           if (pst->dependencies[j]->user == NULL)
8731             pst->dependencies[j]->user = pst;
8732         }
8733     }
8734 }
8735
8736 /* Build the partial symbol table by doing a quick pass through the
8737    .debug_info and .debug_abbrev sections.  */
8738
8739 static void
8740 dwarf2_build_psymtabs_hard (struct objfile *objfile)
8741 {
8742   struct cleanup *back_to;
8743   int i;
8744
8745   if (dwarf_read_debug)
8746     {
8747       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8748                           objfile_name (objfile));
8749     }
8750
8751   dwarf2_per_objfile->reading_partial_symbols = 1;
8752
8753   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8754
8755   /* Any cached compilation units will be linked by the per-objfile
8756      read_in_chain.  Make sure to free them when we're done.  */
8757   back_to = make_cleanup (free_cached_comp_units, NULL);
8758
8759   build_type_psymtabs (objfile);
8760
8761   create_all_comp_units (objfile);
8762
8763   /* Create a temporary address map on a temporary obstack.  We later
8764      copy this to the final obstack.  */
8765   auto_obstack temp_obstack;
8766
8767   scoped_restore save_psymtabs_addrmap
8768     = make_scoped_restore (&objfile->psymtabs_addrmap,
8769                            addrmap_create_mutable (&temp_obstack));
8770
8771   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
8772     {
8773       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
8774
8775       process_psymtab_comp_unit (per_cu, 0, language_minimal);
8776     }
8777
8778   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8779   process_skeletonless_type_units (objfile);
8780
8781   /* Now that all TUs have been processed we can fill in the dependencies.  */
8782   if (dwarf2_per_objfile->type_unit_groups != NULL)
8783     {
8784       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8785                               build_type_psymtab_dependencies, NULL);
8786     }
8787
8788   if (dwarf_read_debug)
8789     print_tu_stats ();
8790
8791   set_partial_user (objfile);
8792
8793   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8794                                                     &objfile->objfile_obstack);
8795   /* At this point we want to keep the address map.  */
8796   save_psymtabs_addrmap.release ();
8797
8798   do_cleanups (back_to);
8799
8800   if (dwarf_read_debug)
8801     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8802                         objfile_name (objfile));
8803 }
8804
8805 /* die_reader_func for load_partial_comp_unit.  */
8806
8807 static void
8808 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8809                                const gdb_byte *info_ptr,
8810                                struct die_info *comp_unit_die,
8811                                int has_children,
8812                                void *data)
8813 {
8814   struct dwarf2_cu *cu = reader->cu;
8815
8816   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8817
8818   /* Check if comp unit has_children.
8819      If so, read the rest of the partial symbols from this comp unit.
8820      If not, there's no more debug_info for this comp unit.  */
8821   if (has_children)
8822     load_partial_dies (reader, info_ptr, 0);
8823 }
8824
8825 /* Load the partial DIEs for a secondary CU into memory.
8826    This is also used when rereading a primary CU with load_all_dies.  */
8827
8828 static void
8829 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8830 {
8831   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
8832                            load_partial_comp_unit_reader, NULL);
8833 }
8834
8835 static void
8836 read_comp_units_from_section (struct objfile *objfile,
8837                               struct dwarf2_section_info *section,
8838                               struct dwarf2_section_info *abbrev_section,
8839                               unsigned int is_dwz,
8840                               int *n_allocated,
8841                               int *n_comp_units,
8842                               struct dwarf2_per_cu_data ***all_comp_units)
8843 {
8844   const gdb_byte *info_ptr;
8845
8846   if (dwarf_read_debug)
8847     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8848                         get_section_name (section),
8849                         get_section_file_name (section));
8850
8851   dwarf2_read_section (objfile, section);
8852
8853   info_ptr = section->buffer;
8854
8855   while (info_ptr < section->buffer + section->size)
8856     {
8857       struct dwarf2_per_cu_data *this_cu;
8858
8859       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8860
8861       comp_unit_head cu_header;
8862       read_and_check_comp_unit_head (&cu_header, section, abbrev_section,
8863                                      info_ptr, rcuh_kind::COMPILE);
8864
8865       /* Save the compilation unit for later lookup.  */
8866       if (cu_header.unit_type != DW_UT_type)
8867         {
8868           this_cu = XOBNEW (&objfile->objfile_obstack,
8869                             struct dwarf2_per_cu_data);
8870           memset (this_cu, 0, sizeof (*this_cu));
8871         }
8872       else
8873         {
8874           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8875                                   struct signatured_type);
8876           memset (sig_type, 0, sizeof (*sig_type));
8877           sig_type->signature = cu_header.signature;
8878           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8879           this_cu = &sig_type->per_cu;
8880         }
8881       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8882       this_cu->sect_off = sect_off;
8883       this_cu->length = cu_header.length + cu_header.initial_length_size;
8884       this_cu->is_dwz = is_dwz;
8885       this_cu->objfile = objfile;
8886       this_cu->section = section;
8887
8888       if (*n_comp_units == *n_allocated)
8889         {
8890           *n_allocated *= 2;
8891           *all_comp_units = XRESIZEVEC (struct dwarf2_per_cu_data *,
8892                                         *all_comp_units, *n_allocated);
8893         }
8894       (*all_comp_units)[*n_comp_units] = this_cu;
8895       ++*n_comp_units;
8896
8897       info_ptr = info_ptr + this_cu->length;
8898     }
8899 }
8900
8901 /* Create a list of all compilation units in OBJFILE.
8902    This is only done for -readnow and building partial symtabs.  */
8903
8904 static void
8905 create_all_comp_units (struct objfile *objfile)
8906 {
8907   int n_allocated;
8908   int n_comp_units;
8909   struct dwarf2_per_cu_data **all_comp_units;
8910   struct dwz_file *dwz;
8911
8912   n_comp_units = 0;
8913   n_allocated = 10;
8914   all_comp_units = XNEWVEC (struct dwarf2_per_cu_data *, n_allocated);
8915
8916   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info,
8917                                 &dwarf2_per_objfile->abbrev, 0,
8918                                 &n_allocated, &n_comp_units, &all_comp_units);
8919
8920   dwz = dwarf2_get_dwz_file ();
8921   if (dwz != NULL)
8922     read_comp_units_from_section (objfile, &dwz->info, &dwz->abbrev, 1,
8923                                   &n_allocated, &n_comp_units,
8924                                   &all_comp_units);
8925
8926   dwarf2_per_objfile->all_comp_units = XOBNEWVEC (&objfile->objfile_obstack,
8927                                                   struct dwarf2_per_cu_data *,
8928                                                   n_comp_units);
8929   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
8930           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
8931   xfree (all_comp_units);
8932   dwarf2_per_objfile->n_comp_units = n_comp_units;
8933 }
8934
8935 /* Process all loaded DIEs for compilation unit CU, starting at
8936    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8937    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8938    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8939    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8940
8941 static void
8942 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8943                       CORE_ADDR *highpc, int set_addrmap,
8944                       struct dwarf2_cu *cu)
8945 {
8946   struct partial_die_info *pdi;
8947
8948   /* Now, march along the PDI's, descending into ones which have
8949      interesting children but skipping the children of the other ones,
8950      until we reach the end of the compilation unit.  */
8951
8952   pdi = first_die;
8953
8954   while (pdi != NULL)
8955     {
8956       fixup_partial_die (pdi, cu);
8957
8958       /* Anonymous namespaces or modules have no name but have interesting
8959          children, so we need to look at them.  Ditto for anonymous
8960          enums.  */
8961
8962       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8963           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8964           || pdi->tag == DW_TAG_imported_unit)
8965         {
8966           switch (pdi->tag)
8967             {
8968             case DW_TAG_subprogram:
8969               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8970               break;
8971             case DW_TAG_constant:
8972             case DW_TAG_variable:
8973             case DW_TAG_typedef:
8974             case DW_TAG_union_type:
8975               if (!pdi->is_declaration)
8976                 {
8977                   add_partial_symbol (pdi, cu);
8978                 }
8979               break;
8980             case DW_TAG_class_type:
8981             case DW_TAG_interface_type:
8982             case DW_TAG_structure_type:
8983               if (!pdi->is_declaration)
8984                 {
8985                   add_partial_symbol (pdi, cu);
8986                 }
8987               if (cu->language == language_rust && pdi->has_children)
8988                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8989                                       set_addrmap, cu);
8990               break;
8991             case DW_TAG_enumeration_type:
8992               if (!pdi->is_declaration)
8993                 add_partial_enumeration (pdi, cu);
8994               break;
8995             case DW_TAG_base_type:
8996             case DW_TAG_subrange_type:
8997               /* File scope base type definitions are added to the partial
8998                  symbol table.  */
8999               add_partial_symbol (pdi, cu);
9000               break;
9001             case DW_TAG_namespace:
9002               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
9003               break;
9004             case DW_TAG_module:
9005               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
9006               break;
9007             case DW_TAG_imported_unit:
9008               {
9009                 struct dwarf2_per_cu_data *per_cu;
9010
9011                 /* For now we don't handle imported units in type units.  */
9012                 if (cu->per_cu->is_debug_types)
9013                   {
9014                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
9015                              " supported in type units [in module %s]"),
9016                            objfile_name (cu->objfile));
9017                   }
9018
9019                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.sect_off,
9020                                                            pdi->is_dwz,
9021                                                            cu->objfile);
9022
9023                 /* Go read the partial unit, if needed.  */
9024                 if (per_cu->v.psymtab == NULL)
9025                   process_psymtab_comp_unit (per_cu, 1, cu->language);
9026
9027                 VEC_safe_push (dwarf2_per_cu_ptr,
9028                                cu->per_cu->imported_symtabs, per_cu);
9029               }
9030               break;
9031             case DW_TAG_imported_declaration:
9032               add_partial_symbol (pdi, cu);
9033               break;
9034             default:
9035               break;
9036             }
9037         }
9038
9039       /* If the die has a sibling, skip to the sibling.  */
9040
9041       pdi = pdi->die_sibling;
9042     }
9043 }
9044
9045 /* Functions used to compute the fully scoped name of a partial DIE.
9046
9047    Normally, this is simple.  For C++, the parent DIE's fully scoped
9048    name is concatenated with "::" and the partial DIE's name.
9049    Enumerators are an exception; they use the scope of their parent
9050    enumeration type, i.e. the name of the enumeration type is not
9051    prepended to the enumerator.
9052
9053    There are two complexities.  One is DW_AT_specification; in this
9054    case "parent" means the parent of the target of the specification,
9055    instead of the direct parent of the DIE.  The other is compilers
9056    which do not emit DW_TAG_namespace; in this case we try to guess
9057    the fully qualified name of structure types from their members'
9058    linkage names.  This must be done using the DIE's children rather
9059    than the children of any DW_AT_specification target.  We only need
9060    to do this for structures at the top level, i.e. if the target of
9061    any DW_AT_specification (if any; otherwise the DIE itself) does not
9062    have a parent.  */
9063
9064 /* Compute the scope prefix associated with PDI's parent, in
9065    compilation unit CU.  The result will be allocated on CU's
9066    comp_unit_obstack, or a copy of the already allocated PDI->NAME
9067    field.  NULL is returned if no prefix is necessary.  */
9068 static const char *
9069 partial_die_parent_scope (struct partial_die_info *pdi,
9070                           struct dwarf2_cu *cu)
9071 {
9072   const char *grandparent_scope;
9073   struct partial_die_info *parent, *real_pdi;
9074
9075   /* We need to look at our parent DIE; if we have a DW_AT_specification,
9076      then this means the parent of the specification DIE.  */
9077
9078   real_pdi = pdi;
9079   while (real_pdi->has_specification)
9080     real_pdi = find_partial_die (real_pdi->spec_offset,
9081                                  real_pdi->spec_is_dwz, cu);
9082
9083   parent = real_pdi->die_parent;
9084   if (parent == NULL)
9085     return NULL;
9086
9087   if (parent->scope_set)
9088     return parent->scope;
9089
9090   fixup_partial_die (parent, cu);
9091
9092   grandparent_scope = partial_die_parent_scope (parent, cu);
9093
9094   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
9095      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
9096      Work around this problem here.  */
9097   if (cu->language == language_cplus
9098       && parent->tag == DW_TAG_namespace
9099       && strcmp (parent->name, "::") == 0
9100       && grandparent_scope == NULL)
9101     {
9102       parent->scope = NULL;
9103       parent->scope_set = 1;
9104       return NULL;
9105     }
9106
9107   if (pdi->tag == DW_TAG_enumerator)
9108     /* Enumerators should not get the name of the enumeration as a prefix.  */
9109     parent->scope = grandparent_scope;
9110   else if (parent->tag == DW_TAG_namespace
9111       || parent->tag == DW_TAG_module
9112       || parent->tag == DW_TAG_structure_type
9113       || parent->tag == DW_TAG_class_type
9114       || parent->tag == DW_TAG_interface_type
9115       || parent->tag == DW_TAG_union_type
9116       || parent->tag == DW_TAG_enumeration_type)
9117     {
9118       if (grandparent_scope == NULL)
9119         parent->scope = parent->name;
9120       else
9121         parent->scope = typename_concat (&cu->comp_unit_obstack,
9122                                          grandparent_scope,
9123                                          parent->name, 0, cu);
9124     }
9125   else
9126     {
9127       /* FIXME drow/2004-04-01: What should we be doing with
9128          function-local names?  For partial symbols, we should probably be
9129          ignoring them.  */
9130       complaint (&symfile_complaints,
9131                  _("unhandled containing DIE tag %d for DIE at %d"),
9132                  parent->tag, to_underlying (pdi->sect_off));
9133       parent->scope = grandparent_scope;
9134     }
9135
9136   parent->scope_set = 1;
9137   return parent->scope;
9138 }
9139
9140 /* Return the fully scoped name associated with PDI, from compilation unit
9141    CU.  The result will be allocated with malloc.  */
9142
9143 static char *
9144 partial_die_full_name (struct partial_die_info *pdi,
9145                        struct dwarf2_cu *cu)
9146 {
9147   const char *parent_scope;
9148
9149   /* If this is a template instantiation, we can not work out the
9150      template arguments from partial DIEs.  So, unfortunately, we have
9151      to go through the full DIEs.  At least any work we do building
9152      types here will be reused if full symbols are loaded later.  */
9153   if (pdi->has_template_arguments)
9154     {
9155       fixup_partial_die (pdi, cu);
9156
9157       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
9158         {
9159           struct die_info *die;
9160           struct attribute attr;
9161           struct dwarf2_cu *ref_cu = cu;
9162
9163           /* DW_FORM_ref_addr is using section offset.  */
9164           attr.name = (enum dwarf_attribute) 0;
9165           attr.form = DW_FORM_ref_addr;
9166           attr.u.unsnd = to_underlying (pdi->sect_off);
9167           die = follow_die_ref (NULL, &attr, &ref_cu);
9168
9169           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
9170         }
9171     }
9172
9173   parent_scope = partial_die_parent_scope (pdi, cu);
9174   if (parent_scope == NULL)
9175     return NULL;
9176   else
9177     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
9178 }
9179
9180 static void
9181 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
9182 {
9183   struct objfile *objfile = cu->objfile;
9184   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9185   CORE_ADDR addr = 0;
9186   const char *actual_name = NULL;
9187   CORE_ADDR baseaddr;
9188   char *built_actual_name;
9189
9190   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9191
9192   built_actual_name = partial_die_full_name (pdi, cu);
9193   if (built_actual_name != NULL)
9194     actual_name = built_actual_name;
9195
9196   if (actual_name == NULL)
9197     actual_name = pdi->name;
9198
9199   switch (pdi->tag)
9200     {
9201     case DW_TAG_subprogram:
9202       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
9203       if (pdi->is_external || cu->language == language_ada)
9204         {
9205           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
9206              of the global scope.  But in Ada, we want to be able to access
9207              nested procedures globally.  So all Ada subprograms are stored
9208              in the global scope.  */
9209           add_psymbol_to_list (actual_name, strlen (actual_name),
9210                                built_actual_name != NULL,
9211                                VAR_DOMAIN, LOC_BLOCK,
9212                                &objfile->global_psymbols,
9213                                addr, cu->language, objfile);
9214         }
9215       else
9216         {
9217           add_psymbol_to_list (actual_name, strlen (actual_name),
9218                                built_actual_name != NULL,
9219                                VAR_DOMAIN, LOC_BLOCK,
9220                                &objfile->static_psymbols,
9221                                addr, cu->language, objfile);
9222         }
9223
9224       if (pdi->main_subprogram && actual_name != NULL)
9225         set_objfile_main_name (objfile, actual_name, cu->language);
9226       break;
9227     case DW_TAG_constant:
9228       {
9229         std::vector<partial_symbol *> *list;
9230
9231         if (pdi->is_external)
9232           list = &objfile->global_psymbols;
9233         else
9234           list = &objfile->static_psymbols;
9235         add_psymbol_to_list (actual_name, strlen (actual_name),
9236                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
9237                              list, 0, cu->language, objfile);
9238       }
9239       break;
9240     case DW_TAG_variable:
9241       if (pdi->d.locdesc)
9242         addr = decode_locdesc (pdi->d.locdesc, cu);
9243
9244       if (pdi->d.locdesc
9245           && addr == 0
9246           && !dwarf2_per_objfile->has_section_at_zero)
9247         {
9248           /* A global or static variable may also have been stripped
9249              out by the linker if unused, in which case its address
9250              will be nullified; do not add such variables into partial
9251              symbol table then.  */
9252         }
9253       else if (pdi->is_external)
9254         {
9255           /* Global Variable.
9256              Don't enter into the minimal symbol tables as there is
9257              a minimal symbol table entry from the ELF symbols already.
9258              Enter into partial symbol table if it has a location
9259              descriptor or a type.
9260              If the location descriptor is missing, new_symbol will create
9261              a LOC_UNRESOLVED symbol, the address of the variable will then
9262              be determined from the minimal symbol table whenever the variable
9263              is referenced.
9264              The address for the partial symbol table entry is not
9265              used by GDB, but it comes in handy for debugging partial symbol
9266              table building.  */
9267
9268           if (pdi->d.locdesc || pdi->has_type)
9269             add_psymbol_to_list (actual_name, strlen (actual_name),
9270                                  built_actual_name != NULL,
9271                                  VAR_DOMAIN, LOC_STATIC,
9272                                  &objfile->global_psymbols,
9273                                  addr + baseaddr,
9274                                  cu->language, objfile);
9275         }
9276       else
9277         {
9278           int has_loc = pdi->d.locdesc != NULL;
9279
9280           /* Static Variable.  Skip symbols whose value we cannot know (those
9281              without location descriptors or constant values).  */
9282           if (!has_loc && !pdi->has_const_value)
9283             {
9284               xfree (built_actual_name);
9285               return;
9286             }
9287
9288           add_psymbol_to_list (actual_name, strlen (actual_name),
9289                                built_actual_name != NULL,
9290                                VAR_DOMAIN, LOC_STATIC,
9291                                &objfile->static_psymbols,
9292                                has_loc ? addr + baseaddr : (CORE_ADDR) 0,
9293                                cu->language, objfile);
9294         }
9295       break;
9296     case DW_TAG_typedef:
9297     case DW_TAG_base_type:
9298     case DW_TAG_subrange_type:
9299       add_psymbol_to_list (actual_name, strlen (actual_name),
9300                            built_actual_name != NULL,
9301                            VAR_DOMAIN, LOC_TYPEDEF,
9302                            &objfile->static_psymbols,
9303                            0, cu->language, objfile);
9304       break;
9305     case DW_TAG_imported_declaration:
9306     case DW_TAG_namespace:
9307       add_psymbol_to_list (actual_name, strlen (actual_name),
9308                            built_actual_name != NULL,
9309                            VAR_DOMAIN, LOC_TYPEDEF,
9310                            &objfile->global_psymbols,
9311                            0, cu->language, objfile);
9312       break;
9313     case DW_TAG_module:
9314       add_psymbol_to_list (actual_name, strlen (actual_name),
9315                            built_actual_name != NULL,
9316                            MODULE_DOMAIN, LOC_TYPEDEF,
9317                            &objfile->global_psymbols,
9318                            0, cu->language, objfile);
9319       break;
9320     case DW_TAG_class_type:
9321     case DW_TAG_interface_type:
9322     case DW_TAG_structure_type:
9323     case DW_TAG_union_type:
9324     case DW_TAG_enumeration_type:
9325       /* Skip external references.  The DWARF standard says in the section
9326          about "Structure, Union, and Class Type Entries": "An incomplete
9327          structure, union or class type is represented by a structure,
9328          union or class entry that does not have a byte size attribute
9329          and that has a DW_AT_declaration attribute."  */
9330       if (!pdi->has_byte_size && pdi->is_declaration)
9331         {
9332           xfree (built_actual_name);
9333           return;
9334         }
9335
9336       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9337          static vs. global.  */
9338       add_psymbol_to_list (actual_name, strlen (actual_name),
9339                            built_actual_name != NULL,
9340                            STRUCT_DOMAIN, LOC_TYPEDEF,
9341                            cu->language == language_cplus
9342                            ? &objfile->global_psymbols
9343                            : &objfile->static_psymbols,
9344                            0, cu->language, objfile);
9345
9346       break;
9347     case DW_TAG_enumerator:
9348       add_psymbol_to_list (actual_name, strlen (actual_name),
9349                            built_actual_name != NULL,
9350                            VAR_DOMAIN, LOC_CONST,
9351                            cu->language == language_cplus
9352                            ? &objfile->global_psymbols
9353                            : &objfile->static_psymbols,
9354                            0, cu->language, objfile);
9355       break;
9356     default:
9357       break;
9358     }
9359
9360   xfree (built_actual_name);
9361 }
9362
9363 /* Read a partial die corresponding to a namespace; also, add a symbol
9364    corresponding to that namespace to the symbol table.  NAMESPACE is
9365    the name of the enclosing namespace.  */
9366
9367 static void
9368 add_partial_namespace (struct partial_die_info *pdi,
9369                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9370                        int set_addrmap, struct dwarf2_cu *cu)
9371 {
9372   /* Add a symbol for the namespace.  */
9373
9374   add_partial_symbol (pdi, cu);
9375
9376   /* Now scan partial symbols in that namespace.  */
9377
9378   if (pdi->has_children)
9379     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9380 }
9381
9382 /* Read a partial die corresponding to a Fortran module.  */
9383
9384 static void
9385 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9386                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9387 {
9388   /* Add a symbol for the namespace.  */
9389
9390   add_partial_symbol (pdi, cu);
9391
9392   /* Now scan partial symbols in that module.  */
9393
9394   if (pdi->has_children)
9395     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9396 }
9397
9398 /* Read a partial die corresponding to a subprogram and create a partial
9399    symbol for that subprogram.  When the CU language allows it, this
9400    routine also defines a partial symbol for each nested subprogram
9401    that this subprogram contains.  If SET_ADDRMAP is true, record the
9402    covered ranges in the addrmap.  Set *LOWPC and *HIGHPC to the lowest
9403    and highest PC values found in PDI.
9404
9405    PDI may also be a lexical block, in which case we simply search
9406    recursively for subprograms defined inside that lexical block.
9407    Again, this is only performed when the CU language allows this
9408    type of definitions.  */
9409
9410 static void
9411 add_partial_subprogram (struct partial_die_info *pdi,
9412                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9413                         int set_addrmap, struct dwarf2_cu *cu)
9414 {
9415   if (pdi->tag == DW_TAG_subprogram)
9416     {
9417       if (pdi->has_pc_info)
9418         {
9419           if (pdi->lowpc < *lowpc)
9420             *lowpc = pdi->lowpc;
9421           if (pdi->highpc > *highpc)
9422             *highpc = pdi->highpc;
9423           if (set_addrmap)
9424             {
9425               struct objfile *objfile = cu->objfile;
9426               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9427               CORE_ADDR baseaddr;
9428               CORE_ADDR highpc;
9429               CORE_ADDR lowpc;
9430
9431               baseaddr = ANOFFSET (objfile->section_offsets,
9432                                    SECT_OFF_TEXT (objfile));
9433               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9434                                                   pdi->lowpc + baseaddr);
9435               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9436                                                    pdi->highpc + baseaddr);
9437               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9438                                  cu->per_cu->v.psymtab);
9439             }
9440         }
9441
9442       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9443         {
9444           if (!pdi->is_declaration)
9445             /* Ignore subprogram DIEs that do not have a name, they are
9446                illegal.  Do not emit a complaint at this point, we will
9447                do so when we convert this psymtab into a symtab.  */
9448             if (pdi->name)
9449               add_partial_symbol (pdi, cu);
9450         }
9451     }
9452
9453   if (! pdi->has_children)
9454     return;
9455
9456   if (cu->language == language_ada)
9457     {
9458       pdi = pdi->die_child;
9459       while (pdi != NULL)
9460         {
9461           fixup_partial_die (pdi, cu);
9462           if (pdi->tag == DW_TAG_subprogram
9463               || pdi->tag == DW_TAG_lexical_block)
9464             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9465           pdi = pdi->die_sibling;
9466         }
9467     }
9468 }
9469
9470 /* Read a partial die corresponding to an enumeration type.  */
9471
9472 static void
9473 add_partial_enumeration (struct partial_die_info *enum_pdi,
9474                          struct dwarf2_cu *cu)
9475 {
9476   struct partial_die_info *pdi;
9477
9478   if (enum_pdi->name != NULL)
9479     add_partial_symbol (enum_pdi, cu);
9480
9481   pdi = enum_pdi->die_child;
9482   while (pdi)
9483     {
9484       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9485         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
9486       else
9487         add_partial_symbol (pdi, cu);
9488       pdi = pdi->die_sibling;
9489     }
9490 }
9491
9492 /* Return the initial uleb128 in the die at INFO_PTR.  */
9493
9494 static unsigned int
9495 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9496 {
9497   unsigned int bytes_read;
9498
9499   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9500 }
9501
9502 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
9503    Return the corresponding abbrev, or NULL if the number is zero (indicating
9504    an empty DIE).  In either case *BYTES_READ will be set to the length of
9505    the initial number.  */
9506
9507 static struct abbrev_info *
9508 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
9509                  struct dwarf2_cu *cu)
9510 {
9511   bfd *abfd = cu->objfile->obfd;
9512   unsigned int abbrev_number;
9513   struct abbrev_info *abbrev;
9514
9515   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9516
9517   if (abbrev_number == 0)
9518     return NULL;
9519
9520   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
9521   if (!abbrev)
9522     {
9523       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9524                " at offset 0x%x [in module %s]"),
9525              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9526              to_underlying (cu->header.sect_off), bfd_get_filename (abfd));
9527     }
9528
9529   return abbrev;
9530 }
9531
9532 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9533    Returns a pointer to the end of a series of DIEs, terminated by an empty
9534    DIE.  Any children of the skipped DIEs will also be skipped.  */
9535
9536 static const gdb_byte *
9537 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9538 {
9539   struct dwarf2_cu *cu = reader->cu;
9540   struct abbrev_info *abbrev;
9541   unsigned int bytes_read;
9542
9543   while (1)
9544     {
9545       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
9546       if (abbrev == NULL)
9547         return info_ptr + bytes_read;
9548       else
9549         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9550     }
9551 }
9552
9553 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9554    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9555    abbrev corresponding to that skipped uleb128 should be passed in
9556    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9557    children.  */
9558
9559 static const gdb_byte *
9560 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9561               struct abbrev_info *abbrev)
9562 {
9563   unsigned int bytes_read;
9564   struct attribute attr;
9565   bfd *abfd = reader->abfd;
9566   struct dwarf2_cu *cu = reader->cu;
9567   const gdb_byte *buffer = reader->buffer;
9568   const gdb_byte *buffer_end = reader->buffer_end;
9569   unsigned int form, i;
9570
9571   for (i = 0; i < abbrev->num_attrs; i++)
9572     {
9573       /* The only abbrev we care about is DW_AT_sibling.  */
9574       if (abbrev->attrs[i].name == DW_AT_sibling)
9575         {
9576           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9577           if (attr.form == DW_FORM_ref_addr)
9578             complaint (&symfile_complaints,
9579                        _("ignoring absolute DW_AT_sibling"));
9580           else
9581             {
9582               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9583               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9584
9585               if (sibling_ptr < info_ptr)
9586                 complaint (&symfile_complaints,
9587                            _("DW_AT_sibling points backwards"));
9588               else if (sibling_ptr > reader->buffer_end)
9589                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9590               else
9591                 return sibling_ptr;
9592             }
9593         }
9594
9595       /* If it isn't DW_AT_sibling, skip this attribute.  */
9596       form = abbrev->attrs[i].form;
9597     skip_attribute:
9598       switch (form)
9599         {
9600         case DW_FORM_ref_addr:
9601           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9602              and later it is offset sized.  */
9603           if (cu->header.version == 2)
9604             info_ptr += cu->header.addr_size;
9605           else
9606             info_ptr += cu->header.offset_size;
9607           break;
9608         case DW_FORM_GNU_ref_alt:
9609           info_ptr += cu->header.offset_size;
9610           break;
9611         case DW_FORM_addr:
9612           info_ptr += cu->header.addr_size;
9613           break;
9614         case DW_FORM_data1:
9615         case DW_FORM_ref1:
9616         case DW_FORM_flag:
9617           info_ptr += 1;
9618           break;
9619         case DW_FORM_flag_present:
9620         case DW_FORM_implicit_const:
9621           break;
9622         case DW_FORM_data2:
9623         case DW_FORM_ref2:
9624           info_ptr += 2;
9625           break;
9626         case DW_FORM_data4:
9627         case DW_FORM_ref4:
9628           info_ptr += 4;
9629           break;
9630         case DW_FORM_data8:
9631         case DW_FORM_ref8:
9632         case DW_FORM_ref_sig8:
9633           info_ptr += 8;
9634           break;
9635         case DW_FORM_data16:
9636           info_ptr += 16;
9637           break;
9638         case DW_FORM_string:
9639           read_direct_string (abfd, info_ptr, &bytes_read);
9640           info_ptr += bytes_read;
9641           break;
9642         case DW_FORM_sec_offset:
9643         case DW_FORM_strp:
9644         case DW_FORM_GNU_strp_alt:
9645           info_ptr += cu->header.offset_size;
9646           break;
9647         case DW_FORM_exprloc:
9648         case DW_FORM_block:
9649           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9650           info_ptr += bytes_read;
9651           break;
9652         case DW_FORM_block1:
9653           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9654           break;
9655         case DW_FORM_block2:
9656           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9657           break;
9658         case DW_FORM_block4:
9659           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9660           break;
9661         case DW_FORM_sdata:
9662         case DW_FORM_udata:
9663         case DW_FORM_ref_udata:
9664         case DW_FORM_GNU_addr_index:
9665         case DW_FORM_GNU_str_index:
9666           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9667           break;
9668         case DW_FORM_indirect:
9669           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9670           info_ptr += bytes_read;
9671           /* We need to continue parsing from here, so just go back to
9672              the top.  */
9673           goto skip_attribute;
9674
9675         default:
9676           error (_("Dwarf Error: Cannot handle %s "
9677                    "in DWARF reader [in module %s]"),
9678                  dwarf_form_name (form),
9679                  bfd_get_filename (abfd));
9680         }
9681     }
9682
9683   if (abbrev->has_children)
9684     return skip_children (reader, info_ptr);
9685   else
9686     return info_ptr;
9687 }
9688
9689 /* Locate ORIG_PDI's sibling.
9690    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9691
9692 static const gdb_byte *
9693 locate_pdi_sibling (const struct die_reader_specs *reader,
9694                     struct partial_die_info *orig_pdi,
9695                     const gdb_byte *info_ptr)
9696 {
9697   /* Do we know the sibling already?  */
9698
9699   if (orig_pdi->sibling)
9700     return orig_pdi->sibling;
9701
9702   /* Are there any children to deal with?  */
9703
9704   if (!orig_pdi->has_children)
9705     return info_ptr;
9706
9707   /* Skip the children the long way.  */
9708
9709   return skip_children (reader, info_ptr);
9710 }
9711
9712 /* Expand this partial symbol table into a full symbol table.  SELF is
9713    not NULL.  */
9714
9715 static void
9716 dwarf2_read_symtab (struct partial_symtab *self,
9717                     struct objfile *objfile)
9718 {
9719   if (self->readin)
9720     {
9721       warning (_("bug: psymtab for %s is already read in."),
9722                self->filename);
9723     }
9724   else
9725     {
9726       if (info_verbose)
9727         {
9728           printf_filtered (_("Reading in symbols for %s..."),
9729                            self->filename);
9730           gdb_flush (gdb_stdout);
9731         }
9732
9733       /* Restore our global data.  */
9734       dwarf2_per_objfile
9735         = (struct dwarf2_per_objfile *) objfile_data (objfile,
9736                                                       dwarf2_objfile_data_key);
9737
9738       /* If this psymtab is constructed from a debug-only objfile, the
9739          has_section_at_zero flag will not necessarily be correct.  We
9740          can get the correct value for this flag by looking at the data
9741          associated with the (presumably stripped) associated objfile.  */
9742       if (objfile->separate_debug_objfile_backlink)
9743         {
9744           struct dwarf2_per_objfile *dpo_backlink
9745             = ((struct dwarf2_per_objfile *)
9746                objfile_data (objfile->separate_debug_objfile_backlink,
9747                              dwarf2_objfile_data_key));
9748
9749           dwarf2_per_objfile->has_section_at_zero
9750             = dpo_backlink->has_section_at_zero;
9751         }
9752
9753       dwarf2_per_objfile->reading_partial_symbols = 0;
9754
9755       psymtab_to_symtab_1 (self);
9756
9757       /* Finish up the debug error message.  */
9758       if (info_verbose)
9759         printf_filtered (_("done.\n"));
9760     }
9761
9762   process_cu_includes ();
9763 }
9764 \f
9765 /* Reading in full CUs.  */
9766
9767 /* Add PER_CU to the queue.  */
9768
9769 static void
9770 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9771                  enum language pretend_language)
9772 {
9773   struct dwarf2_queue_item *item;
9774
9775   per_cu->queued = 1;
9776   item = XNEW (struct dwarf2_queue_item);
9777   item->per_cu = per_cu;
9778   item->pretend_language = pretend_language;
9779   item->next = NULL;
9780
9781   if (dwarf2_queue == NULL)
9782     dwarf2_queue = item;
9783   else
9784     dwarf2_queue_tail->next = item;
9785
9786   dwarf2_queue_tail = item;
9787 }
9788
9789 /* If PER_CU is not yet queued, add it to the queue.
9790    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9791    dependency.
9792    The result is non-zero if PER_CU was queued, otherwise the result is zero
9793    meaning either PER_CU is already queued or it is already loaded.
9794
9795    N.B. There is an invariant here that if a CU is queued then it is loaded.
9796    The caller is required to load PER_CU if we return non-zero.  */
9797
9798 static int
9799 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9800                        struct dwarf2_per_cu_data *per_cu,
9801                        enum language pretend_language)
9802 {
9803   /* We may arrive here during partial symbol reading, if we need full
9804      DIEs to process an unusual case (e.g. template arguments).  Do
9805      not queue PER_CU, just tell our caller to load its DIEs.  */
9806   if (dwarf2_per_objfile->reading_partial_symbols)
9807     {
9808       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9809         return 1;
9810       return 0;
9811     }
9812
9813   /* Mark the dependence relation so that we don't flush PER_CU
9814      too early.  */
9815   if (dependent_cu != NULL)
9816     dwarf2_add_dependence (dependent_cu, per_cu);
9817
9818   /* If it's already on the queue, we have nothing to do.  */
9819   if (per_cu->queued)
9820     return 0;
9821
9822   /* If the compilation unit is already loaded, just mark it as
9823      used.  */
9824   if (per_cu->cu != NULL)
9825     {
9826       per_cu->cu->last_used = 0;
9827       return 0;
9828     }
9829
9830   /* Add it to the queue.  */
9831   queue_comp_unit (per_cu, pretend_language);
9832
9833   return 1;
9834 }
9835
9836 /* Process the queue.  */
9837
9838 static void
9839 process_queue (void)
9840 {
9841   struct dwarf2_queue_item *item, *next_item;
9842
9843   if (dwarf_read_debug)
9844     {
9845       fprintf_unfiltered (gdb_stdlog,
9846                           "Expanding one or more symtabs of objfile %s ...\n",
9847                           objfile_name (dwarf2_per_objfile->objfile));
9848     }
9849
9850   /* The queue starts out with one item, but following a DIE reference
9851      may load a new CU, adding it to the end of the queue.  */
9852   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9853     {
9854       if ((dwarf2_per_objfile->using_index
9855            ? !item->per_cu->v.quick->compunit_symtab
9856            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9857           /* Skip dummy CUs.  */
9858           && item->per_cu->cu != NULL)
9859         {
9860           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9861           unsigned int debug_print_threshold;
9862           char buf[100];
9863
9864           if (per_cu->is_debug_types)
9865             {
9866               struct signatured_type *sig_type =
9867                 (struct signatured_type *) per_cu;
9868
9869               sprintf (buf, "TU %s at offset 0x%x",
9870                        hex_string (sig_type->signature),
9871                        to_underlying (per_cu->sect_off));
9872               /* There can be 100s of TUs.
9873                  Only print them in verbose mode.  */
9874               debug_print_threshold = 2;
9875             }
9876           else
9877             {
9878               sprintf (buf, "CU at offset 0x%x",
9879                        to_underlying (per_cu->sect_off));
9880               debug_print_threshold = 1;
9881             }
9882
9883           if (dwarf_read_debug >= debug_print_threshold)
9884             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9885
9886           if (per_cu->is_debug_types)
9887             process_full_type_unit (per_cu, item->pretend_language);
9888           else
9889             process_full_comp_unit (per_cu, item->pretend_language);
9890
9891           if (dwarf_read_debug >= debug_print_threshold)
9892             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9893         }
9894
9895       item->per_cu->queued = 0;
9896       next_item = item->next;
9897       xfree (item);
9898     }
9899
9900   dwarf2_queue_tail = NULL;
9901
9902   if (dwarf_read_debug)
9903     {
9904       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9905                           objfile_name (dwarf2_per_objfile->objfile));
9906     }
9907 }
9908
9909 /* Free all allocated queue entries.  This function only releases anything if
9910    an error was thrown; if the queue was processed then it would have been
9911    freed as we went along.  */
9912
9913 static void
9914 dwarf2_release_queue (void *dummy)
9915 {
9916   struct dwarf2_queue_item *item, *last;
9917
9918   item = dwarf2_queue;
9919   while (item)
9920     {
9921       /* Anything still marked queued is likely to be in an
9922          inconsistent state, so discard it.  */
9923       if (item->per_cu->queued)
9924         {
9925           if (item->per_cu->cu != NULL)
9926             free_one_cached_comp_unit (item->per_cu);
9927           item->per_cu->queued = 0;
9928         }
9929
9930       last = item;
9931       item = item->next;
9932       xfree (last);
9933     }
9934
9935   dwarf2_queue = dwarf2_queue_tail = NULL;
9936 }
9937
9938 /* Read in full symbols for PST, and anything it depends on.  */
9939
9940 static void
9941 psymtab_to_symtab_1 (struct partial_symtab *pst)
9942 {
9943   struct dwarf2_per_cu_data *per_cu;
9944   int i;
9945
9946   if (pst->readin)
9947     return;
9948
9949   for (i = 0; i < pst->number_of_dependencies; i++)
9950     if (!pst->dependencies[i]->readin
9951         && pst->dependencies[i]->user == NULL)
9952       {
9953         /* Inform about additional files that need to be read in.  */
9954         if (info_verbose)
9955           {
9956             /* FIXME: i18n: Need to make this a single string.  */
9957             fputs_filtered (" ", gdb_stdout);
9958             wrap_here ("");
9959             fputs_filtered ("and ", gdb_stdout);
9960             wrap_here ("");
9961             printf_filtered ("%s...", pst->dependencies[i]->filename);
9962             wrap_here ("");     /* Flush output.  */
9963             gdb_flush (gdb_stdout);
9964           }
9965         psymtab_to_symtab_1 (pst->dependencies[i]);
9966       }
9967
9968   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9969
9970   if (per_cu == NULL)
9971     {
9972       /* It's an include file, no symbols to read for it.
9973          Everything is in the parent symtab.  */
9974       pst->readin = 1;
9975       return;
9976     }
9977
9978   dw2_do_instantiate_symtab (per_cu);
9979 }
9980
9981 /* Trivial hash function for die_info: the hash value of a DIE
9982    is its offset in .debug_info for this objfile.  */
9983
9984 static hashval_t
9985 die_hash (const void *item)
9986 {
9987   const struct die_info *die = (const struct die_info *) item;
9988
9989   return to_underlying (die->sect_off);
9990 }
9991
9992 /* Trivial comparison function for die_info structures: two DIEs
9993    are equal if they have the same offset.  */
9994
9995 static int
9996 die_eq (const void *item_lhs, const void *item_rhs)
9997 {
9998   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9999   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
10000
10001   return die_lhs->sect_off == die_rhs->sect_off;
10002 }
10003
10004 /* die_reader_func for load_full_comp_unit.
10005    This is identical to read_signatured_type_reader,
10006    but is kept separate for now.  */
10007
10008 static void
10009 load_full_comp_unit_reader (const struct die_reader_specs *reader,
10010                             const gdb_byte *info_ptr,
10011                             struct die_info *comp_unit_die,
10012                             int has_children,
10013                             void *data)
10014 {
10015   struct dwarf2_cu *cu = reader->cu;
10016   enum language *language_ptr = (enum language *) data;
10017
10018   gdb_assert (cu->die_hash == NULL);
10019   cu->die_hash =
10020     htab_create_alloc_ex (cu->header.length / 12,
10021                           die_hash,
10022                           die_eq,
10023                           NULL,
10024                           &cu->comp_unit_obstack,
10025                           hashtab_obstack_allocate,
10026                           dummy_obstack_deallocate);
10027
10028   if (has_children)
10029     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
10030                                                   &info_ptr, comp_unit_die);
10031   cu->dies = comp_unit_die;
10032   /* comp_unit_die is not stored in die_hash, no need.  */
10033
10034   /* We try not to read any attributes in this function, because not
10035      all CUs needed for references have been loaded yet, and symbol
10036      table processing isn't initialized.  But we have to set the CU language,
10037      or we won't be able to build types correctly.
10038      Similarly, if we do not read the producer, we can not apply
10039      producer-specific interpretation.  */
10040   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
10041 }
10042
10043 /* Load the DIEs associated with PER_CU into memory.  */
10044
10045 static void
10046 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
10047                      enum language pretend_language)
10048 {
10049   gdb_assert (! this_cu->is_debug_types);
10050
10051   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
10052                            load_full_comp_unit_reader, &pretend_language);
10053 }
10054
10055 /* Add a DIE to the delayed physname list.  */
10056
10057 static void
10058 add_to_method_list (struct type *type, int fnfield_index, int index,
10059                     const char *name, struct die_info *die,
10060                     struct dwarf2_cu *cu)
10061 {
10062   struct delayed_method_info mi;
10063   mi.type = type;
10064   mi.fnfield_index = fnfield_index;
10065   mi.index = index;
10066   mi.name = name;
10067   mi.die = die;
10068   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
10069 }
10070
10071 /* A cleanup for freeing the delayed method list.  */
10072
10073 static void
10074 free_delayed_list (void *ptr)
10075 {
10076   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
10077   if (cu->method_list != NULL)
10078     {
10079       VEC_free (delayed_method_info, cu->method_list);
10080       cu->method_list = NULL;
10081     }
10082 }
10083
10084 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
10085    "const" / "volatile".  If so, decrements LEN by the length of the
10086    modifier and return true.  Otherwise return false.  */
10087
10088 template<size_t N>
10089 static bool
10090 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
10091 {
10092   size_t mod_len = sizeof (mod) - 1;
10093   if (len > mod_len && startswith (physname + (len - mod_len), mod))
10094     {
10095       len -= mod_len;
10096       return true;
10097     }
10098   return false;
10099 }
10100
10101 /* Compute the physnames of any methods on the CU's method list.
10102
10103    The computation of method physnames is delayed in order to avoid the
10104    (bad) condition that one of the method's formal parameters is of an as yet
10105    incomplete type.  */
10106
10107 static void
10108 compute_delayed_physnames (struct dwarf2_cu *cu)
10109 {
10110   int i;
10111   struct delayed_method_info *mi;
10112
10113   /* Only C++ delays computing physnames.  */
10114   if (VEC_empty (delayed_method_info, cu->method_list))
10115     return;
10116   gdb_assert (cu->language == language_cplus);
10117
10118   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
10119     {
10120       const char *physname;
10121       struct fn_fieldlist *fn_flp
10122         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
10123       physname = dwarf2_physname (mi->name, mi->die, cu);
10124       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
10125         = physname ? physname : "";
10126
10127       /* Since there's no tag to indicate whether a method is a
10128          const/volatile overload, extract that information out of the
10129          demangled name.  */
10130       if (physname != NULL)
10131         {
10132           size_t len = strlen (physname);
10133
10134           while (1)
10135             {
10136               if (physname[len] == ')') /* shortcut */
10137                 break;
10138               else if (check_modifier (physname, len, " const"))
10139                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi->index) = 1;
10140               else if (check_modifier (physname, len, " volatile"))
10141                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi->index) = 1;
10142               else
10143                 break;
10144             }
10145         }
10146     }
10147 }
10148
10149 /* Go objects should be embedded in a DW_TAG_module DIE,
10150    and it's not clear if/how imported objects will appear.
10151    To keep Go support simple until that's worked out,
10152    go back through what we've read and create something usable.
10153    We could do this while processing each DIE, and feels kinda cleaner,
10154    but that way is more invasive.
10155    This is to, for example, allow the user to type "p var" or "b main"
10156    without having to specify the package name, and allow lookups
10157    of module.object to work in contexts that use the expression
10158    parser.  */
10159
10160 static void
10161 fixup_go_packaging (struct dwarf2_cu *cu)
10162 {
10163   char *package_name = NULL;
10164   struct pending *list;
10165   int i;
10166
10167   for (list = global_symbols; list != NULL; list = list->next)
10168     {
10169       for (i = 0; i < list->nsyms; ++i)
10170         {
10171           struct symbol *sym = list->symbol[i];
10172
10173           if (SYMBOL_LANGUAGE (sym) == language_go
10174               && SYMBOL_CLASS (sym) == LOC_BLOCK)
10175             {
10176               char *this_package_name = go_symbol_package_name (sym);
10177
10178               if (this_package_name == NULL)
10179                 continue;
10180               if (package_name == NULL)
10181                 package_name = this_package_name;
10182               else
10183                 {
10184                   if (strcmp (package_name, this_package_name) != 0)
10185                     complaint (&symfile_complaints,
10186                                _("Symtab %s has objects from two different Go packages: %s and %s"),
10187                                (symbol_symtab (sym) != NULL
10188                                 ? symtab_to_filename_for_display
10189                                     (symbol_symtab (sym))
10190                                 : objfile_name (cu->objfile)),
10191                                this_package_name, package_name);
10192                   xfree (this_package_name);
10193                 }
10194             }
10195         }
10196     }
10197
10198   if (package_name != NULL)
10199     {
10200       struct objfile *objfile = cu->objfile;
10201       const char *saved_package_name
10202         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
10203                                         package_name,
10204                                         strlen (package_name));
10205       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
10206                                      saved_package_name);
10207       struct symbol *sym;
10208
10209       TYPE_TAG_NAME (type) = TYPE_NAME (type);
10210
10211       sym = allocate_symbol (objfile);
10212       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
10213       SYMBOL_SET_NAMES (sym, saved_package_name,
10214                         strlen (saved_package_name), 0, objfile);
10215       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
10216          e.g., "main" finds the "main" module and not C's main().  */
10217       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
10218       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
10219       SYMBOL_TYPE (sym) = type;
10220
10221       add_symbol_to_list (sym, &global_symbols);
10222
10223       xfree (package_name);
10224     }
10225 }
10226
10227 /* Return the symtab for PER_CU.  This works properly regardless of
10228    whether we're using the index or psymtabs.  */
10229
10230 static struct compunit_symtab *
10231 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10232 {
10233   return (dwarf2_per_objfile->using_index
10234           ? per_cu->v.quick->compunit_symtab
10235           : per_cu->v.psymtab->compunit_symtab);
10236 }
10237
10238 /* A helper function for computing the list of all symbol tables
10239    included by PER_CU.  */
10240
10241 static void
10242 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10243                                 htab_t all_children, htab_t all_type_symtabs,
10244                                 struct dwarf2_per_cu_data *per_cu,
10245                                 struct compunit_symtab *immediate_parent)
10246 {
10247   void **slot;
10248   int ix;
10249   struct compunit_symtab *cust;
10250   struct dwarf2_per_cu_data *iter;
10251
10252   slot = htab_find_slot (all_children, per_cu, INSERT);
10253   if (*slot != NULL)
10254     {
10255       /* This inclusion and its children have been processed.  */
10256       return;
10257     }
10258
10259   *slot = per_cu;
10260   /* Only add a CU if it has a symbol table.  */
10261   cust = get_compunit_symtab (per_cu);
10262   if (cust != NULL)
10263     {
10264       /* If this is a type unit only add its symbol table if we haven't
10265          seen it yet (type unit per_cu's can share symtabs).  */
10266       if (per_cu->is_debug_types)
10267         {
10268           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10269           if (*slot == NULL)
10270             {
10271               *slot = cust;
10272               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10273               if (cust->user == NULL)
10274                 cust->user = immediate_parent;
10275             }
10276         }
10277       else
10278         {
10279           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10280           if (cust->user == NULL)
10281             cust->user = immediate_parent;
10282         }
10283     }
10284
10285   for (ix = 0;
10286        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10287        ++ix)
10288     {
10289       recursively_compute_inclusions (result, all_children,
10290                                       all_type_symtabs, iter, cust);
10291     }
10292 }
10293
10294 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10295    PER_CU.  */
10296
10297 static void
10298 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10299 {
10300   gdb_assert (! per_cu->is_debug_types);
10301
10302   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10303     {
10304       int ix, len;
10305       struct dwarf2_per_cu_data *per_cu_iter;
10306       struct compunit_symtab *compunit_symtab_iter;
10307       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10308       htab_t all_children, all_type_symtabs;
10309       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10310
10311       /* If we don't have a symtab, we can just skip this case.  */
10312       if (cust == NULL)
10313         return;
10314
10315       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10316                                         NULL, xcalloc, xfree);
10317       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10318                                             NULL, xcalloc, xfree);
10319
10320       for (ix = 0;
10321            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10322                         ix, per_cu_iter);
10323            ++ix)
10324         {
10325           recursively_compute_inclusions (&result_symtabs, all_children,
10326                                           all_type_symtabs, per_cu_iter,
10327                                           cust);
10328         }
10329
10330       /* Now we have a transitive closure of all the included symtabs.  */
10331       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10332       cust->includes
10333         = XOBNEWVEC (&dwarf2_per_objfile->objfile->objfile_obstack,
10334                      struct compunit_symtab *, len + 1);
10335       for (ix = 0;
10336            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10337                         compunit_symtab_iter);
10338            ++ix)
10339         cust->includes[ix] = compunit_symtab_iter;
10340       cust->includes[len] = NULL;
10341
10342       VEC_free (compunit_symtab_ptr, result_symtabs);
10343       htab_delete (all_children);
10344       htab_delete (all_type_symtabs);
10345     }
10346 }
10347
10348 /* Compute the 'includes' field for the symtabs of all the CUs we just
10349    read.  */
10350
10351 static void
10352 process_cu_includes (void)
10353 {
10354   int ix;
10355   struct dwarf2_per_cu_data *iter;
10356
10357   for (ix = 0;
10358        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
10359                     ix, iter);
10360        ++ix)
10361     {
10362       if (! iter->is_debug_types)
10363         compute_compunit_symtab_includes (iter);
10364     }
10365
10366   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
10367 }
10368
10369 /* Generate full symbol information for PER_CU, whose DIEs have
10370    already been loaded into memory.  */
10371
10372 static void
10373 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10374                         enum language pretend_language)
10375 {
10376   struct dwarf2_cu *cu = per_cu->cu;
10377   struct objfile *objfile = per_cu->objfile;
10378   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10379   CORE_ADDR lowpc, highpc;
10380   struct compunit_symtab *cust;
10381   struct cleanup *delayed_list_cleanup;
10382   CORE_ADDR baseaddr;
10383   struct block *static_block;
10384   CORE_ADDR addr;
10385
10386   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10387
10388   buildsym_init ();
10389   scoped_free_pendings free_pending;
10390   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10391
10392   cu->list_in_scope = &file_symbols;
10393
10394   cu->language = pretend_language;
10395   cu->language_defn = language_def (cu->language);
10396
10397   /* Do line number decoding in read_file_scope () */
10398   process_die (cu->dies, cu);
10399
10400   /* For now fudge the Go package.  */
10401   if (cu->language == language_go)
10402     fixup_go_packaging (cu);
10403
10404   /* Now that we have processed all the DIEs in the CU, all the types 
10405      should be complete, and it should now be safe to compute all of the
10406      physnames.  */
10407   compute_delayed_physnames (cu);
10408   do_cleanups (delayed_list_cleanup);
10409
10410   /* Some compilers don't define a DW_AT_high_pc attribute for the
10411      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10412      it, by scanning the DIE's below the compilation unit.  */
10413   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10414
10415   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10416   static_block = end_symtab_get_static_block (addr, 0, 1);
10417
10418   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10419      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10420      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10421      addrmap to help ensure it has an accurate map of pc values belonging to
10422      this comp unit.  */
10423   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10424
10425   cust = end_symtab_from_static_block (static_block,
10426                                        SECT_OFF_TEXT (objfile), 0);
10427
10428   if (cust != NULL)
10429     {
10430       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10431
10432       /* Set symtab language to language from DW_AT_language.  If the
10433          compilation is from a C file generated by language preprocessors, do
10434          not set the language if it was already deduced by start_subfile.  */
10435       if (!(cu->language == language_c
10436             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10437         COMPUNIT_FILETABS (cust)->language = cu->language;
10438
10439       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10440          produce DW_AT_location with location lists but it can be possibly
10441          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10442          there were bugs in prologue debug info, fixed later in GCC-4.5
10443          by "unwind info for epilogues" patch (which is not directly related).
10444
10445          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10446          needed, it would be wrong due to missing DW_AT_producer there.
10447
10448          Still one can confuse GDB by using non-standard GCC compilation
10449          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10450          */ 
10451       if (cu->has_loclist && gcc_4_minor >= 5)
10452         cust->locations_valid = 1;
10453
10454       if (gcc_4_minor >= 5)
10455         cust->epilogue_unwind_valid = 1;
10456
10457       cust->call_site_htab = cu->call_site_htab;
10458     }
10459
10460   if (dwarf2_per_objfile->using_index)
10461     per_cu->v.quick->compunit_symtab = cust;
10462   else
10463     {
10464       struct partial_symtab *pst = per_cu->v.psymtab;
10465       pst->compunit_symtab = cust;
10466       pst->readin = 1;
10467     }
10468
10469   /* Push it for inclusion processing later.  */
10470   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
10471 }
10472
10473 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10474    already been loaded into memory.  */
10475
10476 static void
10477 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10478                         enum language pretend_language)
10479 {
10480   struct dwarf2_cu *cu = per_cu->cu;
10481   struct objfile *objfile = per_cu->objfile;
10482   struct compunit_symtab *cust;
10483   struct cleanup *delayed_list_cleanup;
10484   struct signatured_type *sig_type;
10485
10486   gdb_assert (per_cu->is_debug_types);
10487   sig_type = (struct signatured_type *) per_cu;
10488
10489   buildsym_init ();
10490   scoped_free_pendings free_pending;
10491   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10492
10493   cu->list_in_scope = &file_symbols;
10494
10495   cu->language = pretend_language;
10496   cu->language_defn = language_def (cu->language);
10497
10498   /* The symbol tables are set up in read_type_unit_scope.  */
10499   process_die (cu->dies, cu);
10500
10501   /* For now fudge the Go package.  */
10502   if (cu->language == language_go)
10503     fixup_go_packaging (cu);
10504
10505   /* Now that we have processed all the DIEs in the CU, all the types 
10506      should be complete, and it should now be safe to compute all of the
10507      physnames.  */
10508   compute_delayed_physnames (cu);
10509   do_cleanups (delayed_list_cleanup);
10510
10511   /* TUs share symbol tables.
10512      If this is the first TU to use this symtab, complete the construction
10513      of it with end_expandable_symtab.  Otherwise, complete the addition of
10514      this TU's symbols to the existing symtab.  */
10515   if (sig_type->type_unit_group->compunit_symtab == NULL)
10516     {
10517       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10518       sig_type->type_unit_group->compunit_symtab = cust;
10519
10520       if (cust != NULL)
10521         {
10522           /* Set symtab language to language from DW_AT_language.  If the
10523              compilation is from a C file generated by language preprocessors,
10524              do not set the language if it was already deduced by
10525              start_subfile.  */
10526           if (!(cu->language == language_c
10527                 && COMPUNIT_FILETABS (cust)->language != language_c))
10528             COMPUNIT_FILETABS (cust)->language = cu->language;
10529         }
10530     }
10531   else
10532     {
10533       augment_type_symtab ();
10534       cust = sig_type->type_unit_group->compunit_symtab;
10535     }
10536
10537   if (dwarf2_per_objfile->using_index)
10538     per_cu->v.quick->compunit_symtab = cust;
10539   else
10540     {
10541       struct partial_symtab *pst = per_cu->v.psymtab;
10542       pst->compunit_symtab = cust;
10543       pst->readin = 1;
10544     }
10545 }
10546
10547 /* Process an imported unit DIE.  */
10548
10549 static void
10550 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10551 {
10552   struct attribute *attr;
10553
10554   /* For now we don't handle imported units in type units.  */
10555   if (cu->per_cu->is_debug_types)
10556     {
10557       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10558                " supported in type units [in module %s]"),
10559              objfile_name (cu->objfile));
10560     }
10561
10562   attr = dwarf2_attr (die, DW_AT_import, cu);
10563   if (attr != NULL)
10564     {
10565       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10566       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10567       dwarf2_per_cu_data *per_cu
10568         = dwarf2_find_containing_comp_unit (sect_off, is_dwz, cu->objfile);
10569
10570       /* If necessary, add it to the queue and load its DIEs.  */
10571       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10572         load_full_comp_unit (per_cu, cu->language);
10573
10574       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10575                      per_cu);
10576     }
10577 }
10578
10579 /* RAII object that represents a process_die scope: i.e.,
10580    starts/finishes processing a DIE.  */
10581 class process_die_scope
10582 {
10583 public:
10584   process_die_scope (die_info *die, dwarf2_cu *cu)
10585     : m_die (die), m_cu (cu)
10586   {
10587     /* We should only be processing DIEs not already in process.  */
10588     gdb_assert (!m_die->in_process);
10589     m_die->in_process = true;
10590   }
10591
10592   ~process_die_scope ()
10593   {
10594     m_die->in_process = false;
10595
10596     /* If we're done processing the DIE for the CU that owns the line
10597        header, we don't need the line header anymore.  */
10598     if (m_cu->line_header_die_owner == m_die)
10599       {
10600         delete m_cu->line_header;
10601         m_cu->line_header = NULL;
10602         m_cu->line_header_die_owner = NULL;
10603       }
10604   }
10605
10606 private:
10607   die_info *m_die;
10608   dwarf2_cu *m_cu;
10609 };
10610
10611 /* Process a die and its children.  */
10612
10613 static void
10614 process_die (struct die_info *die, struct dwarf2_cu *cu)
10615 {
10616   process_die_scope scope (die, cu);
10617
10618   switch (die->tag)
10619     {
10620     case DW_TAG_padding:
10621       break;
10622     case DW_TAG_compile_unit:
10623     case DW_TAG_partial_unit:
10624       read_file_scope (die, cu);
10625       break;
10626     case DW_TAG_type_unit:
10627       read_type_unit_scope (die, cu);
10628       break;
10629     case DW_TAG_subprogram:
10630     case DW_TAG_inlined_subroutine:
10631       read_func_scope (die, cu);
10632       break;
10633     case DW_TAG_lexical_block:
10634     case DW_TAG_try_block:
10635     case DW_TAG_catch_block:
10636       read_lexical_block_scope (die, cu);
10637       break;
10638     case DW_TAG_call_site:
10639     case DW_TAG_GNU_call_site:
10640       read_call_site_scope (die, cu);
10641       break;
10642     case DW_TAG_class_type:
10643     case DW_TAG_interface_type:
10644     case DW_TAG_structure_type:
10645     case DW_TAG_union_type:
10646       process_structure_scope (die, cu);
10647       break;
10648     case DW_TAG_enumeration_type:
10649       process_enumeration_scope (die, cu);
10650       break;
10651
10652     /* These dies have a type, but processing them does not create
10653        a symbol or recurse to process the children.  Therefore we can
10654        read them on-demand through read_type_die.  */
10655     case DW_TAG_subroutine_type:
10656     case DW_TAG_set_type:
10657     case DW_TAG_array_type:
10658     case DW_TAG_pointer_type:
10659     case DW_TAG_ptr_to_member_type:
10660     case DW_TAG_reference_type:
10661     case DW_TAG_rvalue_reference_type:
10662     case DW_TAG_string_type:
10663       break;
10664
10665     case DW_TAG_base_type:
10666     case DW_TAG_subrange_type:
10667     case DW_TAG_typedef:
10668       /* Add a typedef symbol for the type definition, if it has a
10669          DW_AT_name.  */
10670       new_symbol (die, read_type_die (die, cu), cu);
10671       break;
10672     case DW_TAG_common_block:
10673       read_common_block (die, cu);
10674       break;
10675     case DW_TAG_common_inclusion:
10676       break;
10677     case DW_TAG_namespace:
10678       cu->processing_has_namespace_info = 1;
10679       read_namespace (die, cu);
10680       break;
10681     case DW_TAG_module:
10682       cu->processing_has_namespace_info = 1;
10683       read_module (die, cu);
10684       break;
10685     case DW_TAG_imported_declaration:
10686       cu->processing_has_namespace_info = 1;
10687       if (read_namespace_alias (die, cu))
10688         break;
10689       /* The declaration is not a global namespace alias: fall through.  */
10690     case DW_TAG_imported_module:
10691       cu->processing_has_namespace_info = 1;
10692       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10693                                  || cu->language != language_fortran))
10694         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
10695                    dwarf_tag_name (die->tag));
10696       read_import_statement (die, cu);
10697       break;
10698
10699     case DW_TAG_imported_unit:
10700       process_imported_unit_die (die, cu);
10701       break;
10702
10703     case DW_TAG_variable:
10704       read_variable (die, cu);
10705       break;
10706
10707     default:
10708       new_symbol (die, NULL, cu);
10709       break;
10710     }
10711 }
10712 \f
10713 /* DWARF name computation.  */
10714
10715 /* A helper function for dwarf2_compute_name which determines whether DIE
10716    needs to have the name of the scope prepended to the name listed in the
10717    die.  */
10718
10719 static int
10720 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10721 {
10722   struct attribute *attr;
10723
10724   switch (die->tag)
10725     {
10726     case DW_TAG_namespace:
10727     case DW_TAG_typedef:
10728     case DW_TAG_class_type:
10729     case DW_TAG_interface_type:
10730     case DW_TAG_structure_type:
10731     case DW_TAG_union_type:
10732     case DW_TAG_enumeration_type:
10733     case DW_TAG_enumerator:
10734     case DW_TAG_subprogram:
10735     case DW_TAG_inlined_subroutine:
10736     case DW_TAG_member:
10737     case DW_TAG_imported_declaration:
10738       return 1;
10739
10740     case DW_TAG_variable:
10741     case DW_TAG_constant:
10742       /* We only need to prefix "globally" visible variables.  These include
10743          any variable marked with DW_AT_external or any variable that
10744          lives in a namespace.  [Variables in anonymous namespaces
10745          require prefixing, but they are not DW_AT_external.]  */
10746
10747       if (dwarf2_attr (die, DW_AT_specification, cu))
10748         {
10749           struct dwarf2_cu *spec_cu = cu;
10750
10751           return die_needs_namespace (die_specification (die, &spec_cu),
10752                                       spec_cu);
10753         }
10754
10755       attr = dwarf2_attr (die, DW_AT_external, cu);
10756       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10757           && die->parent->tag != DW_TAG_module)
10758         return 0;
10759       /* A variable in a lexical block of some kind does not need a
10760          namespace, even though in C++ such variables may be external
10761          and have a mangled name.  */
10762       if (die->parent->tag ==  DW_TAG_lexical_block
10763           || die->parent->tag ==  DW_TAG_try_block
10764           || die->parent->tag ==  DW_TAG_catch_block
10765           || die->parent->tag == DW_TAG_subprogram)
10766         return 0;
10767       return 1;
10768
10769     default:
10770       return 0;
10771     }
10772 }
10773
10774 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10775    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10776    defined for the given DIE.  */
10777
10778 static struct attribute *
10779 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10780 {
10781   struct attribute *attr;
10782
10783   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10784   if (attr == NULL)
10785     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10786
10787   return attr;
10788 }
10789
10790 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10791    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10792    defined for the given DIE.  */
10793
10794 static const char *
10795 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10796 {
10797   const char *linkage_name;
10798
10799   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10800   if (linkage_name == NULL)
10801     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10802
10803   return linkage_name;
10804 }
10805
10806 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10807    compute the physname for the object, which include a method's:
10808    - formal parameters (C++),
10809    - receiver type (Go),
10810
10811    The term "physname" is a bit confusing.
10812    For C++, for example, it is the demangled name.
10813    For Go, for example, it's the mangled name.
10814
10815    For Ada, return the DIE's linkage name rather than the fully qualified
10816    name.  PHYSNAME is ignored..
10817
10818    The result is allocated on the objfile_obstack and canonicalized.  */
10819
10820 static const char *
10821 dwarf2_compute_name (const char *name,
10822                      struct die_info *die, struct dwarf2_cu *cu,
10823                      int physname)
10824 {
10825   struct objfile *objfile = cu->objfile;
10826
10827   if (name == NULL)
10828     name = dwarf2_name (die, cu);
10829
10830   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10831      but otherwise compute it by typename_concat inside GDB.
10832      FIXME: Actually this is not really true, or at least not always true.
10833      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10834      Fortran names because there is no mangling standard.  So new_symbol_full
10835      will set the demangled name to the result of dwarf2_full_name, and it is
10836      the demangled name that GDB uses if it exists.  */
10837   if (cu->language == language_ada
10838       || (cu->language == language_fortran && physname))
10839     {
10840       /* For Ada unit, we prefer the linkage name over the name, as
10841          the former contains the exported name, which the user expects
10842          to be able to reference.  Ideally, we want the user to be able
10843          to reference this entity using either natural or linkage name,
10844          but we haven't started looking at this enhancement yet.  */
10845       const char *linkage_name = dw2_linkage_name (die, cu);
10846
10847       if (linkage_name != NULL)
10848         return linkage_name;
10849     }
10850
10851   /* These are the only languages we know how to qualify names in.  */
10852   if (name != NULL
10853       && (cu->language == language_cplus
10854           || cu->language == language_fortran || cu->language == language_d
10855           || cu->language == language_rust))
10856     {
10857       if (die_needs_namespace (die, cu))
10858         {
10859           const char *prefix;
10860           const char *canonical_name = NULL;
10861
10862           string_file buf;
10863
10864           prefix = determine_prefix (die, cu);
10865           if (*prefix != '\0')
10866             {
10867               char *prefixed_name = typename_concat (NULL, prefix, name,
10868                                                      physname, cu);
10869
10870               buf.puts (prefixed_name);
10871               xfree (prefixed_name);
10872             }
10873           else
10874             buf.puts (name);
10875
10876           /* Template parameters may be specified in the DIE's DW_AT_name, or
10877              as children with DW_TAG_template_type_param or
10878              DW_TAG_value_type_param.  If the latter, add them to the name
10879              here.  If the name already has template parameters, then
10880              skip this step; some versions of GCC emit both, and
10881              it is more efficient to use the pre-computed name.
10882
10883              Something to keep in mind about this process: it is very
10884              unlikely, or in some cases downright impossible, to produce
10885              something that will match the mangled name of a function.
10886              If the definition of the function has the same debug info,
10887              we should be able to match up with it anyway.  But fallbacks
10888              using the minimal symbol, for instance to find a method
10889              implemented in a stripped copy of libstdc++, will not work.
10890              If we do not have debug info for the definition, we will have to
10891              match them up some other way.
10892
10893              When we do name matching there is a related problem with function
10894              templates; two instantiated function templates are allowed to
10895              differ only by their return types, which we do not add here.  */
10896
10897           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10898             {
10899               struct attribute *attr;
10900               struct die_info *child;
10901               int first = 1;
10902
10903               die->building_fullname = 1;
10904
10905               for (child = die->child; child != NULL; child = child->sibling)
10906                 {
10907                   struct type *type;
10908                   LONGEST value;
10909                   const gdb_byte *bytes;
10910                   struct dwarf2_locexpr_baton *baton;
10911                   struct value *v;
10912
10913                   if (child->tag != DW_TAG_template_type_param
10914                       && child->tag != DW_TAG_template_value_param)
10915                     continue;
10916
10917                   if (first)
10918                     {
10919                       buf.puts ("<");
10920                       first = 0;
10921                     }
10922                   else
10923                     buf.puts (", ");
10924
10925                   attr = dwarf2_attr (child, DW_AT_type, cu);
10926                   if (attr == NULL)
10927                     {
10928                       complaint (&symfile_complaints,
10929                                  _("template parameter missing DW_AT_type"));
10930                       buf.puts ("UNKNOWN_TYPE");
10931                       continue;
10932                     }
10933                   type = die_type (child, cu);
10934
10935                   if (child->tag == DW_TAG_template_type_param)
10936                     {
10937                       c_print_type (type, "", &buf, -1, 0, &type_print_raw_options);
10938                       continue;
10939                     }
10940
10941                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10942                   if (attr == NULL)
10943                     {
10944                       complaint (&symfile_complaints,
10945                                  _("template parameter missing "
10946                                    "DW_AT_const_value"));
10947                       buf.puts ("UNKNOWN_VALUE");
10948                       continue;
10949                     }
10950
10951                   dwarf2_const_value_attr (attr, type, name,
10952                                            &cu->comp_unit_obstack, cu,
10953                                            &value, &bytes, &baton);
10954
10955                   if (TYPE_NOSIGN (type))
10956                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10957                        changed, this can use value_print instead.  */
10958                     c_printchar (value, type, &buf);
10959                   else
10960                     {
10961                       struct value_print_options opts;
10962
10963                       if (baton != NULL)
10964                         v = dwarf2_evaluate_loc_desc (type, NULL,
10965                                                       baton->data,
10966                                                       baton->size,
10967                                                       baton->per_cu);
10968                       else if (bytes != NULL)
10969                         {
10970                           v = allocate_value (type);
10971                           memcpy (value_contents_writeable (v), bytes,
10972                                   TYPE_LENGTH (type));
10973                         }
10974                       else
10975                         v = value_from_longest (type, value);
10976
10977                       /* Specify decimal so that we do not depend on
10978                          the radix.  */
10979                       get_formatted_print_options (&opts, 'd');
10980                       opts.raw = 1;
10981                       value_print (v, &buf, &opts);
10982                       release_value (v);
10983                       value_free (v);
10984                     }
10985                 }
10986
10987               die->building_fullname = 0;
10988
10989               if (!first)
10990                 {
10991                   /* Close the argument list, with a space if necessary
10992                      (nested templates).  */
10993                   if (!buf.empty () && buf.string ().back () == '>')
10994                     buf.puts (" >");
10995                   else
10996                     buf.puts (">");
10997                 }
10998             }
10999
11000           /* For C++ methods, append formal parameter type
11001              information, if PHYSNAME.  */
11002
11003           if (physname && die->tag == DW_TAG_subprogram
11004               && cu->language == language_cplus)
11005             {
11006               struct type *type = read_type_die (die, cu);
11007
11008               c_type_print_args (type, &buf, 1, cu->language,
11009                                  &type_print_raw_options);
11010
11011               if (cu->language == language_cplus)
11012                 {
11013                   /* Assume that an artificial first parameter is
11014                      "this", but do not crash if it is not.  RealView
11015                      marks unnamed (and thus unused) parameters as
11016                      artificial; there is no way to differentiate
11017                      the two cases.  */
11018                   if (TYPE_NFIELDS (type) > 0
11019                       && TYPE_FIELD_ARTIFICIAL (type, 0)
11020                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
11021                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
11022                                                                         0))))
11023                     buf.puts (" const");
11024                 }
11025             }
11026
11027           const std::string &intermediate_name = buf.string ();
11028
11029           if (cu->language == language_cplus)
11030             canonical_name
11031               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11032                                           &objfile->per_bfd->storage_obstack);
11033
11034           /* If we only computed INTERMEDIATE_NAME, or if
11035              INTERMEDIATE_NAME is already canonical, then we need to
11036              copy it to the appropriate obstack.  */
11037           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11038             name = ((const char *)
11039                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11040                                    intermediate_name.c_str (),
11041                                    intermediate_name.length ()));
11042           else
11043             name = canonical_name;
11044         }
11045     }
11046
11047   return name;
11048 }
11049
11050 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11051    If scope qualifiers are appropriate they will be added.  The result
11052    will be allocated on the storage_obstack, or NULL if the DIE does
11053    not have a name.  NAME may either be from a previous call to
11054    dwarf2_name or NULL.
11055
11056    The output string will be canonicalized (if C++).  */
11057
11058 static const char *
11059 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11060 {
11061   return dwarf2_compute_name (name, die, cu, 0);
11062 }
11063
11064 /* Construct a physname for the given DIE in CU.  NAME may either be
11065    from a previous call to dwarf2_name or NULL.  The result will be
11066    allocated on the objfile_objstack or NULL if the DIE does not have a
11067    name.
11068
11069    The output string will be canonicalized (if C++).  */
11070
11071 static const char *
11072 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11073 {
11074   struct objfile *objfile = cu->objfile;
11075   const char *retval, *mangled = NULL, *canon = NULL;
11076   int need_copy = 1;
11077
11078   /* In this case dwarf2_compute_name is just a shortcut not building anything
11079      on its own.  */
11080   if (!die_needs_namespace (die, cu))
11081     return dwarf2_compute_name (name, die, cu, 1);
11082
11083   mangled = dw2_linkage_name (die, cu);
11084
11085   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11086      See https://github.com/rust-lang/rust/issues/32925.  */
11087   if (cu->language == language_rust && mangled != NULL
11088       && strchr (mangled, '{') != NULL)
11089     mangled = NULL;
11090
11091   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11092      has computed.  */
11093   gdb::unique_xmalloc_ptr<char> demangled;
11094   if (mangled != NULL)
11095     {
11096       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
11097          type.  It is easier for GDB users to search for such functions as
11098          `name(params)' than `long name(params)'.  In such case the minimal
11099          symbol names do not match the full symbol names but for template
11100          functions there is never a need to look up their definition from their
11101          declaration so the only disadvantage remains the minimal symbol
11102          variant `long name(params)' does not have the proper inferior type.
11103          */
11104
11105       if (cu->language == language_go)
11106         {
11107           /* This is a lie, but we already lie to the caller new_symbol_full.
11108              new_symbol_full assumes we return the mangled name.
11109              This just undoes that lie until things are cleaned up.  */
11110         }
11111       else
11112         {
11113           demangled.reset (gdb_demangle (mangled,
11114                                          (DMGL_PARAMS | DMGL_ANSI
11115                                           | DMGL_RET_DROP)));
11116         }
11117       if (demangled)
11118         canon = demangled.get ();
11119       else
11120         {
11121           canon = mangled;
11122           need_copy = 0;
11123         }
11124     }
11125
11126   if (canon == NULL || check_physname)
11127     {
11128       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11129
11130       if (canon != NULL && strcmp (physname, canon) != 0)
11131         {
11132           /* It may not mean a bug in GDB.  The compiler could also
11133              compute DW_AT_linkage_name incorrectly.  But in such case
11134              GDB would need to be bug-to-bug compatible.  */
11135
11136           complaint (&symfile_complaints,
11137                      _("Computed physname <%s> does not match demangled <%s> "
11138                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
11139                      physname, canon, mangled, to_underlying (die->sect_off),
11140                      objfile_name (objfile));
11141
11142           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11143              is available here - over computed PHYSNAME.  It is safer
11144              against both buggy GDB and buggy compilers.  */
11145
11146           retval = canon;
11147         }
11148       else
11149         {
11150           retval = physname;
11151           need_copy = 0;
11152         }
11153     }
11154   else
11155     retval = canon;
11156
11157   if (need_copy)
11158     retval = ((const char *)
11159               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11160                              retval, strlen (retval)));
11161
11162   return retval;
11163 }
11164
11165 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11166    a new symbol for it.
11167
11168    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11169
11170 static int
11171 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11172 {
11173   struct attribute *attr;
11174
11175   /* If the die does not have a name, this is not a namespace
11176      alias.  */
11177   attr = dwarf2_attr (die, DW_AT_name, cu);
11178   if (attr != NULL)
11179     {
11180       int num;
11181       struct die_info *d = die;
11182       struct dwarf2_cu *imported_cu = cu;
11183
11184       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11185          keep inspecting DIEs until we hit the underlying import.  */
11186 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11187       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11188         {
11189           attr = dwarf2_attr (d, DW_AT_import, cu);
11190           if (attr == NULL)
11191             break;
11192
11193           d = follow_die_ref (d, attr, &imported_cu);
11194           if (d->tag != DW_TAG_imported_declaration)
11195             break;
11196         }
11197
11198       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11199         {
11200           complaint (&symfile_complaints,
11201                      _("DIE at 0x%x has too many recursively imported "
11202                        "declarations"), to_underlying (d->sect_off));
11203           return 0;
11204         }
11205
11206       if (attr != NULL)
11207         {
11208           struct type *type;
11209           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11210
11211           type = get_die_type_at_offset (sect_off, cu->per_cu);
11212           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11213             {
11214               /* This declaration is a global namespace alias.  Add
11215                  a symbol for it whose type is the aliased namespace.  */
11216               new_symbol (die, type, cu);
11217               return 1;
11218             }
11219         }
11220     }
11221
11222   return 0;
11223 }
11224
11225 /* Return the using directives repository (global or local?) to use in the
11226    current context for LANGUAGE.
11227
11228    For Ada, imported declarations can materialize renamings, which *may* be
11229    global.  However it is impossible (for now?) in DWARF to distinguish
11230    "external" imported declarations and "static" ones.  As all imported
11231    declarations seem to be static in all other languages, make them all CU-wide
11232    global only in Ada.  */
11233
11234 static struct using_direct **
11235 using_directives (enum language language)
11236 {
11237   if (language == language_ada && context_stack_depth == 0)
11238     return &global_using_directives;
11239   else
11240     return &local_using_directives;
11241 }
11242
11243 /* Read the import statement specified by the given die and record it.  */
11244
11245 static void
11246 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11247 {
11248   struct objfile *objfile = cu->objfile;
11249   struct attribute *import_attr;
11250   struct die_info *imported_die, *child_die;
11251   struct dwarf2_cu *imported_cu;
11252   const char *imported_name;
11253   const char *imported_name_prefix;
11254   const char *canonical_name;
11255   const char *import_alias;
11256   const char *imported_declaration = NULL;
11257   const char *import_prefix;
11258   std::vector<const char *> excludes;
11259
11260   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11261   if (import_attr == NULL)
11262     {
11263       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11264                  dwarf_tag_name (die->tag));
11265       return;
11266     }
11267
11268   imported_cu = cu;
11269   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11270   imported_name = dwarf2_name (imported_die, imported_cu);
11271   if (imported_name == NULL)
11272     {
11273       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11274
11275         The import in the following code:
11276         namespace A
11277           {
11278             typedef int B;
11279           }
11280
11281         int main ()
11282           {
11283             using A::B;
11284             B b;
11285             return b;
11286           }
11287
11288         ...
11289          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11290             <52>   DW_AT_decl_file   : 1
11291             <53>   DW_AT_decl_line   : 6
11292             <54>   DW_AT_import      : <0x75>
11293          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11294             <59>   DW_AT_name        : B
11295             <5b>   DW_AT_decl_file   : 1
11296             <5c>   DW_AT_decl_line   : 2
11297             <5d>   DW_AT_type        : <0x6e>
11298         ...
11299          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11300             <76>   DW_AT_byte_size   : 4
11301             <77>   DW_AT_encoding    : 5        (signed)
11302
11303         imports the wrong die ( 0x75 instead of 0x58 ).
11304         This case will be ignored until the gcc bug is fixed.  */
11305       return;
11306     }
11307
11308   /* Figure out the local name after import.  */
11309   import_alias = dwarf2_name (die, cu);
11310
11311   /* Figure out where the statement is being imported to.  */
11312   import_prefix = determine_prefix (die, cu);
11313
11314   /* Figure out what the scope of the imported die is and prepend it
11315      to the name of the imported die.  */
11316   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11317
11318   if (imported_die->tag != DW_TAG_namespace
11319       && imported_die->tag != DW_TAG_module)
11320     {
11321       imported_declaration = imported_name;
11322       canonical_name = imported_name_prefix;
11323     }
11324   else if (strlen (imported_name_prefix) > 0)
11325     canonical_name = obconcat (&objfile->objfile_obstack,
11326                                imported_name_prefix,
11327                                (cu->language == language_d ? "." : "::"),
11328                                imported_name, (char *) NULL);
11329   else
11330     canonical_name = imported_name;
11331
11332   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11333     for (child_die = die->child; child_die && child_die->tag;
11334          child_die = sibling_die (child_die))
11335       {
11336         /* DWARF-4: A Fortran use statement with a “rename list” may be
11337            represented by an imported module entry with an import attribute
11338            referring to the module and owned entries corresponding to those
11339            entities that are renamed as part of being imported.  */
11340
11341         if (child_die->tag != DW_TAG_imported_declaration)
11342           {
11343             complaint (&symfile_complaints,
11344                        _("child DW_TAG_imported_declaration expected "
11345                          "- DIE at 0x%x [in module %s]"),
11346                        to_underlying (child_die->sect_off), objfile_name (objfile));
11347             continue;
11348           }
11349
11350         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11351         if (import_attr == NULL)
11352           {
11353             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11354                        dwarf_tag_name (child_die->tag));
11355             continue;
11356           }
11357
11358         imported_cu = cu;
11359         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11360                                               &imported_cu);
11361         imported_name = dwarf2_name (imported_die, imported_cu);
11362         if (imported_name == NULL)
11363           {
11364             complaint (&symfile_complaints,
11365                        _("child DW_TAG_imported_declaration has unknown "
11366                          "imported name - DIE at 0x%x [in module %s]"),
11367                        to_underlying (child_die->sect_off), objfile_name (objfile));
11368             continue;
11369           }
11370
11371         excludes.push_back (imported_name);
11372
11373         process_die (child_die, cu);
11374       }
11375
11376   add_using_directive (using_directives (cu->language),
11377                        import_prefix,
11378                        canonical_name,
11379                        import_alias,
11380                        imported_declaration,
11381                        excludes,
11382                        0,
11383                        &objfile->objfile_obstack);
11384 }
11385
11386 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11387    types, but gives them a size of zero.  Starting with version 14,
11388    ICC is compatible with GCC.  */
11389
11390 static int
11391 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11392 {
11393   if (!cu->checked_producer)
11394     check_producer (cu);
11395
11396   return cu->producer_is_icc_lt_14;
11397 }
11398
11399 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11400    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11401    this, it was first present in GCC release 4.3.0.  */
11402
11403 static int
11404 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11405 {
11406   if (!cu->checked_producer)
11407     check_producer (cu);
11408
11409   return cu->producer_is_gcc_lt_4_3;
11410 }
11411
11412 static file_and_directory
11413 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11414 {
11415   file_and_directory res;
11416
11417   /* Find the filename.  Do not use dwarf2_name here, since the filename
11418      is not a source language identifier.  */
11419   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11420   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11421
11422   if (res.comp_dir == NULL
11423       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11424       && IS_ABSOLUTE_PATH (res.name))
11425     {
11426       res.comp_dir_storage = ldirname (res.name);
11427       if (!res.comp_dir_storage.empty ())
11428         res.comp_dir = res.comp_dir_storage.c_str ();
11429     }
11430   if (res.comp_dir != NULL)
11431     {
11432       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11433          directory, get rid of it.  */
11434       const char *cp = strchr (res.comp_dir, ':');
11435
11436       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11437         res.comp_dir = cp + 1;
11438     }
11439
11440   if (res.name == NULL)
11441     res.name = "<unknown>";
11442
11443   return res;
11444 }
11445
11446 /* Handle DW_AT_stmt_list for a compilation unit.
11447    DIE is the DW_TAG_compile_unit die for CU.
11448    COMP_DIR is the compilation directory.  LOWPC is passed to
11449    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11450
11451 static void
11452 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11453                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11454 {
11455   struct objfile *objfile = dwarf2_per_objfile->objfile;
11456   struct attribute *attr;
11457   struct line_header line_header_local;
11458   hashval_t line_header_local_hash;
11459   void **slot;
11460   int decode_mapping;
11461
11462   gdb_assert (! cu->per_cu->is_debug_types);
11463
11464   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11465   if (attr == NULL)
11466     return;
11467
11468   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11469
11470   /* The line header hash table is only created if needed (it exists to
11471      prevent redundant reading of the line table for partial_units).
11472      If we're given a partial_unit, we'll need it.  If we're given a
11473      compile_unit, then use the line header hash table if it's already
11474      created, but don't create one just yet.  */
11475
11476   if (dwarf2_per_objfile->line_header_hash == NULL
11477       && die->tag == DW_TAG_partial_unit)
11478     {
11479       dwarf2_per_objfile->line_header_hash
11480         = htab_create_alloc_ex (127, line_header_hash_voidp,
11481                                 line_header_eq_voidp,
11482                                 free_line_header_voidp,
11483                                 &objfile->objfile_obstack,
11484                                 hashtab_obstack_allocate,
11485                                 dummy_obstack_deallocate);
11486     }
11487
11488   line_header_local.sect_off = line_offset;
11489   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11490   line_header_local_hash = line_header_hash (&line_header_local);
11491   if (dwarf2_per_objfile->line_header_hash != NULL)
11492     {
11493       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11494                                        &line_header_local,
11495                                        line_header_local_hash, NO_INSERT);
11496
11497       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11498          is not present in *SLOT (since if there is something in *SLOT then
11499          it will be for a partial_unit).  */
11500       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11501         {
11502           gdb_assert (*slot != NULL);
11503           cu->line_header = (struct line_header *) *slot;
11504           return;
11505         }
11506     }
11507
11508   /* dwarf_decode_line_header does not yet provide sufficient information.
11509      We always have to call also dwarf_decode_lines for it.  */
11510   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11511   if (lh == NULL)
11512     return;
11513
11514   cu->line_header = lh.release ();
11515   cu->line_header_die_owner = die;
11516
11517   if (dwarf2_per_objfile->line_header_hash == NULL)
11518     slot = NULL;
11519   else
11520     {
11521       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11522                                        &line_header_local,
11523                                        line_header_local_hash, INSERT);
11524       gdb_assert (slot != NULL);
11525     }
11526   if (slot != NULL && *slot == NULL)
11527     {
11528       /* This newly decoded line number information unit will be owned
11529          by line_header_hash hash table.  */
11530       *slot = cu->line_header;
11531       cu->line_header_die_owner = NULL;
11532     }
11533   else
11534     {
11535       /* We cannot free any current entry in (*slot) as that struct line_header
11536          may be already used by multiple CUs.  Create only temporary decoded
11537          line_header for this CU - it may happen at most once for each line
11538          number information unit.  And if we're not using line_header_hash
11539          then this is what we want as well.  */
11540       gdb_assert (die->tag != DW_TAG_partial_unit);
11541     }
11542   decode_mapping = (die->tag != DW_TAG_partial_unit);
11543   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11544                       decode_mapping);
11545
11546 }
11547
11548 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11549
11550 static void
11551 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11552 {
11553   struct objfile *objfile = dwarf2_per_objfile->objfile;
11554   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11555   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11556   CORE_ADDR highpc = ((CORE_ADDR) 0);
11557   struct attribute *attr;
11558   struct die_info *child_die;
11559   CORE_ADDR baseaddr;
11560
11561   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11562
11563   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11564
11565   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11566      from finish_block.  */
11567   if (lowpc == ((CORE_ADDR) -1))
11568     lowpc = highpc;
11569   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11570
11571   file_and_directory fnd = find_file_and_directory (die, cu);
11572
11573   prepare_one_comp_unit (cu, die, cu->language);
11574
11575   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11576      standardised yet.  As a workaround for the language detection we fall
11577      back to the DW_AT_producer string.  */
11578   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11579     cu->language = language_opencl;
11580
11581   /* Similar hack for Go.  */
11582   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11583     set_cu_language (DW_LANG_Go, cu);
11584
11585   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11586
11587   /* Decode line number information if present.  We do this before
11588      processing child DIEs, so that the line header table is available
11589      for DW_AT_decl_file.  */
11590   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11591
11592   /* Process all dies in compilation unit.  */
11593   if (die->child != NULL)
11594     {
11595       child_die = die->child;
11596       while (child_die && child_die->tag)
11597         {
11598           process_die (child_die, cu);
11599           child_die = sibling_die (child_die);
11600         }
11601     }
11602
11603   /* Decode macro information, if present.  Dwarf 2 macro information
11604      refers to information in the line number info statement program
11605      header, so we can only read it if we've read the header
11606      successfully.  */
11607   attr = dwarf2_attr (die, DW_AT_macros, cu);
11608   if (attr == NULL)
11609     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11610   if (attr && cu->line_header)
11611     {
11612       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11613         complaint (&symfile_complaints,
11614                    _("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11615
11616       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11617     }
11618   else
11619     {
11620       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11621       if (attr && cu->line_header)
11622         {
11623           unsigned int macro_offset = DW_UNSND (attr);
11624
11625           dwarf_decode_macros (cu, macro_offset, 0);
11626         }
11627     }
11628 }
11629
11630 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11631    Create the set of symtabs used by this TU, or if this TU is sharing
11632    symtabs with another TU and the symtabs have already been created
11633    then restore those symtabs in the line header.
11634    We don't need the pc/line-number mapping for type units.  */
11635
11636 static void
11637 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11638 {
11639   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11640   struct type_unit_group *tu_group;
11641   int first_time;
11642   struct attribute *attr;
11643   unsigned int i;
11644   struct signatured_type *sig_type;
11645
11646   gdb_assert (per_cu->is_debug_types);
11647   sig_type = (struct signatured_type *) per_cu;
11648
11649   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11650
11651   /* If we're using .gdb_index (includes -readnow) then
11652      per_cu->type_unit_group may not have been set up yet.  */
11653   if (sig_type->type_unit_group == NULL)
11654     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11655   tu_group = sig_type->type_unit_group;
11656
11657   /* If we've already processed this stmt_list there's no real need to
11658      do it again, we could fake it and just recreate the part we need
11659      (file name,index -> symtab mapping).  If data shows this optimization
11660      is useful we can do it then.  */
11661   first_time = tu_group->compunit_symtab == NULL;
11662
11663   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11664      debug info.  */
11665   line_header_up lh;
11666   if (attr != NULL)
11667     {
11668       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11669       lh = dwarf_decode_line_header (line_offset, cu);
11670     }
11671   if (lh == NULL)
11672     {
11673       if (first_time)
11674         dwarf2_start_symtab (cu, "", NULL, 0);
11675       else
11676         {
11677           gdb_assert (tu_group->symtabs == NULL);
11678           restart_symtab (tu_group->compunit_symtab, "", 0);
11679         }
11680       return;
11681     }
11682
11683   cu->line_header = lh.release ();
11684   cu->line_header_die_owner = die;
11685
11686   if (first_time)
11687     {
11688       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11689
11690       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11691          still initializing it, and our caller (a few levels up)
11692          process_full_type_unit still needs to know if this is the first
11693          time.  */
11694
11695       tu_group->num_symtabs = cu->line_header->file_names.size ();
11696       tu_group->symtabs = XNEWVEC (struct symtab *,
11697                                    cu->line_header->file_names.size ());
11698
11699       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11700         {
11701           file_entry &fe = cu->line_header->file_names[i];
11702
11703           dwarf2_start_subfile (fe.name, fe.include_dir (cu->line_header));
11704
11705           if (current_subfile->symtab == NULL)
11706             {
11707               /* NOTE: start_subfile will recognize when it's been
11708                  passed a file it has already seen.  So we can't
11709                  assume there's a simple mapping from
11710                  cu->line_header->file_names to subfiles, plus
11711                  cu->line_header->file_names may contain dups.  */
11712               current_subfile->symtab
11713                 = allocate_symtab (cust, current_subfile->name);
11714             }
11715
11716           fe.symtab = current_subfile->symtab;
11717           tu_group->symtabs[i] = fe.symtab;
11718         }
11719     }
11720   else
11721     {
11722       restart_symtab (tu_group->compunit_symtab, "", 0);
11723
11724       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11725         {
11726           file_entry &fe = cu->line_header->file_names[i];
11727
11728           fe.symtab = tu_group->symtabs[i];
11729         }
11730     }
11731
11732   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11733      so they don't have a "real" (so to speak) symtab anyway.
11734      There is later code that will assign the main symtab to all symbols
11735      that don't have one.  We need to handle the case of a symbol with a
11736      missing symtab (DW_AT_decl_file) anyway.  */
11737 }
11738
11739 /* Process DW_TAG_type_unit.
11740    For TUs we want to skip the first top level sibling if it's not the
11741    actual type being defined by this TU.  In this case the first top
11742    level sibling is there to provide context only.  */
11743
11744 static void
11745 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11746 {
11747   struct die_info *child_die;
11748
11749   prepare_one_comp_unit (cu, die, language_minimal);
11750
11751   /* Initialize (or reinitialize) the machinery for building symtabs.
11752      We do this before processing child DIEs, so that the line header table
11753      is available for DW_AT_decl_file.  */
11754   setup_type_unit_groups (die, cu);
11755
11756   if (die->child != NULL)
11757     {
11758       child_die = die->child;
11759       while (child_die && child_die->tag)
11760         {
11761           process_die (child_die, cu);
11762           child_die = sibling_die (child_die);
11763         }
11764     }
11765 }
11766 \f
11767 /* DWO/DWP files.
11768
11769    http://gcc.gnu.org/wiki/DebugFission
11770    http://gcc.gnu.org/wiki/DebugFissionDWP
11771
11772    To simplify handling of both DWO files ("object" files with the DWARF info)
11773    and DWP files (a file with the DWOs packaged up into one file), we treat
11774    DWP files as having a collection of virtual DWO files.  */
11775
11776 static hashval_t
11777 hash_dwo_file (const void *item)
11778 {
11779   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11780   hashval_t hash;
11781
11782   hash = htab_hash_string (dwo_file->dwo_name);
11783   if (dwo_file->comp_dir != NULL)
11784     hash += htab_hash_string (dwo_file->comp_dir);
11785   return hash;
11786 }
11787
11788 static int
11789 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11790 {
11791   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11792   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11793
11794   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11795     return 0;
11796   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11797     return lhs->comp_dir == rhs->comp_dir;
11798   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11799 }
11800
11801 /* Allocate a hash table for DWO files.  */
11802
11803 static htab_t
11804 allocate_dwo_file_hash_table (void)
11805 {
11806   struct objfile *objfile = dwarf2_per_objfile->objfile;
11807
11808   return htab_create_alloc_ex (41,
11809                                hash_dwo_file,
11810                                eq_dwo_file,
11811                                NULL,
11812                                &objfile->objfile_obstack,
11813                                hashtab_obstack_allocate,
11814                                dummy_obstack_deallocate);
11815 }
11816
11817 /* Lookup DWO file DWO_NAME.  */
11818
11819 static void **
11820 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
11821 {
11822   struct dwo_file find_entry;
11823   void **slot;
11824
11825   if (dwarf2_per_objfile->dwo_files == NULL)
11826     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
11827
11828   memset (&find_entry, 0, sizeof (find_entry));
11829   find_entry.dwo_name = dwo_name;
11830   find_entry.comp_dir = comp_dir;
11831   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11832
11833   return slot;
11834 }
11835
11836 static hashval_t
11837 hash_dwo_unit (const void *item)
11838 {
11839   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11840
11841   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11842   return dwo_unit->signature;
11843 }
11844
11845 static int
11846 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11847 {
11848   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11849   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11850
11851   /* The signature is assumed to be unique within the DWO file.
11852      So while object file CU dwo_id's always have the value zero,
11853      that's OK, assuming each object file DWO file has only one CU,
11854      and that's the rule for now.  */
11855   return lhs->signature == rhs->signature;
11856 }
11857
11858 /* Allocate a hash table for DWO CUs,TUs.
11859    There is one of these tables for each of CUs,TUs for each DWO file.  */
11860
11861 static htab_t
11862 allocate_dwo_unit_table (struct objfile *objfile)
11863 {
11864   /* Start out with a pretty small number.
11865      Generally DWO files contain only one CU and maybe some TUs.  */
11866   return htab_create_alloc_ex (3,
11867                                hash_dwo_unit,
11868                                eq_dwo_unit,
11869                                NULL,
11870                                &objfile->objfile_obstack,
11871                                hashtab_obstack_allocate,
11872                                dummy_obstack_deallocate);
11873 }
11874
11875 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11876
11877 struct create_dwo_cu_data
11878 {
11879   struct dwo_file *dwo_file;
11880   struct dwo_unit dwo_unit;
11881 };
11882
11883 /* die_reader_func for create_dwo_cu.  */
11884
11885 static void
11886 create_dwo_cu_reader (const struct die_reader_specs *reader,
11887                       const gdb_byte *info_ptr,
11888                       struct die_info *comp_unit_die,
11889                       int has_children,
11890                       void *datap)
11891 {
11892   struct dwarf2_cu *cu = reader->cu;
11893   sect_offset sect_off = cu->per_cu->sect_off;
11894   struct dwarf2_section_info *section = cu->per_cu->section;
11895   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11896   struct dwo_file *dwo_file = data->dwo_file;
11897   struct dwo_unit *dwo_unit = &data->dwo_unit;
11898   struct attribute *attr;
11899
11900   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11901   if (attr == NULL)
11902     {
11903       complaint (&symfile_complaints,
11904                  _("Dwarf Error: debug entry at offset 0x%x is missing"
11905                    " its dwo_id [in module %s]"),
11906                  to_underlying (sect_off), dwo_file->dwo_name);
11907       return;
11908     }
11909
11910   dwo_unit->dwo_file = dwo_file;
11911   dwo_unit->signature = DW_UNSND (attr);
11912   dwo_unit->section = section;
11913   dwo_unit->sect_off = sect_off;
11914   dwo_unit->length = cu->per_cu->length;
11915
11916   if (dwarf_read_debug)
11917     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
11918                         to_underlying (sect_off),
11919                         hex_string (dwo_unit->signature));
11920 }
11921
11922 /* Create the dwo_units for the CUs in a DWO_FILE.
11923    Note: This function processes DWO files only, not DWP files.  */
11924
11925 static void
11926 create_cus_hash_table (struct dwo_file &dwo_file, dwarf2_section_info &section,
11927                        htab_t &cus_htab)
11928 {
11929   struct objfile *objfile = dwarf2_per_objfile->objfile;
11930   const gdb_byte *info_ptr, *end_ptr;
11931
11932   dwarf2_read_section (objfile, &section);
11933   info_ptr = section.buffer;
11934
11935   if (info_ptr == NULL)
11936     return;
11937
11938   if (dwarf_read_debug)
11939     {
11940       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11941                           get_section_name (&section),
11942                           get_section_file_name (&section));
11943     }
11944
11945   end_ptr = info_ptr + section.size;
11946   while (info_ptr < end_ptr)
11947     {
11948       struct dwarf2_per_cu_data per_cu;
11949       struct create_dwo_cu_data create_dwo_cu_data;
11950       struct dwo_unit *dwo_unit;
11951       void **slot;
11952       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11953
11954       memset (&create_dwo_cu_data.dwo_unit, 0,
11955               sizeof (create_dwo_cu_data.dwo_unit));
11956       memset (&per_cu, 0, sizeof (per_cu));
11957       per_cu.objfile = objfile;
11958       per_cu.is_debug_types = 0;
11959       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11960       per_cu.section = &section;
11961       create_dwo_cu_data.dwo_file = &dwo_file;
11962
11963       init_cutu_and_read_dies_no_follow (
11964           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11965       info_ptr += per_cu.length;
11966
11967       // If the unit could not be parsed, skip it.
11968       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11969         continue;
11970
11971       if (cus_htab == NULL)
11972         cus_htab = allocate_dwo_unit_table (objfile);
11973
11974       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11975       *dwo_unit = create_dwo_cu_data.dwo_unit;
11976       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11977       gdb_assert (slot != NULL);
11978       if (*slot != NULL)
11979         {
11980           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11981           sect_offset dup_sect_off = dup_cu->sect_off;
11982
11983           complaint (&symfile_complaints,
11984                      _("debug cu entry at offset 0x%x is duplicate to"
11985                        " the entry at offset 0x%x, signature %s"),
11986                      to_underlying (sect_off), to_underlying (dup_sect_off),
11987                      hex_string (dwo_unit->signature));
11988         }
11989       *slot = (void *)dwo_unit;
11990     }
11991 }
11992
11993 /* DWP file .debug_{cu,tu}_index section format:
11994    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11995
11996    DWP Version 1:
11997
11998    Both index sections have the same format, and serve to map a 64-bit
11999    signature to a set of section numbers.  Each section begins with a header,
12000    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
12001    indexes, and a pool of 32-bit section numbers.  The index sections will be
12002    aligned at 8-byte boundaries in the file.
12003
12004    The index section header consists of:
12005
12006     V, 32 bit version number
12007     -, 32 bits unused
12008     N, 32 bit number of compilation units or type units in the index
12009     M, 32 bit number of slots in the hash table
12010
12011    Numbers are recorded using the byte order of the application binary.
12012
12013    The hash table begins at offset 16 in the section, and consists of an array
12014    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12015    order of the application binary).  Unused slots in the hash table are 0.
12016    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12017
12018    The parallel table begins immediately after the hash table
12019    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12020    array of 32-bit indexes (using the byte order of the application binary),
12021    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12022    table contains a 32-bit index into the pool of section numbers.  For unused
12023    hash table slots, the corresponding entry in the parallel table will be 0.
12024
12025    The pool of section numbers begins immediately following the hash table
12026    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12027    section numbers consists of an array of 32-bit words (using the byte order
12028    of the application binary).  Each item in the array is indexed starting
12029    from 0.  The hash table entry provides the index of the first section
12030    number in the set.  Additional section numbers in the set follow, and the
12031    set is terminated by a 0 entry (section number 0 is not used in ELF).
12032
12033    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12034    section must be the first entry in the set, and the .debug_abbrev.dwo must
12035    be the second entry. Other members of the set may follow in any order.
12036
12037    ---
12038
12039    DWP Version 2:
12040
12041    DWP Version 2 combines all the .debug_info, etc. sections into one,
12042    and the entries in the index tables are now offsets into these sections.
12043    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12044    section.
12045
12046    Index Section Contents:
12047     Header
12048     Hash Table of Signatures   dwp_hash_table.hash_table
12049     Parallel Table of Indices  dwp_hash_table.unit_table
12050     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12051     Table of Section Sizes     dwp_hash_table.v2.sizes
12052
12053    The index section header consists of:
12054
12055     V, 32 bit version number
12056     L, 32 bit number of columns in the table of section offsets
12057     N, 32 bit number of compilation units or type units in the index
12058     M, 32 bit number of slots in the hash table
12059
12060    Numbers are recorded using the byte order of the application binary.
12061
12062    The hash table has the same format as version 1.
12063    The parallel table of indices has the same format as version 1,
12064    except that the entries are origin-1 indices into the table of sections
12065    offsets and the table of section sizes.
12066
12067    The table of offsets begins immediately following the parallel table
12068    (at offset 16 + 12 * M from the beginning of the section).  The table is
12069    a two-dimensional array of 32-bit words (using the byte order of the
12070    application binary), with L columns and N+1 rows, in row-major order.
12071    Each row in the array is indexed starting from 0.  The first row provides
12072    a key to the remaining rows: each column in this row provides an identifier
12073    for a debug section, and the offsets in the same column of subsequent rows
12074    refer to that section.  The section identifiers are:
12075
12076     DW_SECT_INFO         1  .debug_info.dwo
12077     DW_SECT_TYPES        2  .debug_types.dwo
12078     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12079     DW_SECT_LINE         4  .debug_line.dwo
12080     DW_SECT_LOC          5  .debug_loc.dwo
12081     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12082     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12083     DW_SECT_MACRO        8  .debug_macro.dwo
12084
12085    The offsets provided by the CU and TU index sections are the base offsets
12086    for the contributions made by each CU or TU to the corresponding section
12087    in the package file.  Each CU and TU header contains an abbrev_offset
12088    field, used to find the abbreviations table for that CU or TU within the
12089    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12090    be interpreted as relative to the base offset given in the index section.
12091    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12092    should be interpreted as relative to the base offset for .debug_line.dwo,
12093    and offsets into other debug sections obtained from DWARF attributes should
12094    also be interpreted as relative to the corresponding base offset.
12095
12096    The table of sizes begins immediately following the table of offsets.
12097    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12098    with L columns and N rows, in row-major order.  Each row in the array is
12099    indexed starting from 1 (row 0 is shared by the two tables).
12100
12101    ---
12102
12103    Hash table lookup is handled the same in version 1 and 2:
12104
12105    We assume that N and M will not exceed 2^32 - 1.
12106    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12107
12108    Given a 64-bit compilation unit signature or a type signature S, an entry
12109    in the hash table is located as follows:
12110
12111    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12112       the low-order k bits all set to 1.
12113
12114    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12115
12116    3) If the hash table entry at index H matches the signature, use that
12117       entry.  If the hash table entry at index H is unused (all zeroes),
12118       terminate the search: the signature is not present in the table.
12119
12120    4) Let H = (H + H') modulo M. Repeat at Step 3.
12121
12122    Because M > N and H' and M are relatively prime, the search is guaranteed
12123    to stop at an unused slot or find the match.  */
12124
12125 /* Create a hash table to map DWO IDs to their CU/TU entry in
12126    .debug_{info,types}.dwo in DWP_FILE.
12127    Returns NULL if there isn't one.
12128    Note: This function processes DWP files only, not DWO files.  */
12129
12130 static struct dwp_hash_table *
12131 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
12132 {
12133   struct objfile *objfile = dwarf2_per_objfile->objfile;
12134   bfd *dbfd = dwp_file->dbfd;
12135   const gdb_byte *index_ptr, *index_end;
12136   struct dwarf2_section_info *index;
12137   uint32_t version, nr_columns, nr_units, nr_slots;
12138   struct dwp_hash_table *htab;
12139
12140   if (is_debug_types)
12141     index = &dwp_file->sections.tu_index;
12142   else
12143     index = &dwp_file->sections.cu_index;
12144
12145   if (dwarf2_section_empty_p (index))
12146     return NULL;
12147   dwarf2_read_section (objfile, index);
12148
12149   index_ptr = index->buffer;
12150   index_end = index_ptr + index->size;
12151
12152   version = read_4_bytes (dbfd, index_ptr);
12153   index_ptr += 4;
12154   if (version == 2)
12155     nr_columns = read_4_bytes (dbfd, index_ptr);
12156   else
12157     nr_columns = 0;
12158   index_ptr += 4;
12159   nr_units = read_4_bytes (dbfd, index_ptr);
12160   index_ptr += 4;
12161   nr_slots = read_4_bytes (dbfd, index_ptr);
12162   index_ptr += 4;
12163
12164   if (version != 1 && version != 2)
12165     {
12166       error (_("Dwarf Error: unsupported DWP file version (%s)"
12167                " [in module %s]"),
12168              pulongest (version), dwp_file->name);
12169     }
12170   if (nr_slots != (nr_slots & -nr_slots))
12171     {
12172       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12173                " is not power of 2 [in module %s]"),
12174              pulongest (nr_slots), dwp_file->name);
12175     }
12176
12177   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12178   htab->version = version;
12179   htab->nr_columns = nr_columns;
12180   htab->nr_units = nr_units;
12181   htab->nr_slots = nr_slots;
12182   htab->hash_table = index_ptr;
12183   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12184
12185   /* Exit early if the table is empty.  */
12186   if (nr_slots == 0 || nr_units == 0
12187       || (version == 2 && nr_columns == 0))
12188     {
12189       /* All must be zero.  */
12190       if (nr_slots != 0 || nr_units != 0
12191           || (version == 2 && nr_columns != 0))
12192         {
12193           complaint (&symfile_complaints,
12194                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
12195                        " all zero [in modules %s]"),
12196                      dwp_file->name);
12197         }
12198       return htab;
12199     }
12200
12201   if (version == 1)
12202     {
12203       htab->section_pool.v1.indices =
12204         htab->unit_table + sizeof (uint32_t) * nr_slots;
12205       /* It's harder to decide whether the section is too small in v1.
12206          V1 is deprecated anyway so we punt.  */
12207     }
12208   else
12209     {
12210       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12211       int *ids = htab->section_pool.v2.section_ids;
12212       /* Reverse map for error checking.  */
12213       int ids_seen[DW_SECT_MAX + 1];
12214       int i;
12215
12216       if (nr_columns < 2)
12217         {
12218           error (_("Dwarf Error: bad DWP hash table, too few columns"
12219                    " in section table [in module %s]"),
12220                  dwp_file->name);
12221         }
12222       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12223         {
12224           error (_("Dwarf Error: bad DWP hash table, too many columns"
12225                    " in section table [in module %s]"),
12226                  dwp_file->name);
12227         }
12228       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12229       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12230       for (i = 0; i < nr_columns; ++i)
12231         {
12232           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12233
12234           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12235             {
12236               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12237                        " in section table [in module %s]"),
12238                      id, dwp_file->name);
12239             }
12240           if (ids_seen[id] != -1)
12241             {
12242               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12243                        " id %d in section table [in module %s]"),
12244                      id, dwp_file->name);
12245             }
12246           ids_seen[id] = i;
12247           ids[i] = id;
12248         }
12249       /* Must have exactly one info or types section.  */
12250       if (((ids_seen[DW_SECT_INFO] != -1)
12251            + (ids_seen[DW_SECT_TYPES] != -1))
12252           != 1)
12253         {
12254           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12255                    " DWO info/types section [in module %s]"),
12256                  dwp_file->name);
12257         }
12258       /* Must have an abbrev section.  */
12259       if (ids_seen[DW_SECT_ABBREV] == -1)
12260         {
12261           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12262                    " section [in module %s]"),
12263                  dwp_file->name);
12264         }
12265       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12266       htab->section_pool.v2.sizes =
12267         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12268                                          * nr_units * nr_columns);
12269       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12270                                           * nr_units * nr_columns))
12271           > index_end)
12272         {
12273           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12274                    " [in module %s]"),
12275                  dwp_file->name);
12276         }
12277     }
12278
12279   return htab;
12280 }
12281
12282 /* Update SECTIONS with the data from SECTP.
12283
12284    This function is like the other "locate" section routines that are
12285    passed to bfd_map_over_sections, but in this context the sections to
12286    read comes from the DWP V1 hash table, not the full ELF section table.
12287
12288    The result is non-zero for success, or zero if an error was found.  */
12289
12290 static int
12291 locate_v1_virtual_dwo_sections (asection *sectp,
12292                                 struct virtual_v1_dwo_sections *sections)
12293 {
12294   const struct dwop_section_names *names = &dwop_section_names;
12295
12296   if (section_is_p (sectp->name, &names->abbrev_dwo))
12297     {
12298       /* There can be only one.  */
12299       if (sections->abbrev.s.section != NULL)
12300         return 0;
12301       sections->abbrev.s.section = sectp;
12302       sections->abbrev.size = bfd_get_section_size (sectp);
12303     }
12304   else if (section_is_p (sectp->name, &names->info_dwo)
12305            || section_is_p (sectp->name, &names->types_dwo))
12306     {
12307       /* There can be only one.  */
12308       if (sections->info_or_types.s.section != NULL)
12309         return 0;
12310       sections->info_or_types.s.section = sectp;
12311       sections->info_or_types.size = bfd_get_section_size (sectp);
12312     }
12313   else if (section_is_p (sectp->name, &names->line_dwo))
12314     {
12315       /* There can be only one.  */
12316       if (sections->line.s.section != NULL)
12317         return 0;
12318       sections->line.s.section = sectp;
12319       sections->line.size = bfd_get_section_size (sectp);
12320     }
12321   else if (section_is_p (sectp->name, &names->loc_dwo))
12322     {
12323       /* There can be only one.  */
12324       if (sections->loc.s.section != NULL)
12325         return 0;
12326       sections->loc.s.section = sectp;
12327       sections->loc.size = bfd_get_section_size (sectp);
12328     }
12329   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12330     {
12331       /* There can be only one.  */
12332       if (sections->macinfo.s.section != NULL)
12333         return 0;
12334       sections->macinfo.s.section = sectp;
12335       sections->macinfo.size = bfd_get_section_size (sectp);
12336     }
12337   else if (section_is_p (sectp->name, &names->macro_dwo))
12338     {
12339       /* There can be only one.  */
12340       if (sections->macro.s.section != NULL)
12341         return 0;
12342       sections->macro.s.section = sectp;
12343       sections->macro.size = bfd_get_section_size (sectp);
12344     }
12345   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12346     {
12347       /* There can be only one.  */
12348       if (sections->str_offsets.s.section != NULL)
12349         return 0;
12350       sections->str_offsets.s.section = sectp;
12351       sections->str_offsets.size = bfd_get_section_size (sectp);
12352     }
12353   else
12354     {
12355       /* No other kind of section is valid.  */
12356       return 0;
12357     }
12358
12359   return 1;
12360 }
12361
12362 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12363    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12364    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12365    This is for DWP version 1 files.  */
12366
12367 static struct dwo_unit *
12368 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
12369                            uint32_t unit_index,
12370                            const char *comp_dir,
12371                            ULONGEST signature, int is_debug_types)
12372 {
12373   struct objfile *objfile = dwarf2_per_objfile->objfile;
12374   const struct dwp_hash_table *dwp_htab =
12375     is_debug_types ? dwp_file->tus : dwp_file->cus;
12376   bfd *dbfd = dwp_file->dbfd;
12377   const char *kind = is_debug_types ? "TU" : "CU";
12378   struct dwo_file *dwo_file;
12379   struct dwo_unit *dwo_unit;
12380   struct virtual_v1_dwo_sections sections;
12381   void **dwo_file_slot;
12382   int i;
12383
12384   gdb_assert (dwp_file->version == 1);
12385
12386   if (dwarf_read_debug)
12387     {
12388       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12389                           kind,
12390                           pulongest (unit_index), hex_string (signature),
12391                           dwp_file->name);
12392     }
12393
12394   /* Fetch the sections of this DWO unit.
12395      Put a limit on the number of sections we look for so that bad data
12396      doesn't cause us to loop forever.  */
12397
12398 #define MAX_NR_V1_DWO_SECTIONS \
12399   (1 /* .debug_info or .debug_types */ \
12400    + 1 /* .debug_abbrev */ \
12401    + 1 /* .debug_line */ \
12402    + 1 /* .debug_loc */ \
12403    + 1 /* .debug_str_offsets */ \
12404    + 1 /* .debug_macro or .debug_macinfo */ \
12405    + 1 /* trailing zero */)
12406
12407   memset (&sections, 0, sizeof (sections));
12408
12409   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12410     {
12411       asection *sectp;
12412       uint32_t section_nr =
12413         read_4_bytes (dbfd,
12414                       dwp_htab->section_pool.v1.indices
12415                       + (unit_index + i) * sizeof (uint32_t));
12416
12417       if (section_nr == 0)
12418         break;
12419       if (section_nr >= dwp_file->num_sections)
12420         {
12421           error (_("Dwarf Error: bad DWP hash table, section number too large"
12422                    " [in module %s]"),
12423                  dwp_file->name);
12424         }
12425
12426       sectp = dwp_file->elf_sections[section_nr];
12427       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12428         {
12429           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12430                    " [in module %s]"),
12431                  dwp_file->name);
12432         }
12433     }
12434
12435   if (i < 2
12436       || dwarf2_section_empty_p (&sections.info_or_types)
12437       || dwarf2_section_empty_p (&sections.abbrev))
12438     {
12439       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12440                " [in module %s]"),
12441              dwp_file->name);
12442     }
12443   if (i == MAX_NR_V1_DWO_SECTIONS)
12444     {
12445       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12446                " [in module %s]"),
12447              dwp_file->name);
12448     }
12449
12450   /* It's easier for the rest of the code if we fake a struct dwo_file and
12451      have dwo_unit "live" in that.  At least for now.
12452
12453      The DWP file can be made up of a random collection of CUs and TUs.
12454      However, for each CU + set of TUs that came from the same original DWO
12455      file, we can combine them back into a virtual DWO file to save space
12456      (fewer struct dwo_file objects to allocate).  Remember that for really
12457      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12458
12459   std::string virtual_dwo_name =
12460     string_printf ("virtual-dwo/%d-%d-%d-%d",
12461                    get_section_id (&sections.abbrev),
12462                    get_section_id (&sections.line),
12463                    get_section_id (&sections.loc),
12464                    get_section_id (&sections.str_offsets));
12465   /* Can we use an existing virtual DWO file?  */
12466   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name.c_str (), comp_dir);
12467   /* Create one if necessary.  */
12468   if (*dwo_file_slot == NULL)
12469     {
12470       if (dwarf_read_debug)
12471         {
12472           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12473                               virtual_dwo_name.c_str ());
12474         }
12475       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12476       dwo_file->dwo_name
12477         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12478                                         virtual_dwo_name.c_str (),
12479                                         virtual_dwo_name.size ());
12480       dwo_file->comp_dir = comp_dir;
12481       dwo_file->sections.abbrev = sections.abbrev;
12482       dwo_file->sections.line = sections.line;
12483       dwo_file->sections.loc = sections.loc;
12484       dwo_file->sections.macinfo = sections.macinfo;
12485       dwo_file->sections.macro = sections.macro;
12486       dwo_file->sections.str_offsets = sections.str_offsets;
12487       /* The "str" section is global to the entire DWP file.  */
12488       dwo_file->sections.str = dwp_file->sections.str;
12489       /* The info or types section is assigned below to dwo_unit,
12490          there's no need to record it in dwo_file.
12491          Also, we can't simply record type sections in dwo_file because
12492          we record a pointer into the vector in dwo_unit.  As we collect more
12493          types we'll grow the vector and eventually have to reallocate space
12494          for it, invalidating all copies of pointers into the previous
12495          contents.  */
12496       *dwo_file_slot = dwo_file;
12497     }
12498   else
12499     {
12500       if (dwarf_read_debug)
12501         {
12502           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12503                               virtual_dwo_name.c_str ());
12504         }
12505       dwo_file = (struct dwo_file *) *dwo_file_slot;
12506     }
12507
12508   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12509   dwo_unit->dwo_file = dwo_file;
12510   dwo_unit->signature = signature;
12511   dwo_unit->section =
12512     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12513   *dwo_unit->section = sections.info_or_types;
12514   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12515
12516   return dwo_unit;
12517 }
12518
12519 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12520    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12521    piece within that section used by a TU/CU, return a virtual section
12522    of just that piece.  */
12523
12524 static struct dwarf2_section_info
12525 create_dwp_v2_section (struct dwarf2_section_info *section,
12526                        bfd_size_type offset, bfd_size_type size)
12527 {
12528   struct dwarf2_section_info result;
12529   asection *sectp;
12530
12531   gdb_assert (section != NULL);
12532   gdb_assert (!section->is_virtual);
12533
12534   memset (&result, 0, sizeof (result));
12535   result.s.containing_section = section;
12536   result.is_virtual = 1;
12537
12538   if (size == 0)
12539     return result;
12540
12541   sectp = get_section_bfd_section (section);
12542
12543   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12544      bounds of the real section.  This is a pretty-rare event, so just
12545      flag an error (easier) instead of a warning and trying to cope.  */
12546   if (sectp == NULL
12547       || offset + size > bfd_get_section_size (sectp))
12548     {
12549       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12550                " in section %s [in module %s]"),
12551              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12552              objfile_name (dwarf2_per_objfile->objfile));
12553     }
12554
12555   result.virtual_offset = offset;
12556   result.size = size;
12557   return result;
12558 }
12559
12560 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12561    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12562    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12563    This is for DWP version 2 files.  */
12564
12565 static struct dwo_unit *
12566 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
12567                            uint32_t unit_index,
12568                            const char *comp_dir,
12569                            ULONGEST signature, int is_debug_types)
12570 {
12571   struct objfile *objfile = dwarf2_per_objfile->objfile;
12572   const struct dwp_hash_table *dwp_htab =
12573     is_debug_types ? dwp_file->tus : dwp_file->cus;
12574   bfd *dbfd = dwp_file->dbfd;
12575   const char *kind = is_debug_types ? "TU" : "CU";
12576   struct dwo_file *dwo_file;
12577   struct dwo_unit *dwo_unit;
12578   struct virtual_v2_dwo_sections sections;
12579   void **dwo_file_slot;
12580   int i;
12581
12582   gdb_assert (dwp_file->version == 2);
12583
12584   if (dwarf_read_debug)
12585     {
12586       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12587                           kind,
12588                           pulongest (unit_index), hex_string (signature),
12589                           dwp_file->name);
12590     }
12591
12592   /* Fetch the section offsets of this DWO unit.  */
12593
12594   memset (&sections, 0, sizeof (sections));
12595
12596   for (i = 0; i < dwp_htab->nr_columns; ++i)
12597     {
12598       uint32_t offset = read_4_bytes (dbfd,
12599                                       dwp_htab->section_pool.v2.offsets
12600                                       + (((unit_index - 1) * dwp_htab->nr_columns
12601                                           + i)
12602                                          * sizeof (uint32_t)));
12603       uint32_t size = read_4_bytes (dbfd,
12604                                     dwp_htab->section_pool.v2.sizes
12605                                     + (((unit_index - 1) * dwp_htab->nr_columns
12606                                         + i)
12607                                        * sizeof (uint32_t)));
12608
12609       switch (dwp_htab->section_pool.v2.section_ids[i])
12610         {
12611         case DW_SECT_INFO:
12612         case DW_SECT_TYPES:
12613           sections.info_or_types_offset = offset;
12614           sections.info_or_types_size = size;
12615           break;
12616         case DW_SECT_ABBREV:
12617           sections.abbrev_offset = offset;
12618           sections.abbrev_size = size;
12619           break;
12620         case DW_SECT_LINE:
12621           sections.line_offset = offset;
12622           sections.line_size = size;
12623           break;
12624         case DW_SECT_LOC:
12625           sections.loc_offset = offset;
12626           sections.loc_size = size;
12627           break;
12628         case DW_SECT_STR_OFFSETS:
12629           sections.str_offsets_offset = offset;
12630           sections.str_offsets_size = size;
12631           break;
12632         case DW_SECT_MACINFO:
12633           sections.macinfo_offset = offset;
12634           sections.macinfo_size = size;
12635           break;
12636         case DW_SECT_MACRO:
12637           sections.macro_offset = offset;
12638           sections.macro_size = size;
12639           break;
12640         }
12641     }
12642
12643   /* It's easier for the rest of the code if we fake a struct dwo_file and
12644      have dwo_unit "live" in that.  At least for now.
12645
12646      The DWP file can be made up of a random collection of CUs and TUs.
12647      However, for each CU + set of TUs that came from the same original DWO
12648      file, we can combine them back into a virtual DWO file to save space
12649      (fewer struct dwo_file objects to allocate).  Remember that for really
12650      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12651
12652   std::string virtual_dwo_name =
12653     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12654                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12655                    (long) (sections.line_size ? sections.line_offset : 0),
12656                    (long) (sections.loc_size ? sections.loc_offset : 0),
12657                    (long) (sections.str_offsets_size
12658                            ? sections.str_offsets_offset : 0));
12659   /* Can we use an existing virtual DWO file?  */
12660   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name.c_str (), comp_dir);
12661   /* Create one if necessary.  */
12662   if (*dwo_file_slot == NULL)
12663     {
12664       if (dwarf_read_debug)
12665         {
12666           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12667                               virtual_dwo_name.c_str ());
12668         }
12669       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12670       dwo_file->dwo_name
12671         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12672                                         virtual_dwo_name.c_str (),
12673                                         virtual_dwo_name.size ());
12674       dwo_file->comp_dir = comp_dir;
12675       dwo_file->sections.abbrev =
12676         create_dwp_v2_section (&dwp_file->sections.abbrev,
12677                                sections.abbrev_offset, sections.abbrev_size);
12678       dwo_file->sections.line =
12679         create_dwp_v2_section (&dwp_file->sections.line,
12680                                sections.line_offset, sections.line_size);
12681       dwo_file->sections.loc =
12682         create_dwp_v2_section (&dwp_file->sections.loc,
12683                                sections.loc_offset, sections.loc_size);
12684       dwo_file->sections.macinfo =
12685         create_dwp_v2_section (&dwp_file->sections.macinfo,
12686                                sections.macinfo_offset, sections.macinfo_size);
12687       dwo_file->sections.macro =
12688         create_dwp_v2_section (&dwp_file->sections.macro,
12689                                sections.macro_offset, sections.macro_size);
12690       dwo_file->sections.str_offsets =
12691         create_dwp_v2_section (&dwp_file->sections.str_offsets,
12692                                sections.str_offsets_offset,
12693                                sections.str_offsets_size);
12694       /* The "str" section is global to the entire DWP file.  */
12695       dwo_file->sections.str = dwp_file->sections.str;
12696       /* The info or types section is assigned below to dwo_unit,
12697          there's no need to record it in dwo_file.
12698          Also, we can't simply record type sections in dwo_file because
12699          we record a pointer into the vector in dwo_unit.  As we collect more
12700          types we'll grow the vector and eventually have to reallocate space
12701          for it, invalidating all copies of pointers into the previous
12702          contents.  */
12703       *dwo_file_slot = dwo_file;
12704     }
12705   else
12706     {
12707       if (dwarf_read_debug)
12708         {
12709           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12710                               virtual_dwo_name.c_str ());
12711         }
12712       dwo_file = (struct dwo_file *) *dwo_file_slot;
12713     }
12714
12715   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12716   dwo_unit->dwo_file = dwo_file;
12717   dwo_unit->signature = signature;
12718   dwo_unit->section =
12719     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12720   *dwo_unit->section = create_dwp_v2_section (is_debug_types
12721                                               ? &dwp_file->sections.types
12722                                               : &dwp_file->sections.info,
12723                                               sections.info_or_types_offset,
12724                                               sections.info_or_types_size);
12725   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12726
12727   return dwo_unit;
12728 }
12729
12730 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12731    Returns NULL if the signature isn't found.  */
12732
12733 static struct dwo_unit *
12734 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
12735                         ULONGEST signature, int is_debug_types)
12736 {
12737   const struct dwp_hash_table *dwp_htab =
12738     is_debug_types ? dwp_file->tus : dwp_file->cus;
12739   bfd *dbfd = dwp_file->dbfd;
12740   uint32_t mask = dwp_htab->nr_slots - 1;
12741   uint32_t hash = signature & mask;
12742   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12743   unsigned int i;
12744   void **slot;
12745   struct dwo_unit find_dwo_cu;
12746
12747   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12748   find_dwo_cu.signature = signature;
12749   slot = htab_find_slot (is_debug_types
12750                          ? dwp_file->loaded_tus
12751                          : dwp_file->loaded_cus,
12752                          &find_dwo_cu, INSERT);
12753
12754   if (*slot != NULL)
12755     return (struct dwo_unit *) *slot;
12756
12757   /* Use a for loop so that we don't loop forever on bad debug info.  */
12758   for (i = 0; i < dwp_htab->nr_slots; ++i)
12759     {
12760       ULONGEST signature_in_table;
12761
12762       signature_in_table =
12763         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12764       if (signature_in_table == signature)
12765         {
12766           uint32_t unit_index =
12767             read_4_bytes (dbfd,
12768                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12769
12770           if (dwp_file->version == 1)
12771             {
12772               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
12773                                                  comp_dir, signature,
12774                                                  is_debug_types);
12775             }
12776           else
12777             {
12778               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
12779                                                  comp_dir, signature,
12780                                                  is_debug_types);
12781             }
12782           return (struct dwo_unit *) *slot;
12783         }
12784       if (signature_in_table == 0)
12785         return NULL;
12786       hash = (hash + hash2) & mask;
12787     }
12788
12789   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12790            " [in module %s]"),
12791          dwp_file->name);
12792 }
12793
12794 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12795    Open the file specified by FILE_NAME and hand it off to BFD for
12796    preliminary analysis.  Return a newly initialized bfd *, which
12797    includes a canonicalized copy of FILE_NAME.
12798    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12799    SEARCH_CWD is true if the current directory is to be searched.
12800    It will be searched before debug-file-directory.
12801    If successful, the file is added to the bfd include table of the
12802    objfile's bfd (see gdb_bfd_record_inclusion).
12803    If unable to find/open the file, return NULL.
12804    NOTE: This function is derived from symfile_bfd_open.  */
12805
12806 static gdb_bfd_ref_ptr
12807 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
12808 {
12809   int desc, flags;
12810   char *absolute_name;
12811   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12812      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12813      to debug_file_directory.  */
12814   char *search_path;
12815   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12816
12817   if (search_cwd)
12818     {
12819       if (*debug_file_directory != '\0')
12820         search_path = concat (".", dirname_separator_string,
12821                               debug_file_directory, (char *) NULL);
12822       else
12823         search_path = xstrdup (".");
12824     }
12825   else
12826     search_path = xstrdup (debug_file_directory);
12827
12828   flags = OPF_RETURN_REALPATH;
12829   if (is_dwp)
12830     flags |= OPF_SEARCH_IN_PATH;
12831   desc = openp (search_path, flags, file_name,
12832                 O_RDONLY | O_BINARY, &absolute_name);
12833   xfree (search_path);
12834   if (desc < 0)
12835     return NULL;
12836
12837   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name, gnutarget, desc));
12838   xfree (absolute_name);
12839   if (sym_bfd == NULL)
12840     return NULL;
12841   bfd_set_cacheable (sym_bfd.get (), 1);
12842
12843   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12844     return NULL;
12845
12846   /* Success.  Record the bfd as having been included by the objfile's bfd.
12847      This is important because things like demangled_names_hash lives in the
12848      objfile's per_bfd space and may have references to things like symbol
12849      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12850   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12851
12852   return sym_bfd;
12853 }
12854
12855 /* Try to open DWO file FILE_NAME.
12856    COMP_DIR is the DW_AT_comp_dir attribute.
12857    The result is the bfd handle of the file.
12858    If there is a problem finding or opening the file, return NULL.
12859    Upon success, the canonicalized path of the file is stored in the bfd,
12860    same as symfile_bfd_open.  */
12861
12862 static gdb_bfd_ref_ptr
12863 open_dwo_file (const char *file_name, const char *comp_dir)
12864 {
12865   if (IS_ABSOLUTE_PATH (file_name))
12866     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
12867
12868   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12869
12870   if (comp_dir != NULL)
12871     {
12872       char *path_to_try = concat (comp_dir, SLASH_STRING,
12873                                   file_name, (char *) NULL);
12874
12875       /* NOTE: If comp_dir is a relative path, this will also try the
12876          search path, which seems useful.  */
12877       gdb_bfd_ref_ptr abfd (try_open_dwop_file (path_to_try, 0 /*is_dwp*/,
12878                                                 1 /*search_cwd*/));
12879       xfree (path_to_try);
12880       if (abfd != NULL)
12881         return abfd;
12882     }
12883
12884   /* That didn't work, try debug-file-directory, which, despite its name,
12885      is a list of paths.  */
12886
12887   if (*debug_file_directory == '\0')
12888     return NULL;
12889
12890   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
12891 }
12892
12893 /* This function is mapped across the sections and remembers the offset and
12894    size of each of the DWO debugging sections we are interested in.  */
12895
12896 static void
12897 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12898 {
12899   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12900   const struct dwop_section_names *names = &dwop_section_names;
12901
12902   if (section_is_p (sectp->name, &names->abbrev_dwo))
12903     {
12904       dwo_sections->abbrev.s.section = sectp;
12905       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12906     }
12907   else if (section_is_p (sectp->name, &names->info_dwo))
12908     {
12909       dwo_sections->info.s.section = sectp;
12910       dwo_sections->info.size = bfd_get_section_size (sectp);
12911     }
12912   else if (section_is_p (sectp->name, &names->line_dwo))
12913     {
12914       dwo_sections->line.s.section = sectp;
12915       dwo_sections->line.size = bfd_get_section_size (sectp);
12916     }
12917   else if (section_is_p (sectp->name, &names->loc_dwo))
12918     {
12919       dwo_sections->loc.s.section = sectp;
12920       dwo_sections->loc.size = bfd_get_section_size (sectp);
12921     }
12922   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12923     {
12924       dwo_sections->macinfo.s.section = sectp;
12925       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12926     }
12927   else if (section_is_p (sectp->name, &names->macro_dwo))
12928     {
12929       dwo_sections->macro.s.section = sectp;
12930       dwo_sections->macro.size = bfd_get_section_size (sectp);
12931     }
12932   else if (section_is_p (sectp->name, &names->str_dwo))
12933     {
12934       dwo_sections->str.s.section = sectp;
12935       dwo_sections->str.size = bfd_get_section_size (sectp);
12936     }
12937   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12938     {
12939       dwo_sections->str_offsets.s.section = sectp;
12940       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12941     }
12942   else if (section_is_p (sectp->name, &names->types_dwo))
12943     {
12944       struct dwarf2_section_info type_section;
12945
12946       memset (&type_section, 0, sizeof (type_section));
12947       type_section.s.section = sectp;
12948       type_section.size = bfd_get_section_size (sectp);
12949       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12950                      &type_section);
12951     }
12952 }
12953
12954 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12955    by PER_CU.  This is for the non-DWP case.
12956    The result is NULL if DWO_NAME can't be found.  */
12957
12958 static struct dwo_file *
12959 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12960                         const char *dwo_name, const char *comp_dir)
12961 {
12962   struct objfile *objfile = dwarf2_per_objfile->objfile;
12963   struct dwo_file *dwo_file;
12964   struct cleanup *cleanups;
12965
12966   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwo_name, comp_dir));
12967   if (dbfd == NULL)
12968     {
12969       if (dwarf_read_debug)
12970         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12971       return NULL;
12972     }
12973   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12974   dwo_file->dwo_name = dwo_name;
12975   dwo_file->comp_dir = comp_dir;
12976   dwo_file->dbfd = dbfd.release ();
12977
12978   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
12979
12980   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12981                          &dwo_file->sections);
12982
12983   create_cus_hash_table (*dwo_file, dwo_file->sections.info, dwo_file->cus);
12984
12985   create_debug_types_hash_table (dwo_file, dwo_file->sections.types,
12986                                  dwo_file->tus);
12987
12988   discard_cleanups (cleanups);
12989
12990   if (dwarf_read_debug)
12991     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
12992
12993   return dwo_file;
12994 }
12995
12996 /* This function is mapped across the sections and remembers the offset and
12997    size of each of the DWP debugging sections common to version 1 and 2 that
12998    we are interested in.  */
12999
13000 static void
13001 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13002                                    void *dwp_file_ptr)
13003 {
13004   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13005   const struct dwop_section_names *names = &dwop_section_names;
13006   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13007
13008   /* Record the ELF section number for later lookup: this is what the
13009      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13010   gdb_assert (elf_section_nr < dwp_file->num_sections);
13011   dwp_file->elf_sections[elf_section_nr] = sectp;
13012
13013   /* Look for specific sections that we need.  */
13014   if (section_is_p (sectp->name, &names->str_dwo))
13015     {
13016       dwp_file->sections.str.s.section = sectp;
13017       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13018     }
13019   else if (section_is_p (sectp->name, &names->cu_index))
13020     {
13021       dwp_file->sections.cu_index.s.section = sectp;
13022       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13023     }
13024   else if (section_is_p (sectp->name, &names->tu_index))
13025     {
13026       dwp_file->sections.tu_index.s.section = sectp;
13027       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13028     }
13029 }
13030
13031 /* This function is mapped across the sections and remembers the offset and
13032    size of each of the DWP version 2 debugging sections that we are interested
13033    in.  This is split into a separate function because we don't know if we
13034    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13035
13036 static void
13037 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13038 {
13039   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13040   const struct dwop_section_names *names = &dwop_section_names;
13041   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13042
13043   /* Record the ELF section number for later lookup: this is what the
13044      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13045   gdb_assert (elf_section_nr < dwp_file->num_sections);
13046   dwp_file->elf_sections[elf_section_nr] = sectp;
13047
13048   /* Look for specific sections that we need.  */
13049   if (section_is_p (sectp->name, &names->abbrev_dwo))
13050     {
13051       dwp_file->sections.abbrev.s.section = sectp;
13052       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13053     }
13054   else if (section_is_p (sectp->name, &names->info_dwo))
13055     {
13056       dwp_file->sections.info.s.section = sectp;
13057       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13058     }
13059   else if (section_is_p (sectp->name, &names->line_dwo))
13060     {
13061       dwp_file->sections.line.s.section = sectp;
13062       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13063     }
13064   else if (section_is_p (sectp->name, &names->loc_dwo))
13065     {
13066       dwp_file->sections.loc.s.section = sectp;
13067       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13068     }
13069   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13070     {
13071       dwp_file->sections.macinfo.s.section = sectp;
13072       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13073     }
13074   else if (section_is_p (sectp->name, &names->macro_dwo))
13075     {
13076       dwp_file->sections.macro.s.section = sectp;
13077       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13078     }
13079   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13080     {
13081       dwp_file->sections.str_offsets.s.section = sectp;
13082       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13083     }
13084   else if (section_is_p (sectp->name, &names->types_dwo))
13085     {
13086       dwp_file->sections.types.s.section = sectp;
13087       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13088     }
13089 }
13090
13091 /* Hash function for dwp_file loaded CUs/TUs.  */
13092
13093 static hashval_t
13094 hash_dwp_loaded_cutus (const void *item)
13095 {
13096   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13097
13098   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13099   return dwo_unit->signature;
13100 }
13101
13102 /* Equality function for dwp_file loaded CUs/TUs.  */
13103
13104 static int
13105 eq_dwp_loaded_cutus (const void *a, const void *b)
13106 {
13107   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13108   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13109
13110   return dua->signature == dub->signature;
13111 }
13112
13113 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13114
13115 static htab_t
13116 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13117 {
13118   return htab_create_alloc_ex (3,
13119                                hash_dwp_loaded_cutus,
13120                                eq_dwp_loaded_cutus,
13121                                NULL,
13122                                &objfile->objfile_obstack,
13123                                hashtab_obstack_allocate,
13124                                dummy_obstack_deallocate);
13125 }
13126
13127 /* Try to open DWP file FILE_NAME.
13128    The result is the bfd handle of the file.
13129    If there is a problem finding or opening the file, return NULL.
13130    Upon success, the canonicalized path of the file is stored in the bfd,
13131    same as symfile_bfd_open.  */
13132
13133 static gdb_bfd_ref_ptr
13134 open_dwp_file (const char *file_name)
13135 {
13136   gdb_bfd_ref_ptr abfd (try_open_dwop_file (file_name, 1 /*is_dwp*/,
13137                                             1 /*search_cwd*/));
13138   if (abfd != NULL)
13139     return abfd;
13140
13141   /* Work around upstream bug 15652.
13142      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13143      [Whether that's a "bug" is debatable, but it is getting in our way.]
13144      We have no real idea where the dwp file is, because gdb's realpath-ing
13145      of the executable's path may have discarded the needed info.
13146      [IWBN if the dwp file name was recorded in the executable, akin to
13147      .gnu_debuglink, but that doesn't exist yet.]
13148      Strip the directory from FILE_NAME and search again.  */
13149   if (*debug_file_directory != '\0')
13150     {
13151       /* Don't implicitly search the current directory here.
13152          If the user wants to search "." to handle this case,
13153          it must be added to debug-file-directory.  */
13154       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
13155                                  0 /*search_cwd*/);
13156     }
13157
13158   return NULL;
13159 }
13160
13161 /* Initialize the use of the DWP file for the current objfile.
13162    By convention the name of the DWP file is ${objfile}.dwp.
13163    The result is NULL if it can't be found.  */
13164
13165 static struct dwp_file *
13166 open_and_init_dwp_file (void)
13167 {
13168   struct objfile *objfile = dwarf2_per_objfile->objfile;
13169   struct dwp_file *dwp_file;
13170
13171   /* Try to find first .dwp for the binary file before any symbolic links
13172      resolving.  */
13173
13174   /* If the objfile is a debug file, find the name of the real binary
13175      file and get the name of dwp file from there.  */
13176   std::string dwp_name;
13177   if (objfile->separate_debug_objfile_backlink != NULL)
13178     {
13179       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13180       const char *backlink_basename = lbasename (backlink->original_name);
13181
13182       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13183     }
13184   else
13185     dwp_name = objfile->original_name;
13186
13187   dwp_name += ".dwp";
13188
13189   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwp_name.c_str ()));
13190   if (dbfd == NULL
13191       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13192     {
13193       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13194       dwp_name = objfile_name (objfile);
13195       dwp_name += ".dwp";
13196       dbfd = open_dwp_file (dwp_name.c_str ());
13197     }
13198
13199   if (dbfd == NULL)
13200     {
13201       if (dwarf_read_debug)
13202         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13203       return NULL;
13204     }
13205   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
13206   dwp_file->name = bfd_get_filename (dbfd.get ());
13207   dwp_file->dbfd = dbfd.release ();
13208
13209   /* +1: section 0 is unused */
13210   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13211   dwp_file->elf_sections =
13212     OBSTACK_CALLOC (&objfile->objfile_obstack,
13213                     dwp_file->num_sections, asection *);
13214
13215   bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_common_dwp_sections,
13216                          dwp_file);
13217
13218   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
13219
13220   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
13221
13222   /* The DWP file version is stored in the hash table.  Oh well.  */
13223   if (dwp_file->cus && dwp_file->tus
13224       && dwp_file->cus->version != dwp_file->tus->version)
13225     {
13226       /* Technically speaking, we should try to limp along, but this is
13227          pretty bizarre.  We use pulongest here because that's the established
13228          portability solution (e.g, we cannot use %u for uint32_t).  */
13229       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13230                " TU version %s [in DWP file %s]"),
13231              pulongest (dwp_file->cus->version),
13232              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13233     }
13234
13235   if (dwp_file->cus)
13236     dwp_file->version = dwp_file->cus->version;
13237   else if (dwp_file->tus)
13238     dwp_file->version = dwp_file->tus->version;
13239   else
13240     dwp_file->version = 2;
13241
13242   if (dwp_file->version == 2)
13243     bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,
13244                            dwp_file);
13245
13246   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13247   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13248
13249   if (dwarf_read_debug)
13250     {
13251       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13252       fprintf_unfiltered (gdb_stdlog,
13253                           "    %s CUs, %s TUs\n",
13254                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13255                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13256     }
13257
13258   return dwp_file;
13259 }
13260
13261 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13262
13263 static struct dwp_file *
13264 get_dwp_file (void)
13265 {
13266   if (! dwarf2_per_objfile->dwp_checked)
13267     {
13268       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
13269       dwarf2_per_objfile->dwp_checked = 1;
13270     }
13271   return dwarf2_per_objfile->dwp_file;
13272 }
13273
13274 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13275    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13276    or in the DWP file for the objfile, referenced by THIS_UNIT.
13277    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13278    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13279
13280    This is called, for example, when wanting to read a variable with a
13281    complex location.  Therefore we don't want to do file i/o for every call.
13282    Therefore we don't want to look for a DWO file on every call.
13283    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13284    then we check if we've already seen DWO_NAME, and only THEN do we check
13285    for a DWO file.
13286
13287    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13288    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13289
13290 static struct dwo_unit *
13291 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13292                  const char *dwo_name, const char *comp_dir,
13293                  ULONGEST signature, int is_debug_types)
13294 {
13295   struct objfile *objfile = dwarf2_per_objfile->objfile;
13296   const char *kind = is_debug_types ? "TU" : "CU";
13297   void **dwo_file_slot;
13298   struct dwo_file *dwo_file;
13299   struct dwp_file *dwp_file;
13300
13301   /* First see if there's a DWP file.
13302      If we have a DWP file but didn't find the DWO inside it, don't
13303      look for the original DWO file.  It makes gdb behave differently
13304      depending on whether one is debugging in the build tree.  */
13305
13306   dwp_file = get_dwp_file ();
13307   if (dwp_file != NULL)
13308     {
13309       const struct dwp_hash_table *dwp_htab =
13310         is_debug_types ? dwp_file->tus : dwp_file->cus;
13311
13312       if (dwp_htab != NULL)
13313         {
13314           struct dwo_unit *dwo_cutu =
13315             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
13316                                     signature, is_debug_types);
13317
13318           if (dwo_cutu != NULL)
13319             {
13320               if (dwarf_read_debug)
13321                 {
13322                   fprintf_unfiltered (gdb_stdlog,
13323                                       "Virtual DWO %s %s found: @%s\n",
13324                                       kind, hex_string (signature),
13325                                       host_address_to_string (dwo_cutu));
13326                 }
13327               return dwo_cutu;
13328             }
13329         }
13330     }
13331   else
13332     {
13333       /* No DWP file, look for the DWO file.  */
13334
13335       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
13336       if (*dwo_file_slot == NULL)
13337         {
13338           /* Read in the file and build a table of the CUs/TUs it contains.  */
13339           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13340         }
13341       /* NOTE: This will be NULL if unable to open the file.  */
13342       dwo_file = (struct dwo_file *) *dwo_file_slot;
13343
13344       if (dwo_file != NULL)
13345         {
13346           struct dwo_unit *dwo_cutu = NULL;
13347
13348           if (is_debug_types && dwo_file->tus)
13349             {
13350               struct dwo_unit find_dwo_cutu;
13351
13352               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13353               find_dwo_cutu.signature = signature;
13354               dwo_cutu
13355                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13356             }
13357           else if (!is_debug_types && dwo_file->cus)
13358             {
13359               struct dwo_unit find_dwo_cutu;
13360
13361               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13362               find_dwo_cutu.signature = signature;
13363               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13364                                                        &find_dwo_cutu);
13365             }
13366
13367           if (dwo_cutu != NULL)
13368             {
13369               if (dwarf_read_debug)
13370                 {
13371                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13372                                       kind, dwo_name, hex_string (signature),
13373                                       host_address_to_string (dwo_cutu));
13374                 }
13375               return dwo_cutu;
13376             }
13377         }
13378     }
13379
13380   /* We didn't find it.  This could mean a dwo_id mismatch, or
13381      someone deleted the DWO/DWP file, or the search path isn't set up
13382      correctly to find the file.  */
13383
13384   if (dwarf_read_debug)
13385     {
13386       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13387                           kind, dwo_name, hex_string (signature));
13388     }
13389
13390   /* This is a warning and not a complaint because it can be caused by
13391      pilot error (e.g., user accidentally deleting the DWO).  */
13392   {
13393     /* Print the name of the DWP file if we looked there, helps the user
13394        better diagnose the problem.  */
13395     std::string dwp_text;
13396
13397     if (dwp_file != NULL)
13398       dwp_text = string_printf (" [in DWP file %s]",
13399                                 lbasename (dwp_file->name));
13400
13401     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
13402                " [in module %s]"),
13403              kind, dwo_name, hex_string (signature),
13404              dwp_text.c_str (),
13405              this_unit->is_debug_types ? "TU" : "CU",
13406              to_underlying (this_unit->sect_off), objfile_name (objfile));
13407   }
13408   return NULL;
13409 }
13410
13411 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13412    See lookup_dwo_cutu_unit for details.  */
13413
13414 static struct dwo_unit *
13415 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13416                       const char *dwo_name, const char *comp_dir,
13417                       ULONGEST signature)
13418 {
13419   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13420 }
13421
13422 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13423    See lookup_dwo_cutu_unit for details.  */
13424
13425 static struct dwo_unit *
13426 lookup_dwo_type_unit (struct signatured_type *this_tu,
13427                       const char *dwo_name, const char *comp_dir)
13428 {
13429   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13430 }
13431
13432 /* Traversal function for queue_and_load_all_dwo_tus.  */
13433
13434 static int
13435 queue_and_load_dwo_tu (void **slot, void *info)
13436 {
13437   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13438   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13439   ULONGEST signature = dwo_unit->signature;
13440   struct signatured_type *sig_type =
13441     lookup_dwo_signatured_type (per_cu->cu, signature);
13442
13443   if (sig_type != NULL)
13444     {
13445       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13446
13447       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13448          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13449          while processing PER_CU.  */
13450       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13451         load_full_type_unit (sig_cu);
13452       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13453     }
13454
13455   return 1;
13456 }
13457
13458 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13459    The DWO may have the only definition of the type, though it may not be
13460    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13461    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13462
13463 static void
13464 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13465 {
13466   struct dwo_unit *dwo_unit;
13467   struct dwo_file *dwo_file;
13468
13469   gdb_assert (!per_cu->is_debug_types);
13470   gdb_assert (get_dwp_file () == NULL);
13471   gdb_assert (per_cu->cu != NULL);
13472
13473   dwo_unit = per_cu->cu->dwo_unit;
13474   gdb_assert (dwo_unit != NULL);
13475
13476   dwo_file = dwo_unit->dwo_file;
13477   if (dwo_file->tus != NULL)
13478     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13479 }
13480
13481 /* Free all resources associated with DWO_FILE.
13482    Close the DWO file and munmap the sections.
13483    All memory should be on the objfile obstack.  */
13484
13485 static void
13486 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
13487 {
13488
13489   /* Note: dbfd is NULL for virtual DWO files.  */
13490   gdb_bfd_unref (dwo_file->dbfd);
13491
13492   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13493 }
13494
13495 /* Wrapper for free_dwo_file for use in cleanups.  */
13496
13497 static void
13498 free_dwo_file_cleanup (void *arg)
13499 {
13500   struct dwo_file *dwo_file = (struct dwo_file *) arg;
13501   struct objfile *objfile = dwarf2_per_objfile->objfile;
13502
13503   free_dwo_file (dwo_file, objfile);
13504 }
13505
13506 /* Traversal function for free_dwo_files.  */
13507
13508 static int
13509 free_dwo_file_from_slot (void **slot, void *info)
13510 {
13511   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13512   struct objfile *objfile = (struct objfile *) info;
13513
13514   free_dwo_file (dwo_file, objfile);
13515
13516   return 1;
13517 }
13518
13519 /* Free all resources associated with DWO_FILES.  */
13520
13521 static void
13522 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13523 {
13524   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13525 }
13526 \f
13527 /* Read in various DIEs.  */
13528
13529 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13530    Inherit only the children of the DW_AT_abstract_origin DIE not being
13531    already referenced by DW_AT_abstract_origin from the children of the
13532    current DIE.  */
13533
13534 static void
13535 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13536 {
13537   struct die_info *child_die;
13538   sect_offset *offsetp;
13539   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13540   struct die_info *origin_die;
13541   /* Iterator of the ORIGIN_DIE children.  */
13542   struct die_info *origin_child_die;
13543   struct attribute *attr;
13544   struct dwarf2_cu *origin_cu;
13545   struct pending **origin_previous_list_in_scope;
13546
13547   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13548   if (!attr)
13549     return;
13550
13551   /* Note that following die references may follow to a die in a
13552      different cu.  */
13553
13554   origin_cu = cu;
13555   origin_die = follow_die_ref (die, attr, &origin_cu);
13556
13557   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13558      symbols in.  */
13559   origin_previous_list_in_scope = origin_cu->list_in_scope;
13560   origin_cu->list_in_scope = cu->list_in_scope;
13561
13562   if (die->tag != origin_die->tag
13563       && !(die->tag == DW_TAG_inlined_subroutine
13564            && origin_die->tag == DW_TAG_subprogram))
13565     complaint (&symfile_complaints,
13566                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
13567                to_underlying (die->sect_off),
13568                to_underlying (origin_die->sect_off));
13569
13570   std::vector<sect_offset> offsets;
13571
13572   for (child_die = die->child;
13573        child_die && child_die->tag;
13574        child_die = sibling_die (child_die))
13575     {
13576       struct die_info *child_origin_die;
13577       struct dwarf2_cu *child_origin_cu;
13578
13579       /* We are trying to process concrete instance entries:
13580          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13581          it's not relevant to our analysis here. i.e. detecting DIEs that are
13582          present in the abstract instance but not referenced in the concrete
13583          one.  */
13584       if (child_die->tag == DW_TAG_call_site
13585           || child_die->tag == DW_TAG_GNU_call_site)
13586         continue;
13587
13588       /* For each CHILD_DIE, find the corresponding child of
13589          ORIGIN_DIE.  If there is more than one layer of
13590          DW_AT_abstract_origin, follow them all; there shouldn't be,
13591          but GCC versions at least through 4.4 generate this (GCC PR
13592          40573).  */
13593       child_origin_die = child_die;
13594       child_origin_cu = cu;
13595       while (1)
13596         {
13597           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13598                               child_origin_cu);
13599           if (attr == NULL)
13600             break;
13601           child_origin_die = follow_die_ref (child_origin_die, attr,
13602                                              &child_origin_cu);
13603         }
13604
13605       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13606          counterpart may exist.  */
13607       if (child_origin_die != child_die)
13608         {
13609           if (child_die->tag != child_origin_die->tag
13610               && !(child_die->tag == DW_TAG_inlined_subroutine
13611                    && child_origin_die->tag == DW_TAG_subprogram))
13612             complaint (&symfile_complaints,
13613                        _("Child DIE 0x%x and its abstract origin 0x%x have "
13614                          "different tags"),
13615                        to_underlying (child_die->sect_off),
13616                        to_underlying (child_origin_die->sect_off));
13617           if (child_origin_die->parent != origin_die)
13618             complaint (&symfile_complaints,
13619                        _("Child DIE 0x%x and its abstract origin 0x%x have "
13620                          "different parents"),
13621                        to_underlying (child_die->sect_off),
13622                        to_underlying (child_origin_die->sect_off));
13623           else
13624             offsets.push_back (child_origin_die->sect_off);
13625         }
13626     }
13627   std::sort (offsets.begin (), offsets.end ());
13628   sect_offset *offsets_end = offsets.data () + offsets.size ();
13629   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13630     if (offsetp[-1] == *offsetp)
13631       complaint (&symfile_complaints,
13632                  _("Multiple children of DIE 0x%x refer "
13633                    "to DIE 0x%x as their abstract origin"),
13634                  to_underlying (die->sect_off), to_underlying (*offsetp));
13635
13636   offsetp = offsets.data ();
13637   origin_child_die = origin_die->child;
13638   while (origin_child_die && origin_child_die->tag)
13639     {
13640       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13641       while (offsetp < offsets_end
13642              && *offsetp < origin_child_die->sect_off)
13643         offsetp++;
13644       if (offsetp >= offsets_end
13645           || *offsetp > origin_child_die->sect_off)
13646         {
13647           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13648              Check whether we're already processing ORIGIN_CHILD_DIE.
13649              This can happen with mutually referenced abstract_origins.
13650              PR 16581.  */
13651           if (!origin_child_die->in_process)
13652             process_die (origin_child_die, origin_cu);
13653         }
13654       origin_child_die = sibling_die (origin_child_die);
13655     }
13656   origin_cu->list_in_scope = origin_previous_list_in_scope;
13657 }
13658
13659 static void
13660 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13661 {
13662   struct objfile *objfile = cu->objfile;
13663   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13664   struct context_stack *newobj;
13665   CORE_ADDR lowpc;
13666   CORE_ADDR highpc;
13667   struct die_info *child_die;
13668   struct attribute *attr, *call_line, *call_file;
13669   const char *name;
13670   CORE_ADDR baseaddr;
13671   struct block *block;
13672   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13673   std::vector<struct symbol *> template_args;
13674   struct template_symbol *templ_func = NULL;
13675
13676   if (inlined_func)
13677     {
13678       /* If we do not have call site information, we can't show the
13679          caller of this inlined function.  That's too confusing, so
13680          only use the scope for local variables.  */
13681       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13682       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13683       if (call_line == NULL || call_file == NULL)
13684         {
13685           read_lexical_block_scope (die, cu);
13686           return;
13687         }
13688     }
13689
13690   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13691
13692   name = dwarf2_name (die, cu);
13693
13694   /* Ignore functions with missing or empty names.  These are actually
13695      illegal according to the DWARF standard.  */
13696   if (name == NULL)
13697     {
13698       complaint (&symfile_complaints,
13699                  _("missing name for subprogram DIE at %d"),
13700                  to_underlying (die->sect_off));
13701       return;
13702     }
13703
13704   /* Ignore functions with missing or invalid low and high pc attributes.  */
13705   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13706       <= PC_BOUNDS_INVALID)
13707     {
13708       attr = dwarf2_attr (die, DW_AT_external, cu);
13709       if (!attr || !DW_UNSND (attr))
13710         complaint (&symfile_complaints,
13711                    _("cannot get low and high bounds "
13712                      "for subprogram DIE at %d"),
13713                    to_underlying (die->sect_off));
13714       return;
13715     }
13716
13717   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13718   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13719
13720   /* If we have any template arguments, then we must allocate a
13721      different sort of symbol.  */
13722   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13723     {
13724       if (child_die->tag == DW_TAG_template_type_param
13725           || child_die->tag == DW_TAG_template_value_param)
13726         {
13727           templ_func = allocate_template_symbol (objfile);
13728           templ_func->subclass = SYMBOL_TEMPLATE;
13729           break;
13730         }
13731     }
13732
13733   newobj = push_context (0, lowpc);
13734   newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
13735                                (struct symbol *) templ_func);
13736
13737   /* If there is a location expression for DW_AT_frame_base, record
13738      it.  */
13739   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13740   if (attr)
13741     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13742
13743   /* If there is a location for the static link, record it.  */
13744   newobj->static_link = NULL;
13745   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13746   if (attr)
13747     {
13748       newobj->static_link
13749         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13750       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13751     }
13752
13753   cu->list_in_scope = &local_symbols;
13754
13755   if (die->child != NULL)
13756     {
13757       child_die = die->child;
13758       while (child_die && child_die->tag)
13759         {
13760           if (child_die->tag == DW_TAG_template_type_param
13761               || child_die->tag == DW_TAG_template_value_param)
13762             {
13763               struct symbol *arg = new_symbol (child_die, NULL, cu);
13764
13765               if (arg != NULL)
13766                 template_args.push_back (arg);
13767             }
13768           else
13769             process_die (child_die, cu);
13770           child_die = sibling_die (child_die);
13771         }
13772     }
13773
13774   inherit_abstract_dies (die, cu);
13775
13776   /* If we have a DW_AT_specification, we might need to import using
13777      directives from the context of the specification DIE.  See the
13778      comment in determine_prefix.  */
13779   if (cu->language == language_cplus
13780       && dwarf2_attr (die, DW_AT_specification, cu))
13781     {
13782       struct dwarf2_cu *spec_cu = cu;
13783       struct die_info *spec_die = die_specification (die, &spec_cu);
13784
13785       while (spec_die)
13786         {
13787           child_die = spec_die->child;
13788           while (child_die && child_die->tag)
13789             {
13790               if (child_die->tag == DW_TAG_imported_module)
13791                 process_die (child_die, spec_cu);
13792               child_die = sibling_die (child_die);
13793             }
13794
13795           /* In some cases, GCC generates specification DIEs that
13796              themselves contain DW_AT_specification attributes.  */
13797           spec_die = die_specification (spec_die, &spec_cu);
13798         }
13799     }
13800
13801   newobj = pop_context ();
13802   /* Make a block for the local symbols within.  */
13803   block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
13804                         newobj->static_link, lowpc, highpc);
13805
13806   /* For C++, set the block's scope.  */
13807   if ((cu->language == language_cplus
13808        || cu->language == language_fortran
13809        || cu->language == language_d
13810        || cu->language == language_rust)
13811       && cu->processing_has_namespace_info)
13812     block_set_scope (block, determine_prefix (die, cu),
13813                      &objfile->objfile_obstack);
13814
13815   /* If we have address ranges, record them.  */
13816   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13817
13818   gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
13819
13820   /* Attach template arguments to function.  */
13821   if (!template_args.empty ())
13822     {
13823       gdb_assert (templ_func != NULL);
13824
13825       templ_func->n_template_arguments = template_args.size ();
13826       templ_func->template_arguments
13827         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13828                      templ_func->n_template_arguments);
13829       memcpy (templ_func->template_arguments,
13830               template_args.data (),
13831               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13832     }
13833
13834   /* In C++, we can have functions nested inside functions (e.g., when
13835      a function declares a class that has methods).  This means that
13836      when we finish processing a function scope, we may need to go
13837      back to building a containing block's symbol lists.  */
13838   local_symbols = newobj->locals;
13839   local_using_directives = newobj->local_using_directives;
13840
13841   /* If we've finished processing a top-level function, subsequent
13842      symbols go in the file symbol list.  */
13843   if (outermost_context_p ())
13844     cu->list_in_scope = &file_symbols;
13845 }
13846
13847 /* Process all the DIES contained within a lexical block scope.  Start
13848    a new scope, process the dies, and then close the scope.  */
13849
13850 static void
13851 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13852 {
13853   struct objfile *objfile = cu->objfile;
13854   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13855   struct context_stack *newobj;
13856   CORE_ADDR lowpc, highpc;
13857   struct die_info *child_die;
13858   CORE_ADDR baseaddr;
13859
13860   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13861
13862   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13863   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13864      as multiple lexical blocks?  Handling children in a sane way would
13865      be nasty.  Might be easier to properly extend generic blocks to
13866      describe ranges.  */
13867   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13868     {
13869     case PC_BOUNDS_NOT_PRESENT:
13870       /* DW_TAG_lexical_block has no attributes, process its children as if
13871          there was no wrapping by that DW_TAG_lexical_block.
13872          GCC does no longer produces such DWARF since GCC r224161.  */
13873       for (child_die = die->child;
13874            child_die != NULL && child_die->tag;
13875            child_die = sibling_die (child_die))
13876         process_die (child_die, cu);
13877       return;
13878     case PC_BOUNDS_INVALID:
13879       return;
13880     }
13881   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13882   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13883
13884   push_context (0, lowpc);
13885   if (die->child != NULL)
13886     {
13887       child_die = die->child;
13888       while (child_die && child_die->tag)
13889         {
13890           process_die (child_die, cu);
13891           child_die = sibling_die (child_die);
13892         }
13893     }
13894   inherit_abstract_dies (die, cu);
13895   newobj = pop_context ();
13896
13897   if (local_symbols != NULL || local_using_directives != NULL)
13898     {
13899       struct block *block
13900         = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
13901                         newobj->start_addr, highpc);
13902
13903       /* Note that recording ranges after traversing children, as we
13904          do here, means that recording a parent's ranges entails
13905          walking across all its children's ranges as they appear in
13906          the address map, which is quadratic behavior.
13907
13908          It would be nicer to record the parent's ranges before
13909          traversing its children, simply overriding whatever you find
13910          there.  But since we don't even decide whether to create a
13911          block until after we've traversed its children, that's hard
13912          to do.  */
13913       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13914     }
13915   local_symbols = newobj->locals;
13916   local_using_directives = newobj->local_using_directives;
13917 }
13918
13919 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13920
13921 static void
13922 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13923 {
13924   struct objfile *objfile = cu->objfile;
13925   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13926   CORE_ADDR pc, baseaddr;
13927   struct attribute *attr;
13928   struct call_site *call_site, call_site_local;
13929   void **slot;
13930   int nparams;
13931   struct die_info *child_die;
13932
13933   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13934
13935   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13936   if (attr == NULL)
13937     {
13938       /* This was a pre-DWARF-5 GNU extension alias
13939          for DW_AT_call_return_pc.  */
13940       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13941     }
13942   if (!attr)
13943     {
13944       complaint (&symfile_complaints,
13945                  _("missing DW_AT_call_return_pc for DW_TAG_call_site "
13946                    "DIE 0x%x [in module %s]"),
13947                  to_underlying (die->sect_off), objfile_name (objfile));
13948       return;
13949     }
13950   pc = attr_value_as_address (attr) + baseaddr;
13951   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13952
13953   if (cu->call_site_htab == NULL)
13954     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13955                                                NULL, &objfile->objfile_obstack,
13956                                                hashtab_obstack_allocate, NULL);
13957   call_site_local.pc = pc;
13958   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13959   if (*slot != NULL)
13960     {
13961       complaint (&symfile_complaints,
13962                  _("Duplicate PC %s for DW_TAG_call_site "
13963                    "DIE 0x%x [in module %s]"),
13964                  paddress (gdbarch, pc), to_underlying (die->sect_off),
13965                  objfile_name (objfile));
13966       return;
13967     }
13968
13969   /* Count parameters at the caller.  */
13970
13971   nparams = 0;
13972   for (child_die = die->child; child_die && child_die->tag;
13973        child_die = sibling_die (child_die))
13974     {
13975       if (child_die->tag != DW_TAG_call_site_parameter
13976           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13977         {
13978           complaint (&symfile_complaints,
13979                      _("Tag %d is not DW_TAG_call_site_parameter in "
13980                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
13981                      child_die->tag, to_underlying (child_die->sect_off),
13982                      objfile_name (objfile));
13983           continue;
13984         }
13985
13986       nparams++;
13987     }
13988
13989   call_site
13990     = ((struct call_site *)
13991        obstack_alloc (&objfile->objfile_obstack,
13992                       sizeof (*call_site)
13993                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13994   *slot = call_site;
13995   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13996   call_site->pc = pc;
13997
13998   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13999       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14000     {
14001       struct die_info *func_die;
14002
14003       /* Skip also over DW_TAG_inlined_subroutine.  */
14004       for (func_die = die->parent;
14005            func_die && func_die->tag != DW_TAG_subprogram
14006            && func_die->tag != DW_TAG_subroutine_type;
14007            func_die = func_die->parent);
14008
14009       /* DW_AT_call_all_calls is a superset
14010          of DW_AT_call_all_tail_calls.  */
14011       if (func_die
14012           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14013           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14014           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14015           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14016         {
14017           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14018              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14019              both the initial caller containing the real return address PC and
14020              the final callee containing the current PC of a chain of tail
14021              calls do not need to have the tail call list complete.  But any
14022              function candidate for a virtual tail call frame searched via
14023              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14024              determined unambiguously.  */
14025         }
14026       else
14027         {
14028           struct type *func_type = NULL;
14029
14030           if (func_die)
14031             func_type = get_die_type (func_die, cu);
14032           if (func_type != NULL)
14033             {
14034               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14035
14036               /* Enlist this call site to the function.  */
14037               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14038               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14039             }
14040           else
14041             complaint (&symfile_complaints,
14042                        _("Cannot find function owning DW_TAG_call_site "
14043                          "DIE 0x%x [in module %s]"),
14044                        to_underlying (die->sect_off), objfile_name (objfile));
14045         }
14046     }
14047
14048   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14049   if (attr == NULL)
14050     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14051   if (attr == NULL)
14052     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14053   if (attr == NULL)
14054     {
14055       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14056       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14057     }
14058   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14059   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14060     /* Keep NULL DWARF_BLOCK.  */;
14061   else if (attr_form_is_block (attr))
14062     {
14063       struct dwarf2_locexpr_baton *dlbaton;
14064
14065       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14066       dlbaton->data = DW_BLOCK (attr)->data;
14067       dlbaton->size = DW_BLOCK (attr)->size;
14068       dlbaton->per_cu = cu->per_cu;
14069
14070       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14071     }
14072   else if (attr_form_is_ref (attr))
14073     {
14074       struct dwarf2_cu *target_cu = cu;
14075       struct die_info *target_die;
14076
14077       target_die = follow_die_ref (die, attr, &target_cu);
14078       gdb_assert (target_cu->objfile == objfile);
14079       if (die_is_declaration (target_die, target_cu))
14080         {
14081           const char *target_physname;
14082
14083           /* Prefer the mangled name; otherwise compute the demangled one.  */
14084           target_physname = dw2_linkage_name (target_die, target_cu);
14085           if (target_physname == NULL)
14086             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14087           if (target_physname == NULL)
14088             complaint (&symfile_complaints,
14089                        _("DW_AT_call_target target DIE has invalid "
14090                          "physname, for referencing DIE 0x%x [in module %s]"),
14091                        to_underlying (die->sect_off), objfile_name (objfile));
14092           else
14093             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14094         }
14095       else
14096         {
14097           CORE_ADDR lowpc;
14098
14099           /* DW_AT_entry_pc should be preferred.  */
14100           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14101               <= PC_BOUNDS_INVALID)
14102             complaint (&symfile_complaints,
14103                        _("DW_AT_call_target target DIE has invalid "
14104                          "low pc, for referencing DIE 0x%x [in module %s]"),
14105                        to_underlying (die->sect_off), objfile_name (objfile));
14106           else
14107             {
14108               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14109               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14110             }
14111         }
14112     }
14113   else
14114     complaint (&symfile_complaints,
14115                _("DW_TAG_call_site DW_AT_call_target is neither "
14116                  "block nor reference, for DIE 0x%x [in module %s]"),
14117                to_underlying (die->sect_off), objfile_name (objfile));
14118
14119   call_site->per_cu = cu->per_cu;
14120
14121   for (child_die = die->child;
14122        child_die && child_die->tag;
14123        child_die = sibling_die (child_die))
14124     {
14125       struct call_site_parameter *parameter;
14126       struct attribute *loc, *origin;
14127
14128       if (child_die->tag != DW_TAG_call_site_parameter
14129           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14130         {
14131           /* Already printed the complaint above.  */
14132           continue;
14133         }
14134
14135       gdb_assert (call_site->parameter_count < nparams);
14136       parameter = &call_site->parameter[call_site->parameter_count];
14137
14138       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14139          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14140          register is contained in DW_AT_call_value.  */
14141
14142       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14143       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14144       if (origin == NULL)
14145         {
14146           /* This was a pre-DWARF-5 GNU extension alias
14147              for DW_AT_call_parameter.  */
14148           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14149         }
14150       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14151         {
14152           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14153
14154           sect_offset sect_off
14155             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14156           if (!offset_in_cu_p (&cu->header, sect_off))
14157             {
14158               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14159                  binding can be done only inside one CU.  Such referenced DIE
14160                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14161               complaint (&symfile_complaints,
14162                          _("DW_AT_call_parameter offset is not in CU for "
14163                            "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14164                          to_underlying (child_die->sect_off),
14165                          objfile_name (objfile));
14166               continue;
14167             }
14168           parameter->u.param_cu_off
14169             = (cu_offset) (sect_off - cu->header.sect_off);
14170         }
14171       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14172         {
14173           complaint (&symfile_complaints,
14174                      _("No DW_FORM_block* DW_AT_location for "
14175                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14176                      to_underlying (child_die->sect_off), objfile_name (objfile));
14177           continue;
14178         }
14179       else
14180         {
14181           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14182             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14183           if (parameter->u.dwarf_reg != -1)
14184             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14185           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14186                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14187                                              &parameter->u.fb_offset))
14188             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14189           else
14190             {
14191               complaint (&symfile_complaints,
14192                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
14193                            "for DW_FORM_block* DW_AT_location is supported for "
14194                            "DW_TAG_call_site child DIE 0x%x "
14195                            "[in module %s]"),
14196                          to_underlying (child_die->sect_off),
14197                          objfile_name (objfile));
14198               continue;
14199             }
14200         }
14201
14202       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14203       if (attr == NULL)
14204         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14205       if (!attr_form_is_block (attr))
14206         {
14207           complaint (&symfile_complaints,
14208                      _("No DW_FORM_block* DW_AT_call_value for "
14209                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14210                      to_underlying (child_die->sect_off),
14211                      objfile_name (objfile));
14212           continue;
14213         }
14214       parameter->value = DW_BLOCK (attr)->data;
14215       parameter->value_size = DW_BLOCK (attr)->size;
14216
14217       /* Parameters are not pre-cleared by memset above.  */
14218       parameter->data_value = NULL;
14219       parameter->data_value_size = 0;
14220       call_site->parameter_count++;
14221
14222       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14223       if (attr == NULL)
14224         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14225       if (attr)
14226         {
14227           if (!attr_form_is_block (attr))
14228             complaint (&symfile_complaints,
14229                        _("No DW_FORM_block* DW_AT_call_data_value for "
14230                          "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14231                        to_underlying (child_die->sect_off),
14232                        objfile_name (objfile));
14233           else
14234             {
14235               parameter->data_value = DW_BLOCK (attr)->data;
14236               parameter->data_value_size = DW_BLOCK (attr)->size;
14237             }
14238         }
14239     }
14240 }
14241
14242 /* Helper function for read_variable.  If DIE represents a virtual
14243    table, then return the type of the concrete object that is
14244    associated with the virtual table.  Otherwise, return NULL.  */
14245
14246 static struct type *
14247 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14248 {
14249   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14250   if (attr == NULL)
14251     return NULL;
14252
14253   /* Find the type DIE.  */
14254   struct die_info *type_die = NULL;
14255   struct dwarf2_cu *type_cu = cu;
14256
14257   if (attr_form_is_ref (attr))
14258     type_die = follow_die_ref (die, attr, &type_cu);
14259   if (type_die == NULL)
14260     return NULL;
14261
14262   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14263     return NULL;
14264   return die_containing_type (type_die, type_cu);
14265 }
14266
14267 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14268
14269 static void
14270 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14271 {
14272   struct rust_vtable_symbol *storage = NULL;
14273
14274   if (cu->language == language_rust)
14275     {
14276       struct type *containing_type = rust_containing_type (die, cu);
14277
14278       if (containing_type != NULL)
14279         {
14280           struct objfile *objfile = cu->objfile;
14281
14282           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14283                                     struct rust_vtable_symbol);
14284           initialize_objfile_symbol (storage);
14285           storage->concrete_type = containing_type;
14286           storage->subclass = SYMBOL_RUST_VTABLE;
14287         }
14288     }
14289
14290   new_symbol_full (die, NULL, cu, storage);
14291 }
14292
14293 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14294    reading .debug_rnglists.
14295    Callback's type should be:
14296     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14297    Return true if the attributes are present and valid, otherwise,
14298    return false.  */
14299
14300 template <typename Callback>
14301 static bool
14302 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14303                          Callback &&callback)
14304 {
14305   struct objfile *objfile = cu->objfile;
14306   bfd *obfd = objfile->obfd;
14307   /* Base address selection entry.  */
14308   CORE_ADDR base;
14309   int found_base;
14310   const gdb_byte *buffer;
14311   CORE_ADDR baseaddr;
14312   bool overflow = false;
14313
14314   found_base = cu->base_known;
14315   base = cu->base_address;
14316
14317   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14318   if (offset >= dwarf2_per_objfile->rnglists.size)
14319     {
14320       complaint (&symfile_complaints,
14321                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14322                  offset);
14323       return false;
14324     }
14325   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14326
14327   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14328
14329   while (1)
14330     {
14331       /* Initialize it due to a false compiler warning.  */
14332       CORE_ADDR range_beginning = 0, range_end = 0;
14333       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14334                                  + dwarf2_per_objfile->rnglists.size);
14335       unsigned int bytes_read;
14336
14337       if (buffer == buf_end)
14338         {
14339           overflow = true;
14340           break;
14341         }
14342       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14343       switch (rlet)
14344         {
14345         case DW_RLE_end_of_list:
14346           break;
14347         case DW_RLE_base_address:
14348           if (buffer + cu->header.addr_size > buf_end)
14349             {
14350               overflow = true;
14351               break;
14352             }
14353           base = read_address (obfd, buffer, cu, &bytes_read);
14354           found_base = 1;
14355           buffer += bytes_read;
14356           break;
14357         case DW_RLE_start_length:
14358           if (buffer + cu->header.addr_size > buf_end)
14359             {
14360               overflow = true;
14361               break;
14362             }
14363           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14364           buffer += bytes_read;
14365           range_end = (range_beginning
14366                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14367           buffer += bytes_read;
14368           if (buffer > buf_end)
14369             {
14370               overflow = true;
14371               break;
14372             }
14373           break;
14374         case DW_RLE_offset_pair:
14375           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14376           buffer += bytes_read;
14377           if (buffer > buf_end)
14378             {
14379               overflow = true;
14380               break;
14381             }
14382           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14383           buffer += bytes_read;
14384           if (buffer > buf_end)
14385             {
14386               overflow = true;
14387               break;
14388             }
14389           break;
14390         case DW_RLE_start_end:
14391           if (buffer + 2 * cu->header.addr_size > buf_end)
14392             {
14393               overflow = true;
14394               break;
14395             }
14396           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14397           buffer += bytes_read;
14398           range_end = read_address (obfd, buffer, cu, &bytes_read);
14399           buffer += bytes_read;
14400           break;
14401         default:
14402           complaint (&symfile_complaints,
14403                      _("Invalid .debug_rnglists data (no base address)"));
14404           return false;
14405         }
14406       if (rlet == DW_RLE_end_of_list || overflow)
14407         break;
14408       if (rlet == DW_RLE_base_address)
14409         continue;
14410
14411       if (!found_base)
14412         {
14413           /* We have no valid base address for the ranges
14414              data.  */
14415           complaint (&symfile_complaints,
14416                      _("Invalid .debug_rnglists data (no base address)"));
14417           return false;
14418         }
14419
14420       if (range_beginning > range_end)
14421         {
14422           /* Inverted range entries are invalid.  */
14423           complaint (&symfile_complaints,
14424                      _("Invalid .debug_rnglists data (inverted range)"));
14425           return false;
14426         }
14427
14428       /* Empty range entries have no effect.  */
14429       if (range_beginning == range_end)
14430         continue;
14431
14432       range_beginning += base;
14433       range_end += base;
14434
14435       /* A not-uncommon case of bad debug info.
14436          Don't pollute the addrmap with bad data.  */
14437       if (range_beginning + baseaddr == 0
14438           && !dwarf2_per_objfile->has_section_at_zero)
14439         {
14440           complaint (&symfile_complaints,
14441                      _(".debug_rnglists entry has start address of zero"
14442                        " [in module %s]"), objfile_name (objfile));
14443           continue;
14444         }
14445
14446       callback (range_beginning, range_end);
14447     }
14448
14449   if (overflow)
14450     {
14451       complaint (&symfile_complaints,
14452                  _("Offset %d is not terminated "
14453                    "for DW_AT_ranges attribute"),
14454                  offset);
14455       return false;
14456     }
14457
14458   return true;
14459 }
14460
14461 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14462    Callback's type should be:
14463     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14464    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14465
14466 template <typename Callback>
14467 static int
14468 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14469                        Callback &&callback)
14470 {
14471   struct objfile *objfile = cu->objfile;
14472   struct comp_unit_head *cu_header = &cu->header;
14473   bfd *obfd = objfile->obfd;
14474   unsigned int addr_size = cu_header->addr_size;
14475   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14476   /* Base address selection entry.  */
14477   CORE_ADDR base;
14478   int found_base;
14479   unsigned int dummy;
14480   const gdb_byte *buffer;
14481   CORE_ADDR baseaddr;
14482
14483   if (cu_header->version >= 5)
14484     return dwarf2_rnglists_process (offset, cu, callback);
14485
14486   found_base = cu->base_known;
14487   base = cu->base_address;
14488
14489   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14490   if (offset >= dwarf2_per_objfile->ranges.size)
14491     {
14492       complaint (&symfile_complaints,
14493                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14494                  offset);
14495       return 0;
14496     }
14497   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14498
14499   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14500
14501   while (1)
14502     {
14503       CORE_ADDR range_beginning, range_end;
14504
14505       range_beginning = read_address (obfd, buffer, cu, &dummy);
14506       buffer += addr_size;
14507       range_end = read_address (obfd, buffer, cu, &dummy);
14508       buffer += addr_size;
14509       offset += 2 * addr_size;
14510
14511       /* An end of list marker is a pair of zero addresses.  */
14512       if (range_beginning == 0 && range_end == 0)
14513         /* Found the end of list entry.  */
14514         break;
14515
14516       /* Each base address selection entry is a pair of 2 values.
14517          The first is the largest possible address, the second is
14518          the base address.  Check for a base address here.  */
14519       if ((range_beginning & mask) == mask)
14520         {
14521           /* If we found the largest possible address, then we already
14522              have the base address in range_end.  */
14523           base = range_end;
14524           found_base = 1;
14525           continue;
14526         }
14527
14528       if (!found_base)
14529         {
14530           /* We have no valid base address for the ranges
14531              data.  */
14532           complaint (&symfile_complaints,
14533                      _("Invalid .debug_ranges data (no base address)"));
14534           return 0;
14535         }
14536
14537       if (range_beginning > range_end)
14538         {
14539           /* Inverted range entries are invalid.  */
14540           complaint (&symfile_complaints,
14541                      _("Invalid .debug_ranges data (inverted range)"));
14542           return 0;
14543         }
14544
14545       /* Empty range entries have no effect.  */
14546       if (range_beginning == range_end)
14547         continue;
14548
14549       range_beginning += base;
14550       range_end += base;
14551
14552       /* A not-uncommon case of bad debug info.
14553          Don't pollute the addrmap with bad data.  */
14554       if (range_beginning + baseaddr == 0
14555           && !dwarf2_per_objfile->has_section_at_zero)
14556         {
14557           complaint (&symfile_complaints,
14558                      _(".debug_ranges entry has start address of zero"
14559                        " [in module %s]"), objfile_name (objfile));
14560           continue;
14561         }
14562
14563       callback (range_beginning, range_end);
14564     }
14565
14566   return 1;
14567 }
14568
14569 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14570    Return 1 if the attributes are present and valid, otherwise, return 0.
14571    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14572
14573 static int
14574 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14575                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14576                     struct partial_symtab *ranges_pst)
14577 {
14578   struct objfile *objfile = cu->objfile;
14579   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14580   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14581                                        SECT_OFF_TEXT (objfile));
14582   int low_set = 0;
14583   CORE_ADDR low = 0;
14584   CORE_ADDR high = 0;
14585   int retval;
14586
14587   retval = dwarf2_ranges_process (offset, cu,
14588     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14589     {
14590       if (ranges_pst != NULL)
14591         {
14592           CORE_ADDR lowpc;
14593           CORE_ADDR highpc;
14594
14595           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14596                                               range_beginning + baseaddr);
14597           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14598                                                range_end + baseaddr);
14599           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14600                              ranges_pst);
14601         }
14602
14603       /* FIXME: This is recording everything as a low-high
14604          segment of consecutive addresses.  We should have a
14605          data structure for discontiguous block ranges
14606          instead.  */
14607       if (! low_set)
14608         {
14609           low = range_beginning;
14610           high = range_end;
14611           low_set = 1;
14612         }
14613       else
14614         {
14615           if (range_beginning < low)
14616             low = range_beginning;
14617           if (range_end > high)
14618             high = range_end;
14619         }
14620     });
14621   if (!retval)
14622     return 0;
14623
14624   if (! low_set)
14625     /* If the first entry is an end-of-list marker, the range
14626        describes an empty scope, i.e. no instructions.  */
14627     return 0;
14628
14629   if (low_return)
14630     *low_return = low;
14631   if (high_return)
14632     *high_return = high;
14633   return 1;
14634 }
14635
14636 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14637    definition for the return value.  *LOWPC and *HIGHPC are set iff
14638    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14639
14640 static enum pc_bounds_kind
14641 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14642                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14643                       struct partial_symtab *pst)
14644 {
14645   struct attribute *attr;
14646   struct attribute *attr_high;
14647   CORE_ADDR low = 0;
14648   CORE_ADDR high = 0;
14649   enum pc_bounds_kind ret;
14650
14651   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14652   if (attr_high)
14653     {
14654       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14655       if (attr)
14656         {
14657           low = attr_value_as_address (attr);
14658           high = attr_value_as_address (attr_high);
14659           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14660             high += low;
14661         }
14662       else
14663         /* Found high w/o low attribute.  */
14664         return PC_BOUNDS_INVALID;
14665
14666       /* Found consecutive range of addresses.  */
14667       ret = PC_BOUNDS_HIGH_LOW;
14668     }
14669   else
14670     {
14671       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14672       if (attr != NULL)
14673         {
14674           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14675              We take advantage of the fact that DW_AT_ranges does not appear
14676              in DW_TAG_compile_unit of DWO files.  */
14677           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14678           unsigned int ranges_offset = (DW_UNSND (attr)
14679                                         + (need_ranges_base
14680                                            ? cu->ranges_base
14681                                            : 0));
14682
14683           /* Value of the DW_AT_ranges attribute is the offset in the
14684              .debug_ranges section.  */
14685           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14686             return PC_BOUNDS_INVALID;
14687           /* Found discontinuous range of addresses.  */
14688           ret = PC_BOUNDS_RANGES;
14689         }
14690       else
14691         return PC_BOUNDS_NOT_PRESENT;
14692     }
14693
14694   /* read_partial_die has also the strict LOW < HIGH requirement.  */
14695   if (high <= low)
14696     return PC_BOUNDS_INVALID;
14697
14698   /* When using the GNU linker, .gnu.linkonce. sections are used to
14699      eliminate duplicate copies of functions and vtables and such.
14700      The linker will arbitrarily choose one and discard the others.
14701      The AT_*_pc values for such functions refer to local labels in
14702      these sections.  If the section from that file was discarded, the
14703      labels are not in the output, so the relocs get a value of 0.
14704      If this is a discarded function, mark the pc bounds as invalid,
14705      so that GDB will ignore it.  */
14706   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14707     return PC_BOUNDS_INVALID;
14708
14709   *lowpc = low;
14710   if (highpc)
14711     *highpc = high;
14712   return ret;
14713 }
14714
14715 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14716    its low and high PC addresses.  Do nothing if these addresses could not
14717    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14718    and HIGHPC to the high address if greater than HIGHPC.  */
14719
14720 static void
14721 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14722                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14723                                  struct dwarf2_cu *cu)
14724 {
14725   CORE_ADDR low, high;
14726   struct die_info *child = die->child;
14727
14728   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14729     {
14730       *lowpc = std::min (*lowpc, low);
14731       *highpc = std::max (*highpc, high);
14732     }
14733
14734   /* If the language does not allow nested subprograms (either inside
14735      subprograms or lexical blocks), we're done.  */
14736   if (cu->language != language_ada)
14737     return;
14738
14739   /* Check all the children of the given DIE.  If it contains nested
14740      subprograms, then check their pc bounds.  Likewise, we need to
14741      check lexical blocks as well, as they may also contain subprogram
14742      definitions.  */
14743   while (child && child->tag)
14744     {
14745       if (child->tag == DW_TAG_subprogram
14746           || child->tag == DW_TAG_lexical_block)
14747         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14748       child = sibling_die (child);
14749     }
14750 }
14751
14752 /* Get the low and high pc's represented by the scope DIE, and store
14753    them in *LOWPC and *HIGHPC.  If the correct values can't be
14754    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14755
14756 static void
14757 get_scope_pc_bounds (struct die_info *die,
14758                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14759                      struct dwarf2_cu *cu)
14760 {
14761   CORE_ADDR best_low = (CORE_ADDR) -1;
14762   CORE_ADDR best_high = (CORE_ADDR) 0;
14763   CORE_ADDR current_low, current_high;
14764
14765   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14766       >= PC_BOUNDS_RANGES)
14767     {
14768       best_low = current_low;
14769       best_high = current_high;
14770     }
14771   else
14772     {
14773       struct die_info *child = die->child;
14774
14775       while (child && child->tag)
14776         {
14777           switch (child->tag) {
14778           case DW_TAG_subprogram:
14779             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14780             break;
14781           case DW_TAG_namespace:
14782           case DW_TAG_module:
14783             /* FIXME: carlton/2004-01-16: Should we do this for
14784                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14785                that current GCC's always emit the DIEs corresponding
14786                to definitions of methods of classes as children of a
14787                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14788                the DIEs giving the declarations, which could be
14789                anywhere).  But I don't see any reason why the
14790                standards says that they have to be there.  */
14791             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14792
14793             if (current_low != ((CORE_ADDR) -1))
14794               {
14795                 best_low = std::min (best_low, current_low);
14796                 best_high = std::max (best_high, current_high);
14797               }
14798             break;
14799           default:
14800             /* Ignore.  */
14801             break;
14802           }
14803
14804           child = sibling_die (child);
14805         }
14806     }
14807
14808   *lowpc = best_low;
14809   *highpc = best_high;
14810 }
14811
14812 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14813    in DIE.  */
14814
14815 static void
14816 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14817                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14818 {
14819   struct objfile *objfile = cu->objfile;
14820   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14821   struct attribute *attr;
14822   struct attribute *attr_high;
14823
14824   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14825   if (attr_high)
14826     {
14827       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14828       if (attr)
14829         {
14830           CORE_ADDR low = attr_value_as_address (attr);
14831           CORE_ADDR high = attr_value_as_address (attr_high);
14832
14833           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14834             high += low;
14835
14836           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14837           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14838           record_block_range (block, low, high - 1);
14839         }
14840     }
14841
14842   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14843   if (attr)
14844     {
14845       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14846          We take advantage of the fact that DW_AT_ranges does not appear
14847          in DW_TAG_compile_unit of DWO files.  */
14848       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14849
14850       /* The value of the DW_AT_ranges attribute is the offset of the
14851          address range list in the .debug_ranges section.  */
14852       unsigned long offset = (DW_UNSND (attr)
14853                               + (need_ranges_base ? cu->ranges_base : 0));
14854       const gdb_byte *buffer;
14855
14856       /* For some target architectures, but not others, the
14857          read_address function sign-extends the addresses it returns.
14858          To recognize base address selection entries, we need a
14859          mask.  */
14860       unsigned int addr_size = cu->header.addr_size;
14861       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14862
14863       /* The base address, to which the next pair is relative.  Note
14864          that this 'base' is a DWARF concept: most entries in a range
14865          list are relative, to reduce the number of relocs against the
14866          debugging information.  This is separate from this function's
14867          'baseaddr' argument, which GDB uses to relocate debugging
14868          information from a shared library based on the address at
14869          which the library was loaded.  */
14870       CORE_ADDR base = cu->base_address;
14871       int base_known = cu->base_known;
14872
14873       dwarf2_ranges_process (offset, cu,
14874         [&] (CORE_ADDR start, CORE_ADDR end)
14875         {
14876           start += baseaddr;
14877           end += baseaddr;
14878           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14879           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14880           record_block_range (block, start, end - 1);
14881         });
14882     }
14883 }
14884
14885 /* Check whether the producer field indicates either of GCC < 4.6, or the
14886    Intel C/C++ compiler, and cache the result in CU.  */
14887
14888 static void
14889 check_producer (struct dwarf2_cu *cu)
14890 {
14891   int major, minor;
14892
14893   if (cu->producer == NULL)
14894     {
14895       /* For unknown compilers expect their behavior is DWARF version
14896          compliant.
14897
14898          GCC started to support .debug_types sections by -gdwarf-4 since
14899          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14900          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14901          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14902          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14903     }
14904   else if (producer_is_gcc (cu->producer, &major, &minor))
14905     {
14906       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14907       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14908     }
14909   else if (producer_is_icc (cu->producer, &major, &minor))
14910     cu->producer_is_icc_lt_14 = major < 14;
14911   else
14912     {
14913       /* For other non-GCC compilers, expect their behavior is DWARF version
14914          compliant.  */
14915     }
14916
14917   cu->checked_producer = 1;
14918 }
14919
14920 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14921    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14922    during 4.6.0 experimental.  */
14923
14924 static int
14925 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14926 {
14927   if (!cu->checked_producer)
14928     check_producer (cu);
14929
14930   return cu->producer_is_gxx_lt_4_6;
14931 }
14932
14933 /* Return the default accessibility type if it is not overriden by
14934    DW_AT_accessibility.  */
14935
14936 static enum dwarf_access_attribute
14937 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14938 {
14939   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14940     {
14941       /* The default DWARF 2 accessibility for members is public, the default
14942          accessibility for inheritance is private.  */
14943
14944       if (die->tag != DW_TAG_inheritance)
14945         return DW_ACCESS_public;
14946       else
14947         return DW_ACCESS_private;
14948     }
14949   else
14950     {
14951       /* DWARF 3+ defines the default accessibility a different way.  The same
14952          rules apply now for DW_TAG_inheritance as for the members and it only
14953          depends on the container kind.  */
14954
14955       if (die->parent->tag == DW_TAG_class_type)
14956         return DW_ACCESS_private;
14957       else
14958         return DW_ACCESS_public;
14959     }
14960 }
14961
14962 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14963    offset.  If the attribute was not found return 0, otherwise return
14964    1.  If it was found but could not properly be handled, set *OFFSET
14965    to 0.  */
14966
14967 static int
14968 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14969                              LONGEST *offset)
14970 {
14971   struct attribute *attr;
14972
14973   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14974   if (attr != NULL)
14975     {
14976       *offset = 0;
14977
14978       /* Note that we do not check for a section offset first here.
14979          This is because DW_AT_data_member_location is new in DWARF 4,
14980          so if we see it, we can assume that a constant form is really
14981          a constant and not a section offset.  */
14982       if (attr_form_is_constant (attr))
14983         *offset = dwarf2_get_attr_constant_value (attr, 0);
14984       else if (attr_form_is_section_offset (attr))
14985         dwarf2_complex_location_expr_complaint ();
14986       else if (attr_form_is_block (attr))
14987         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14988       else
14989         dwarf2_complex_location_expr_complaint ();
14990
14991       return 1;
14992     }
14993
14994   return 0;
14995 }
14996
14997 /* Add an aggregate field to the field list.  */
14998
14999 static void
15000 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15001                   struct dwarf2_cu *cu)
15002 {
15003   struct objfile *objfile = cu->objfile;
15004   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15005   struct nextfield *new_field;
15006   struct attribute *attr;
15007   struct field *fp;
15008   const char *fieldname = "";
15009
15010   /* Allocate a new field list entry and link it in.  */
15011   new_field = XNEW (struct nextfield);
15012   make_cleanup (xfree, new_field);
15013   memset (new_field, 0, sizeof (struct nextfield));
15014
15015   if (die->tag == DW_TAG_inheritance)
15016     {
15017       new_field->next = fip->baseclasses;
15018       fip->baseclasses = new_field;
15019     }
15020   else
15021     {
15022       new_field->next = fip->fields;
15023       fip->fields = new_field;
15024     }
15025   fip->nfields++;
15026
15027   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15028   if (attr)
15029     new_field->accessibility = DW_UNSND (attr);
15030   else
15031     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15032   if (new_field->accessibility != DW_ACCESS_public)
15033     fip->non_public_fields = 1;
15034
15035   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15036   if (attr)
15037     new_field->virtuality = DW_UNSND (attr);
15038   else
15039     new_field->virtuality = DW_VIRTUALITY_none;
15040
15041   fp = &new_field->field;
15042
15043   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15044     {
15045       LONGEST offset;
15046
15047       /* Data member other than a C++ static data member.  */
15048
15049       /* Get type of field.  */
15050       fp->type = die_type (die, cu);
15051
15052       SET_FIELD_BITPOS (*fp, 0);
15053
15054       /* Get bit size of field (zero if none).  */
15055       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15056       if (attr)
15057         {
15058           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15059         }
15060       else
15061         {
15062           FIELD_BITSIZE (*fp) = 0;
15063         }
15064
15065       /* Get bit offset of field.  */
15066       if (handle_data_member_location (die, cu, &offset))
15067         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15068       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15069       if (attr)
15070         {
15071           if (gdbarch_bits_big_endian (gdbarch))
15072             {
15073               /* For big endian bits, the DW_AT_bit_offset gives the
15074                  additional bit offset from the MSB of the containing
15075                  anonymous object to the MSB of the field.  We don't
15076                  have to do anything special since we don't need to
15077                  know the size of the anonymous object.  */
15078               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15079             }
15080           else
15081             {
15082               /* For little endian bits, compute the bit offset to the
15083                  MSB of the anonymous object, subtract off the number of
15084                  bits from the MSB of the field to the MSB of the
15085                  object, and then subtract off the number of bits of
15086                  the field itself.  The result is the bit offset of
15087                  the LSB of the field.  */
15088               int anonymous_size;
15089               int bit_offset = DW_UNSND (attr);
15090
15091               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15092               if (attr)
15093                 {
15094                   /* The size of the anonymous object containing
15095                      the bit field is explicit, so use the
15096                      indicated size (in bytes).  */
15097                   anonymous_size = DW_UNSND (attr);
15098                 }
15099               else
15100                 {
15101                   /* The size of the anonymous object containing
15102                      the bit field must be inferred from the type
15103                      attribute of the data member containing the
15104                      bit field.  */
15105                   anonymous_size = TYPE_LENGTH (fp->type);
15106                 }
15107               SET_FIELD_BITPOS (*fp,
15108                                 (FIELD_BITPOS (*fp)
15109                                  + anonymous_size * bits_per_byte
15110                                  - bit_offset - FIELD_BITSIZE (*fp)));
15111             }
15112         }
15113       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15114       if (attr != NULL)
15115         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15116                                 + dwarf2_get_attr_constant_value (attr, 0)));
15117
15118       /* Get name of field.  */
15119       fieldname = dwarf2_name (die, cu);
15120       if (fieldname == NULL)
15121         fieldname = "";
15122
15123       /* The name is already allocated along with this objfile, so we don't
15124          need to duplicate it for the type.  */
15125       fp->name = fieldname;
15126
15127       /* Change accessibility for artificial fields (e.g. virtual table
15128          pointer or virtual base class pointer) to private.  */
15129       if (dwarf2_attr (die, DW_AT_artificial, cu))
15130         {
15131           FIELD_ARTIFICIAL (*fp) = 1;
15132           new_field->accessibility = DW_ACCESS_private;
15133           fip->non_public_fields = 1;
15134         }
15135     }
15136   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15137     {
15138       /* C++ static member.  */
15139
15140       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15141          is a declaration, but all versions of G++ as of this writing
15142          (so through at least 3.2.1) incorrectly generate
15143          DW_TAG_variable tags.  */
15144
15145       const char *physname;
15146
15147       /* Get name of field.  */
15148       fieldname = dwarf2_name (die, cu);
15149       if (fieldname == NULL)
15150         return;
15151
15152       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15153       if (attr
15154           /* Only create a symbol if this is an external value.
15155              new_symbol checks this and puts the value in the global symbol
15156              table, which we want.  If it is not external, new_symbol
15157              will try to put the value in cu->list_in_scope which is wrong.  */
15158           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15159         {
15160           /* A static const member, not much different than an enum as far as
15161              we're concerned, except that we can support more types.  */
15162           new_symbol (die, NULL, cu);
15163         }
15164
15165       /* Get physical name.  */
15166       physname = dwarf2_physname (fieldname, die, cu);
15167
15168       /* The name is already allocated along with this objfile, so we don't
15169          need to duplicate it for the type.  */
15170       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15171       FIELD_TYPE (*fp) = die_type (die, cu);
15172       FIELD_NAME (*fp) = fieldname;
15173     }
15174   else if (die->tag == DW_TAG_inheritance)
15175     {
15176       LONGEST offset;
15177
15178       /* C++ base class field.  */
15179       if (handle_data_member_location (die, cu, &offset))
15180         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15181       FIELD_BITSIZE (*fp) = 0;
15182       FIELD_TYPE (*fp) = die_type (die, cu);
15183       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
15184       fip->nbaseclasses++;
15185     }
15186 }
15187
15188 /* Can the type given by DIE define another type?  */
15189
15190 static bool
15191 type_can_define_types (const struct die_info *die)
15192 {
15193   switch (die->tag)
15194     {
15195     case DW_TAG_typedef:
15196     case DW_TAG_class_type:
15197     case DW_TAG_structure_type:
15198     case DW_TAG_union_type:
15199     case DW_TAG_enumeration_type:
15200       return true;
15201
15202     default:
15203       return false;
15204     }
15205 }
15206
15207 /* Add a type definition defined in the scope of the FIP's class.  */
15208
15209 static void
15210 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15211                       struct dwarf2_cu *cu)
15212 {
15213   struct decl_field_list *new_field;
15214   struct decl_field *fp;
15215
15216   /* Allocate a new field list entry and link it in.  */
15217   new_field = XCNEW (struct decl_field_list);
15218   make_cleanup (xfree, new_field);
15219
15220   gdb_assert (type_can_define_types (die));
15221
15222   fp = &new_field->field;
15223
15224   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15225   fp->name = dwarf2_name (die, cu);
15226   fp->type = read_type_die (die, cu);
15227
15228   /* Save accessibility.  */
15229   enum dwarf_access_attribute accessibility;
15230   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15231   if (attr != NULL)
15232     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15233   else
15234     accessibility = dwarf2_default_access_attribute (die, cu);
15235   switch (accessibility)
15236     {
15237     case DW_ACCESS_public:
15238       /* The assumed value if neither private nor protected.  */
15239       break;
15240     case DW_ACCESS_private:
15241       fp->is_private = 1;
15242       break;
15243     case DW_ACCESS_protected:
15244       fp->is_protected = 1;
15245       break;
15246     default:
15247       complaint (&symfile_complaints,
15248                  _("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15249     }
15250
15251   if (die->tag == DW_TAG_typedef)
15252     {
15253       new_field->next = fip->typedef_field_list;
15254       fip->typedef_field_list = new_field;
15255       fip->typedef_field_list_count++;
15256     }
15257   else
15258     {
15259       new_field->next = fip->nested_types_list;
15260       fip->nested_types_list = new_field;
15261       fip->nested_types_list_count++;
15262     }
15263 }
15264
15265 /* Create the vector of fields, and attach it to the type.  */
15266
15267 static void
15268 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15269                               struct dwarf2_cu *cu)
15270 {
15271   int nfields = fip->nfields;
15272
15273   /* Record the field count, allocate space for the array of fields,
15274      and create blank accessibility bitfields if necessary.  */
15275   TYPE_NFIELDS (type) = nfields;
15276   TYPE_FIELDS (type) = (struct field *)
15277     TYPE_ALLOC (type, sizeof (struct field) * nfields);
15278   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
15279
15280   if (fip->non_public_fields && cu->language != language_ada)
15281     {
15282       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15283
15284       TYPE_FIELD_PRIVATE_BITS (type) =
15285         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15286       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15287
15288       TYPE_FIELD_PROTECTED_BITS (type) =
15289         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15290       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15291
15292       TYPE_FIELD_IGNORE_BITS (type) =
15293         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15294       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15295     }
15296
15297   /* If the type has baseclasses, allocate and clear a bit vector for
15298      TYPE_FIELD_VIRTUAL_BITS.  */
15299   if (fip->nbaseclasses && cu->language != language_ada)
15300     {
15301       int num_bytes = B_BYTES (fip->nbaseclasses);
15302       unsigned char *pointer;
15303
15304       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15305       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15306       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15307       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
15308       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
15309     }
15310
15311   /* Copy the saved-up fields into the field vector.  Start from the head of
15312      the list, adding to the tail of the field array, so that they end up in
15313      the same order in the array in which they were added to the list.  */
15314   while (nfields-- > 0)
15315     {
15316       struct nextfield *fieldp;
15317
15318       if (fip->fields)
15319         {
15320           fieldp = fip->fields;
15321           fip->fields = fieldp->next;
15322         }
15323       else
15324         {
15325           fieldp = fip->baseclasses;
15326           fip->baseclasses = fieldp->next;
15327         }
15328
15329       TYPE_FIELD (type, nfields) = fieldp->field;
15330       switch (fieldp->accessibility)
15331         {
15332         case DW_ACCESS_private:
15333           if (cu->language != language_ada)
15334             SET_TYPE_FIELD_PRIVATE (type, nfields);
15335           break;
15336
15337         case DW_ACCESS_protected:
15338           if (cu->language != language_ada)
15339             SET_TYPE_FIELD_PROTECTED (type, nfields);
15340           break;
15341
15342         case DW_ACCESS_public:
15343           break;
15344
15345         default:
15346           /* Unknown accessibility.  Complain and treat it as public.  */
15347           {
15348             complaint (&symfile_complaints, _("unsupported accessibility %d"),
15349                        fieldp->accessibility);
15350           }
15351           break;
15352         }
15353       if (nfields < fip->nbaseclasses)
15354         {
15355           switch (fieldp->virtuality)
15356             {
15357             case DW_VIRTUALITY_virtual:
15358             case DW_VIRTUALITY_pure_virtual:
15359               if (cu->language == language_ada)
15360                 error (_("unexpected virtuality in component of Ada type"));
15361               SET_TYPE_FIELD_VIRTUAL (type, nfields);
15362               break;
15363             }
15364         }
15365     }
15366 }
15367
15368 /* Return true if this member function is a constructor, false
15369    otherwise.  */
15370
15371 static int
15372 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15373 {
15374   const char *fieldname;
15375   const char *type_name;
15376   int len;
15377
15378   if (die->parent == NULL)
15379     return 0;
15380
15381   if (die->parent->tag != DW_TAG_structure_type
15382       && die->parent->tag != DW_TAG_union_type
15383       && die->parent->tag != DW_TAG_class_type)
15384     return 0;
15385
15386   fieldname = dwarf2_name (die, cu);
15387   type_name = dwarf2_name (die->parent, cu);
15388   if (fieldname == NULL || type_name == NULL)
15389     return 0;
15390
15391   len = strlen (fieldname);
15392   return (strncmp (fieldname, type_name, len) == 0
15393           && (type_name[len] == '\0' || type_name[len] == '<'));
15394 }
15395
15396 /* Add a member function to the proper fieldlist.  */
15397
15398 static void
15399 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15400                       struct type *type, struct dwarf2_cu *cu)
15401 {
15402   struct objfile *objfile = cu->objfile;
15403   struct attribute *attr;
15404   struct fnfieldlist *flp;
15405   int i;
15406   struct fn_field *fnp;
15407   const char *fieldname;
15408   struct nextfnfield *new_fnfield;
15409   struct type *this_type;
15410   enum dwarf_access_attribute accessibility;
15411
15412   if (cu->language == language_ada)
15413     error (_("unexpected member function in Ada type"));
15414
15415   /* Get name of member function.  */
15416   fieldname = dwarf2_name (die, cu);
15417   if (fieldname == NULL)
15418     return;
15419
15420   /* Look up member function name in fieldlist.  */
15421   for (i = 0; i < fip->nfnfields; i++)
15422     {
15423       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15424         break;
15425     }
15426
15427   /* Create new list element if necessary.  */
15428   if (i < fip->nfnfields)
15429     flp = &fip->fnfieldlists[i];
15430   else
15431     {
15432       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
15433         {
15434           fip->fnfieldlists = (struct fnfieldlist *)
15435             xrealloc (fip->fnfieldlists,
15436                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
15437                       * sizeof (struct fnfieldlist));
15438           if (fip->nfnfields == 0)
15439             make_cleanup (free_current_contents, &fip->fnfieldlists);
15440         }
15441       flp = &fip->fnfieldlists[fip->nfnfields];
15442       flp->name = fieldname;
15443       flp->length = 0;
15444       flp->head = NULL;
15445       i = fip->nfnfields++;
15446     }
15447
15448   /* Create a new member function field and chain it to the field list
15449      entry.  */
15450   new_fnfield = XNEW (struct nextfnfield);
15451   make_cleanup (xfree, new_fnfield);
15452   memset (new_fnfield, 0, sizeof (struct nextfnfield));
15453   new_fnfield->next = flp->head;
15454   flp->head = new_fnfield;
15455   flp->length++;
15456
15457   /* Fill in the member function field info.  */
15458   fnp = &new_fnfield->fnfield;
15459
15460   /* Delay processing of the physname until later.  */
15461   if (cu->language == language_cplus)
15462     {
15463       add_to_method_list (type, i, flp->length - 1, fieldname,
15464                           die, cu);
15465     }
15466   else
15467     {
15468       const char *physname = dwarf2_physname (fieldname, die, cu);
15469       fnp->physname = physname ? physname : "";
15470     }
15471
15472   fnp->type = alloc_type (objfile);
15473   this_type = read_type_die (die, cu);
15474   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15475     {
15476       int nparams = TYPE_NFIELDS (this_type);
15477
15478       /* TYPE is the domain of this method, and THIS_TYPE is the type
15479            of the method itself (TYPE_CODE_METHOD).  */
15480       smash_to_method_type (fnp->type, type,
15481                             TYPE_TARGET_TYPE (this_type),
15482                             TYPE_FIELDS (this_type),
15483                             TYPE_NFIELDS (this_type),
15484                             TYPE_VARARGS (this_type));
15485
15486       /* Handle static member functions.
15487          Dwarf2 has no clean way to discern C++ static and non-static
15488          member functions.  G++ helps GDB by marking the first
15489          parameter for non-static member functions (which is the this
15490          pointer) as artificial.  We obtain this information from
15491          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15492       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15493         fnp->voffset = VOFFSET_STATIC;
15494     }
15495   else
15496     complaint (&symfile_complaints, _("member function type missing for '%s'"),
15497                dwarf2_full_name (fieldname, die, cu));
15498
15499   /* Get fcontext from DW_AT_containing_type if present.  */
15500   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15501     fnp->fcontext = die_containing_type (die, cu);
15502
15503   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15504      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15505
15506   /* Get accessibility.  */
15507   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15508   if (attr)
15509     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15510   else
15511     accessibility = dwarf2_default_access_attribute (die, cu);
15512   switch (accessibility)
15513     {
15514     case DW_ACCESS_private:
15515       fnp->is_private = 1;
15516       break;
15517     case DW_ACCESS_protected:
15518       fnp->is_protected = 1;
15519       break;
15520     }
15521
15522   /* Check for artificial methods.  */
15523   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15524   if (attr && DW_UNSND (attr) != 0)
15525     fnp->is_artificial = 1;
15526
15527   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15528
15529   /* Get index in virtual function table if it is a virtual member
15530      function.  For older versions of GCC, this is an offset in the
15531      appropriate virtual table, as specified by DW_AT_containing_type.
15532      For everyone else, it is an expression to be evaluated relative
15533      to the object address.  */
15534
15535   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15536   if (attr)
15537     {
15538       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15539         {
15540           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15541             {
15542               /* Old-style GCC.  */
15543               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15544             }
15545           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15546                    || (DW_BLOCK (attr)->size > 1
15547                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15548                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15549             {
15550               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15551               if ((fnp->voffset % cu->header.addr_size) != 0)
15552                 dwarf2_complex_location_expr_complaint ();
15553               else
15554                 fnp->voffset /= cu->header.addr_size;
15555               fnp->voffset += 2;
15556             }
15557           else
15558             dwarf2_complex_location_expr_complaint ();
15559
15560           if (!fnp->fcontext)
15561             {
15562               /* If there is no `this' field and no DW_AT_containing_type,
15563                  we cannot actually find a base class context for the
15564                  vtable!  */
15565               if (TYPE_NFIELDS (this_type) == 0
15566                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15567                 {
15568                   complaint (&symfile_complaints,
15569                              _("cannot determine context for virtual member "
15570                                "function \"%s\" (offset %d)"),
15571                              fieldname, to_underlying (die->sect_off));
15572                 }
15573               else
15574                 {
15575                   fnp->fcontext
15576                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15577                 }
15578             }
15579         }
15580       else if (attr_form_is_section_offset (attr))
15581         {
15582           dwarf2_complex_location_expr_complaint ();
15583         }
15584       else
15585         {
15586           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15587                                                  fieldname);
15588         }
15589     }
15590   else
15591     {
15592       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15593       if (attr && DW_UNSND (attr))
15594         {
15595           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15596           complaint (&symfile_complaints,
15597                      _("Member function \"%s\" (offset %d) is virtual "
15598                        "but the vtable offset is not specified"),
15599                      fieldname, to_underlying (die->sect_off));
15600           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15601           TYPE_CPLUS_DYNAMIC (type) = 1;
15602         }
15603     }
15604 }
15605
15606 /* Create the vector of member function fields, and attach it to the type.  */
15607
15608 static void
15609 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15610                                  struct dwarf2_cu *cu)
15611 {
15612   struct fnfieldlist *flp;
15613   int i;
15614
15615   if (cu->language == language_ada)
15616     error (_("unexpected member functions in Ada type"));
15617
15618   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15619   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15620     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
15621
15622   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
15623     {
15624       struct nextfnfield *nfp = flp->head;
15625       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15626       int k;
15627
15628       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
15629       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
15630       fn_flp->fn_fields = (struct fn_field *)
15631         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
15632       for (k = flp->length; (k--, nfp); nfp = nfp->next)
15633         fn_flp->fn_fields[k] = nfp->fnfield;
15634     }
15635
15636   TYPE_NFN_FIELDS (type) = fip->nfnfields;
15637 }
15638
15639 /* Returns non-zero if NAME is the name of a vtable member in CU's
15640    language, zero otherwise.  */
15641 static int
15642 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15643 {
15644   static const char vptr[] = "_vptr";
15645
15646   /* Look for the C++ form of the vtable.  */
15647   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15648     return 1;
15649
15650   return 0;
15651 }
15652
15653 /* GCC outputs unnamed structures that are really pointers to member
15654    functions, with the ABI-specified layout.  If TYPE describes
15655    such a structure, smash it into a member function type.
15656
15657    GCC shouldn't do this; it should just output pointer to member DIEs.
15658    This is GCC PR debug/28767.  */
15659
15660 static void
15661 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15662 {
15663   struct type *pfn_type, *self_type, *new_type;
15664
15665   /* Check for a structure with no name and two children.  */
15666   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15667     return;
15668
15669   /* Check for __pfn and __delta members.  */
15670   if (TYPE_FIELD_NAME (type, 0) == NULL
15671       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15672       || TYPE_FIELD_NAME (type, 1) == NULL
15673       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15674     return;
15675
15676   /* Find the type of the method.  */
15677   pfn_type = TYPE_FIELD_TYPE (type, 0);
15678   if (pfn_type == NULL
15679       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15680       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15681     return;
15682
15683   /* Look for the "this" argument.  */
15684   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15685   if (TYPE_NFIELDS (pfn_type) == 0
15686       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15687       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15688     return;
15689
15690   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15691   new_type = alloc_type (objfile);
15692   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15693                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15694                         TYPE_VARARGS (pfn_type));
15695   smash_to_methodptr_type (type, new_type);
15696 }
15697
15698
15699 /* Called when we find the DIE that starts a structure or union scope
15700    (definition) to create a type for the structure or union.  Fill in
15701    the type's name and general properties; the members will not be
15702    processed until process_structure_scope.  A symbol table entry for
15703    the type will also not be done until process_structure_scope (assuming
15704    the type has a name).
15705
15706    NOTE: we need to call these functions regardless of whether or not the
15707    DIE has a DW_AT_name attribute, since it might be an anonymous
15708    structure or union.  This gets the type entered into our set of
15709    user defined types.  */
15710
15711 static struct type *
15712 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15713 {
15714   struct objfile *objfile = cu->objfile;
15715   struct type *type;
15716   struct attribute *attr;
15717   const char *name;
15718
15719   /* If the definition of this type lives in .debug_types, read that type.
15720      Don't follow DW_AT_specification though, that will take us back up
15721      the chain and we want to go down.  */
15722   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15723   if (attr)
15724     {
15725       type = get_DW_AT_signature_type (die, attr, cu);
15726
15727       /* The type's CU may not be the same as CU.
15728          Ensure TYPE is recorded with CU in die_type_hash.  */
15729       return set_die_type (die, type, cu);
15730     }
15731
15732   type = alloc_type (objfile);
15733   INIT_CPLUS_SPECIFIC (type);
15734
15735   name = dwarf2_name (die, cu);
15736   if (name != NULL)
15737     {
15738       if (cu->language == language_cplus
15739           || cu->language == language_d
15740           || cu->language == language_rust)
15741         {
15742           const char *full_name = dwarf2_full_name (name, die, cu);
15743
15744           /* dwarf2_full_name might have already finished building the DIE's
15745              type.  If so, there is no need to continue.  */
15746           if (get_die_type (die, cu) != NULL)
15747             return get_die_type (die, cu);
15748
15749           TYPE_TAG_NAME (type) = full_name;
15750           if (die->tag == DW_TAG_structure_type
15751               || die->tag == DW_TAG_class_type)
15752             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15753         }
15754       else
15755         {
15756           /* The name is already allocated along with this objfile, so
15757              we don't need to duplicate it for the type.  */
15758           TYPE_TAG_NAME (type) = name;
15759           if (die->tag == DW_TAG_class_type)
15760             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15761         }
15762     }
15763
15764   if (die->tag == DW_TAG_structure_type)
15765     {
15766       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15767     }
15768   else if (die->tag == DW_TAG_union_type)
15769     {
15770       TYPE_CODE (type) = TYPE_CODE_UNION;
15771     }
15772   else
15773     {
15774       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15775     }
15776
15777   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15778     TYPE_DECLARED_CLASS (type) = 1;
15779
15780   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15781   if (attr)
15782     {
15783       if (attr_form_is_constant (attr))
15784         TYPE_LENGTH (type) = DW_UNSND (attr);
15785       else
15786         {
15787           /* For the moment, dynamic type sizes are not supported
15788              by GDB's struct type.  The actual size is determined
15789              on-demand when resolving the type of a given object,
15790              so set the type's length to zero for now.  Otherwise,
15791              we record an expression as the length, and that expression
15792              could lead to a very large value, which could eventually
15793              lead to us trying to allocate that much memory when creating
15794              a value of that type.  */
15795           TYPE_LENGTH (type) = 0;
15796         }
15797     }
15798   else
15799     {
15800       TYPE_LENGTH (type) = 0;
15801     }
15802
15803   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15804     {
15805       /* ICC<14 does not output the required DW_AT_declaration on
15806          incomplete types, but gives them a size of zero.  */
15807       TYPE_STUB (type) = 1;
15808     }
15809   else
15810     TYPE_STUB_SUPPORTED (type) = 1;
15811
15812   if (die_is_declaration (die, cu))
15813     TYPE_STUB (type) = 1;
15814   else if (attr == NULL && die->child == NULL
15815            && producer_is_realview (cu->producer))
15816     /* RealView does not output the required DW_AT_declaration
15817        on incomplete types.  */
15818     TYPE_STUB (type) = 1;
15819
15820   /* We need to add the type field to the die immediately so we don't
15821      infinitely recurse when dealing with pointers to the structure
15822      type within the structure itself.  */
15823   set_die_type (die, type, cu);
15824
15825   /* set_die_type should be already done.  */
15826   set_descriptive_type (type, die, cu);
15827
15828   return type;
15829 }
15830
15831 /* Finish creating a structure or union type, including filling in
15832    its members and creating a symbol for it.  */
15833
15834 static void
15835 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15836 {
15837   struct objfile *objfile = cu->objfile;
15838   struct die_info *child_die;
15839   struct type *type;
15840
15841   type = get_die_type (die, cu);
15842   if (type == NULL)
15843     type = read_structure_type (die, cu);
15844
15845   if (die->child != NULL && ! die_is_declaration (die, cu))
15846     {
15847       struct field_info fi;
15848       std::vector<struct symbol *> template_args;
15849       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
15850
15851       memset (&fi, 0, sizeof (struct field_info));
15852
15853       child_die = die->child;
15854
15855       while (child_die && child_die->tag)
15856         {
15857           if (child_die->tag == DW_TAG_member
15858               || child_die->tag == DW_TAG_variable)
15859             {
15860               /* NOTE: carlton/2002-11-05: A C++ static data member
15861                  should be a DW_TAG_member that is a declaration, but
15862                  all versions of G++ as of this writing (so through at
15863                  least 3.2.1) incorrectly generate DW_TAG_variable
15864                  tags for them instead.  */
15865               dwarf2_add_field (&fi, child_die, cu);
15866             }
15867           else if (child_die->tag == DW_TAG_subprogram)
15868             {
15869               /* Rust doesn't have member functions in the C++ sense.
15870                  However, it does emit ordinary functions as children
15871                  of a struct DIE.  */
15872               if (cu->language == language_rust)
15873                 read_func_scope (child_die, cu);
15874               else
15875                 {
15876                   /* C++ member function.  */
15877                   dwarf2_add_member_fn (&fi, child_die, type, cu);
15878                 }
15879             }
15880           else if (child_die->tag == DW_TAG_inheritance)
15881             {
15882               /* C++ base class field.  */
15883               dwarf2_add_field (&fi, child_die, cu);
15884             }
15885           else if (type_can_define_types (child_die))
15886             dwarf2_add_type_defn (&fi, child_die, cu);
15887           else if (child_die->tag == DW_TAG_template_type_param
15888                    || child_die->tag == DW_TAG_template_value_param)
15889             {
15890               struct symbol *arg = new_symbol (child_die, NULL, cu);
15891
15892               if (arg != NULL)
15893                 template_args.push_back (arg);
15894             }
15895
15896           child_die = sibling_die (child_die);
15897         }
15898
15899       /* Attach template arguments to type.  */
15900       if (!template_args.empty ())
15901         {
15902           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15903           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
15904           TYPE_TEMPLATE_ARGUMENTS (type)
15905             = XOBNEWVEC (&objfile->objfile_obstack,
15906                          struct symbol *,
15907                          TYPE_N_TEMPLATE_ARGUMENTS (type));
15908           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
15909                   template_args.data (),
15910                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
15911                    * sizeof (struct symbol *)));
15912         }
15913
15914       /* Attach fields and member functions to the type.  */
15915       if (fi.nfields)
15916         dwarf2_attach_fields_to_type (&fi, type, cu);
15917       if (fi.nfnfields)
15918         {
15919           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
15920
15921           /* Get the type which refers to the base class (possibly this
15922              class itself) which contains the vtable pointer for the current
15923              class from the DW_AT_containing_type attribute.  This use of
15924              DW_AT_containing_type is a GNU extension.  */
15925
15926           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15927             {
15928               struct type *t = die_containing_type (die, cu);
15929
15930               set_type_vptr_basetype (type, t);
15931               if (type == t)
15932                 {
15933                   int i;
15934
15935                   /* Our own class provides vtbl ptr.  */
15936                   for (i = TYPE_NFIELDS (t) - 1;
15937                        i >= TYPE_N_BASECLASSES (t);
15938                        --i)
15939                     {
15940                       const char *fieldname = TYPE_FIELD_NAME (t, i);
15941
15942                       if (is_vtable_name (fieldname, cu))
15943                         {
15944                           set_type_vptr_fieldno (type, i);
15945                           break;
15946                         }
15947                     }
15948
15949                   /* Complain if virtual function table field not found.  */
15950                   if (i < TYPE_N_BASECLASSES (t))
15951                     complaint (&symfile_complaints,
15952                                _("virtual function table pointer "
15953                                  "not found when defining class '%s'"),
15954                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
15955                                "");
15956                 }
15957               else
15958                 {
15959                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
15960                 }
15961             }
15962           else if (cu->producer
15963                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
15964             {
15965               /* The IBM XLC compiler does not provide direct indication
15966                  of the containing type, but the vtable pointer is
15967                  always named __vfp.  */
15968
15969               int i;
15970
15971               for (i = TYPE_NFIELDS (type) - 1;
15972                    i >= TYPE_N_BASECLASSES (type);
15973                    --i)
15974                 {
15975                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
15976                     {
15977                       set_type_vptr_fieldno (type, i);
15978                       set_type_vptr_basetype (type, type);
15979                       break;
15980                     }
15981                 }
15982             }
15983         }
15984
15985       /* Copy fi.typedef_field_list linked list elements content into the
15986          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
15987       if (fi.typedef_field_list)
15988         {
15989           int i = fi.typedef_field_list_count;
15990
15991           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15992           TYPE_TYPEDEF_FIELD_ARRAY (type)
15993             = ((struct decl_field *)
15994                TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i));
15995           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
15996
15997           /* Reverse the list order to keep the debug info elements order.  */
15998           while (--i >= 0)
15999             {
16000               struct decl_field *dest, *src;
16001
16002               dest = &TYPE_TYPEDEF_FIELD (type, i);
16003               src = &fi.typedef_field_list->field;
16004               fi.typedef_field_list = fi.typedef_field_list->next;
16005               *dest = *src;
16006             }
16007         }
16008
16009       /* Copy fi.nested_types_list linked list elements content into the
16010          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16011       if (fi.nested_types_list != NULL && cu->language != language_ada)
16012         {
16013           int i = fi.nested_types_list_count;
16014
16015           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16016           TYPE_NESTED_TYPES_ARRAY (type)
16017             = ((struct decl_field *)
16018                TYPE_ALLOC (type, sizeof (struct decl_field) * i));
16019           TYPE_NESTED_TYPES_COUNT (type) = i;
16020
16021           /* Reverse the list order to keep the debug info elements order.  */
16022           while (--i >= 0)
16023             {
16024               struct decl_field *dest, *src;
16025
16026               dest = &TYPE_NESTED_TYPES_FIELD (type, i);
16027               src = &fi.nested_types_list->field;
16028               fi.nested_types_list = fi.nested_types_list->next;
16029               *dest = *src;
16030             }
16031         }
16032
16033       do_cleanups (back_to);
16034     }
16035
16036   quirk_gcc_member_function_pointer (type, objfile);
16037
16038   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16039      snapshots) has been known to create a die giving a declaration
16040      for a class that has, as a child, a die giving a definition for a
16041      nested class.  So we have to process our children even if the
16042      current die is a declaration.  Normally, of course, a declaration
16043      won't have any children at all.  */
16044
16045   child_die = die->child;
16046
16047   while (child_die != NULL && child_die->tag)
16048     {
16049       if (child_die->tag == DW_TAG_member
16050           || child_die->tag == DW_TAG_variable
16051           || child_die->tag == DW_TAG_inheritance
16052           || child_die->tag == DW_TAG_template_value_param
16053           || child_die->tag == DW_TAG_template_type_param)
16054         {
16055           /* Do nothing.  */
16056         }
16057       else
16058         process_die (child_die, cu);
16059
16060       child_die = sibling_die (child_die);
16061     }
16062
16063   /* Do not consider external references.  According to the DWARF standard,
16064      these DIEs are identified by the fact that they have no byte_size
16065      attribute, and a declaration attribute.  */
16066   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16067       || !die_is_declaration (die, cu))
16068     new_symbol (die, type, cu);
16069 }
16070
16071 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16072    update TYPE using some information only available in DIE's children.  */
16073
16074 static void
16075 update_enumeration_type_from_children (struct die_info *die,
16076                                        struct type *type,
16077                                        struct dwarf2_cu *cu)
16078 {
16079   struct die_info *child_die;
16080   int unsigned_enum = 1;
16081   int flag_enum = 1;
16082   ULONGEST mask = 0;
16083
16084   auto_obstack obstack;
16085
16086   for (child_die = die->child;
16087        child_die != NULL && child_die->tag;
16088        child_die = sibling_die (child_die))
16089     {
16090       struct attribute *attr;
16091       LONGEST value;
16092       const gdb_byte *bytes;
16093       struct dwarf2_locexpr_baton *baton;
16094       const char *name;
16095
16096       if (child_die->tag != DW_TAG_enumerator)
16097         continue;
16098
16099       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16100       if (attr == NULL)
16101         continue;
16102
16103       name = dwarf2_name (child_die, cu);
16104       if (name == NULL)
16105         name = "<anonymous enumerator>";
16106
16107       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16108                                &value, &bytes, &baton);
16109       if (value < 0)
16110         {
16111           unsigned_enum = 0;
16112           flag_enum = 0;
16113         }
16114       else if ((mask & value) != 0)
16115         flag_enum = 0;
16116       else
16117         mask |= value;
16118
16119       /* If we already know that the enum type is neither unsigned, nor
16120          a flag type, no need to look at the rest of the enumerates.  */
16121       if (!unsigned_enum && !flag_enum)
16122         break;
16123     }
16124
16125   if (unsigned_enum)
16126     TYPE_UNSIGNED (type) = 1;
16127   if (flag_enum)
16128     TYPE_FLAG_ENUM (type) = 1;
16129 }
16130
16131 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16132    complete the type's fields yet, or create any symbols.  */
16133
16134 static struct type *
16135 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16136 {
16137   struct objfile *objfile = cu->objfile;
16138   struct type *type;
16139   struct attribute *attr;
16140   const char *name;
16141
16142   /* If the definition of this type lives in .debug_types, read that type.
16143      Don't follow DW_AT_specification though, that will take us back up
16144      the chain and we want to go down.  */
16145   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16146   if (attr)
16147     {
16148       type = get_DW_AT_signature_type (die, attr, cu);
16149
16150       /* The type's CU may not be the same as CU.
16151          Ensure TYPE is recorded with CU in die_type_hash.  */
16152       return set_die_type (die, type, cu);
16153     }
16154
16155   type = alloc_type (objfile);
16156
16157   TYPE_CODE (type) = TYPE_CODE_ENUM;
16158   name = dwarf2_full_name (NULL, die, cu);
16159   if (name != NULL)
16160     TYPE_TAG_NAME (type) = name;
16161
16162   attr = dwarf2_attr (die, DW_AT_type, cu);
16163   if (attr != NULL)
16164     {
16165       struct type *underlying_type = die_type (die, cu);
16166
16167       TYPE_TARGET_TYPE (type) = underlying_type;
16168     }
16169
16170   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16171   if (attr)
16172     {
16173       TYPE_LENGTH (type) = DW_UNSND (attr);
16174     }
16175   else
16176     {
16177       TYPE_LENGTH (type) = 0;
16178     }
16179
16180   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16181      declared as private in the package spec, and then defined only
16182      inside the package body.  Such types are known as Taft Amendment
16183      Types.  When another package uses such a type, an incomplete DIE
16184      may be generated by the compiler.  */
16185   if (die_is_declaration (die, cu))
16186     TYPE_STUB (type) = 1;
16187
16188   /* Finish the creation of this type by using the enum's children.
16189      We must call this even when the underlying type has been provided
16190      so that we can determine if we're looking at a "flag" enum.  */
16191   update_enumeration_type_from_children (die, type, cu);
16192
16193   /* If this type has an underlying type that is not a stub, then we
16194      may use its attributes.  We always use the "unsigned" attribute
16195      in this situation, because ordinarily we guess whether the type
16196      is unsigned -- but the guess can be wrong and the underlying type
16197      can tell us the reality.  However, we defer to a local size
16198      attribute if one exists, because this lets the compiler override
16199      the underlying type if needed.  */
16200   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16201     {
16202       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16203       if (TYPE_LENGTH (type) == 0)
16204         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16205     }
16206
16207   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16208
16209   return set_die_type (die, type, cu);
16210 }
16211
16212 /* Given a pointer to a die which begins an enumeration, process all
16213    the dies that define the members of the enumeration, and create the
16214    symbol for the enumeration type.
16215
16216    NOTE: We reverse the order of the element list.  */
16217
16218 static void
16219 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16220 {
16221   struct type *this_type;
16222
16223   this_type = get_die_type (die, cu);
16224   if (this_type == NULL)
16225     this_type = read_enumeration_type (die, cu);
16226
16227   if (die->child != NULL)
16228     {
16229       struct die_info *child_die;
16230       struct symbol *sym;
16231       struct field *fields = NULL;
16232       int num_fields = 0;
16233       const char *name;
16234
16235       child_die = die->child;
16236       while (child_die && child_die->tag)
16237         {
16238           if (child_die->tag != DW_TAG_enumerator)
16239             {
16240               process_die (child_die, cu);
16241             }
16242           else
16243             {
16244               name = dwarf2_name (child_die, cu);
16245               if (name)
16246                 {
16247                   sym = new_symbol (child_die, this_type, cu);
16248
16249                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16250                     {
16251                       fields = (struct field *)
16252                         xrealloc (fields,
16253                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16254                                   * sizeof (struct field));
16255                     }
16256
16257                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16258                   FIELD_TYPE (fields[num_fields]) = NULL;
16259                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16260                   FIELD_BITSIZE (fields[num_fields]) = 0;
16261
16262                   num_fields++;
16263                 }
16264             }
16265
16266           child_die = sibling_die (child_die);
16267         }
16268
16269       if (num_fields)
16270         {
16271           TYPE_NFIELDS (this_type) = num_fields;
16272           TYPE_FIELDS (this_type) = (struct field *)
16273             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16274           memcpy (TYPE_FIELDS (this_type), fields,
16275                   sizeof (struct field) * num_fields);
16276           xfree (fields);
16277         }
16278     }
16279
16280   /* If we are reading an enum from a .debug_types unit, and the enum
16281      is a declaration, and the enum is not the signatured type in the
16282      unit, then we do not want to add a symbol for it.  Adding a
16283      symbol would in some cases obscure the true definition of the
16284      enum, giving users an incomplete type when the definition is
16285      actually available.  Note that we do not want to do this for all
16286      enums which are just declarations, because C++0x allows forward
16287      enum declarations.  */
16288   if (cu->per_cu->is_debug_types
16289       && die_is_declaration (die, cu))
16290     {
16291       struct signatured_type *sig_type;
16292
16293       sig_type = (struct signatured_type *) cu->per_cu;
16294       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16295       if (sig_type->type_offset_in_section != die->sect_off)
16296         return;
16297     }
16298
16299   new_symbol (die, this_type, cu);
16300 }
16301
16302 /* Extract all information from a DW_TAG_array_type DIE and put it in
16303    the DIE's type field.  For now, this only handles one dimensional
16304    arrays.  */
16305
16306 static struct type *
16307 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16308 {
16309   struct objfile *objfile = cu->objfile;
16310   struct die_info *child_die;
16311   struct type *type;
16312   struct type *element_type, *range_type, *index_type;
16313   struct attribute *attr;
16314   const char *name;
16315   unsigned int bit_stride = 0;
16316
16317   element_type = die_type (die, cu);
16318
16319   /* The die_type call above may have already set the type for this DIE.  */
16320   type = get_die_type (die, cu);
16321   if (type)
16322     return type;
16323
16324   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16325   if (attr != NULL)
16326     bit_stride = DW_UNSND (attr) * 8;
16327
16328   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16329   if (attr != NULL)
16330     bit_stride = DW_UNSND (attr);
16331
16332   /* Irix 6.2 native cc creates array types without children for
16333      arrays with unspecified length.  */
16334   if (die->child == NULL)
16335     {
16336       index_type = objfile_type (objfile)->builtin_int;
16337       range_type = create_static_range_type (NULL, index_type, 0, -1);
16338       type = create_array_type_with_stride (NULL, element_type, range_type,
16339                                             bit_stride);
16340       return set_die_type (die, type, cu);
16341     }
16342
16343   std::vector<struct type *> range_types;
16344   child_die = die->child;
16345   while (child_die && child_die->tag)
16346     {
16347       if (child_die->tag == DW_TAG_subrange_type)
16348         {
16349           struct type *child_type = read_type_die (child_die, cu);
16350
16351           if (child_type != NULL)
16352             {
16353               /* The range type was succesfully read.  Save it for the
16354                  array type creation.  */
16355               range_types.push_back (child_type);
16356             }
16357         }
16358       child_die = sibling_die (child_die);
16359     }
16360
16361   /* Dwarf2 dimensions are output from left to right, create the
16362      necessary array types in backwards order.  */
16363
16364   type = element_type;
16365
16366   if (read_array_order (die, cu) == DW_ORD_col_major)
16367     {
16368       int i = 0;
16369
16370       while (i < range_types.size ())
16371         type = create_array_type_with_stride (NULL, type, range_types[i++],
16372                                               bit_stride);
16373     }
16374   else
16375     {
16376       size_t ndim = range_types.size ();
16377       while (ndim-- > 0)
16378         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16379                                               bit_stride);
16380     }
16381
16382   /* Understand Dwarf2 support for vector types (like they occur on
16383      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16384      array type.  This is not part of the Dwarf2/3 standard yet, but a
16385      custom vendor extension.  The main difference between a regular
16386      array and the vector variant is that vectors are passed by value
16387      to functions.  */
16388   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16389   if (attr)
16390     make_vector_type (type);
16391
16392   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16393      implementation may choose to implement triple vectors using this
16394      attribute.  */
16395   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16396   if (attr)
16397     {
16398       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16399         TYPE_LENGTH (type) = DW_UNSND (attr);
16400       else
16401         complaint (&symfile_complaints,
16402                    _("DW_AT_byte_size for array type smaller "
16403                      "than the total size of elements"));
16404     }
16405
16406   name = dwarf2_name (die, cu);
16407   if (name)
16408     TYPE_NAME (type) = name;
16409
16410   /* Install the type in the die.  */
16411   set_die_type (die, type, cu);
16412
16413   /* set_die_type should be already done.  */
16414   set_descriptive_type (type, die, cu);
16415
16416   return type;
16417 }
16418
16419 static enum dwarf_array_dim_ordering
16420 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16421 {
16422   struct attribute *attr;
16423
16424   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16425
16426   if (attr)
16427     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16428
16429   /* GNU F77 is a special case, as at 08/2004 array type info is the
16430      opposite order to the dwarf2 specification, but data is still
16431      laid out as per normal fortran.
16432
16433      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16434      version checking.  */
16435
16436   if (cu->language == language_fortran
16437       && cu->producer && strstr (cu->producer, "GNU F77"))
16438     {
16439       return DW_ORD_row_major;
16440     }
16441
16442   switch (cu->language_defn->la_array_ordering)
16443     {
16444     case array_column_major:
16445       return DW_ORD_col_major;
16446     case array_row_major:
16447     default:
16448       return DW_ORD_row_major;
16449     };
16450 }
16451
16452 /* Extract all information from a DW_TAG_set_type DIE and put it in
16453    the DIE's type field.  */
16454
16455 static struct type *
16456 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16457 {
16458   struct type *domain_type, *set_type;
16459   struct attribute *attr;
16460
16461   domain_type = die_type (die, cu);
16462
16463   /* The die_type call above may have already set the type for this DIE.  */
16464   set_type = get_die_type (die, cu);
16465   if (set_type)
16466     return set_type;
16467
16468   set_type = create_set_type (NULL, domain_type);
16469
16470   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16471   if (attr)
16472     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16473
16474   return set_die_type (die, set_type, cu);
16475 }
16476
16477 /* A helper for read_common_block that creates a locexpr baton.
16478    SYM is the symbol which we are marking as computed.
16479    COMMON_DIE is the DIE for the common block.
16480    COMMON_LOC is the location expression attribute for the common
16481    block itself.
16482    MEMBER_LOC is the location expression attribute for the particular
16483    member of the common block that we are processing.
16484    CU is the CU from which the above come.  */
16485
16486 static void
16487 mark_common_block_symbol_computed (struct symbol *sym,
16488                                    struct die_info *common_die,
16489                                    struct attribute *common_loc,
16490                                    struct attribute *member_loc,
16491                                    struct dwarf2_cu *cu)
16492 {
16493   struct objfile *objfile = dwarf2_per_objfile->objfile;
16494   struct dwarf2_locexpr_baton *baton;
16495   gdb_byte *ptr;
16496   unsigned int cu_off;
16497   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16498   LONGEST offset = 0;
16499
16500   gdb_assert (common_loc && member_loc);
16501   gdb_assert (attr_form_is_block (common_loc));
16502   gdb_assert (attr_form_is_block (member_loc)
16503               || attr_form_is_constant (member_loc));
16504
16505   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16506   baton->per_cu = cu->per_cu;
16507   gdb_assert (baton->per_cu);
16508
16509   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16510
16511   if (attr_form_is_constant (member_loc))
16512     {
16513       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16514       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16515     }
16516   else
16517     baton->size += DW_BLOCK (member_loc)->size;
16518
16519   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16520   baton->data = ptr;
16521
16522   *ptr++ = DW_OP_call4;
16523   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16524   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16525   ptr += 4;
16526
16527   if (attr_form_is_constant (member_loc))
16528     {
16529       *ptr++ = DW_OP_addr;
16530       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16531       ptr += cu->header.addr_size;
16532     }
16533   else
16534     {
16535       /* We have to copy the data here, because DW_OP_call4 will only
16536          use a DW_AT_location attribute.  */
16537       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16538       ptr += DW_BLOCK (member_loc)->size;
16539     }
16540
16541   *ptr++ = DW_OP_plus;
16542   gdb_assert (ptr - baton->data == baton->size);
16543
16544   SYMBOL_LOCATION_BATON (sym) = baton;
16545   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16546 }
16547
16548 /* Create appropriate locally-scoped variables for all the
16549    DW_TAG_common_block entries.  Also create a struct common_block
16550    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16551    is used to sepate the common blocks name namespace from regular
16552    variable names.  */
16553
16554 static void
16555 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16556 {
16557   struct attribute *attr;
16558
16559   attr = dwarf2_attr (die, DW_AT_location, cu);
16560   if (attr)
16561     {
16562       /* Support the .debug_loc offsets.  */
16563       if (attr_form_is_block (attr))
16564         {
16565           /* Ok.  */
16566         }
16567       else if (attr_form_is_section_offset (attr))
16568         {
16569           dwarf2_complex_location_expr_complaint ();
16570           attr = NULL;
16571         }
16572       else
16573         {
16574           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16575                                                  "common block member");
16576           attr = NULL;
16577         }
16578     }
16579
16580   if (die->child != NULL)
16581     {
16582       struct objfile *objfile = cu->objfile;
16583       struct die_info *child_die;
16584       size_t n_entries = 0, size;
16585       struct common_block *common_block;
16586       struct symbol *sym;
16587
16588       for (child_die = die->child;
16589            child_die && child_die->tag;
16590            child_die = sibling_die (child_die))
16591         ++n_entries;
16592
16593       size = (sizeof (struct common_block)
16594               + (n_entries - 1) * sizeof (struct symbol *));
16595       common_block
16596         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16597                                                  size);
16598       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16599       common_block->n_entries = 0;
16600
16601       for (child_die = die->child;
16602            child_die && child_die->tag;
16603            child_die = sibling_die (child_die))
16604         {
16605           /* Create the symbol in the DW_TAG_common_block block in the current
16606              symbol scope.  */
16607           sym = new_symbol (child_die, NULL, cu);
16608           if (sym != NULL)
16609             {
16610               struct attribute *member_loc;
16611
16612               common_block->contents[common_block->n_entries++] = sym;
16613
16614               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16615                                         cu);
16616               if (member_loc)
16617                 {
16618                   /* GDB has handled this for a long time, but it is
16619                      not specified by DWARF.  It seems to have been
16620                      emitted by gfortran at least as recently as:
16621                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16622                   complaint (&symfile_complaints,
16623                              _("Variable in common block has "
16624                                "DW_AT_data_member_location "
16625                                "- DIE at 0x%x [in module %s]"),
16626                              to_underlying (child_die->sect_off),
16627                              objfile_name (cu->objfile));
16628
16629                   if (attr_form_is_section_offset (member_loc))
16630                     dwarf2_complex_location_expr_complaint ();
16631                   else if (attr_form_is_constant (member_loc)
16632                            || attr_form_is_block (member_loc))
16633                     {
16634                       if (attr)
16635                         mark_common_block_symbol_computed (sym, die, attr,
16636                                                            member_loc, cu);
16637                     }
16638                   else
16639                     dwarf2_complex_location_expr_complaint ();
16640                 }
16641             }
16642         }
16643
16644       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16645       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16646     }
16647 }
16648
16649 /* Create a type for a C++ namespace.  */
16650
16651 static struct type *
16652 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16653 {
16654   struct objfile *objfile = cu->objfile;
16655   const char *previous_prefix, *name;
16656   int is_anonymous;
16657   struct type *type;
16658
16659   /* For extensions, reuse the type of the original namespace.  */
16660   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16661     {
16662       struct die_info *ext_die;
16663       struct dwarf2_cu *ext_cu = cu;
16664
16665       ext_die = dwarf2_extension (die, &ext_cu);
16666       type = read_type_die (ext_die, ext_cu);
16667
16668       /* EXT_CU may not be the same as CU.
16669          Ensure TYPE is recorded with CU in die_type_hash.  */
16670       return set_die_type (die, type, cu);
16671     }
16672
16673   name = namespace_name (die, &is_anonymous, cu);
16674
16675   /* Now build the name of the current namespace.  */
16676
16677   previous_prefix = determine_prefix (die, cu);
16678   if (previous_prefix[0] != '\0')
16679     name = typename_concat (&objfile->objfile_obstack,
16680                             previous_prefix, name, 0, cu);
16681
16682   /* Create the type.  */
16683   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16684   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16685
16686   return set_die_type (die, type, cu);
16687 }
16688
16689 /* Read a namespace scope.  */
16690
16691 static void
16692 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16693 {
16694   struct objfile *objfile = cu->objfile;
16695   int is_anonymous;
16696
16697   /* Add a symbol associated to this if we haven't seen the namespace
16698      before.  Also, add a using directive if it's an anonymous
16699      namespace.  */
16700
16701   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16702     {
16703       struct type *type;
16704
16705       type = read_type_die (die, cu);
16706       new_symbol (die, type, cu);
16707
16708       namespace_name (die, &is_anonymous, cu);
16709       if (is_anonymous)
16710         {
16711           const char *previous_prefix = determine_prefix (die, cu);
16712
16713           std::vector<const char *> excludes;
16714           add_using_directive (using_directives (cu->language),
16715                                previous_prefix, TYPE_NAME (type), NULL,
16716                                NULL, excludes, 0, &objfile->objfile_obstack);
16717         }
16718     }
16719
16720   if (die->child != NULL)
16721     {
16722       struct die_info *child_die = die->child;
16723
16724       while (child_die && child_die->tag)
16725         {
16726           process_die (child_die, cu);
16727           child_die = sibling_die (child_die);
16728         }
16729     }
16730 }
16731
16732 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16733    imported module.  Still we need that type as local Fortran "use ... only"
16734    declaration imports depend on the created type in determine_prefix.  */
16735
16736 static struct type *
16737 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16738 {
16739   struct objfile *objfile = cu->objfile;
16740   const char *module_name;
16741   struct type *type;
16742
16743   module_name = dwarf2_name (die, cu);
16744   if (!module_name)
16745     complaint (&symfile_complaints,
16746                _("DW_TAG_module has no name, offset 0x%x"),
16747                to_underlying (die->sect_off));
16748   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16749
16750   /* determine_prefix uses TYPE_TAG_NAME.  */
16751   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16752
16753   return set_die_type (die, type, cu);
16754 }
16755
16756 /* Read a Fortran module.  */
16757
16758 static void
16759 read_module (struct die_info *die, struct dwarf2_cu *cu)
16760 {
16761   struct die_info *child_die = die->child;
16762   struct type *type;
16763
16764   type = read_type_die (die, cu);
16765   new_symbol (die, type, cu);
16766
16767   while (child_die && child_die->tag)
16768     {
16769       process_die (child_die, cu);
16770       child_die = sibling_die (child_die);
16771     }
16772 }
16773
16774 /* Return the name of the namespace represented by DIE.  Set
16775    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16776    namespace.  */
16777
16778 static const char *
16779 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16780 {
16781   struct die_info *current_die;
16782   const char *name = NULL;
16783
16784   /* Loop through the extensions until we find a name.  */
16785
16786   for (current_die = die;
16787        current_die != NULL;
16788        current_die = dwarf2_extension (die, &cu))
16789     {
16790       /* We don't use dwarf2_name here so that we can detect the absence
16791          of a name -> anonymous namespace.  */
16792       name = dwarf2_string_attr (die, DW_AT_name, cu);
16793
16794       if (name != NULL)
16795         break;
16796     }
16797
16798   /* Is it an anonymous namespace?  */
16799
16800   *is_anonymous = (name == NULL);
16801   if (*is_anonymous)
16802     name = CP_ANONYMOUS_NAMESPACE_STR;
16803
16804   return name;
16805 }
16806
16807 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16808    the user defined type vector.  */
16809
16810 static struct type *
16811 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16812 {
16813   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
16814   struct comp_unit_head *cu_header = &cu->header;
16815   struct type *type;
16816   struct attribute *attr_byte_size;
16817   struct attribute *attr_address_class;
16818   int byte_size, addr_class;
16819   struct type *target_type;
16820
16821   target_type = die_type (die, cu);
16822
16823   /* The die_type call above may have already set the type for this DIE.  */
16824   type = get_die_type (die, cu);
16825   if (type)
16826     return type;
16827
16828   type = lookup_pointer_type (target_type);
16829
16830   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16831   if (attr_byte_size)
16832     byte_size = DW_UNSND (attr_byte_size);
16833   else
16834     byte_size = cu_header->addr_size;
16835
16836   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16837   if (attr_address_class)
16838     addr_class = DW_UNSND (attr_address_class);
16839   else
16840     addr_class = DW_ADDR_none;
16841
16842   /* If the pointer size or address class is different than the
16843      default, create a type variant marked as such and set the
16844      length accordingly.  */
16845   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
16846     {
16847       if (gdbarch_address_class_type_flags_p (gdbarch))
16848         {
16849           int type_flags;
16850
16851           type_flags = gdbarch_address_class_type_flags
16852                          (gdbarch, byte_size, addr_class);
16853           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
16854                       == 0);
16855           type = make_type_with_address_space (type, type_flags);
16856         }
16857       else if (TYPE_LENGTH (type) != byte_size)
16858         {
16859           complaint (&symfile_complaints,
16860                      _("invalid pointer size %d"), byte_size);
16861         }
16862       else
16863         {
16864           /* Should we also complain about unhandled address classes?  */
16865         }
16866     }
16867
16868   TYPE_LENGTH (type) = byte_size;
16869   return set_die_type (die, type, cu);
16870 }
16871
16872 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
16873    the user defined type vector.  */
16874
16875 static struct type *
16876 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
16877 {
16878   struct type *type;
16879   struct type *to_type;
16880   struct type *domain;
16881
16882   to_type = die_type (die, cu);
16883   domain = die_containing_type (die, cu);
16884
16885   /* The calls above may have already set the type for this DIE.  */
16886   type = get_die_type (die, cu);
16887   if (type)
16888     return type;
16889
16890   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
16891     type = lookup_methodptr_type (to_type);
16892   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
16893     {
16894       struct type *new_type = alloc_type (cu->objfile);
16895
16896       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
16897                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
16898                             TYPE_VARARGS (to_type));
16899       type = lookup_methodptr_type (new_type);
16900     }
16901   else
16902     type = lookup_memberptr_type (to_type, domain);
16903
16904   return set_die_type (die, type, cu);
16905 }
16906
16907 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
16908    the user defined type vector.  */
16909
16910 static struct type *
16911 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
16912                           enum type_code refcode)
16913 {
16914   struct comp_unit_head *cu_header = &cu->header;
16915   struct type *type, *target_type;
16916   struct attribute *attr;
16917
16918   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
16919
16920   target_type = die_type (die, cu);
16921
16922   /* The die_type call above may have already set the type for this DIE.  */
16923   type = get_die_type (die, cu);
16924   if (type)
16925     return type;
16926
16927   type = lookup_reference_type (target_type, refcode);
16928   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16929   if (attr)
16930     {
16931       TYPE_LENGTH (type) = DW_UNSND (attr);
16932     }
16933   else
16934     {
16935       TYPE_LENGTH (type) = cu_header->addr_size;
16936     }
16937   return set_die_type (die, type, cu);
16938 }
16939
16940 /* Add the given cv-qualifiers to the element type of the array.  GCC
16941    outputs DWARF type qualifiers that apply to an array, not the
16942    element type.  But GDB relies on the array element type to carry
16943    the cv-qualifiers.  This mimics section 6.7.3 of the C99
16944    specification.  */
16945
16946 static struct type *
16947 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
16948                    struct type *base_type, int cnst, int voltl)
16949 {
16950   struct type *el_type, *inner_array;
16951
16952   base_type = copy_type (base_type);
16953   inner_array = base_type;
16954
16955   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
16956     {
16957       TYPE_TARGET_TYPE (inner_array) =
16958         copy_type (TYPE_TARGET_TYPE (inner_array));
16959       inner_array = TYPE_TARGET_TYPE (inner_array);
16960     }
16961
16962   el_type = TYPE_TARGET_TYPE (inner_array);
16963   cnst |= TYPE_CONST (el_type);
16964   voltl |= TYPE_VOLATILE (el_type);
16965   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
16966
16967   return set_die_type (die, base_type, cu);
16968 }
16969
16970 static struct type *
16971 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
16972 {
16973   struct type *base_type, *cv_type;
16974
16975   base_type = die_type (die, cu);
16976
16977   /* The die_type call above may have already set the type for this DIE.  */
16978   cv_type = get_die_type (die, cu);
16979   if (cv_type)
16980     return cv_type;
16981
16982   /* In case the const qualifier is applied to an array type, the element type
16983      is so qualified, not the array type (section 6.7.3 of C99).  */
16984   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
16985     return add_array_cv_type (die, cu, base_type, 1, 0);
16986
16987   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
16988   return set_die_type (die, cv_type, cu);
16989 }
16990
16991 static struct type *
16992 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
16993 {
16994   struct type *base_type, *cv_type;
16995
16996   base_type = die_type (die, cu);
16997
16998   /* The die_type call above may have already set the type for this DIE.  */
16999   cv_type = get_die_type (die, cu);
17000   if (cv_type)
17001     return cv_type;
17002
17003   /* In case the volatile qualifier is applied to an array type, the
17004      element type is so qualified, not the array type (section 6.7.3
17005      of C99).  */
17006   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17007     return add_array_cv_type (die, cu, base_type, 0, 1);
17008
17009   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17010   return set_die_type (die, cv_type, cu);
17011 }
17012
17013 /* Handle DW_TAG_restrict_type.  */
17014
17015 static struct type *
17016 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17017 {
17018   struct type *base_type, *cv_type;
17019
17020   base_type = die_type (die, cu);
17021
17022   /* The die_type call above may have already set the type for this DIE.  */
17023   cv_type = get_die_type (die, cu);
17024   if (cv_type)
17025     return cv_type;
17026
17027   cv_type = make_restrict_type (base_type);
17028   return set_die_type (die, cv_type, cu);
17029 }
17030
17031 /* Handle DW_TAG_atomic_type.  */
17032
17033 static struct type *
17034 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17035 {
17036   struct type *base_type, *cv_type;
17037
17038   base_type = die_type (die, cu);
17039
17040   /* The die_type call above may have already set the type for this DIE.  */
17041   cv_type = get_die_type (die, cu);
17042   if (cv_type)
17043     return cv_type;
17044
17045   cv_type = make_atomic_type (base_type);
17046   return set_die_type (die, cv_type, cu);
17047 }
17048
17049 /* Extract all information from a DW_TAG_string_type DIE and add to
17050    the user defined type vector.  It isn't really a user defined type,
17051    but it behaves like one, with other DIE's using an AT_user_def_type
17052    attribute to reference it.  */
17053
17054 static struct type *
17055 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17056 {
17057   struct objfile *objfile = cu->objfile;
17058   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17059   struct type *type, *range_type, *index_type, *char_type;
17060   struct attribute *attr;
17061   unsigned int length;
17062
17063   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17064   if (attr)
17065     {
17066       length = DW_UNSND (attr);
17067     }
17068   else
17069     {
17070       /* Check for the DW_AT_byte_size attribute.  */
17071       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17072       if (attr)
17073         {
17074           length = DW_UNSND (attr);
17075         }
17076       else
17077         {
17078           length = 1;
17079         }
17080     }
17081
17082   index_type = objfile_type (objfile)->builtin_int;
17083   range_type = create_static_range_type (NULL, index_type, 1, length);
17084   char_type = language_string_char_type (cu->language_defn, gdbarch);
17085   type = create_string_type (NULL, char_type, range_type);
17086
17087   return set_die_type (die, type, cu);
17088 }
17089
17090 /* Assuming that DIE corresponds to a function, returns nonzero
17091    if the function is prototyped.  */
17092
17093 static int
17094 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17095 {
17096   struct attribute *attr;
17097
17098   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17099   if (attr && (DW_UNSND (attr) != 0))
17100     return 1;
17101
17102   /* The DWARF standard implies that the DW_AT_prototyped attribute
17103      is only meaninful for C, but the concept also extends to other
17104      languages that allow unprototyped functions (Eg: Objective C).
17105      For all other languages, assume that functions are always
17106      prototyped.  */
17107   if (cu->language != language_c
17108       && cu->language != language_objc
17109       && cu->language != language_opencl)
17110     return 1;
17111
17112   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17113      prototyped and unprototyped functions; default to prototyped,
17114      since that is more common in modern code (and RealView warns
17115      about unprototyped functions).  */
17116   if (producer_is_realview (cu->producer))
17117     return 1;
17118
17119   return 0;
17120 }
17121
17122 /* Handle DIES due to C code like:
17123
17124    struct foo
17125    {
17126    int (*funcp)(int a, long l);
17127    int b;
17128    };
17129
17130    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17131
17132 static struct type *
17133 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17134 {
17135   struct objfile *objfile = cu->objfile;
17136   struct type *type;            /* Type that this function returns.  */
17137   struct type *ftype;           /* Function that returns above type.  */
17138   struct attribute *attr;
17139
17140   type = die_type (die, cu);
17141
17142   /* The die_type call above may have already set the type for this DIE.  */
17143   ftype = get_die_type (die, cu);
17144   if (ftype)
17145     return ftype;
17146
17147   ftype = lookup_function_type (type);
17148
17149   if (prototyped_function_p (die, cu))
17150     TYPE_PROTOTYPED (ftype) = 1;
17151
17152   /* Store the calling convention in the type if it's available in
17153      the subroutine die.  Otherwise set the calling convention to
17154      the default value DW_CC_normal.  */
17155   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17156   if (attr)
17157     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17158   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17159     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17160   else
17161     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17162
17163   /* Record whether the function returns normally to its caller or not
17164      if the DWARF producer set that information.  */
17165   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17166   if (attr && (DW_UNSND (attr) != 0))
17167     TYPE_NO_RETURN (ftype) = 1;
17168
17169   /* We need to add the subroutine type to the die immediately so
17170      we don't infinitely recurse when dealing with parameters
17171      declared as the same subroutine type.  */
17172   set_die_type (die, ftype, cu);
17173
17174   if (die->child != NULL)
17175     {
17176       struct type *void_type = objfile_type (objfile)->builtin_void;
17177       struct die_info *child_die;
17178       int nparams, iparams;
17179
17180       /* Count the number of parameters.
17181          FIXME: GDB currently ignores vararg functions, but knows about
17182          vararg member functions.  */
17183       nparams = 0;
17184       child_die = die->child;
17185       while (child_die && child_die->tag)
17186         {
17187           if (child_die->tag == DW_TAG_formal_parameter)
17188             nparams++;
17189           else if (child_die->tag == DW_TAG_unspecified_parameters)
17190             TYPE_VARARGS (ftype) = 1;
17191           child_die = sibling_die (child_die);
17192         }
17193
17194       /* Allocate storage for parameters and fill them in.  */
17195       TYPE_NFIELDS (ftype) = nparams;
17196       TYPE_FIELDS (ftype) = (struct field *)
17197         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17198
17199       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17200          even if we error out during the parameters reading below.  */
17201       for (iparams = 0; iparams < nparams; iparams++)
17202         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17203
17204       iparams = 0;
17205       child_die = die->child;
17206       while (child_die && child_die->tag)
17207         {
17208           if (child_die->tag == DW_TAG_formal_parameter)
17209             {
17210               struct type *arg_type;
17211
17212               /* DWARF version 2 has no clean way to discern C++
17213                  static and non-static member functions.  G++ helps
17214                  GDB by marking the first parameter for non-static
17215                  member functions (which is the this pointer) as
17216                  artificial.  We pass this information to
17217                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17218
17219                  DWARF version 3 added DW_AT_object_pointer, which GCC
17220                  4.5 does not yet generate.  */
17221               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17222               if (attr)
17223                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17224               else
17225                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17226               arg_type = die_type (child_die, cu);
17227
17228               /* RealView does not mark THIS as const, which the testsuite
17229                  expects.  GCC marks THIS as const in method definitions,
17230                  but not in the class specifications (GCC PR 43053).  */
17231               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17232                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17233                 {
17234                   int is_this = 0;
17235                   struct dwarf2_cu *arg_cu = cu;
17236                   const char *name = dwarf2_name (child_die, cu);
17237
17238                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17239                   if (attr)
17240                     {
17241                       /* If the compiler emits this, use it.  */
17242                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17243                         is_this = 1;
17244                     }
17245                   else if (name && strcmp (name, "this") == 0)
17246                     /* Function definitions will have the argument names.  */
17247                     is_this = 1;
17248                   else if (name == NULL && iparams == 0)
17249                     /* Declarations may not have the names, so like
17250                        elsewhere in GDB, assume an artificial first
17251                        argument is "this".  */
17252                     is_this = 1;
17253
17254                   if (is_this)
17255                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17256                                              arg_type, 0);
17257                 }
17258
17259               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17260               iparams++;
17261             }
17262           child_die = sibling_die (child_die);
17263         }
17264     }
17265
17266   return ftype;
17267 }
17268
17269 static struct type *
17270 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17271 {
17272   struct objfile *objfile = cu->objfile;
17273   const char *name = NULL;
17274   struct type *this_type, *target_type;
17275
17276   name = dwarf2_full_name (NULL, die, cu);
17277   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17278   TYPE_TARGET_STUB (this_type) = 1;
17279   set_die_type (die, this_type, cu);
17280   target_type = die_type (die, cu);
17281   if (target_type != this_type)
17282     TYPE_TARGET_TYPE (this_type) = target_type;
17283   else
17284     {
17285       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17286          spec and cause infinite loops in GDB.  */
17287       complaint (&symfile_complaints,
17288                  _("Self-referential DW_TAG_typedef "
17289                    "- DIE at 0x%x [in module %s]"),
17290                  to_underlying (die->sect_off), objfile_name (objfile));
17291       TYPE_TARGET_TYPE (this_type) = NULL;
17292     }
17293   return this_type;
17294 }
17295
17296 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17297    (which may be different from NAME) to the architecture back-end to allow
17298    it to guess the correct format if necessary.  */
17299
17300 static struct type *
17301 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17302                         const char *name_hint)
17303 {
17304   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17305   const struct floatformat **format;
17306   struct type *type;
17307
17308   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17309   if (format)
17310     type = init_float_type (objfile, bits, name, format);
17311   else
17312     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17313
17314   return type;
17315 }
17316
17317 /* Find a representation of a given base type and install
17318    it in the TYPE field of the die.  */
17319
17320 static struct type *
17321 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17322 {
17323   struct objfile *objfile = cu->objfile;
17324   struct type *type;
17325   struct attribute *attr;
17326   int encoding = 0, bits = 0;
17327   const char *name;
17328
17329   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17330   if (attr)
17331     {
17332       encoding = DW_UNSND (attr);
17333     }
17334   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17335   if (attr)
17336     {
17337       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17338     }
17339   name = dwarf2_name (die, cu);
17340   if (!name)
17341     {
17342       complaint (&symfile_complaints,
17343                  _("DW_AT_name missing from DW_TAG_base_type"));
17344     }
17345
17346   switch (encoding)
17347     {
17348       case DW_ATE_address:
17349         /* Turn DW_ATE_address into a void * pointer.  */
17350         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17351         type = init_pointer_type (objfile, bits, name, type);
17352         break;
17353       case DW_ATE_boolean:
17354         type = init_boolean_type (objfile, bits, 1, name);
17355         break;
17356       case DW_ATE_complex_float:
17357         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17358         type = init_complex_type (objfile, name, type);
17359         break;
17360       case DW_ATE_decimal_float:
17361         type = init_decfloat_type (objfile, bits, name);
17362         break;
17363       case DW_ATE_float:
17364         type = dwarf2_init_float_type (objfile, bits, name, name);
17365         break;
17366       case DW_ATE_signed:
17367         type = init_integer_type (objfile, bits, 0, name);
17368         break;
17369       case DW_ATE_unsigned:
17370         if (cu->language == language_fortran
17371             && name
17372             && startswith (name, "character("))
17373           type = init_character_type (objfile, bits, 1, name);
17374         else
17375           type = init_integer_type (objfile, bits, 1, name);
17376         break;
17377       case DW_ATE_signed_char:
17378         if (cu->language == language_ada || cu->language == language_m2
17379             || cu->language == language_pascal
17380             || cu->language == language_fortran)
17381           type = init_character_type (objfile, bits, 0, name);
17382         else
17383           type = init_integer_type (objfile, bits, 0, name);
17384         break;
17385       case DW_ATE_unsigned_char:
17386         if (cu->language == language_ada || cu->language == language_m2
17387             || cu->language == language_pascal
17388             || cu->language == language_fortran
17389             || cu->language == language_rust)
17390           type = init_character_type (objfile, bits, 1, name);
17391         else
17392           type = init_integer_type (objfile, bits, 1, name);
17393         break;
17394       case DW_ATE_UTF:
17395         {
17396           gdbarch *arch = get_objfile_arch (objfile);
17397
17398           if (bits == 16)
17399             type = builtin_type (arch)->builtin_char16;
17400           else if (bits == 32)
17401             type = builtin_type (arch)->builtin_char32;
17402           else
17403             {
17404               complaint (&symfile_complaints,
17405                          _("unsupported DW_ATE_UTF bit size: '%d'"),
17406                          bits);
17407               type = init_integer_type (objfile, bits, 1, name);
17408             }
17409           return set_die_type (die, type, cu);
17410         }
17411         break;
17412
17413       default:
17414         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
17415                    dwarf_type_encoding_name (encoding));
17416         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17417         break;
17418     }
17419
17420   if (name && strcmp (name, "char") == 0)
17421     TYPE_NOSIGN (type) = 1;
17422
17423   return set_die_type (die, type, cu);
17424 }
17425
17426 /* Parse dwarf attribute if it's a block, reference or constant and put the
17427    resulting value of the attribute into struct bound_prop.
17428    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17429
17430 static int
17431 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17432                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17433 {
17434   struct dwarf2_property_baton *baton;
17435   struct obstack *obstack = &cu->objfile->objfile_obstack;
17436
17437   if (attr == NULL || prop == NULL)
17438     return 0;
17439
17440   if (attr_form_is_block (attr))
17441     {
17442       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17443       baton->referenced_type = NULL;
17444       baton->locexpr.per_cu = cu->per_cu;
17445       baton->locexpr.size = DW_BLOCK (attr)->size;
17446       baton->locexpr.data = DW_BLOCK (attr)->data;
17447       prop->data.baton = baton;
17448       prop->kind = PROP_LOCEXPR;
17449       gdb_assert (prop->data.baton != NULL);
17450     }
17451   else if (attr_form_is_ref (attr))
17452     {
17453       struct dwarf2_cu *target_cu = cu;
17454       struct die_info *target_die;
17455       struct attribute *target_attr;
17456
17457       target_die = follow_die_ref (die, attr, &target_cu);
17458       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17459       if (target_attr == NULL)
17460         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17461                                    target_cu);
17462       if (target_attr == NULL)
17463         return 0;
17464
17465       switch (target_attr->name)
17466         {
17467           case DW_AT_location:
17468             if (attr_form_is_section_offset (target_attr))
17469               {
17470                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17471                 baton->referenced_type = die_type (target_die, target_cu);
17472                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17473                 prop->data.baton = baton;
17474                 prop->kind = PROP_LOCLIST;
17475                 gdb_assert (prop->data.baton != NULL);
17476               }
17477             else if (attr_form_is_block (target_attr))
17478               {
17479                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17480                 baton->referenced_type = die_type (target_die, target_cu);
17481                 baton->locexpr.per_cu = cu->per_cu;
17482                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17483                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17484                 prop->data.baton = baton;
17485                 prop->kind = PROP_LOCEXPR;
17486                 gdb_assert (prop->data.baton != NULL);
17487               }
17488             else
17489               {
17490                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17491                                                        "dynamic property");
17492                 return 0;
17493               }
17494             break;
17495           case DW_AT_data_member_location:
17496             {
17497               LONGEST offset;
17498
17499               if (!handle_data_member_location (target_die, target_cu,
17500                                                 &offset))
17501                 return 0;
17502
17503               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17504               baton->referenced_type = read_type_die (target_die->parent,
17505                                                       target_cu);
17506               baton->offset_info.offset = offset;
17507               baton->offset_info.type = die_type (target_die, target_cu);
17508               prop->data.baton = baton;
17509               prop->kind = PROP_ADDR_OFFSET;
17510               break;
17511             }
17512         }
17513     }
17514   else if (attr_form_is_constant (attr))
17515     {
17516       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17517       prop->kind = PROP_CONST;
17518     }
17519   else
17520     {
17521       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17522                                              dwarf2_name (die, cu));
17523       return 0;
17524     }
17525
17526   return 1;
17527 }
17528
17529 /* Read the given DW_AT_subrange DIE.  */
17530
17531 static struct type *
17532 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17533 {
17534   struct type *base_type, *orig_base_type;
17535   struct type *range_type;
17536   struct attribute *attr;
17537   struct dynamic_prop low, high;
17538   int low_default_is_valid;
17539   int high_bound_is_count = 0;
17540   const char *name;
17541   LONGEST negative_mask;
17542
17543   orig_base_type = die_type (die, cu);
17544   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17545      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17546      creating the range type, but we use the result of check_typedef
17547      when examining properties of the type.  */
17548   base_type = check_typedef (orig_base_type);
17549
17550   /* The die_type call above may have already set the type for this DIE.  */
17551   range_type = get_die_type (die, cu);
17552   if (range_type)
17553     return range_type;
17554
17555   low.kind = PROP_CONST;
17556   high.kind = PROP_CONST;
17557   high.data.const_val = 0;
17558
17559   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17560      omitting DW_AT_lower_bound.  */
17561   switch (cu->language)
17562     {
17563     case language_c:
17564     case language_cplus:
17565       low.data.const_val = 0;
17566       low_default_is_valid = 1;
17567       break;
17568     case language_fortran:
17569       low.data.const_val = 1;
17570       low_default_is_valid = 1;
17571       break;
17572     case language_d:
17573     case language_objc:
17574     case language_rust:
17575       low.data.const_val = 0;
17576       low_default_is_valid = (cu->header.version >= 4);
17577       break;
17578     case language_ada:
17579     case language_m2:
17580     case language_pascal:
17581       low.data.const_val = 1;
17582       low_default_is_valid = (cu->header.version >= 4);
17583       break;
17584     default:
17585       low.data.const_val = 0;
17586       low_default_is_valid = 0;
17587       break;
17588     }
17589
17590   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17591   if (attr)
17592     attr_to_dynamic_prop (attr, die, cu, &low);
17593   else if (!low_default_is_valid)
17594     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
17595                                       "- DIE at 0x%x [in module %s]"),
17596                to_underlying (die->sect_off), objfile_name (cu->objfile));
17597
17598   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
17599   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17600     {
17601       attr = dwarf2_attr (die, DW_AT_count, cu);
17602       if (attr_to_dynamic_prop (attr, die, cu, &high))
17603         {
17604           /* If bounds are constant do the final calculation here.  */
17605           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17606             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17607           else
17608             high_bound_is_count = 1;
17609         }
17610     }
17611
17612   /* Dwarf-2 specifications explicitly allows to create subrange types
17613      without specifying a base type.
17614      In that case, the base type must be set to the type of
17615      the lower bound, upper bound or count, in that order, if any of these
17616      three attributes references an object that has a type.
17617      If no base type is found, the Dwarf-2 specifications say that
17618      a signed integer type of size equal to the size of an address should
17619      be used.
17620      For the following C code: `extern char gdb_int [];'
17621      GCC produces an empty range DIE.
17622      FIXME: muller/2010-05-28: Possible references to object for low bound,
17623      high bound or count are not yet handled by this code.  */
17624   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17625     {
17626       struct objfile *objfile = cu->objfile;
17627       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17628       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17629       struct type *int_type = objfile_type (objfile)->builtin_int;
17630
17631       /* Test "int", "long int", and "long long int" objfile types,
17632          and select the first one having a size above or equal to the
17633          architecture address size.  */
17634       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17635         base_type = int_type;
17636       else
17637         {
17638           int_type = objfile_type (objfile)->builtin_long;
17639           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17640             base_type = int_type;
17641           else
17642             {
17643               int_type = objfile_type (objfile)->builtin_long_long;
17644               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17645                 base_type = int_type;
17646             }
17647         }
17648     }
17649
17650   /* Normally, the DWARF producers are expected to use a signed
17651      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17652      But this is unfortunately not always the case, as witnessed
17653      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17654      is used instead.  To work around that ambiguity, we treat
17655      the bounds as signed, and thus sign-extend their values, when
17656      the base type is signed.  */
17657   negative_mask =
17658     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17659   if (low.kind == PROP_CONST
17660       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17661     low.data.const_val |= negative_mask;
17662   if (high.kind == PROP_CONST
17663       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17664     high.data.const_val |= negative_mask;
17665
17666   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17667
17668   if (high_bound_is_count)
17669     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17670
17671   /* Ada expects an empty array on no boundary attributes.  */
17672   if (attr == NULL && cu->language != language_ada)
17673     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17674
17675   name = dwarf2_name (die, cu);
17676   if (name)
17677     TYPE_NAME (range_type) = name;
17678
17679   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17680   if (attr)
17681     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17682
17683   set_die_type (die, range_type, cu);
17684
17685   /* set_die_type should be already done.  */
17686   set_descriptive_type (range_type, die, cu);
17687
17688   return range_type;
17689 }
17690
17691 static struct type *
17692 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17693 {
17694   struct type *type;
17695
17696   /* For now, we only support the C meaning of an unspecified type: void.  */
17697
17698   type = init_type (cu->objfile, TYPE_CODE_VOID, 0, NULL);
17699   TYPE_NAME (type) = dwarf2_name (die, cu);
17700
17701   return set_die_type (die, type, cu);
17702 }
17703
17704 /* Read a single die and all its descendents.  Set the die's sibling
17705    field to NULL; set other fields in the die correctly, and set all
17706    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17707    location of the info_ptr after reading all of those dies.  PARENT
17708    is the parent of the die in question.  */
17709
17710 static struct die_info *
17711 read_die_and_children (const struct die_reader_specs *reader,
17712                        const gdb_byte *info_ptr,
17713                        const gdb_byte **new_info_ptr,
17714                        struct die_info *parent)
17715 {
17716   struct die_info *die;
17717   const gdb_byte *cur_ptr;
17718   int has_children;
17719
17720   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17721   if (die == NULL)
17722     {
17723       *new_info_ptr = cur_ptr;
17724       return NULL;
17725     }
17726   store_in_ref_table (die, reader->cu);
17727
17728   if (has_children)
17729     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17730   else
17731     {
17732       die->child = NULL;
17733       *new_info_ptr = cur_ptr;
17734     }
17735
17736   die->sibling = NULL;
17737   die->parent = parent;
17738   return die;
17739 }
17740
17741 /* Read a die, all of its descendents, and all of its siblings; set
17742    all of the fields of all of the dies correctly.  Arguments are as
17743    in read_die_and_children.  */
17744
17745 static struct die_info *
17746 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17747                          const gdb_byte *info_ptr,
17748                          const gdb_byte **new_info_ptr,
17749                          struct die_info *parent)
17750 {
17751   struct die_info *first_die, *last_sibling;
17752   const gdb_byte *cur_ptr;
17753
17754   cur_ptr = info_ptr;
17755   first_die = last_sibling = NULL;
17756
17757   while (1)
17758     {
17759       struct die_info *die
17760         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17761
17762       if (die == NULL)
17763         {
17764           *new_info_ptr = cur_ptr;
17765           return first_die;
17766         }
17767
17768       if (!first_die)
17769         first_die = die;
17770       else
17771         last_sibling->sibling = die;
17772
17773       last_sibling = die;
17774     }
17775 }
17776
17777 /* Read a die, all of its descendents, and all of its siblings; set
17778    all of the fields of all of the dies correctly.  Arguments are as
17779    in read_die_and_children.
17780    This the main entry point for reading a DIE and all its children.  */
17781
17782 static struct die_info *
17783 read_die_and_siblings (const struct die_reader_specs *reader,
17784                        const gdb_byte *info_ptr,
17785                        const gdb_byte **new_info_ptr,
17786                        struct die_info *parent)
17787 {
17788   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17789                                                   new_info_ptr, parent);
17790
17791   if (dwarf_die_debug)
17792     {
17793       fprintf_unfiltered (gdb_stdlog,
17794                           "Read die from %s@0x%x of %s:\n",
17795                           get_section_name (reader->die_section),
17796                           (unsigned) (info_ptr - reader->die_section->buffer),
17797                           bfd_get_filename (reader->abfd));
17798       dump_die (die, dwarf_die_debug);
17799     }
17800
17801   return die;
17802 }
17803
17804 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17805    attributes.
17806    The caller is responsible for filling in the extra attributes
17807    and updating (*DIEP)->num_attrs.
17808    Set DIEP to point to a newly allocated die with its information,
17809    except for its child, sibling, and parent fields.
17810    Set HAS_CHILDREN to tell whether the die has children or not.  */
17811
17812 static const gdb_byte *
17813 read_full_die_1 (const struct die_reader_specs *reader,
17814                  struct die_info **diep, const gdb_byte *info_ptr,
17815                  int *has_children, int num_extra_attrs)
17816 {
17817   unsigned int abbrev_number, bytes_read, i;
17818   struct abbrev_info *abbrev;
17819   struct die_info *die;
17820   struct dwarf2_cu *cu = reader->cu;
17821   bfd *abfd = reader->abfd;
17822
17823   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
17824   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
17825   info_ptr += bytes_read;
17826   if (!abbrev_number)
17827     {
17828       *diep = NULL;
17829       *has_children = 0;
17830       return info_ptr;
17831     }
17832
17833   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
17834   if (!abbrev)
17835     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
17836            abbrev_number,
17837            bfd_get_filename (abfd));
17838
17839   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
17840   die->sect_off = sect_off;
17841   die->tag = abbrev->tag;
17842   die->abbrev = abbrev_number;
17843
17844   /* Make the result usable.
17845      The caller needs to update num_attrs after adding the extra
17846      attributes.  */
17847   die->num_attrs = abbrev->num_attrs;
17848
17849   for (i = 0; i < abbrev->num_attrs; ++i)
17850     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
17851                                info_ptr);
17852
17853   *diep = die;
17854   *has_children = abbrev->has_children;
17855   return info_ptr;
17856 }
17857
17858 /* Read a die and all its attributes.
17859    Set DIEP to point to a newly allocated die with its information,
17860    except for its child, sibling, and parent fields.
17861    Set HAS_CHILDREN to tell whether the die has children or not.  */
17862
17863 static const gdb_byte *
17864 read_full_die (const struct die_reader_specs *reader,
17865                struct die_info **diep, const gdb_byte *info_ptr,
17866                int *has_children)
17867 {
17868   const gdb_byte *result;
17869
17870   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
17871
17872   if (dwarf_die_debug)
17873     {
17874       fprintf_unfiltered (gdb_stdlog,
17875                           "Read die from %s@0x%x of %s:\n",
17876                           get_section_name (reader->die_section),
17877                           (unsigned) (info_ptr - reader->die_section->buffer),
17878                           bfd_get_filename (reader->abfd));
17879       dump_die (*diep, dwarf_die_debug);
17880     }
17881
17882   return result;
17883 }
17884 \f
17885 /* Abbreviation tables.
17886
17887    In DWARF version 2, the description of the debugging information is
17888    stored in a separate .debug_abbrev section.  Before we read any
17889    dies from a section we read in all abbreviations and install them
17890    in a hash table.  */
17891
17892 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
17893
17894 static struct abbrev_info *
17895 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
17896 {
17897   struct abbrev_info *abbrev;
17898
17899   abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
17900   memset (abbrev, 0, sizeof (struct abbrev_info));
17901
17902   return abbrev;
17903 }
17904
17905 /* Add an abbreviation to the table.  */
17906
17907 static void
17908 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
17909                          unsigned int abbrev_number,
17910                          struct abbrev_info *abbrev)
17911 {
17912   unsigned int hash_number;
17913
17914   hash_number = abbrev_number % ABBREV_HASH_SIZE;
17915   abbrev->next = abbrev_table->abbrevs[hash_number];
17916   abbrev_table->abbrevs[hash_number] = abbrev;
17917 }
17918
17919 /* Look up an abbrev in the table.
17920    Returns NULL if the abbrev is not found.  */
17921
17922 static struct abbrev_info *
17923 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
17924                             unsigned int abbrev_number)
17925 {
17926   unsigned int hash_number;
17927   struct abbrev_info *abbrev;
17928
17929   hash_number = abbrev_number % ABBREV_HASH_SIZE;
17930   abbrev = abbrev_table->abbrevs[hash_number];
17931
17932   while (abbrev)
17933     {
17934       if (abbrev->number == abbrev_number)
17935         return abbrev;
17936       abbrev = abbrev->next;
17937     }
17938   return NULL;
17939 }
17940
17941 /* Read in an abbrev table.  */
17942
17943 static struct abbrev_table *
17944 abbrev_table_read_table (struct dwarf2_section_info *section,
17945                          sect_offset sect_off)
17946 {
17947   struct objfile *objfile = dwarf2_per_objfile->objfile;
17948   bfd *abfd = get_section_bfd_owner (section);
17949   struct abbrev_table *abbrev_table;
17950   const gdb_byte *abbrev_ptr;
17951   struct abbrev_info *cur_abbrev;
17952   unsigned int abbrev_number, bytes_read, abbrev_name;
17953   unsigned int abbrev_form;
17954   struct attr_abbrev *cur_attrs;
17955   unsigned int allocated_attrs;
17956
17957   abbrev_table = XNEW (struct abbrev_table);
17958   abbrev_table->sect_off = sect_off;
17959   obstack_init (&abbrev_table->abbrev_obstack);
17960   abbrev_table->abbrevs =
17961     XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
17962                ABBREV_HASH_SIZE);
17963   memset (abbrev_table->abbrevs, 0,
17964           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
17965
17966   dwarf2_read_section (objfile, section);
17967   abbrev_ptr = section->buffer + to_underlying (sect_off);
17968   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17969   abbrev_ptr += bytes_read;
17970
17971   allocated_attrs = ATTR_ALLOC_CHUNK;
17972   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
17973
17974   /* Loop until we reach an abbrev number of 0.  */
17975   while (abbrev_number)
17976     {
17977       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
17978
17979       /* read in abbrev header */
17980       cur_abbrev->number = abbrev_number;
17981       cur_abbrev->tag
17982         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17983       abbrev_ptr += bytes_read;
17984       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
17985       abbrev_ptr += 1;
17986
17987       /* now read in declarations */
17988       for (;;)
17989         {
17990           LONGEST implicit_const;
17991
17992           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17993           abbrev_ptr += bytes_read;
17994           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
17995           abbrev_ptr += bytes_read;
17996           if (abbrev_form == DW_FORM_implicit_const)
17997             {
17998               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
17999                                                    &bytes_read);
18000               abbrev_ptr += bytes_read;
18001             }
18002           else
18003             {
18004               /* Initialize it due to a false compiler warning.  */
18005               implicit_const = -1;
18006             }
18007
18008           if (abbrev_name == 0)
18009             break;
18010
18011           if (cur_abbrev->num_attrs == allocated_attrs)
18012             {
18013               allocated_attrs += ATTR_ALLOC_CHUNK;
18014               cur_attrs
18015                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18016             }
18017
18018           cur_attrs[cur_abbrev->num_attrs].name
18019             = (enum dwarf_attribute) abbrev_name;
18020           cur_attrs[cur_abbrev->num_attrs].form
18021             = (enum dwarf_form) abbrev_form;
18022           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18023           ++cur_abbrev->num_attrs;
18024         }
18025
18026       cur_abbrev->attrs =
18027         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18028                    cur_abbrev->num_attrs);
18029       memcpy (cur_abbrev->attrs, cur_attrs,
18030               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18031
18032       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
18033
18034       /* Get next abbreviation.
18035          Under Irix6 the abbreviations for a compilation unit are not
18036          always properly terminated with an abbrev number of 0.
18037          Exit loop if we encounter an abbreviation which we have
18038          already read (which means we are about to read the abbreviations
18039          for the next compile unit) or if the end of the abbreviation
18040          table is reached.  */
18041       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18042         break;
18043       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18044       abbrev_ptr += bytes_read;
18045       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
18046         break;
18047     }
18048
18049   xfree (cur_attrs);
18050   return abbrev_table;
18051 }
18052
18053 /* Free the resources held by ABBREV_TABLE.  */
18054
18055 static void
18056 abbrev_table_free (struct abbrev_table *abbrev_table)
18057 {
18058   obstack_free (&abbrev_table->abbrev_obstack, NULL);
18059   xfree (abbrev_table);
18060 }
18061
18062 /* Same as abbrev_table_free but as a cleanup.
18063    We pass in a pointer to the pointer to the table so that we can
18064    set the pointer to NULL when we're done.  It also simplifies
18065    build_type_psymtabs_1.  */
18066
18067 static void
18068 abbrev_table_free_cleanup (void *table_ptr)
18069 {
18070   struct abbrev_table **abbrev_table_ptr = (struct abbrev_table **) table_ptr;
18071
18072   if (*abbrev_table_ptr != NULL)
18073     abbrev_table_free (*abbrev_table_ptr);
18074   *abbrev_table_ptr = NULL;
18075 }
18076
18077 /* Read the abbrev table for CU from ABBREV_SECTION.  */
18078
18079 static void
18080 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
18081                      struct dwarf2_section_info *abbrev_section)
18082 {
18083   cu->abbrev_table =
18084     abbrev_table_read_table (abbrev_section, cu->header.abbrev_sect_off);
18085 }
18086
18087 /* Release the memory used by the abbrev table for a compilation unit.  */
18088
18089 static void
18090 dwarf2_free_abbrev_table (void *ptr_to_cu)
18091 {
18092   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr_to_cu;
18093
18094   if (cu->abbrev_table != NULL)
18095     abbrev_table_free (cu->abbrev_table);
18096   /* Set this to NULL so that we SEGV if we try to read it later,
18097      and also because free_comp_unit verifies this is NULL.  */
18098   cu->abbrev_table = NULL;
18099 }
18100 \f
18101 /* Returns nonzero if TAG represents a type that we might generate a partial
18102    symbol for.  */
18103
18104 static int
18105 is_type_tag_for_partial (int tag)
18106 {
18107   switch (tag)
18108     {
18109 #if 0
18110     /* Some types that would be reasonable to generate partial symbols for,
18111        that we don't at present.  */
18112     case DW_TAG_array_type:
18113     case DW_TAG_file_type:
18114     case DW_TAG_ptr_to_member_type:
18115     case DW_TAG_set_type:
18116     case DW_TAG_string_type:
18117     case DW_TAG_subroutine_type:
18118 #endif
18119     case DW_TAG_base_type:
18120     case DW_TAG_class_type:
18121     case DW_TAG_interface_type:
18122     case DW_TAG_enumeration_type:
18123     case DW_TAG_structure_type:
18124     case DW_TAG_subrange_type:
18125     case DW_TAG_typedef:
18126     case DW_TAG_union_type:
18127       return 1;
18128     default:
18129       return 0;
18130     }
18131 }
18132
18133 /* Load all DIEs that are interesting for partial symbols into memory.  */
18134
18135 static struct partial_die_info *
18136 load_partial_dies (const struct die_reader_specs *reader,
18137                    const gdb_byte *info_ptr, int building_psymtab)
18138 {
18139   struct dwarf2_cu *cu = reader->cu;
18140   struct objfile *objfile = cu->objfile;
18141   struct partial_die_info *part_die;
18142   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18143   struct abbrev_info *abbrev;
18144   unsigned int bytes_read;
18145   unsigned int load_all = 0;
18146   int nesting_level = 1;
18147
18148   parent_die = NULL;
18149   last_die = NULL;
18150
18151   gdb_assert (cu->per_cu != NULL);
18152   if (cu->per_cu->load_all_dies)
18153     load_all = 1;
18154
18155   cu->partial_dies
18156     = htab_create_alloc_ex (cu->header.length / 12,
18157                             partial_die_hash,
18158                             partial_die_eq,
18159                             NULL,
18160                             &cu->comp_unit_obstack,
18161                             hashtab_obstack_allocate,
18162                             dummy_obstack_deallocate);
18163
18164   part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
18165
18166   while (1)
18167     {
18168       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
18169
18170       /* A NULL abbrev means the end of a series of children.  */
18171       if (abbrev == NULL)
18172         {
18173           if (--nesting_level == 0)
18174             {
18175               /* PART_DIE was probably the last thing allocated on the
18176                  comp_unit_obstack, so we could call obstack_free
18177                  here.  We don't do that because the waste is small,
18178                  and will be cleaned up when we're done with this
18179                  compilation unit.  This way, we're also more robust
18180                  against other users of the comp_unit_obstack.  */
18181               return first_die;
18182             }
18183           info_ptr += bytes_read;
18184           last_die = parent_die;
18185           parent_die = parent_die->die_parent;
18186           continue;
18187         }
18188
18189       /* Check for template arguments.  We never save these; if
18190          they're seen, we just mark the parent, and go on our way.  */
18191       if (parent_die != NULL
18192           && cu->language == language_cplus
18193           && (abbrev->tag == DW_TAG_template_type_param
18194               || abbrev->tag == DW_TAG_template_value_param))
18195         {
18196           parent_die->has_template_arguments = 1;
18197
18198           if (!load_all)
18199             {
18200               /* We don't need a partial DIE for the template argument.  */
18201               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18202               continue;
18203             }
18204         }
18205
18206       /* We only recurse into c++ subprograms looking for template arguments.
18207          Skip their other children.  */
18208       if (!load_all
18209           && cu->language == language_cplus
18210           && parent_die != NULL
18211           && parent_die->tag == DW_TAG_subprogram)
18212         {
18213           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18214           continue;
18215         }
18216
18217       /* Check whether this DIE is interesting enough to save.  Normally
18218          we would not be interested in members here, but there may be
18219          later variables referencing them via DW_AT_specification (for
18220          static members).  */
18221       if (!load_all
18222           && !is_type_tag_for_partial (abbrev->tag)
18223           && abbrev->tag != DW_TAG_constant
18224           && abbrev->tag != DW_TAG_enumerator
18225           && abbrev->tag != DW_TAG_subprogram
18226           && abbrev->tag != DW_TAG_lexical_block
18227           && abbrev->tag != DW_TAG_variable
18228           && abbrev->tag != DW_TAG_namespace
18229           && abbrev->tag != DW_TAG_module
18230           && abbrev->tag != DW_TAG_member
18231           && abbrev->tag != DW_TAG_imported_unit
18232           && abbrev->tag != DW_TAG_imported_declaration)
18233         {
18234           /* Otherwise we skip to the next sibling, if any.  */
18235           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18236           continue;
18237         }
18238
18239       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
18240                                    info_ptr);
18241
18242       /* This two-pass algorithm for processing partial symbols has a
18243          high cost in cache pressure.  Thus, handle some simple cases
18244          here which cover the majority of C partial symbols.  DIEs
18245          which neither have specification tags in them, nor could have
18246          specification tags elsewhere pointing at them, can simply be
18247          processed and discarded.
18248
18249          This segment is also optional; scan_partial_symbols and
18250          add_partial_symbol will handle these DIEs if we chain
18251          them in normally.  When compilers which do not emit large
18252          quantities of duplicate debug information are more common,
18253          this code can probably be removed.  */
18254
18255       /* Any complete simple types at the top level (pretty much all
18256          of them, for a language without namespaces), can be processed
18257          directly.  */
18258       if (parent_die == NULL
18259           && part_die->has_specification == 0
18260           && part_die->is_declaration == 0
18261           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
18262               || part_die->tag == DW_TAG_base_type
18263               || part_die->tag == DW_TAG_subrange_type))
18264         {
18265           if (building_psymtab && part_die->name != NULL)
18266             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
18267                                  VAR_DOMAIN, LOC_TYPEDEF,
18268                                  &objfile->static_psymbols,
18269                                  0, cu->language, objfile);
18270           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
18271           continue;
18272         }
18273
18274       /* The exception for DW_TAG_typedef with has_children above is
18275          a workaround of GCC PR debug/47510.  In the case of this complaint
18276          type_name_no_tag_or_error will error on such types later.
18277
18278          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18279          it could not find the child DIEs referenced later, this is checked
18280          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18281
18282       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
18283         complaint (&symfile_complaints,
18284                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18285                      "- DIE at 0x%x [in module %s]"),
18286                    to_underlying (part_die->sect_off), objfile_name (objfile));
18287
18288       /* If we're at the second level, and we're an enumerator, and
18289          our parent has no specification (meaning possibly lives in a
18290          namespace elsewhere), then we can add the partial symbol now
18291          instead of queueing it.  */
18292       if (part_die->tag == DW_TAG_enumerator
18293           && parent_die != NULL
18294           && parent_die->die_parent == NULL
18295           && parent_die->tag == DW_TAG_enumeration_type
18296           && parent_die->has_specification == 0)
18297         {
18298           if (part_die->name == NULL)
18299             complaint (&symfile_complaints,
18300                        _("malformed enumerator DIE ignored"));
18301           else if (building_psymtab)
18302             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
18303                                  VAR_DOMAIN, LOC_CONST,
18304                                  cu->language == language_cplus
18305                                  ? &objfile->global_psymbols
18306                                  : &objfile->static_psymbols,
18307                                  0, cu->language, objfile);
18308
18309           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
18310           continue;
18311         }
18312
18313       /* We'll save this DIE so link it in.  */
18314       part_die->die_parent = parent_die;
18315       part_die->die_sibling = NULL;
18316       part_die->die_child = NULL;
18317
18318       if (last_die && last_die == parent_die)
18319         last_die->die_child = part_die;
18320       else if (last_die)
18321         last_die->die_sibling = part_die;
18322
18323       last_die = part_die;
18324
18325       if (first_die == NULL)
18326         first_die = part_die;
18327
18328       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18329          find interesting need to be in the hash table, because we
18330          also have the parent/sibling/child chains; only those that we
18331          might refer to by offset later during partial symbol reading.
18332
18333          For now this means things that might have be the target of a
18334          DW_AT_specification, DW_AT_abstract_origin, or
18335          DW_AT_extension.  DW_AT_extension will refer only to
18336          namespaces; DW_AT_abstract_origin refers to functions (and
18337          many things under the function DIE, but we do not recurse
18338          into function DIEs during partial symbol reading) and
18339          possibly variables as well; DW_AT_specification refers to
18340          declarations.  Declarations ought to have the DW_AT_declaration
18341          flag.  It happens that GCC forgets to put it in sometimes, but
18342          only for functions, not for types.
18343
18344          Adding more things than necessary to the hash table is harmless
18345          except for the performance cost.  Adding too few will result in
18346          wasted time in find_partial_die, when we reread the compilation
18347          unit with load_all_dies set.  */
18348
18349       if (load_all
18350           || abbrev->tag == DW_TAG_constant
18351           || abbrev->tag == DW_TAG_subprogram
18352           || abbrev->tag == DW_TAG_variable
18353           || abbrev->tag == DW_TAG_namespace
18354           || part_die->is_declaration)
18355         {
18356           void **slot;
18357
18358           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18359                                            to_underlying (part_die->sect_off),
18360                                            INSERT);
18361           *slot = part_die;
18362         }
18363
18364       part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
18365
18366       /* For some DIEs we want to follow their children (if any).  For C
18367          we have no reason to follow the children of structures; for other
18368          languages we have to, so that we can get at method physnames
18369          to infer fully qualified class names, for DW_AT_specification,
18370          and for C++ template arguments.  For C++, we also look one level
18371          inside functions to find template arguments (if the name of the
18372          function does not already contain the template arguments).
18373
18374          For Ada, we need to scan the children of subprograms and lexical
18375          blocks as well because Ada allows the definition of nested
18376          entities that could be interesting for the debugger, such as
18377          nested subprograms for instance.  */
18378       if (last_die->has_children
18379           && (load_all
18380               || last_die->tag == DW_TAG_namespace
18381               || last_die->tag == DW_TAG_module
18382               || last_die->tag == DW_TAG_enumeration_type
18383               || (cu->language == language_cplus
18384                   && last_die->tag == DW_TAG_subprogram
18385                   && (last_die->name == NULL
18386                       || strchr (last_die->name, '<') == NULL))
18387               || (cu->language != language_c
18388                   && (last_die->tag == DW_TAG_class_type
18389                       || last_die->tag == DW_TAG_interface_type
18390                       || last_die->tag == DW_TAG_structure_type
18391                       || last_die->tag == DW_TAG_union_type))
18392               || (cu->language == language_ada
18393                   && (last_die->tag == DW_TAG_subprogram
18394                       || last_die->tag == DW_TAG_lexical_block))))
18395         {
18396           nesting_level++;
18397           parent_die = last_die;
18398           continue;
18399         }
18400
18401       /* Otherwise we skip to the next sibling, if any.  */
18402       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18403
18404       /* Back to the top, do it again.  */
18405     }
18406 }
18407
18408 /* Read a minimal amount of information into the minimal die structure.  */
18409
18410 static const gdb_byte *
18411 read_partial_die (const struct die_reader_specs *reader,
18412                   struct partial_die_info *part_die,
18413                   struct abbrev_info *abbrev, unsigned int abbrev_len,
18414                   const gdb_byte *info_ptr)
18415 {
18416   struct dwarf2_cu *cu = reader->cu;
18417   struct objfile *objfile = cu->objfile;
18418   const gdb_byte *buffer = reader->buffer;
18419   unsigned int i;
18420   struct attribute attr;
18421   int has_low_pc_attr = 0;
18422   int has_high_pc_attr = 0;
18423   int high_pc_relative = 0;
18424
18425   memset (part_die, 0, sizeof (struct partial_die_info));
18426
18427   part_die->sect_off = (sect_offset) (info_ptr - buffer);
18428
18429   info_ptr += abbrev_len;
18430
18431   if (abbrev == NULL)
18432     return info_ptr;
18433
18434   part_die->tag = abbrev->tag;
18435   part_die->has_children = abbrev->has_children;
18436
18437   for (i = 0; i < abbrev->num_attrs; ++i)
18438     {
18439       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
18440
18441       /* Store the data if it is of an attribute we want to keep in a
18442          partial symbol table.  */
18443       switch (attr.name)
18444         {
18445         case DW_AT_name:
18446           switch (part_die->tag)
18447             {
18448             case DW_TAG_compile_unit:
18449             case DW_TAG_partial_unit:
18450             case DW_TAG_type_unit:
18451               /* Compilation units have a DW_AT_name that is a filename, not
18452                  a source language identifier.  */
18453             case DW_TAG_enumeration_type:
18454             case DW_TAG_enumerator:
18455               /* These tags always have simple identifiers already; no need
18456                  to canonicalize them.  */
18457               part_die->name = DW_STRING (&attr);
18458               break;
18459             default:
18460               part_die->name
18461                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18462                                             &objfile->per_bfd->storage_obstack);
18463               break;
18464             }
18465           break;
18466         case DW_AT_linkage_name:
18467         case DW_AT_MIPS_linkage_name:
18468           /* Note that both forms of linkage name might appear.  We
18469              assume they will be the same, and we only store the last
18470              one we see.  */
18471           if (cu->language == language_ada)
18472             part_die->name = DW_STRING (&attr);
18473           part_die->linkage_name = DW_STRING (&attr);
18474           break;
18475         case DW_AT_low_pc:
18476           has_low_pc_attr = 1;
18477           part_die->lowpc = attr_value_as_address (&attr);
18478           break;
18479         case DW_AT_high_pc:
18480           has_high_pc_attr = 1;
18481           part_die->highpc = attr_value_as_address (&attr);
18482           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18483                 high_pc_relative = 1;
18484           break;
18485         case DW_AT_location:
18486           /* Support the .debug_loc offsets.  */
18487           if (attr_form_is_block (&attr))
18488             {
18489                part_die->d.locdesc = DW_BLOCK (&attr);
18490             }
18491           else if (attr_form_is_section_offset (&attr))
18492             {
18493               dwarf2_complex_location_expr_complaint ();
18494             }
18495           else
18496             {
18497               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18498                                                      "partial symbol information");
18499             }
18500           break;
18501         case DW_AT_external:
18502           part_die->is_external = DW_UNSND (&attr);
18503           break;
18504         case DW_AT_declaration:
18505           part_die->is_declaration = DW_UNSND (&attr);
18506           break;
18507         case DW_AT_type:
18508           part_die->has_type = 1;
18509           break;
18510         case DW_AT_abstract_origin:
18511         case DW_AT_specification:
18512         case DW_AT_extension:
18513           part_die->has_specification = 1;
18514           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
18515           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18516                                    || cu->per_cu->is_dwz);
18517           break;
18518         case DW_AT_sibling:
18519           /* Ignore absolute siblings, they might point outside of
18520              the current compile unit.  */
18521           if (attr.form == DW_FORM_ref_addr)
18522             complaint (&symfile_complaints,
18523                        _("ignoring absolute DW_AT_sibling"));
18524           else
18525             {
18526               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18527               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18528
18529               if (sibling_ptr < info_ptr)
18530                 complaint (&symfile_complaints,
18531                            _("DW_AT_sibling points backwards"));
18532               else if (sibling_ptr > reader->buffer_end)
18533                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18534               else
18535                 part_die->sibling = sibling_ptr;
18536             }
18537           break;
18538         case DW_AT_byte_size:
18539           part_die->has_byte_size = 1;
18540           break;
18541         case DW_AT_const_value:
18542           part_die->has_const_value = 1;
18543           break;
18544         case DW_AT_calling_convention:
18545           /* DWARF doesn't provide a way to identify a program's source-level
18546              entry point.  DW_AT_calling_convention attributes are only meant
18547              to describe functions' calling conventions.
18548
18549              However, because it's a necessary piece of information in
18550              Fortran, and before DWARF 4 DW_CC_program was the only
18551              piece of debugging information whose definition refers to
18552              a 'main program' at all, several compilers marked Fortran
18553              main programs with DW_CC_program --- even when those
18554              functions use the standard calling conventions.
18555
18556              Although DWARF now specifies a way to provide this
18557              information, we support this practice for backward
18558              compatibility.  */
18559           if (DW_UNSND (&attr) == DW_CC_program
18560               && cu->language == language_fortran)
18561             part_die->main_subprogram = 1;
18562           break;
18563         case DW_AT_inline:
18564           if (DW_UNSND (&attr) == DW_INL_inlined
18565               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18566             part_die->may_be_inlined = 1;
18567           break;
18568
18569         case DW_AT_import:
18570           if (part_die->tag == DW_TAG_imported_unit)
18571             {
18572               part_die->d.sect_off = dwarf2_get_ref_die_offset (&attr);
18573               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18574                                   || cu->per_cu->is_dwz);
18575             }
18576           break;
18577
18578         case DW_AT_main_subprogram:
18579           part_die->main_subprogram = DW_UNSND (&attr);
18580           break;
18581
18582         default:
18583           break;
18584         }
18585     }
18586
18587   if (high_pc_relative)
18588     part_die->highpc += part_die->lowpc;
18589
18590   if (has_low_pc_attr && has_high_pc_attr)
18591     {
18592       /* When using the GNU linker, .gnu.linkonce. sections are used to
18593          eliminate duplicate copies of functions and vtables and such.
18594          The linker will arbitrarily choose one and discard the others.
18595          The AT_*_pc values for such functions refer to local labels in
18596          these sections.  If the section from that file was discarded, the
18597          labels are not in the output, so the relocs get a value of 0.
18598          If this is a discarded function, mark the pc bounds as invalid,
18599          so that GDB will ignore it.  */
18600       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18601         {
18602           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18603
18604           complaint (&symfile_complaints,
18605                      _("DW_AT_low_pc %s is zero "
18606                        "for DIE at 0x%x [in module %s]"),
18607                      paddress (gdbarch, part_die->lowpc),
18608                      to_underlying (part_die->sect_off), objfile_name (objfile));
18609         }
18610       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18611       else if (part_die->lowpc >= part_die->highpc)
18612         {
18613           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18614
18615           complaint (&symfile_complaints,
18616                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18617                        "for DIE at 0x%x [in module %s]"),
18618                      paddress (gdbarch, part_die->lowpc),
18619                      paddress (gdbarch, part_die->highpc),
18620                      to_underlying (part_die->sect_off),
18621                      objfile_name (objfile));
18622         }
18623       else
18624         part_die->has_pc_info = 1;
18625     }
18626
18627   return info_ptr;
18628 }
18629
18630 /* Find a cached partial DIE at OFFSET in CU.  */
18631
18632 static struct partial_die_info *
18633 find_partial_die_in_comp_unit (sect_offset sect_off, struct dwarf2_cu *cu)
18634 {
18635   struct partial_die_info *lookup_die = NULL;
18636   struct partial_die_info part_die;
18637
18638   part_die.sect_off = sect_off;
18639   lookup_die = ((struct partial_die_info *)
18640                 htab_find_with_hash (cu->partial_dies, &part_die,
18641                                      to_underlying (sect_off)));
18642
18643   return lookup_die;
18644 }
18645
18646 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18647    except in the case of .debug_types DIEs which do not reference
18648    outside their CU (they do however referencing other types via
18649    DW_FORM_ref_sig8).  */
18650
18651 static struct partial_die_info *
18652 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18653 {
18654   struct objfile *objfile = cu->objfile;
18655   struct dwarf2_per_cu_data *per_cu = NULL;
18656   struct partial_die_info *pd = NULL;
18657
18658   if (offset_in_dwz == cu->per_cu->is_dwz
18659       && offset_in_cu_p (&cu->header, sect_off))
18660     {
18661       pd = find_partial_die_in_comp_unit (sect_off, cu);
18662       if (pd != NULL)
18663         return pd;
18664       /* We missed recording what we needed.
18665          Load all dies and try again.  */
18666       per_cu = cu->per_cu;
18667     }
18668   else
18669     {
18670       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18671       if (cu->per_cu->is_debug_types)
18672         {
18673           error (_("Dwarf Error: Type Unit at offset 0x%x contains"
18674                    " external reference to offset 0x%x [in module %s].\n"),
18675                  to_underlying (cu->header.sect_off), to_underlying (sect_off),
18676                  bfd_get_filename (objfile->obfd));
18677         }
18678       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18679                                                  objfile);
18680
18681       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18682         load_partial_comp_unit (per_cu);
18683
18684       per_cu->cu->last_used = 0;
18685       pd = find_partial_die_in_comp_unit (sect_off, per_cu->cu);
18686     }
18687
18688   /* If we didn't find it, and not all dies have been loaded,
18689      load them all and try again.  */
18690
18691   if (pd == NULL && per_cu->load_all_dies == 0)
18692     {
18693       per_cu->load_all_dies = 1;
18694
18695       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18696          THIS_CU->cu may already be in use.  So we can't just free it and
18697          replace its DIEs with the ones we read in.  Instead, we leave those
18698          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18699          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18700          set.  */
18701       load_partial_comp_unit (per_cu);
18702
18703       pd = find_partial_die_in_comp_unit (sect_off, per_cu->cu);
18704     }
18705
18706   if (pd == NULL)
18707     internal_error (__FILE__, __LINE__,
18708                     _("could not find partial DIE 0x%x "
18709                       "in cache [from module %s]\n"),
18710                     to_underlying (sect_off), bfd_get_filename (objfile->obfd));
18711   return pd;
18712 }
18713
18714 /* See if we can figure out if the class lives in a namespace.  We do
18715    this by looking for a member function; its demangled name will
18716    contain namespace info, if there is any.  */
18717
18718 static void
18719 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18720                                   struct dwarf2_cu *cu)
18721 {
18722   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18723      what template types look like, because the demangler
18724      frequently doesn't give the same name as the debug info.  We
18725      could fix this by only using the demangled name to get the
18726      prefix (but see comment in read_structure_type).  */
18727
18728   struct partial_die_info *real_pdi;
18729   struct partial_die_info *child_pdi;
18730
18731   /* If this DIE (this DIE's specification, if any) has a parent, then
18732      we should not do this.  We'll prepend the parent's fully qualified
18733      name when we create the partial symbol.  */
18734
18735   real_pdi = struct_pdi;
18736   while (real_pdi->has_specification)
18737     real_pdi = find_partial_die (real_pdi->spec_offset,
18738                                  real_pdi->spec_is_dwz, cu);
18739
18740   if (real_pdi->die_parent != NULL)
18741     return;
18742
18743   for (child_pdi = struct_pdi->die_child;
18744        child_pdi != NULL;
18745        child_pdi = child_pdi->die_sibling)
18746     {
18747       if (child_pdi->tag == DW_TAG_subprogram
18748           && child_pdi->linkage_name != NULL)
18749         {
18750           char *actual_class_name
18751             = language_class_name_from_physname (cu->language_defn,
18752                                                  child_pdi->linkage_name);
18753           if (actual_class_name != NULL)
18754             {
18755               struct_pdi->name
18756                 = ((const char *)
18757                    obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
18758                                   actual_class_name,
18759                                   strlen (actual_class_name)));
18760               xfree (actual_class_name);
18761             }
18762           break;
18763         }
18764     }
18765 }
18766
18767 /* Adjust PART_DIE before generating a symbol for it.  This function
18768    may set the is_external flag or change the DIE's name.  */
18769
18770 static void
18771 fixup_partial_die (struct partial_die_info *part_die,
18772                    struct dwarf2_cu *cu)
18773 {
18774   /* Once we've fixed up a die, there's no point in doing so again.
18775      This also avoids a memory leak if we were to call
18776      guess_partial_die_structure_name multiple times.  */
18777   if (part_die->fixup_called)
18778     return;
18779
18780   /* If we found a reference attribute and the DIE has no name, try
18781      to find a name in the referred to DIE.  */
18782
18783   if (part_die->name == NULL && part_die->has_specification)
18784     {
18785       struct partial_die_info *spec_die;
18786
18787       spec_die = find_partial_die (part_die->spec_offset,
18788                                    part_die->spec_is_dwz, cu);
18789
18790       fixup_partial_die (spec_die, cu);
18791
18792       if (spec_die->name)
18793         {
18794           part_die->name = spec_die->name;
18795
18796           /* Copy DW_AT_external attribute if it is set.  */
18797           if (spec_die->is_external)
18798             part_die->is_external = spec_die->is_external;
18799         }
18800     }
18801
18802   /* Set default names for some unnamed DIEs.  */
18803
18804   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
18805     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
18806
18807   /* If there is no parent die to provide a namespace, and there are
18808      children, see if we can determine the namespace from their linkage
18809      name.  */
18810   if (cu->language == language_cplus
18811       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
18812       && part_die->die_parent == NULL
18813       && part_die->has_children
18814       && (part_die->tag == DW_TAG_class_type
18815           || part_die->tag == DW_TAG_structure_type
18816           || part_die->tag == DW_TAG_union_type))
18817     guess_partial_die_structure_name (part_die, cu);
18818
18819   /* GCC might emit a nameless struct or union that has a linkage
18820      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18821   if (part_die->name == NULL
18822       && (part_die->tag == DW_TAG_class_type
18823           || part_die->tag == DW_TAG_interface_type
18824           || part_die->tag == DW_TAG_structure_type
18825           || part_die->tag == DW_TAG_union_type)
18826       && part_die->linkage_name != NULL)
18827     {
18828       char *demangled;
18829
18830       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
18831       if (demangled)
18832         {
18833           const char *base;
18834
18835           /* Strip any leading namespaces/classes, keep only the base name.
18836              DW_AT_name for named DIEs does not contain the prefixes.  */
18837           base = strrchr (demangled, ':');
18838           if (base && base > demangled && base[-1] == ':')
18839             base++;
18840           else
18841             base = demangled;
18842
18843           part_die->name
18844             = ((const char *)
18845                obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
18846                               base, strlen (base)));
18847           xfree (demangled);
18848         }
18849     }
18850
18851   part_die->fixup_called = 1;
18852 }
18853
18854 /* Read an attribute value described by an attribute form.  */
18855
18856 static const gdb_byte *
18857 read_attribute_value (const struct die_reader_specs *reader,
18858                       struct attribute *attr, unsigned form,
18859                       LONGEST implicit_const, const gdb_byte *info_ptr)
18860 {
18861   struct dwarf2_cu *cu = reader->cu;
18862   struct objfile *objfile = cu->objfile;
18863   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18864   bfd *abfd = reader->abfd;
18865   struct comp_unit_head *cu_header = &cu->header;
18866   unsigned int bytes_read;
18867   struct dwarf_block *blk;
18868
18869   attr->form = (enum dwarf_form) form;
18870   switch (form)
18871     {
18872     case DW_FORM_ref_addr:
18873       if (cu->header.version == 2)
18874         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18875       else
18876         DW_UNSND (attr) = read_offset (abfd, info_ptr,
18877                                        &cu->header, &bytes_read);
18878       info_ptr += bytes_read;
18879       break;
18880     case DW_FORM_GNU_ref_alt:
18881       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18882       info_ptr += bytes_read;
18883       break;
18884     case DW_FORM_addr:
18885       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18886       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
18887       info_ptr += bytes_read;
18888       break;
18889     case DW_FORM_block2:
18890       blk = dwarf_alloc_block (cu);
18891       blk->size = read_2_bytes (abfd, info_ptr);
18892       info_ptr += 2;
18893       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18894       info_ptr += blk->size;
18895       DW_BLOCK (attr) = blk;
18896       break;
18897     case DW_FORM_block4:
18898       blk = dwarf_alloc_block (cu);
18899       blk->size = read_4_bytes (abfd, info_ptr);
18900       info_ptr += 4;
18901       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18902       info_ptr += blk->size;
18903       DW_BLOCK (attr) = blk;
18904       break;
18905     case DW_FORM_data2:
18906       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
18907       info_ptr += 2;
18908       break;
18909     case DW_FORM_data4:
18910       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
18911       info_ptr += 4;
18912       break;
18913     case DW_FORM_data8:
18914       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
18915       info_ptr += 8;
18916       break;
18917     case DW_FORM_data16:
18918       blk = dwarf_alloc_block (cu);
18919       blk->size = 16;
18920       blk->data = read_n_bytes (abfd, info_ptr, 16);
18921       info_ptr += 16;
18922       DW_BLOCK (attr) = blk;
18923       break;
18924     case DW_FORM_sec_offset:
18925       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18926       info_ptr += bytes_read;
18927       break;
18928     case DW_FORM_string:
18929       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
18930       DW_STRING_IS_CANONICAL (attr) = 0;
18931       info_ptr += bytes_read;
18932       break;
18933     case DW_FORM_strp:
18934       if (!cu->per_cu->is_dwz)
18935         {
18936           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
18937                                                    &bytes_read);
18938           DW_STRING_IS_CANONICAL (attr) = 0;
18939           info_ptr += bytes_read;
18940           break;
18941         }
18942       /* FALLTHROUGH */
18943     case DW_FORM_line_strp:
18944       if (!cu->per_cu->is_dwz)
18945         {
18946           DW_STRING (attr) = read_indirect_line_string (abfd, info_ptr,
18947                                                         cu_header, &bytes_read);
18948           DW_STRING_IS_CANONICAL (attr) = 0;
18949           info_ptr += bytes_read;
18950           break;
18951         }
18952       /* FALLTHROUGH */
18953     case DW_FORM_GNU_strp_alt:
18954       {
18955         struct dwz_file *dwz = dwarf2_get_dwz_file ();
18956         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
18957                                           &bytes_read);
18958
18959         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
18960         DW_STRING_IS_CANONICAL (attr) = 0;
18961         info_ptr += bytes_read;
18962       }
18963       break;
18964     case DW_FORM_exprloc:
18965     case DW_FORM_block:
18966       blk = dwarf_alloc_block (cu);
18967       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18968       info_ptr += bytes_read;
18969       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18970       info_ptr += blk->size;
18971       DW_BLOCK (attr) = blk;
18972       break;
18973     case DW_FORM_block1:
18974       blk = dwarf_alloc_block (cu);
18975       blk->size = read_1_byte (abfd, info_ptr);
18976       info_ptr += 1;
18977       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18978       info_ptr += blk->size;
18979       DW_BLOCK (attr) = blk;
18980       break;
18981     case DW_FORM_data1:
18982       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
18983       info_ptr += 1;
18984       break;
18985     case DW_FORM_flag:
18986       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
18987       info_ptr += 1;
18988       break;
18989     case DW_FORM_flag_present:
18990       DW_UNSND (attr) = 1;
18991       break;
18992     case DW_FORM_sdata:
18993       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
18994       info_ptr += bytes_read;
18995       break;
18996     case DW_FORM_udata:
18997       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18998       info_ptr += bytes_read;
18999       break;
19000     case DW_FORM_ref1:
19001       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19002                          + read_1_byte (abfd, info_ptr));
19003       info_ptr += 1;
19004       break;
19005     case DW_FORM_ref2:
19006       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19007                          + read_2_bytes (abfd, info_ptr));
19008       info_ptr += 2;
19009       break;
19010     case DW_FORM_ref4:
19011       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19012                          + read_4_bytes (abfd, info_ptr));
19013       info_ptr += 4;
19014       break;
19015     case DW_FORM_ref8:
19016       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19017                          + read_8_bytes (abfd, info_ptr));
19018       info_ptr += 8;
19019       break;
19020     case DW_FORM_ref_sig8:
19021       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19022       info_ptr += 8;
19023       break;
19024     case DW_FORM_ref_udata:
19025       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19026                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19027       info_ptr += bytes_read;
19028       break;
19029     case DW_FORM_indirect:
19030       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19031       info_ptr += bytes_read;
19032       if (form == DW_FORM_implicit_const)
19033         {
19034           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19035           info_ptr += bytes_read;
19036         }
19037       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19038                                        info_ptr);
19039       break;
19040     case DW_FORM_implicit_const:
19041       DW_SND (attr) = implicit_const;
19042       break;
19043     case DW_FORM_GNU_addr_index:
19044       if (reader->dwo_file == NULL)
19045         {
19046           /* For now flag a hard error.
19047              Later we can turn this into a complaint.  */
19048           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19049                  dwarf_form_name (form),
19050                  bfd_get_filename (abfd));
19051         }
19052       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19053       info_ptr += bytes_read;
19054       break;
19055     case DW_FORM_GNU_str_index:
19056       if (reader->dwo_file == NULL)
19057         {
19058           /* For now flag a hard error.
19059              Later we can turn this into a complaint if warranted.  */
19060           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19061                  dwarf_form_name (form),
19062                  bfd_get_filename (abfd));
19063         }
19064       {
19065         ULONGEST str_index =
19066           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19067
19068         DW_STRING (attr) = read_str_index (reader, str_index);
19069         DW_STRING_IS_CANONICAL (attr) = 0;
19070         info_ptr += bytes_read;
19071       }
19072       break;
19073     default:
19074       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19075              dwarf_form_name (form),
19076              bfd_get_filename (abfd));
19077     }
19078
19079   /* Super hack.  */
19080   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19081     attr->form = DW_FORM_GNU_ref_alt;
19082
19083   /* We have seen instances where the compiler tried to emit a byte
19084      size attribute of -1 which ended up being encoded as an unsigned
19085      0xffffffff.  Although 0xffffffff is technically a valid size value,
19086      an object of this size seems pretty unlikely so we can relatively
19087      safely treat these cases as if the size attribute was invalid and
19088      treat them as zero by default.  */
19089   if (attr->name == DW_AT_byte_size
19090       && form == DW_FORM_data4
19091       && DW_UNSND (attr) >= 0xffffffff)
19092     {
19093       complaint
19094         (&symfile_complaints,
19095          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19096          hex_string (DW_UNSND (attr)));
19097       DW_UNSND (attr) = 0;
19098     }
19099
19100   return info_ptr;
19101 }
19102
19103 /* Read an attribute described by an abbreviated attribute.  */
19104
19105 static const gdb_byte *
19106 read_attribute (const struct die_reader_specs *reader,
19107                 struct attribute *attr, struct attr_abbrev *abbrev,
19108                 const gdb_byte *info_ptr)
19109 {
19110   attr->name = abbrev->name;
19111   return read_attribute_value (reader, attr, abbrev->form,
19112                                abbrev->implicit_const, info_ptr);
19113 }
19114
19115 /* Read dwarf information from a buffer.  */
19116
19117 static unsigned int
19118 read_1_byte (bfd *abfd, const gdb_byte *buf)
19119 {
19120   return bfd_get_8 (abfd, buf);
19121 }
19122
19123 static int
19124 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19125 {
19126   return bfd_get_signed_8 (abfd, buf);
19127 }
19128
19129 static unsigned int
19130 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19131 {
19132   return bfd_get_16 (abfd, buf);
19133 }
19134
19135 static int
19136 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19137 {
19138   return bfd_get_signed_16 (abfd, buf);
19139 }
19140
19141 static unsigned int
19142 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19143 {
19144   return bfd_get_32 (abfd, buf);
19145 }
19146
19147 static int
19148 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19149 {
19150   return bfd_get_signed_32 (abfd, buf);
19151 }
19152
19153 static ULONGEST
19154 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19155 {
19156   return bfd_get_64 (abfd, buf);
19157 }
19158
19159 static CORE_ADDR
19160 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19161               unsigned int *bytes_read)
19162 {
19163   struct comp_unit_head *cu_header = &cu->header;
19164   CORE_ADDR retval = 0;
19165
19166   if (cu_header->signed_addr_p)
19167     {
19168       switch (cu_header->addr_size)
19169         {
19170         case 2:
19171           retval = bfd_get_signed_16 (abfd, buf);
19172           break;
19173         case 4:
19174           retval = bfd_get_signed_32 (abfd, buf);
19175           break;
19176         case 8:
19177           retval = bfd_get_signed_64 (abfd, buf);
19178           break;
19179         default:
19180           internal_error (__FILE__, __LINE__,
19181                           _("read_address: bad switch, signed [in module %s]"),
19182                           bfd_get_filename (abfd));
19183         }
19184     }
19185   else
19186     {
19187       switch (cu_header->addr_size)
19188         {
19189         case 2:
19190           retval = bfd_get_16 (abfd, buf);
19191           break;
19192         case 4:
19193           retval = bfd_get_32 (abfd, buf);
19194           break;
19195         case 8:
19196           retval = bfd_get_64 (abfd, buf);
19197           break;
19198         default:
19199           internal_error (__FILE__, __LINE__,
19200                           _("read_address: bad switch, "
19201                             "unsigned [in module %s]"),
19202                           bfd_get_filename (abfd));
19203         }
19204     }
19205
19206   *bytes_read = cu_header->addr_size;
19207   return retval;
19208 }
19209
19210 /* Read the initial length from a section.  The (draft) DWARF 3
19211    specification allows the initial length to take up either 4 bytes
19212    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19213    bytes describe the length and all offsets will be 8 bytes in length
19214    instead of 4.
19215
19216    An older, non-standard 64-bit format is also handled by this
19217    function.  The older format in question stores the initial length
19218    as an 8-byte quantity without an escape value.  Lengths greater
19219    than 2^32 aren't very common which means that the initial 4 bytes
19220    is almost always zero.  Since a length value of zero doesn't make
19221    sense for the 32-bit format, this initial zero can be considered to
19222    be an escape value which indicates the presence of the older 64-bit
19223    format.  As written, the code can't detect (old format) lengths
19224    greater than 4GB.  If it becomes necessary to handle lengths
19225    somewhat larger than 4GB, we could allow other small values (such
19226    as the non-sensical values of 1, 2, and 3) to also be used as
19227    escape values indicating the presence of the old format.
19228
19229    The value returned via bytes_read should be used to increment the
19230    relevant pointer after calling read_initial_length().
19231
19232    [ Note:  read_initial_length() and read_offset() are based on the
19233      document entitled "DWARF Debugging Information Format", revision
19234      3, draft 8, dated November 19, 2001.  This document was obtained
19235      from:
19236
19237         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19238
19239      This document is only a draft and is subject to change.  (So beware.)
19240
19241      Details regarding the older, non-standard 64-bit format were
19242      determined empirically by examining 64-bit ELF files produced by
19243      the SGI toolchain on an IRIX 6.5 machine.
19244
19245      - Kevin, July 16, 2002
19246    ] */
19247
19248 static LONGEST
19249 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19250 {
19251   LONGEST length = bfd_get_32 (abfd, buf);
19252
19253   if (length == 0xffffffff)
19254     {
19255       length = bfd_get_64 (abfd, buf + 4);
19256       *bytes_read = 12;
19257     }
19258   else if (length == 0)
19259     {
19260       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19261       length = bfd_get_64 (abfd, buf);
19262       *bytes_read = 8;
19263     }
19264   else
19265     {
19266       *bytes_read = 4;
19267     }
19268
19269   return length;
19270 }
19271
19272 /* Cover function for read_initial_length.
19273    Returns the length of the object at BUF, and stores the size of the
19274    initial length in *BYTES_READ and stores the size that offsets will be in
19275    *OFFSET_SIZE.
19276    If the initial length size is not equivalent to that specified in
19277    CU_HEADER then issue a complaint.
19278    This is useful when reading non-comp-unit headers.  */
19279
19280 static LONGEST
19281 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19282                                         const struct comp_unit_head *cu_header,
19283                                         unsigned int *bytes_read,
19284                                         unsigned int *offset_size)
19285 {
19286   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19287
19288   gdb_assert (cu_header->initial_length_size == 4
19289               || cu_header->initial_length_size == 8
19290               || cu_header->initial_length_size == 12);
19291
19292   if (cu_header->initial_length_size != *bytes_read)
19293     complaint (&symfile_complaints,
19294                _("intermixed 32-bit and 64-bit DWARF sections"));
19295
19296   *offset_size = (*bytes_read == 4) ? 4 : 8;
19297   return length;
19298 }
19299
19300 /* Read an offset from the data stream.  The size of the offset is
19301    given by cu_header->offset_size.  */
19302
19303 static LONGEST
19304 read_offset (bfd *abfd, const gdb_byte *buf,
19305              const struct comp_unit_head *cu_header,
19306              unsigned int *bytes_read)
19307 {
19308   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19309
19310   *bytes_read = cu_header->offset_size;
19311   return offset;
19312 }
19313
19314 /* Read an offset from the data stream.  */
19315
19316 static LONGEST
19317 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19318 {
19319   LONGEST retval = 0;
19320
19321   switch (offset_size)
19322     {
19323     case 4:
19324       retval = bfd_get_32 (abfd, buf);
19325       break;
19326     case 8:
19327       retval = bfd_get_64 (abfd, buf);
19328       break;
19329     default:
19330       internal_error (__FILE__, __LINE__,
19331                       _("read_offset_1: bad switch [in module %s]"),
19332                       bfd_get_filename (abfd));
19333     }
19334
19335   return retval;
19336 }
19337
19338 static const gdb_byte *
19339 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19340 {
19341   /* If the size of a host char is 8 bits, we can return a pointer
19342      to the buffer, otherwise we have to copy the data to a buffer
19343      allocated on the temporary obstack.  */
19344   gdb_assert (HOST_CHAR_BIT == 8);
19345   return buf;
19346 }
19347
19348 static const char *
19349 read_direct_string (bfd *abfd, const gdb_byte *buf,
19350                     unsigned int *bytes_read_ptr)
19351 {
19352   /* If the size of a host char is 8 bits, we can return a pointer
19353      to the string, otherwise we have to copy the string to a buffer
19354      allocated on the temporary obstack.  */
19355   gdb_assert (HOST_CHAR_BIT == 8);
19356   if (*buf == '\0')
19357     {
19358       *bytes_read_ptr = 1;
19359       return NULL;
19360     }
19361   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19362   return (const char *) buf;
19363 }
19364
19365 /* Return pointer to string at section SECT offset STR_OFFSET with error
19366    reporting strings FORM_NAME and SECT_NAME.  */
19367
19368 static const char *
19369 read_indirect_string_at_offset_from (bfd *abfd, LONGEST str_offset,
19370                                      struct dwarf2_section_info *sect,
19371                                      const char *form_name,
19372                                      const char *sect_name)
19373 {
19374   dwarf2_read_section (dwarf2_per_objfile->objfile, sect);
19375   if (sect->buffer == NULL)
19376     error (_("%s used without %s section [in module %s]"),
19377            form_name, sect_name, bfd_get_filename (abfd));
19378   if (str_offset >= sect->size)
19379     error (_("%s pointing outside of %s section [in module %s]"),
19380            form_name, sect_name, bfd_get_filename (abfd));
19381   gdb_assert (HOST_CHAR_BIT == 8);
19382   if (sect->buffer[str_offset] == '\0')
19383     return NULL;
19384   return (const char *) (sect->buffer + str_offset);
19385 }
19386
19387 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19388
19389 static const char *
19390 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
19391 {
19392   return read_indirect_string_at_offset_from (abfd, str_offset,
19393                                               &dwarf2_per_objfile->str,
19394                                               "DW_FORM_strp", ".debug_str");
19395 }
19396
19397 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19398
19399 static const char *
19400 read_indirect_line_string_at_offset (bfd *abfd, LONGEST str_offset)
19401 {
19402   return read_indirect_string_at_offset_from (abfd, str_offset,
19403                                               &dwarf2_per_objfile->line_str,
19404                                               "DW_FORM_line_strp",
19405                                               ".debug_line_str");
19406 }
19407
19408 /* Read a string at offset STR_OFFSET in the .debug_str section from
19409    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19410    the string consists of a single NUL byte, return NULL; otherwise
19411    return a pointer to the string.  */
19412
19413 static const char *
19414 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
19415 {
19416   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
19417
19418   if (dwz->str.buffer == NULL)
19419     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19420              "section [in module %s]"),
19421            bfd_get_filename (dwz->dwz_bfd));
19422   if (str_offset >= dwz->str.size)
19423     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19424              ".debug_str section [in module %s]"),
19425            bfd_get_filename (dwz->dwz_bfd));
19426   gdb_assert (HOST_CHAR_BIT == 8);
19427   if (dwz->str.buffer[str_offset] == '\0')
19428     return NULL;
19429   return (const char *) (dwz->str.buffer + str_offset);
19430 }
19431
19432 /* Return pointer to string at .debug_str offset as read from BUF.
19433    BUF is assumed to be in a compilation unit described by CU_HEADER.
19434    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19435
19436 static const char *
19437 read_indirect_string (bfd *abfd, const gdb_byte *buf,
19438                       const struct comp_unit_head *cu_header,
19439                       unsigned int *bytes_read_ptr)
19440 {
19441   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19442
19443   return read_indirect_string_at_offset (abfd, str_offset);
19444 }
19445
19446 /* Return pointer to string at .debug_line_str offset as read from BUF.
19447    BUF is assumed to be in a compilation unit described by CU_HEADER.
19448    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19449
19450 static const char *
19451 read_indirect_line_string (bfd *abfd, const gdb_byte *buf,
19452                            const struct comp_unit_head *cu_header,
19453                            unsigned int *bytes_read_ptr)
19454 {
19455   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19456
19457   return read_indirect_line_string_at_offset (abfd, str_offset);
19458 }
19459
19460 ULONGEST
19461 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19462                           unsigned int *bytes_read_ptr)
19463 {
19464   ULONGEST result;
19465   unsigned int num_read;
19466   int shift;
19467   unsigned char byte;
19468
19469   result = 0;
19470   shift = 0;
19471   num_read = 0;
19472   while (1)
19473     {
19474       byte = bfd_get_8 (abfd, buf);
19475       buf++;
19476       num_read++;
19477       result |= ((ULONGEST) (byte & 127) << shift);
19478       if ((byte & 128) == 0)
19479         {
19480           break;
19481         }
19482       shift += 7;
19483     }
19484   *bytes_read_ptr = num_read;
19485   return result;
19486 }
19487
19488 static LONGEST
19489 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19490                     unsigned int *bytes_read_ptr)
19491 {
19492   LONGEST result;
19493   int shift, num_read;
19494   unsigned char byte;
19495
19496   result = 0;
19497   shift = 0;
19498   num_read = 0;
19499   while (1)
19500     {
19501       byte = bfd_get_8 (abfd, buf);
19502       buf++;
19503       num_read++;
19504       result |= ((LONGEST) (byte & 127) << shift);
19505       shift += 7;
19506       if ((byte & 128) == 0)
19507         {
19508           break;
19509         }
19510     }
19511   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19512     result |= -(((LONGEST) 1) << shift);
19513   *bytes_read_ptr = num_read;
19514   return result;
19515 }
19516
19517 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19518    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19519    ADDR_SIZE is the size of addresses from the CU header.  */
19520
19521 static CORE_ADDR
19522 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
19523 {
19524   struct objfile *objfile = dwarf2_per_objfile->objfile;
19525   bfd *abfd = objfile->obfd;
19526   const gdb_byte *info_ptr;
19527
19528   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19529   if (dwarf2_per_objfile->addr.buffer == NULL)
19530     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19531            objfile_name (objfile));
19532   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19533     error (_("DW_FORM_addr_index pointing outside of "
19534              ".debug_addr section [in module %s]"),
19535            objfile_name (objfile));
19536   info_ptr = (dwarf2_per_objfile->addr.buffer
19537               + addr_base + addr_index * addr_size);
19538   if (addr_size == 4)
19539     return bfd_get_32 (abfd, info_ptr);
19540   else
19541     return bfd_get_64 (abfd, info_ptr);
19542 }
19543
19544 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19545
19546 static CORE_ADDR
19547 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19548 {
19549   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
19550 }
19551
19552 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19553
19554 static CORE_ADDR
19555 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19556                              unsigned int *bytes_read)
19557 {
19558   bfd *abfd = cu->objfile->obfd;
19559   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19560
19561   return read_addr_index (cu, addr_index);
19562 }
19563
19564 /* Data structure to pass results from dwarf2_read_addr_index_reader
19565    back to dwarf2_read_addr_index.  */
19566
19567 struct dwarf2_read_addr_index_data
19568 {
19569   ULONGEST addr_base;
19570   int addr_size;
19571 };
19572
19573 /* die_reader_func for dwarf2_read_addr_index.  */
19574
19575 static void
19576 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19577                                const gdb_byte *info_ptr,
19578                                struct die_info *comp_unit_die,
19579                                int has_children,
19580                                void *data)
19581 {
19582   struct dwarf2_cu *cu = reader->cu;
19583   struct dwarf2_read_addr_index_data *aidata =
19584     (struct dwarf2_read_addr_index_data *) data;
19585
19586   aidata->addr_base = cu->addr_base;
19587   aidata->addr_size = cu->header.addr_size;
19588 }
19589
19590 /* Given an index in .debug_addr, fetch the value.
19591    NOTE: This can be called during dwarf expression evaluation,
19592    long after the debug information has been read, and thus per_cu->cu
19593    may no longer exist.  */
19594
19595 CORE_ADDR
19596 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19597                         unsigned int addr_index)
19598 {
19599   struct objfile *objfile = per_cu->objfile;
19600   struct dwarf2_cu *cu = per_cu->cu;
19601   ULONGEST addr_base;
19602   int addr_size;
19603
19604   /* This is intended to be called from outside this file.  */
19605   dw2_setup (objfile);
19606
19607   /* We need addr_base and addr_size.
19608      If we don't have PER_CU->cu, we have to get it.
19609      Nasty, but the alternative is storing the needed info in PER_CU,
19610      which at this point doesn't seem justified: it's not clear how frequently
19611      it would get used and it would increase the size of every PER_CU.
19612      Entry points like dwarf2_per_cu_addr_size do a similar thing
19613      so we're not in uncharted territory here.
19614      Alas we need to be a bit more complicated as addr_base is contained
19615      in the DIE.
19616
19617      We don't need to read the entire CU(/TU).
19618      We just need the header and top level die.
19619
19620      IWBN to use the aging mechanism to let us lazily later discard the CU.
19621      For now we skip this optimization.  */
19622
19623   if (cu != NULL)
19624     {
19625       addr_base = cu->addr_base;
19626       addr_size = cu->header.addr_size;
19627     }
19628   else
19629     {
19630       struct dwarf2_read_addr_index_data aidata;
19631
19632       /* Note: We can't use init_cutu_and_read_dies_simple here,
19633          we need addr_base.  */
19634       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
19635                                dwarf2_read_addr_index_reader, &aidata);
19636       addr_base = aidata.addr_base;
19637       addr_size = aidata.addr_size;
19638     }
19639
19640   return read_addr_index_1 (addr_index, addr_base, addr_size);
19641 }
19642
19643 /* Given a DW_FORM_GNU_str_index, fetch the string.
19644    This is only used by the Fission support.  */
19645
19646 static const char *
19647 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19648 {
19649   struct objfile *objfile = dwarf2_per_objfile->objfile;
19650   const char *objf_name = objfile_name (objfile);
19651   bfd *abfd = objfile->obfd;
19652   struct dwarf2_cu *cu = reader->cu;
19653   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19654   struct dwarf2_section_info *str_offsets_section =
19655     &reader->dwo_file->sections.str_offsets;
19656   const gdb_byte *info_ptr;
19657   ULONGEST str_offset;
19658   static const char form_name[] = "DW_FORM_GNU_str_index";
19659
19660   dwarf2_read_section (objfile, str_section);
19661   dwarf2_read_section (objfile, str_offsets_section);
19662   if (str_section->buffer == NULL)
19663     error (_("%s used without .debug_str.dwo section"
19664              " in CU at offset 0x%x [in module %s]"),
19665            form_name, to_underlying (cu->header.sect_off), objf_name);
19666   if (str_offsets_section->buffer == NULL)
19667     error (_("%s used without .debug_str_offsets.dwo section"
19668              " in CU at offset 0x%x [in module %s]"),
19669            form_name, to_underlying (cu->header.sect_off), objf_name);
19670   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19671     error (_("%s pointing outside of .debug_str_offsets.dwo"
19672              " section in CU at offset 0x%x [in module %s]"),
19673            form_name, to_underlying (cu->header.sect_off), objf_name);
19674   info_ptr = (str_offsets_section->buffer
19675               + str_index * cu->header.offset_size);
19676   if (cu->header.offset_size == 4)
19677     str_offset = bfd_get_32 (abfd, info_ptr);
19678   else
19679     str_offset = bfd_get_64 (abfd, info_ptr);
19680   if (str_offset >= str_section->size)
19681     error (_("Offset from %s pointing outside of"
19682              " .debug_str.dwo section in CU at offset 0x%x [in module %s]"),
19683            form_name, to_underlying (cu->header.sect_off), objf_name);
19684   return (const char *) (str_section->buffer + str_offset);
19685 }
19686
19687 /* Return the length of an LEB128 number in BUF.  */
19688
19689 static int
19690 leb128_size (const gdb_byte *buf)
19691 {
19692   const gdb_byte *begin = buf;
19693   gdb_byte byte;
19694
19695   while (1)
19696     {
19697       byte = *buf++;
19698       if ((byte & 128) == 0)
19699         return buf - begin;
19700     }
19701 }
19702
19703 static void
19704 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19705 {
19706   switch (lang)
19707     {
19708     case DW_LANG_C89:
19709     case DW_LANG_C99:
19710     case DW_LANG_C11:
19711     case DW_LANG_C:
19712     case DW_LANG_UPC:
19713       cu->language = language_c;
19714       break;
19715     case DW_LANG_Java:
19716     case DW_LANG_C_plus_plus:
19717     case DW_LANG_C_plus_plus_11:
19718     case DW_LANG_C_plus_plus_14:
19719       cu->language = language_cplus;
19720       break;
19721     case DW_LANG_D:
19722       cu->language = language_d;
19723       break;
19724     case DW_LANG_Fortran77:
19725     case DW_LANG_Fortran90:
19726     case DW_LANG_Fortran95:
19727     case DW_LANG_Fortran03:
19728     case DW_LANG_Fortran08:
19729       cu->language = language_fortran;
19730       break;
19731     case DW_LANG_Go:
19732       cu->language = language_go;
19733       break;
19734     case DW_LANG_Mips_Assembler:
19735       cu->language = language_asm;
19736       break;
19737     case DW_LANG_Ada83:
19738     case DW_LANG_Ada95:
19739       cu->language = language_ada;
19740       break;
19741     case DW_LANG_Modula2:
19742       cu->language = language_m2;
19743       break;
19744     case DW_LANG_Pascal83:
19745       cu->language = language_pascal;
19746       break;
19747     case DW_LANG_ObjC:
19748       cu->language = language_objc;
19749       break;
19750     case DW_LANG_Rust:
19751     case DW_LANG_Rust_old:
19752       cu->language = language_rust;
19753       break;
19754     case DW_LANG_Cobol74:
19755     case DW_LANG_Cobol85:
19756     default:
19757       cu->language = language_minimal;
19758       break;
19759     }
19760   cu->language_defn = language_def (cu->language);
19761 }
19762
19763 /* Return the named attribute or NULL if not there.  */
19764
19765 static struct attribute *
19766 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19767 {
19768   for (;;)
19769     {
19770       unsigned int i;
19771       struct attribute *spec = NULL;
19772
19773       for (i = 0; i < die->num_attrs; ++i)
19774         {
19775           if (die->attrs[i].name == name)
19776             return &die->attrs[i];
19777           if (die->attrs[i].name == DW_AT_specification
19778               || die->attrs[i].name == DW_AT_abstract_origin)
19779             spec = &die->attrs[i];
19780         }
19781
19782       if (!spec)
19783         break;
19784
19785       die = follow_die_ref (die, spec, &cu);
19786     }
19787
19788   return NULL;
19789 }
19790
19791 /* Return the named attribute or NULL if not there,
19792    but do not follow DW_AT_specification, etc.
19793    This is for use in contexts where we're reading .debug_types dies.
19794    Following DW_AT_specification, DW_AT_abstract_origin will take us
19795    back up the chain, and we want to go down.  */
19796
19797 static struct attribute *
19798 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19799 {
19800   unsigned int i;
19801
19802   for (i = 0; i < die->num_attrs; ++i)
19803     if (die->attrs[i].name == name)
19804       return &die->attrs[i];
19805
19806   return NULL;
19807 }
19808
19809 /* Return the string associated with a string-typed attribute, or NULL if it
19810    is either not found or is of an incorrect type.  */
19811
19812 static const char *
19813 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19814 {
19815   struct attribute *attr;
19816   const char *str = NULL;
19817
19818   attr = dwarf2_attr (die, name, cu);
19819
19820   if (attr != NULL)
19821     {
19822       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19823           || attr->form == DW_FORM_string
19824           || attr->form == DW_FORM_GNU_str_index
19825           || attr->form == DW_FORM_GNU_strp_alt)
19826         str = DW_STRING (attr);
19827       else
19828         complaint (&symfile_complaints,
19829                    _("string type expected for attribute %s for "
19830                      "DIE at 0x%x in module %s"),
19831                    dwarf_attr_name (name), to_underlying (die->sect_off),
19832                    objfile_name (cu->objfile));
19833     }
19834
19835   return str;
19836 }
19837
19838 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19839    and holds a non-zero value.  This function should only be used for
19840    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19841
19842 static int
19843 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19844 {
19845   struct attribute *attr = dwarf2_attr (die, name, cu);
19846
19847   return (attr && DW_UNSND (attr));
19848 }
19849
19850 static int
19851 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19852 {
19853   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19854      which value is non-zero.  However, we have to be careful with
19855      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19856      (via dwarf2_flag_true_p) follows this attribute.  So we may
19857      end up accidently finding a declaration attribute that belongs
19858      to a different DIE referenced by the specification attribute,
19859      even though the given DIE does not have a declaration attribute.  */
19860   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19861           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19862 }
19863
19864 /* Return the die giving the specification for DIE, if there is
19865    one.  *SPEC_CU is the CU containing DIE on input, and the CU
19866    containing the return value on output.  If there is no
19867    specification, but there is an abstract origin, that is
19868    returned.  */
19869
19870 static struct die_info *
19871 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
19872 {
19873   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
19874                                              *spec_cu);
19875
19876   if (spec_attr == NULL)
19877     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
19878
19879   if (spec_attr == NULL)
19880     return NULL;
19881   else
19882     return follow_die_ref (die, spec_attr, spec_cu);
19883 }
19884
19885 /* Stub for free_line_header to match void * callback types.  */
19886
19887 static void
19888 free_line_header_voidp (void *arg)
19889 {
19890   struct line_header *lh = (struct line_header *) arg;
19891
19892   delete lh;
19893 }
19894
19895 void
19896 line_header::add_include_dir (const char *include_dir)
19897 {
19898   if (dwarf_line_debug >= 2)
19899     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
19900                         include_dirs.size () + 1, include_dir);
19901
19902   include_dirs.push_back (include_dir);
19903 }
19904
19905 void
19906 line_header::add_file_name (const char *name,
19907                             dir_index d_index,
19908                             unsigned int mod_time,
19909                             unsigned int length)
19910 {
19911   if (dwarf_line_debug >= 2)
19912     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
19913                         (unsigned) file_names.size () + 1, name);
19914
19915   file_names.emplace_back (name, d_index, mod_time, length);
19916 }
19917
19918 /* A convenience function to find the proper .debug_line section for a CU.  */
19919
19920 static struct dwarf2_section_info *
19921 get_debug_line_section (struct dwarf2_cu *cu)
19922 {
19923   struct dwarf2_section_info *section;
19924
19925   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
19926      DWO file.  */
19927   if (cu->dwo_unit && cu->per_cu->is_debug_types)
19928     section = &cu->dwo_unit->dwo_file->sections.line;
19929   else if (cu->per_cu->is_dwz)
19930     {
19931       struct dwz_file *dwz = dwarf2_get_dwz_file ();
19932
19933       section = &dwz->line;
19934     }
19935   else
19936     section = &dwarf2_per_objfile->line;
19937
19938   return section;
19939 }
19940
19941 /* Read directory or file name entry format, starting with byte of
19942    format count entries, ULEB128 pairs of entry formats, ULEB128 of
19943    entries count and the entries themselves in the described entry
19944    format.  */
19945
19946 static void
19947 read_formatted_entries (bfd *abfd, const gdb_byte **bufp,
19948                         struct line_header *lh,
19949                         const struct comp_unit_head *cu_header,
19950                         void (*callback) (struct line_header *lh,
19951                                           const char *name,
19952                                           dir_index d_index,
19953                                           unsigned int mod_time,
19954                                           unsigned int length))
19955 {
19956   gdb_byte format_count, formati;
19957   ULONGEST data_count, datai;
19958   const gdb_byte *buf = *bufp;
19959   const gdb_byte *format_header_data;
19960   unsigned int bytes_read;
19961
19962   format_count = read_1_byte (abfd, buf);
19963   buf += 1;
19964   format_header_data = buf;
19965   for (formati = 0; formati < format_count; formati++)
19966     {
19967       read_unsigned_leb128 (abfd, buf, &bytes_read);
19968       buf += bytes_read;
19969       read_unsigned_leb128 (abfd, buf, &bytes_read);
19970       buf += bytes_read;
19971     }
19972
19973   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
19974   buf += bytes_read;
19975   for (datai = 0; datai < data_count; datai++)
19976     {
19977       const gdb_byte *format = format_header_data;
19978       struct file_entry fe;
19979
19980       for (formati = 0; formati < format_count; formati++)
19981         {
19982           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
19983           format += bytes_read;
19984
19985           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
19986           format += bytes_read;
19987
19988           gdb::optional<const char *> string;
19989           gdb::optional<unsigned int> uint;
19990
19991           switch (form)
19992             {
19993             case DW_FORM_string:
19994               string.emplace (read_direct_string (abfd, buf, &bytes_read));
19995               buf += bytes_read;
19996               break;
19997
19998             case DW_FORM_line_strp:
19999               string.emplace (read_indirect_line_string (abfd, buf,
20000                                                          cu_header,
20001                                                          &bytes_read));
20002               buf += bytes_read;
20003               break;
20004
20005             case DW_FORM_data1:
20006               uint.emplace (read_1_byte (abfd, buf));
20007               buf += 1;
20008               break;
20009
20010             case DW_FORM_data2:
20011               uint.emplace (read_2_bytes (abfd, buf));
20012               buf += 2;
20013               break;
20014
20015             case DW_FORM_data4:
20016               uint.emplace (read_4_bytes (abfd, buf));
20017               buf += 4;
20018               break;
20019
20020             case DW_FORM_data8:
20021               uint.emplace (read_8_bytes (abfd, buf));
20022               buf += 8;
20023               break;
20024
20025             case DW_FORM_udata:
20026               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20027               buf += bytes_read;
20028               break;
20029
20030             case DW_FORM_block:
20031               /* It is valid only for DW_LNCT_timestamp which is ignored by
20032                  current GDB.  */
20033               break;
20034             }
20035
20036           switch (content_type)
20037             {
20038             case DW_LNCT_path:
20039               if (string.has_value ())
20040                 fe.name = *string;
20041               break;
20042             case DW_LNCT_directory_index:
20043               if (uint.has_value ())
20044                 fe.d_index = (dir_index) *uint;
20045               break;
20046             case DW_LNCT_timestamp:
20047               if (uint.has_value ())
20048                 fe.mod_time = *uint;
20049               break;
20050             case DW_LNCT_size:
20051               if (uint.has_value ())
20052                 fe.length = *uint;
20053               break;
20054             case DW_LNCT_MD5:
20055               break;
20056             default:
20057               complaint (&symfile_complaints,
20058                          _("Unknown format content type %s"),
20059                          pulongest (content_type));
20060             }
20061         }
20062
20063       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20064     }
20065
20066   *bufp = buf;
20067 }
20068
20069 /* Read the statement program header starting at OFFSET in
20070    .debug_line, or .debug_line.dwo.  Return a pointer
20071    to a struct line_header, allocated using xmalloc.
20072    Returns NULL if there is a problem reading the header, e.g., if it
20073    has a version we don't understand.
20074
20075    NOTE: the strings in the include directory and file name tables of
20076    the returned object point into the dwarf line section buffer,
20077    and must not be freed.  */
20078
20079 static line_header_up
20080 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20081 {
20082   const gdb_byte *line_ptr;
20083   unsigned int bytes_read, offset_size;
20084   int i;
20085   const char *cur_dir, *cur_file;
20086   struct dwarf2_section_info *section;
20087   bfd *abfd;
20088
20089   section = get_debug_line_section (cu);
20090   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20091   if (section->buffer == NULL)
20092     {
20093       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20094         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
20095       else
20096         complaint (&symfile_complaints, _("missing .debug_line section"));
20097       return 0;
20098     }
20099
20100   /* We can't do this until we know the section is non-empty.
20101      Only then do we know we have such a section.  */
20102   abfd = get_section_bfd_owner (section);
20103
20104   /* Make sure that at least there's room for the total_length field.
20105      That could be 12 bytes long, but we're just going to fudge that.  */
20106   if (to_underlying (sect_off) + 4 >= section->size)
20107     {
20108       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20109       return 0;
20110     }
20111
20112   line_header_up lh (new line_header ());
20113
20114   lh->sect_off = sect_off;
20115   lh->offset_in_dwz = cu->per_cu->is_dwz;
20116
20117   line_ptr = section->buffer + to_underlying (sect_off);
20118
20119   /* Read in the header.  */
20120   lh->total_length =
20121     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20122                                             &bytes_read, &offset_size);
20123   line_ptr += bytes_read;
20124   if (line_ptr + lh->total_length > (section->buffer + section->size))
20125     {
20126       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20127       return 0;
20128     }
20129   lh->statement_program_end = line_ptr + lh->total_length;
20130   lh->version = read_2_bytes (abfd, line_ptr);
20131   line_ptr += 2;
20132   if (lh->version > 5)
20133     {
20134       /* This is a version we don't understand.  The format could have
20135          changed in ways we don't handle properly so just punt.  */
20136       complaint (&symfile_complaints,
20137                  _("unsupported version in .debug_line section"));
20138       return NULL;
20139     }
20140   if (lh->version >= 5)
20141     {
20142       gdb_byte segment_selector_size;
20143
20144       /* Skip address size.  */
20145       read_1_byte (abfd, line_ptr);
20146       line_ptr += 1;
20147
20148       segment_selector_size = read_1_byte (abfd, line_ptr);
20149       line_ptr += 1;
20150       if (segment_selector_size != 0)
20151         {
20152           complaint (&symfile_complaints,
20153                      _("unsupported segment selector size %u "
20154                        "in .debug_line section"),
20155                      segment_selector_size);
20156           return NULL;
20157         }
20158     }
20159   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20160   line_ptr += offset_size;
20161   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20162   line_ptr += 1;
20163   if (lh->version >= 4)
20164     {
20165       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20166       line_ptr += 1;
20167     }
20168   else
20169     lh->maximum_ops_per_instruction = 1;
20170
20171   if (lh->maximum_ops_per_instruction == 0)
20172     {
20173       lh->maximum_ops_per_instruction = 1;
20174       complaint (&symfile_complaints,
20175                  _("invalid maximum_ops_per_instruction "
20176                    "in `.debug_line' section"));
20177     }
20178
20179   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20180   line_ptr += 1;
20181   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20182   line_ptr += 1;
20183   lh->line_range = read_1_byte (abfd, line_ptr);
20184   line_ptr += 1;
20185   lh->opcode_base = read_1_byte (abfd, line_ptr);
20186   line_ptr += 1;
20187   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20188
20189   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20190   for (i = 1; i < lh->opcode_base; ++i)
20191     {
20192       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20193       line_ptr += 1;
20194     }
20195
20196   if (lh->version >= 5)
20197     {
20198       /* Read directory table.  */
20199       read_formatted_entries (abfd, &line_ptr, lh.get (), &cu->header,
20200                               [] (struct line_header *lh, const char *name,
20201                                   dir_index d_index, unsigned int mod_time,
20202                                   unsigned int length)
20203         {
20204           lh->add_include_dir (name);
20205         });
20206
20207       /* Read file name table.  */
20208       read_formatted_entries (abfd, &line_ptr, lh.get (), &cu->header,
20209                               [] (struct line_header *lh, const char *name,
20210                                   dir_index d_index, unsigned int mod_time,
20211                                   unsigned int length)
20212         {
20213           lh->add_file_name (name, d_index, mod_time, length);
20214         });
20215     }
20216   else
20217     {
20218       /* Read directory table.  */
20219       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20220         {
20221           line_ptr += bytes_read;
20222           lh->add_include_dir (cur_dir);
20223         }
20224       line_ptr += bytes_read;
20225
20226       /* Read file name table.  */
20227       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20228         {
20229           unsigned int mod_time, length;
20230           dir_index d_index;
20231
20232           line_ptr += bytes_read;
20233           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20234           line_ptr += bytes_read;
20235           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20236           line_ptr += bytes_read;
20237           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20238           line_ptr += bytes_read;
20239
20240           lh->add_file_name (cur_file, d_index, mod_time, length);
20241         }
20242       line_ptr += bytes_read;
20243     }
20244   lh->statement_program_start = line_ptr;
20245
20246   if (line_ptr > (section->buffer + section->size))
20247     complaint (&symfile_complaints,
20248                _("line number info header doesn't "
20249                  "fit in `.debug_line' section"));
20250
20251   return lh;
20252 }
20253
20254 /* Subroutine of dwarf_decode_lines to simplify it.
20255    Return the file name of the psymtab for included file FILE_INDEX
20256    in line header LH of PST.
20257    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20258    If space for the result is malloc'd, it will be freed by a cleanup.
20259    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
20260
20261    The function creates dangling cleanup registration.  */
20262
20263 static const char *
20264 psymtab_include_file_name (const struct line_header *lh, int file_index,
20265                            const struct partial_symtab *pst,
20266                            const char *comp_dir)
20267 {
20268   const file_entry &fe = lh->file_names[file_index];
20269   const char *include_name = fe.name;
20270   const char *include_name_to_compare = include_name;
20271   const char *pst_filename;
20272   char *copied_name = NULL;
20273   int file_is_pst;
20274
20275   const char *dir_name = fe.include_dir (lh);
20276
20277   if (!IS_ABSOLUTE_PATH (include_name)
20278       && (dir_name != NULL || comp_dir != NULL))
20279     {
20280       /* Avoid creating a duplicate psymtab for PST.
20281          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20282          Before we do the comparison, however, we need to account
20283          for DIR_NAME and COMP_DIR.
20284          First prepend dir_name (if non-NULL).  If we still don't
20285          have an absolute path prepend comp_dir (if non-NULL).
20286          However, the directory we record in the include-file's
20287          psymtab does not contain COMP_DIR (to match the
20288          corresponding symtab(s)).
20289
20290          Example:
20291
20292          bash$ cd /tmp
20293          bash$ gcc -g ./hello.c
20294          include_name = "hello.c"
20295          dir_name = "."
20296          DW_AT_comp_dir = comp_dir = "/tmp"
20297          DW_AT_name = "./hello.c"
20298
20299       */
20300
20301       if (dir_name != NULL)
20302         {
20303           char *tem = concat (dir_name, SLASH_STRING,
20304                               include_name, (char *)NULL);
20305
20306           make_cleanup (xfree, tem);
20307           include_name = tem;
20308           include_name_to_compare = include_name;
20309         }
20310       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20311         {
20312           char *tem = concat (comp_dir, SLASH_STRING,
20313                               include_name, (char *)NULL);
20314
20315           make_cleanup (xfree, tem);
20316           include_name_to_compare = tem;
20317         }
20318     }
20319
20320   pst_filename = pst->filename;
20321   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20322     {
20323       copied_name = concat (pst->dirname, SLASH_STRING,
20324                             pst_filename, (char *)NULL);
20325       pst_filename = copied_name;
20326     }
20327
20328   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20329
20330   if (copied_name != NULL)
20331     xfree (copied_name);
20332
20333   if (file_is_pst)
20334     return NULL;
20335   return include_name;
20336 }
20337
20338 /* State machine to track the state of the line number program.  */
20339
20340 class lnp_state_machine
20341 {
20342 public:
20343   /* Initialize a machine state for the start of a line number
20344      program.  */
20345   lnp_state_machine (gdbarch *arch, line_header *lh, bool record_lines_p);
20346
20347   file_entry *current_file ()
20348   {
20349     /* lh->file_names is 0-based, but the file name numbers in the
20350        statement program are 1-based.  */
20351     return m_line_header->file_name_at (m_file);
20352   }
20353
20354   /* Record the line in the state machine.  END_SEQUENCE is true if
20355      we're processing the end of a sequence.  */
20356   void record_line (bool end_sequence);
20357
20358   /* Check address and if invalid nop-out the rest of the lines in this
20359      sequence.  */
20360   void check_line_address (struct dwarf2_cu *cu,
20361                            const gdb_byte *line_ptr,
20362                            CORE_ADDR lowpc, CORE_ADDR address);
20363
20364   void handle_set_discriminator (unsigned int discriminator)
20365   {
20366     m_discriminator = discriminator;
20367     m_line_has_non_zero_discriminator |= discriminator != 0;
20368   }
20369
20370   /* Handle DW_LNE_set_address.  */
20371   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20372   {
20373     m_op_index = 0;
20374     address += baseaddr;
20375     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20376   }
20377
20378   /* Handle DW_LNS_advance_pc.  */
20379   void handle_advance_pc (CORE_ADDR adjust);
20380
20381   /* Handle a special opcode.  */
20382   void handle_special_opcode (unsigned char op_code);
20383
20384   /* Handle DW_LNS_advance_line.  */
20385   void handle_advance_line (int line_delta)
20386   {
20387     advance_line (line_delta);
20388   }
20389
20390   /* Handle DW_LNS_set_file.  */
20391   void handle_set_file (file_name_index file);
20392
20393   /* Handle DW_LNS_negate_stmt.  */
20394   void handle_negate_stmt ()
20395   {
20396     m_is_stmt = !m_is_stmt;
20397   }
20398
20399   /* Handle DW_LNS_const_add_pc.  */
20400   void handle_const_add_pc ();
20401
20402   /* Handle DW_LNS_fixed_advance_pc.  */
20403   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20404   {
20405     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20406     m_op_index = 0;
20407   }
20408
20409   /* Handle DW_LNS_copy.  */
20410   void handle_copy ()
20411   {
20412     record_line (false);
20413     m_discriminator = 0;
20414   }
20415
20416   /* Handle DW_LNE_end_sequence.  */
20417   void handle_end_sequence ()
20418   {
20419     m_record_line_callback = ::record_line;
20420   }
20421
20422 private:
20423   /* Advance the line by LINE_DELTA.  */
20424   void advance_line (int line_delta)
20425   {
20426     m_line += line_delta;
20427
20428     if (line_delta != 0)
20429       m_line_has_non_zero_discriminator = m_discriminator != 0;
20430   }
20431
20432   gdbarch *m_gdbarch;
20433
20434   /* True if we're recording lines.
20435      Otherwise we're building partial symtabs and are just interested in
20436      finding include files mentioned by the line number program.  */
20437   bool m_record_lines_p;
20438
20439   /* The line number header.  */
20440   line_header *m_line_header;
20441
20442   /* These are part of the standard DWARF line number state machine,
20443      and initialized according to the DWARF spec.  */
20444
20445   unsigned char m_op_index = 0;
20446   /* The line table index (1-based) of the current file.  */
20447   file_name_index m_file = (file_name_index) 1;
20448   unsigned int m_line = 1;
20449
20450   /* These are initialized in the constructor.  */
20451
20452   CORE_ADDR m_address;
20453   bool m_is_stmt;
20454   unsigned int m_discriminator;
20455
20456   /* Additional bits of state we need to track.  */
20457
20458   /* The last file that we called dwarf2_start_subfile for.
20459      This is only used for TLLs.  */
20460   unsigned int m_last_file = 0;
20461   /* The last file a line number was recorded for.  */
20462   struct subfile *m_last_subfile = NULL;
20463
20464   /* The function to call to record a line.  */
20465   record_line_ftype *m_record_line_callback = NULL;
20466
20467   /* The last line number that was recorded, used to coalesce
20468      consecutive entries for the same line.  This can happen, for
20469      example, when discriminators are present.  PR 17276.  */
20470   unsigned int m_last_line = 0;
20471   bool m_line_has_non_zero_discriminator = false;
20472 };
20473
20474 void
20475 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20476 {
20477   CORE_ADDR addr_adj = (((m_op_index + adjust)
20478                          / m_line_header->maximum_ops_per_instruction)
20479                         * m_line_header->minimum_instruction_length);
20480   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20481   m_op_index = ((m_op_index + adjust)
20482                 % m_line_header->maximum_ops_per_instruction);
20483 }
20484
20485 void
20486 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20487 {
20488   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20489   CORE_ADDR addr_adj = (((m_op_index
20490                           + (adj_opcode / m_line_header->line_range))
20491                          / m_line_header->maximum_ops_per_instruction)
20492                         * m_line_header->minimum_instruction_length);
20493   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20494   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20495                 % m_line_header->maximum_ops_per_instruction);
20496
20497   int line_delta = (m_line_header->line_base
20498                     + (adj_opcode % m_line_header->line_range));
20499   advance_line (line_delta);
20500   record_line (false);
20501   m_discriminator = 0;
20502 }
20503
20504 void
20505 lnp_state_machine::handle_set_file (file_name_index file)
20506 {
20507   m_file = file;
20508
20509   const file_entry *fe = current_file ();
20510   if (fe == NULL)
20511     dwarf2_debug_line_missing_file_complaint ();
20512   else if (m_record_lines_p)
20513     {
20514       const char *dir = fe->include_dir (m_line_header);
20515
20516       m_last_subfile = current_subfile;
20517       m_line_has_non_zero_discriminator = m_discriminator != 0;
20518       dwarf2_start_subfile (fe->name, dir);
20519     }
20520 }
20521
20522 void
20523 lnp_state_machine::handle_const_add_pc ()
20524 {
20525   CORE_ADDR adjust
20526     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20527
20528   CORE_ADDR addr_adj
20529     = (((m_op_index + adjust)
20530         / m_line_header->maximum_ops_per_instruction)
20531        * m_line_header->minimum_instruction_length);
20532
20533   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20534   m_op_index = ((m_op_index + adjust)
20535                 % m_line_header->maximum_ops_per_instruction);
20536 }
20537
20538 /* Ignore this record_line request.  */
20539
20540 static void
20541 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
20542 {
20543   return;
20544 }
20545
20546 /* Return non-zero if we should add LINE to the line number table.
20547    LINE is the line to add, LAST_LINE is the last line that was added,
20548    LAST_SUBFILE is the subfile for LAST_LINE.
20549    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20550    had a non-zero discriminator.
20551
20552    We have to be careful in the presence of discriminators.
20553    E.g., for this line:
20554
20555      for (i = 0; i < 100000; i++);
20556
20557    clang can emit four line number entries for that one line,
20558    each with a different discriminator.
20559    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20560
20561    However, we want gdb to coalesce all four entries into one.
20562    Otherwise the user could stepi into the middle of the line and
20563    gdb would get confused about whether the pc really was in the
20564    middle of the line.
20565
20566    Things are further complicated by the fact that two consecutive
20567    line number entries for the same line is a heuristic used by gcc
20568    to denote the end of the prologue.  So we can't just discard duplicate
20569    entries, we have to be selective about it.  The heuristic we use is
20570    that we only collapse consecutive entries for the same line if at least
20571    one of those entries has a non-zero discriminator.  PR 17276.
20572
20573    Note: Addresses in the line number state machine can never go backwards
20574    within one sequence, thus this coalescing is ok.  */
20575
20576 static int
20577 dwarf_record_line_p (unsigned int line, unsigned int last_line,
20578                      int line_has_non_zero_discriminator,
20579                      struct subfile *last_subfile)
20580 {
20581   if (current_subfile != last_subfile)
20582     return 1;
20583   if (line != last_line)
20584     return 1;
20585   /* Same line for the same file that we've seen already.
20586      As a last check, for pr 17276, only record the line if the line
20587      has never had a non-zero discriminator.  */
20588   if (!line_has_non_zero_discriminator)
20589     return 1;
20590   return 0;
20591 }
20592
20593 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
20594    in the line table of subfile SUBFILE.  */
20595
20596 static void
20597 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20598                      unsigned int line, CORE_ADDR address,
20599                      record_line_ftype p_record_line)
20600 {
20601   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20602
20603   if (dwarf_line_debug)
20604     {
20605       fprintf_unfiltered (gdb_stdlog,
20606                           "Recording line %u, file %s, address %s\n",
20607                           line, lbasename (subfile->name),
20608                           paddress (gdbarch, address));
20609     }
20610
20611   (*p_record_line) (subfile, line, addr);
20612 }
20613
20614 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20615    Mark the end of a set of line number records.
20616    The arguments are the same as for dwarf_record_line_1.
20617    If SUBFILE is NULL the request is ignored.  */
20618
20619 static void
20620 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20621                    CORE_ADDR address, record_line_ftype p_record_line)
20622 {
20623   if (subfile == NULL)
20624     return;
20625
20626   if (dwarf_line_debug)
20627     {
20628       fprintf_unfiltered (gdb_stdlog,
20629                           "Finishing current line, file %s, address %s\n",
20630                           lbasename (subfile->name),
20631                           paddress (gdbarch, address));
20632     }
20633
20634   dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
20635 }
20636
20637 void
20638 lnp_state_machine::record_line (bool end_sequence)
20639 {
20640   if (dwarf_line_debug)
20641     {
20642       fprintf_unfiltered (gdb_stdlog,
20643                           "Processing actual line %u: file %u,"
20644                           " address %s, is_stmt %u, discrim %u\n",
20645                           m_line, to_underlying (m_file),
20646                           paddress (m_gdbarch, m_address),
20647                           m_is_stmt, m_discriminator);
20648     }
20649
20650   file_entry *fe = current_file ();
20651
20652   if (fe == NULL)
20653     dwarf2_debug_line_missing_file_complaint ();
20654   /* For now we ignore lines not starting on an instruction boundary.
20655      But not when processing end_sequence for compatibility with the
20656      previous version of the code.  */
20657   else if (m_op_index == 0 || end_sequence)
20658     {
20659       fe->included_p = 1;
20660       if (m_record_lines_p && m_is_stmt)
20661         {
20662           if (m_last_subfile != current_subfile || end_sequence)
20663             {
20664               dwarf_finish_line (m_gdbarch, m_last_subfile,
20665                                  m_address, m_record_line_callback);
20666             }
20667
20668           if (!end_sequence)
20669             {
20670               if (dwarf_record_line_p (m_line, m_last_line,
20671                                        m_line_has_non_zero_discriminator,
20672                                        m_last_subfile))
20673                 {
20674                   dwarf_record_line_1 (m_gdbarch, current_subfile,
20675                                        m_line, m_address,
20676                                        m_record_line_callback);
20677                 }
20678               m_last_subfile = current_subfile;
20679               m_last_line = m_line;
20680             }
20681         }
20682     }
20683 }
20684
20685 lnp_state_machine::lnp_state_machine (gdbarch *arch, line_header *lh,
20686                                       bool record_lines_p)
20687 {
20688   m_gdbarch = arch;
20689   m_record_lines_p = record_lines_p;
20690   m_line_header = lh;
20691
20692   m_record_line_callback = ::record_line;
20693
20694   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20695      was a line entry for it so that the backend has a chance to adjust it
20696      and also record it in case it needs it.  This is currently used by MIPS
20697      code, cf. `mips_adjust_dwarf2_line'.  */
20698   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20699   m_is_stmt = lh->default_is_stmt;
20700   m_discriminator = 0;
20701 }
20702
20703 void
20704 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20705                                        const gdb_byte *line_ptr,
20706                                        CORE_ADDR lowpc, CORE_ADDR address)
20707 {
20708   /* If address < lowpc then it's not a usable value, it's outside the
20709      pc range of the CU.  However, we restrict the test to only address
20710      values of zero to preserve GDB's previous behaviour which is to
20711      handle the specific case of a function being GC'd by the linker.  */
20712
20713   if (address == 0 && address < lowpc)
20714     {
20715       /* This line table is for a function which has been
20716          GCd by the linker.  Ignore it.  PR gdb/12528 */
20717
20718       struct objfile *objfile = cu->objfile;
20719       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20720
20721       complaint (&symfile_complaints,
20722                  _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20723                  line_offset, objfile_name (objfile));
20724       m_record_line_callback = noop_record_line;
20725       /* Note: record_line_callback is left as noop_record_line until
20726          we see DW_LNE_end_sequence.  */
20727     }
20728 }
20729
20730 /* Subroutine of dwarf_decode_lines to simplify it.
20731    Process the line number information in LH.
20732    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20733    program in order to set included_p for every referenced header.  */
20734
20735 static void
20736 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20737                       const int decode_for_pst_p, CORE_ADDR lowpc)
20738 {
20739   const gdb_byte *line_ptr, *extended_end;
20740   const gdb_byte *line_end;
20741   unsigned int bytes_read, extended_len;
20742   unsigned char op_code, extended_op;
20743   CORE_ADDR baseaddr;
20744   struct objfile *objfile = cu->objfile;
20745   bfd *abfd = objfile->obfd;
20746   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20747   /* True if we're recording line info (as opposed to building partial
20748      symtabs and just interested in finding include files mentioned by
20749      the line number program).  */
20750   bool record_lines_p = !decode_for_pst_p;
20751
20752   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20753
20754   line_ptr = lh->statement_program_start;
20755   line_end = lh->statement_program_end;
20756
20757   /* Read the statement sequences until there's nothing left.  */
20758   while (line_ptr < line_end)
20759     {
20760       /* The DWARF line number program state machine.  Reset the state
20761          machine at the start of each sequence.  */
20762       lnp_state_machine state_machine (gdbarch, lh, record_lines_p);
20763       bool end_sequence = false;
20764
20765       if (record_lines_p)
20766         {
20767           /* Start a subfile for the current file of the state
20768              machine.  */
20769           const file_entry *fe = state_machine.current_file ();
20770
20771           if (fe != NULL)
20772             dwarf2_start_subfile (fe->name, fe->include_dir (lh));
20773         }
20774
20775       /* Decode the table.  */
20776       while (line_ptr < line_end && !end_sequence)
20777         {
20778           op_code = read_1_byte (abfd, line_ptr);
20779           line_ptr += 1;
20780
20781           if (op_code >= lh->opcode_base)
20782             {
20783               /* Special opcode.  */
20784               state_machine.handle_special_opcode (op_code);
20785             }
20786           else switch (op_code)
20787             {
20788             case DW_LNS_extended_op:
20789               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20790                                                    &bytes_read);
20791               line_ptr += bytes_read;
20792               extended_end = line_ptr + extended_len;
20793               extended_op = read_1_byte (abfd, line_ptr);
20794               line_ptr += 1;
20795               switch (extended_op)
20796                 {
20797                 case DW_LNE_end_sequence:
20798                   state_machine.handle_end_sequence ();
20799                   end_sequence = true;
20800                   break;
20801                 case DW_LNE_set_address:
20802                   {
20803                     CORE_ADDR address
20804                       = read_address (abfd, line_ptr, cu, &bytes_read);
20805                     line_ptr += bytes_read;
20806
20807                     state_machine.check_line_address (cu, line_ptr,
20808                                                       lowpc, address);
20809                     state_machine.handle_set_address (baseaddr, address);
20810                   }
20811                   break;
20812                 case DW_LNE_define_file:
20813                   {
20814                     const char *cur_file;
20815                     unsigned int mod_time, length;
20816                     dir_index dindex;
20817
20818                     cur_file = read_direct_string (abfd, line_ptr,
20819                                                    &bytes_read);
20820                     line_ptr += bytes_read;
20821                     dindex = (dir_index)
20822                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20823                     line_ptr += bytes_read;
20824                     mod_time =
20825                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20826                     line_ptr += bytes_read;
20827                     length =
20828                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20829                     line_ptr += bytes_read;
20830                     lh->add_file_name (cur_file, dindex, mod_time, length);
20831                   }
20832                   break;
20833                 case DW_LNE_set_discriminator:
20834                   {
20835                     /* The discriminator is not interesting to the
20836                        debugger; just ignore it.  We still need to
20837                        check its value though:
20838                        if there are consecutive entries for the same
20839                        (non-prologue) line we want to coalesce them.
20840                        PR 17276.  */
20841                     unsigned int discr
20842                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20843                     line_ptr += bytes_read;
20844
20845                     state_machine.handle_set_discriminator (discr);
20846                   }
20847                   break;
20848                 default:
20849                   complaint (&symfile_complaints,
20850                              _("mangled .debug_line section"));
20851                   return;
20852                 }
20853               /* Make sure that we parsed the extended op correctly.  If e.g.
20854                  we expected a different address size than the producer used,
20855                  we may have read the wrong number of bytes.  */
20856               if (line_ptr != extended_end)
20857                 {
20858                   complaint (&symfile_complaints,
20859                              _("mangled .debug_line section"));
20860                   return;
20861                 }
20862               break;
20863             case DW_LNS_copy:
20864               state_machine.handle_copy ();
20865               break;
20866             case DW_LNS_advance_pc:
20867               {
20868                 CORE_ADDR adjust
20869                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20870                 line_ptr += bytes_read;
20871
20872                 state_machine.handle_advance_pc (adjust);
20873               }
20874               break;
20875             case DW_LNS_advance_line:
20876               {
20877                 int line_delta
20878                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
20879                 line_ptr += bytes_read;
20880
20881                 state_machine.handle_advance_line (line_delta);
20882               }
20883               break;
20884             case DW_LNS_set_file:
20885               {
20886                 file_name_index file
20887                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
20888                                                             &bytes_read);
20889                 line_ptr += bytes_read;
20890
20891                 state_machine.handle_set_file (file);
20892               }
20893               break;
20894             case DW_LNS_set_column:
20895               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20896               line_ptr += bytes_read;
20897               break;
20898             case DW_LNS_negate_stmt:
20899               state_machine.handle_negate_stmt ();
20900               break;
20901             case DW_LNS_set_basic_block:
20902               break;
20903             /* Add to the address register of the state machine the
20904                address increment value corresponding to special opcode
20905                255.  I.e., this value is scaled by the minimum
20906                instruction length since special opcode 255 would have
20907                scaled the increment.  */
20908             case DW_LNS_const_add_pc:
20909               state_machine.handle_const_add_pc ();
20910               break;
20911             case DW_LNS_fixed_advance_pc:
20912               {
20913                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
20914                 line_ptr += 2;
20915
20916                 state_machine.handle_fixed_advance_pc (addr_adj);
20917               }
20918               break;
20919             default:
20920               {
20921                 /* Unknown standard opcode, ignore it.  */
20922                 int i;
20923
20924                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
20925                   {
20926                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20927                     line_ptr += bytes_read;
20928                   }
20929               }
20930             }
20931         }
20932
20933       if (!end_sequence)
20934         dwarf2_debug_line_missing_end_sequence_complaint ();
20935
20936       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
20937          in which case we still finish recording the last line).  */
20938       state_machine.record_line (true);
20939     }
20940 }
20941
20942 /* Decode the Line Number Program (LNP) for the given line_header
20943    structure and CU.  The actual information extracted and the type
20944    of structures created from the LNP depends on the value of PST.
20945
20946    1. If PST is NULL, then this procedure uses the data from the program
20947       to create all necessary symbol tables, and their linetables.
20948
20949    2. If PST is not NULL, this procedure reads the program to determine
20950       the list of files included by the unit represented by PST, and
20951       builds all the associated partial symbol tables.
20952
20953    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20954    It is used for relative paths in the line table.
20955    NOTE: When processing partial symtabs (pst != NULL),
20956    comp_dir == pst->dirname.
20957
20958    NOTE: It is important that psymtabs have the same file name (via strcmp)
20959    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
20960    symtab we don't use it in the name of the psymtabs we create.
20961    E.g. expand_line_sal requires this when finding psymtabs to expand.
20962    A good testcase for this is mb-inline.exp.
20963
20964    LOWPC is the lowest address in CU (or 0 if not known).
20965
20966    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
20967    for its PC<->lines mapping information.  Otherwise only the filename
20968    table is read in.  */
20969
20970 static void
20971 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
20972                     struct dwarf2_cu *cu, struct partial_symtab *pst,
20973                     CORE_ADDR lowpc, int decode_mapping)
20974 {
20975   struct objfile *objfile = cu->objfile;
20976   const int decode_for_pst_p = (pst != NULL);
20977
20978   if (decode_mapping)
20979     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
20980
20981   if (decode_for_pst_p)
20982     {
20983       int file_index;
20984
20985       /* Now that we're done scanning the Line Header Program, we can
20986          create the psymtab of each included file.  */
20987       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
20988         if (lh->file_names[file_index].included_p == 1)
20989           {
20990             const char *include_name =
20991               psymtab_include_file_name (lh, file_index, pst, comp_dir);
20992             if (include_name != NULL)
20993               dwarf2_create_include_psymtab (include_name, pst, objfile);
20994           }
20995     }
20996   else
20997     {
20998       /* Make sure a symtab is created for every file, even files
20999          which contain only variables (i.e. no code with associated
21000          line numbers).  */
21001       struct compunit_symtab *cust = buildsym_compunit_symtab ();
21002       int i;
21003
21004       for (i = 0; i < lh->file_names.size (); i++)
21005         {
21006           file_entry &fe = lh->file_names[i];
21007
21008           dwarf2_start_subfile (fe.name, fe.include_dir (lh));
21009
21010           if (current_subfile->symtab == NULL)
21011             {
21012               current_subfile->symtab
21013                 = allocate_symtab (cust, current_subfile->name);
21014             }
21015           fe.symtab = current_subfile->symtab;
21016         }
21017     }
21018 }
21019
21020 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21021    DIRNAME the name of the source directory which contains FILENAME
21022    or NULL if not known.
21023    This routine tries to keep line numbers from identical absolute and
21024    relative file names in a common subfile.
21025
21026    Using the `list' example from the GDB testsuite, which resides in
21027    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21028    of /srcdir/list0.c yields the following debugging information for list0.c:
21029
21030    DW_AT_name:          /srcdir/list0.c
21031    DW_AT_comp_dir:      /compdir
21032    files.files[0].name: list0.h
21033    files.files[0].dir:  /srcdir
21034    files.files[1].name: list0.c
21035    files.files[1].dir:  /srcdir
21036
21037    The line number information for list0.c has to end up in a single
21038    subfile, so that `break /srcdir/list0.c:1' works as expected.
21039    start_subfile will ensure that this happens provided that we pass the
21040    concatenation of files.files[1].dir and files.files[1].name as the
21041    subfile's name.  */
21042
21043 static void
21044 dwarf2_start_subfile (const char *filename, const char *dirname)
21045 {
21046   char *copy = NULL;
21047
21048   /* In order not to lose the line information directory,
21049      we concatenate it to the filename when it makes sense.
21050      Note that the Dwarf3 standard says (speaking of filenames in line
21051      information): ``The directory index is ignored for file names
21052      that represent full path names''.  Thus ignoring dirname in the
21053      `else' branch below isn't an issue.  */
21054
21055   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21056     {
21057       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21058       filename = copy;
21059     }
21060
21061   start_subfile (filename);
21062
21063   if (copy != NULL)
21064     xfree (copy);
21065 }
21066
21067 /* Start a symtab for DWARF.
21068    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
21069
21070 static struct compunit_symtab *
21071 dwarf2_start_symtab (struct dwarf2_cu *cu,
21072                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21073 {
21074   struct compunit_symtab *cust
21075     = start_symtab (cu->objfile, name, comp_dir, low_pc, cu->language);
21076
21077   record_debugformat ("DWARF 2");
21078   record_producer (cu->producer);
21079
21080   /* We assume that we're processing GCC output.  */
21081   processing_gcc_compilation = 2;
21082
21083   cu->processing_has_namespace_info = 0;
21084
21085   return cust;
21086 }
21087
21088 static void
21089 var_decode_location (struct attribute *attr, struct symbol *sym,
21090                      struct dwarf2_cu *cu)
21091 {
21092   struct objfile *objfile = cu->objfile;
21093   struct comp_unit_head *cu_header = &cu->header;
21094
21095   /* NOTE drow/2003-01-30: There used to be a comment and some special
21096      code here to turn a symbol with DW_AT_external and a
21097      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21098      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21099      with some versions of binutils) where shared libraries could have
21100      relocations against symbols in their debug information - the
21101      minimal symbol would have the right address, but the debug info
21102      would not.  It's no longer necessary, because we will explicitly
21103      apply relocations when we read in the debug information now.  */
21104
21105   /* A DW_AT_location attribute with no contents indicates that a
21106      variable has been optimized away.  */
21107   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21108     {
21109       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21110       return;
21111     }
21112
21113   /* Handle one degenerate form of location expression specially, to
21114      preserve GDB's previous behavior when section offsets are
21115      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21116      then mark this symbol as LOC_STATIC.  */
21117
21118   if (attr_form_is_block (attr)
21119       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21120            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21121           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21122               && (DW_BLOCK (attr)->size
21123                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21124     {
21125       unsigned int dummy;
21126
21127       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21128         SYMBOL_VALUE_ADDRESS (sym) =
21129           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21130       else
21131         SYMBOL_VALUE_ADDRESS (sym) =
21132           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21133       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21134       fixup_symbol_section (sym, objfile);
21135       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21136                                               SYMBOL_SECTION (sym));
21137       return;
21138     }
21139
21140   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21141      expression evaluator, and use LOC_COMPUTED only when necessary
21142      (i.e. when the value of a register or memory location is
21143      referenced, or a thread-local block, etc.).  Then again, it might
21144      not be worthwhile.  I'm assuming that it isn't unless performance
21145      or memory numbers show me otherwise.  */
21146
21147   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21148
21149   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21150     cu->has_loclist = 1;
21151 }
21152
21153 /* Given a pointer to a DWARF information entry, figure out if we need
21154    to make a symbol table entry for it, and if so, create a new entry
21155    and return a pointer to it.
21156    If TYPE is NULL, determine symbol type from the die, otherwise
21157    used the passed type.
21158    If SPACE is not NULL, use it to hold the new symbol.  If it is
21159    NULL, allocate a new symbol on the objfile's obstack.  */
21160
21161 static struct symbol *
21162 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21163                  struct symbol *space)
21164 {
21165   struct objfile *objfile = cu->objfile;
21166   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21167   struct symbol *sym = NULL;
21168   const char *name;
21169   struct attribute *attr = NULL;
21170   struct attribute *attr2 = NULL;
21171   CORE_ADDR baseaddr;
21172   struct pending **list_to_add = NULL;
21173
21174   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21175
21176   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21177
21178   name = dwarf2_name (die, cu);
21179   if (name)
21180     {
21181       const char *linkagename;
21182       int suppress_add = 0;
21183
21184       if (space)
21185         sym = space;
21186       else
21187         sym = allocate_symbol (objfile);
21188       OBJSTAT (objfile, n_syms++);
21189
21190       /* Cache this symbol's name and the name's demangled form (if any).  */
21191       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21192       linkagename = dwarf2_physname (name, die, cu);
21193       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21194
21195       /* Fortran does not have mangling standard and the mangling does differ
21196          between gfortran, iFort etc.  */
21197       if (cu->language == language_fortran
21198           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21199         symbol_set_demangled_name (&(sym->ginfo),
21200                                    dwarf2_full_name (name, die, cu),
21201                                    NULL);
21202
21203       /* Default assumptions.
21204          Use the passed type or decode it from the die.  */
21205       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21206       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21207       if (type != NULL)
21208         SYMBOL_TYPE (sym) = type;
21209       else
21210         SYMBOL_TYPE (sym) = die_type (die, cu);
21211       attr = dwarf2_attr (die,
21212                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21213                           cu);
21214       if (attr)
21215         {
21216           SYMBOL_LINE (sym) = DW_UNSND (attr);
21217         }
21218
21219       attr = dwarf2_attr (die,
21220                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21221                           cu);
21222       if (attr)
21223         {
21224           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21225           struct file_entry *fe;
21226
21227           if (cu->line_header != NULL)
21228             fe = cu->line_header->file_name_at (file_index);
21229           else
21230             fe = NULL;
21231
21232           if (fe == NULL)
21233             complaint (&symfile_complaints,
21234                        _("file index out of range"));
21235           else
21236             symbol_set_symtab (sym, fe->symtab);
21237         }
21238
21239       switch (die->tag)
21240         {
21241         case DW_TAG_label:
21242           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21243           if (attr)
21244             {
21245               CORE_ADDR addr;
21246
21247               addr = attr_value_as_address (attr);
21248               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21249               SYMBOL_VALUE_ADDRESS (sym) = addr;
21250             }
21251           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21252           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21253           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21254           add_symbol_to_list (sym, cu->list_in_scope);
21255           break;
21256         case DW_TAG_subprogram:
21257           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21258              finish_block.  */
21259           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21260           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21261           if ((attr2 && (DW_UNSND (attr2) != 0))
21262               || cu->language == language_ada)
21263             {
21264               /* Subprograms marked external are stored as a global symbol.
21265                  Ada subprograms, whether marked external or not, are always
21266                  stored as a global symbol, because we want to be able to
21267                  access them globally.  For instance, we want to be able
21268                  to break on a nested subprogram without having to
21269                  specify the context.  */
21270               list_to_add = &global_symbols;
21271             }
21272           else
21273             {
21274               list_to_add = cu->list_in_scope;
21275             }
21276           break;
21277         case DW_TAG_inlined_subroutine:
21278           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21279              finish_block.  */
21280           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21281           SYMBOL_INLINED (sym) = 1;
21282           list_to_add = cu->list_in_scope;
21283           break;
21284         case DW_TAG_template_value_param:
21285           suppress_add = 1;
21286           /* Fall through.  */
21287         case DW_TAG_constant:
21288         case DW_TAG_variable:
21289         case DW_TAG_member:
21290           /* Compilation with minimal debug info may result in
21291              variables with missing type entries.  Change the
21292              misleading `void' type to something sensible.  */
21293           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21294             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21295
21296           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21297           /* In the case of DW_TAG_member, we should only be called for
21298              static const members.  */
21299           if (die->tag == DW_TAG_member)
21300             {
21301               /* dwarf2_add_field uses die_is_declaration,
21302                  so we do the same.  */
21303               gdb_assert (die_is_declaration (die, cu));
21304               gdb_assert (attr);
21305             }
21306           if (attr)
21307             {
21308               dwarf2_const_value (attr, sym, cu);
21309               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21310               if (!suppress_add)
21311                 {
21312                   if (attr2 && (DW_UNSND (attr2) != 0))
21313                     list_to_add = &global_symbols;
21314                   else
21315                     list_to_add = cu->list_in_scope;
21316                 }
21317               break;
21318             }
21319           attr = dwarf2_attr (die, DW_AT_location, cu);
21320           if (attr)
21321             {
21322               var_decode_location (attr, sym, cu);
21323               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21324
21325               /* Fortran explicitly imports any global symbols to the local
21326                  scope by DW_TAG_common_block.  */
21327               if (cu->language == language_fortran && die->parent
21328                   && die->parent->tag == DW_TAG_common_block)
21329                 attr2 = NULL;
21330
21331               if (SYMBOL_CLASS (sym) == LOC_STATIC
21332                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21333                   && !dwarf2_per_objfile->has_section_at_zero)
21334                 {
21335                   /* When a static variable is eliminated by the linker,
21336                      the corresponding debug information is not stripped
21337                      out, but the variable address is set to null;
21338                      do not add such variables into symbol table.  */
21339                 }
21340               else if (attr2 && (DW_UNSND (attr2) != 0))
21341                 {
21342                   /* Workaround gfortran PR debug/40040 - it uses
21343                      DW_AT_location for variables in -fPIC libraries which may
21344                      get overriden by other libraries/executable and get
21345                      a different address.  Resolve it by the minimal symbol
21346                      which may come from inferior's executable using copy
21347                      relocation.  Make this workaround only for gfortran as for
21348                      other compilers GDB cannot guess the minimal symbol
21349                      Fortran mangling kind.  */
21350                   if (cu->language == language_fortran && die->parent
21351                       && die->parent->tag == DW_TAG_module
21352                       && cu->producer
21353                       && startswith (cu->producer, "GNU Fortran"))
21354                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21355
21356                   /* A variable with DW_AT_external is never static,
21357                      but it may be block-scoped.  */
21358                   list_to_add = (cu->list_in_scope == &file_symbols
21359                                  ? &global_symbols : cu->list_in_scope);
21360                 }
21361               else
21362                 list_to_add = cu->list_in_scope;
21363             }
21364           else
21365             {
21366               /* We do not know the address of this symbol.
21367                  If it is an external symbol and we have type information
21368                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21369                  The address of the variable will then be determined from
21370                  the minimal symbol table whenever the variable is
21371                  referenced.  */
21372               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21373
21374               /* Fortran explicitly imports any global symbols to the local
21375                  scope by DW_TAG_common_block.  */
21376               if (cu->language == language_fortran && die->parent
21377                   && die->parent->tag == DW_TAG_common_block)
21378                 {
21379                   /* SYMBOL_CLASS doesn't matter here because
21380                      read_common_block is going to reset it.  */
21381                   if (!suppress_add)
21382                     list_to_add = cu->list_in_scope;
21383                 }
21384               else if (attr2 && (DW_UNSND (attr2) != 0)
21385                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21386                 {
21387                   /* A variable with DW_AT_external is never static, but it
21388                      may be block-scoped.  */
21389                   list_to_add = (cu->list_in_scope == &file_symbols
21390                                  ? &global_symbols : cu->list_in_scope);
21391
21392                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21393                 }
21394               else if (!die_is_declaration (die, cu))
21395                 {
21396                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21397                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21398                   if (!suppress_add)
21399                     list_to_add = cu->list_in_scope;
21400                 }
21401             }
21402           break;
21403         case DW_TAG_formal_parameter:
21404           /* If we are inside a function, mark this as an argument.  If
21405              not, we might be looking at an argument to an inlined function
21406              when we do not have enough information to show inlined frames;
21407              pretend it's a local variable in that case so that the user can
21408              still see it.  */
21409           if (context_stack_depth > 0
21410               && context_stack[context_stack_depth - 1].name != NULL)
21411             SYMBOL_IS_ARGUMENT (sym) = 1;
21412           attr = dwarf2_attr (die, DW_AT_location, cu);
21413           if (attr)
21414             {
21415               var_decode_location (attr, sym, cu);
21416             }
21417           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21418           if (attr)
21419             {
21420               dwarf2_const_value (attr, sym, cu);
21421             }
21422
21423           list_to_add = cu->list_in_scope;
21424           break;
21425         case DW_TAG_unspecified_parameters:
21426           /* From varargs functions; gdb doesn't seem to have any
21427              interest in this information, so just ignore it for now.
21428              (FIXME?) */
21429           break;
21430         case DW_TAG_template_type_param:
21431           suppress_add = 1;
21432           /* Fall through.  */
21433         case DW_TAG_class_type:
21434         case DW_TAG_interface_type:
21435         case DW_TAG_structure_type:
21436         case DW_TAG_union_type:
21437         case DW_TAG_set_type:
21438         case DW_TAG_enumeration_type:
21439           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21440           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21441
21442           {
21443             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21444                really ever be static objects: otherwise, if you try
21445                to, say, break of a class's method and you're in a file
21446                which doesn't mention that class, it won't work unless
21447                the check for all static symbols in lookup_symbol_aux
21448                saves you.  See the OtherFileClass tests in
21449                gdb.c++/namespace.exp.  */
21450
21451             if (!suppress_add)
21452               {
21453                 list_to_add = (cu->list_in_scope == &file_symbols
21454                                && cu->language == language_cplus
21455                                ? &global_symbols : cu->list_in_scope);
21456
21457                 /* The semantics of C++ state that "struct foo {
21458                    ... }" also defines a typedef for "foo".  */
21459                 if (cu->language == language_cplus
21460                     || cu->language == language_ada
21461                     || cu->language == language_d
21462                     || cu->language == language_rust)
21463                   {
21464                     /* The symbol's name is already allocated along
21465                        with this objfile, so we don't need to
21466                        duplicate it for the type.  */
21467                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21468                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21469                   }
21470               }
21471           }
21472           break;
21473         case DW_TAG_typedef:
21474           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21475           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21476           list_to_add = cu->list_in_scope;
21477           break;
21478         case DW_TAG_base_type:
21479         case DW_TAG_subrange_type:
21480           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21481           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21482           list_to_add = cu->list_in_scope;
21483           break;
21484         case DW_TAG_enumerator:
21485           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21486           if (attr)
21487             {
21488               dwarf2_const_value (attr, sym, cu);
21489             }
21490           {
21491             /* NOTE: carlton/2003-11-10: See comment above in the
21492                DW_TAG_class_type, etc. block.  */
21493
21494             list_to_add = (cu->list_in_scope == &file_symbols
21495                            && cu->language == language_cplus
21496                            ? &global_symbols : cu->list_in_scope);
21497           }
21498           break;
21499         case DW_TAG_imported_declaration:
21500         case DW_TAG_namespace:
21501           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21502           list_to_add = &global_symbols;
21503           break;
21504         case DW_TAG_module:
21505           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21506           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21507           list_to_add = &global_symbols;
21508           break;
21509         case DW_TAG_common_block:
21510           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21511           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21512           add_symbol_to_list (sym, cu->list_in_scope);
21513           break;
21514         default:
21515           /* Not a tag we recognize.  Hopefully we aren't processing
21516              trash data, but since we must specifically ignore things
21517              we don't recognize, there is nothing else we should do at
21518              this point.  */
21519           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
21520                      dwarf_tag_name (die->tag));
21521           break;
21522         }
21523
21524       if (suppress_add)
21525         {
21526           sym->hash_next = objfile->template_symbols;
21527           objfile->template_symbols = sym;
21528           list_to_add = NULL;
21529         }
21530
21531       if (list_to_add != NULL)
21532         add_symbol_to_list (sym, list_to_add);
21533
21534       /* For the benefit of old versions of GCC, check for anonymous
21535          namespaces based on the demangled name.  */
21536       if (!cu->processing_has_namespace_info
21537           && cu->language == language_cplus)
21538         cp_scan_for_anonymous_namespaces (sym, objfile);
21539     }
21540   return (sym);
21541 }
21542
21543 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
21544
21545 static struct symbol *
21546 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21547 {
21548   return new_symbol_full (die, type, cu, NULL);
21549 }
21550
21551 /* Given an attr with a DW_FORM_dataN value in host byte order,
21552    zero-extend it as appropriate for the symbol's type.  The DWARF
21553    standard (v4) is not entirely clear about the meaning of using
21554    DW_FORM_dataN for a constant with a signed type, where the type is
21555    wider than the data.  The conclusion of a discussion on the DWARF
21556    list was that this is unspecified.  We choose to always zero-extend
21557    because that is the interpretation long in use by GCC.  */
21558
21559 static gdb_byte *
21560 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21561                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21562 {
21563   struct objfile *objfile = cu->objfile;
21564   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21565                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21566   LONGEST l = DW_UNSND (attr);
21567
21568   if (bits < sizeof (*value) * 8)
21569     {
21570       l &= ((LONGEST) 1 << bits) - 1;
21571       *value = l;
21572     }
21573   else if (bits == sizeof (*value) * 8)
21574     *value = l;
21575   else
21576     {
21577       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21578       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21579       return bytes;
21580     }
21581
21582   return NULL;
21583 }
21584
21585 /* Read a constant value from an attribute.  Either set *VALUE, or if
21586    the value does not fit in *VALUE, set *BYTES - either already
21587    allocated on the objfile obstack, or newly allocated on OBSTACK,
21588    or, set *BATON, if we translated the constant to a location
21589    expression.  */
21590
21591 static void
21592 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21593                          const char *name, struct obstack *obstack,
21594                          struct dwarf2_cu *cu,
21595                          LONGEST *value, const gdb_byte **bytes,
21596                          struct dwarf2_locexpr_baton **baton)
21597 {
21598   struct objfile *objfile = cu->objfile;
21599   struct comp_unit_head *cu_header = &cu->header;
21600   struct dwarf_block *blk;
21601   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21602                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21603
21604   *value = 0;
21605   *bytes = NULL;
21606   *baton = NULL;
21607
21608   switch (attr->form)
21609     {
21610     case DW_FORM_addr:
21611     case DW_FORM_GNU_addr_index:
21612       {
21613         gdb_byte *data;
21614
21615         if (TYPE_LENGTH (type) != cu_header->addr_size)
21616           dwarf2_const_value_length_mismatch_complaint (name,
21617                                                         cu_header->addr_size,
21618                                                         TYPE_LENGTH (type));
21619         /* Symbols of this form are reasonably rare, so we just
21620            piggyback on the existing location code rather than writing
21621            a new implementation of symbol_computed_ops.  */
21622         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21623         (*baton)->per_cu = cu->per_cu;
21624         gdb_assert ((*baton)->per_cu);
21625
21626         (*baton)->size = 2 + cu_header->addr_size;
21627         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21628         (*baton)->data = data;
21629
21630         data[0] = DW_OP_addr;
21631         store_unsigned_integer (&data[1], cu_header->addr_size,
21632                                 byte_order, DW_ADDR (attr));
21633         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21634       }
21635       break;
21636     case DW_FORM_string:
21637     case DW_FORM_strp:
21638     case DW_FORM_GNU_str_index:
21639     case DW_FORM_GNU_strp_alt:
21640       /* DW_STRING is already allocated on the objfile obstack, point
21641          directly to it.  */
21642       *bytes = (const gdb_byte *) DW_STRING (attr);
21643       break;
21644     case DW_FORM_block1:
21645     case DW_FORM_block2:
21646     case DW_FORM_block4:
21647     case DW_FORM_block:
21648     case DW_FORM_exprloc:
21649     case DW_FORM_data16:
21650       blk = DW_BLOCK (attr);
21651       if (TYPE_LENGTH (type) != blk->size)
21652         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21653                                                       TYPE_LENGTH (type));
21654       *bytes = blk->data;
21655       break;
21656
21657       /* The DW_AT_const_value attributes are supposed to carry the
21658          symbol's value "represented as it would be on the target
21659          architecture."  By the time we get here, it's already been
21660          converted to host endianness, so we just need to sign- or
21661          zero-extend it as appropriate.  */
21662     case DW_FORM_data1:
21663       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21664       break;
21665     case DW_FORM_data2:
21666       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21667       break;
21668     case DW_FORM_data4:
21669       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21670       break;
21671     case DW_FORM_data8:
21672       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21673       break;
21674
21675     case DW_FORM_sdata:
21676     case DW_FORM_implicit_const:
21677       *value = DW_SND (attr);
21678       break;
21679
21680     case DW_FORM_udata:
21681       *value = DW_UNSND (attr);
21682       break;
21683
21684     default:
21685       complaint (&symfile_complaints,
21686                  _("unsupported const value attribute form: '%s'"),
21687                  dwarf_form_name (attr->form));
21688       *value = 0;
21689       break;
21690     }
21691 }
21692
21693
21694 /* Copy constant value from an attribute to a symbol.  */
21695
21696 static void
21697 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21698                     struct dwarf2_cu *cu)
21699 {
21700   struct objfile *objfile = cu->objfile;
21701   LONGEST value;
21702   const gdb_byte *bytes;
21703   struct dwarf2_locexpr_baton *baton;
21704
21705   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21706                            SYMBOL_PRINT_NAME (sym),
21707                            &objfile->objfile_obstack, cu,
21708                            &value, &bytes, &baton);
21709
21710   if (baton != NULL)
21711     {
21712       SYMBOL_LOCATION_BATON (sym) = baton;
21713       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21714     }
21715   else if (bytes != NULL)
21716      {
21717       SYMBOL_VALUE_BYTES (sym) = bytes;
21718       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21719     }
21720   else
21721     {
21722       SYMBOL_VALUE (sym) = value;
21723       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21724     }
21725 }
21726
21727 /* Return the type of the die in question using its DW_AT_type attribute.  */
21728
21729 static struct type *
21730 die_type (struct die_info *die, struct dwarf2_cu *cu)
21731 {
21732   struct attribute *type_attr;
21733
21734   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21735   if (!type_attr)
21736     {
21737       /* A missing DW_AT_type represents a void type.  */
21738       return objfile_type (cu->objfile)->builtin_void;
21739     }
21740
21741   return lookup_die_type (die, type_attr, cu);
21742 }
21743
21744 /* True iff CU's producer generates GNAT Ada auxiliary information
21745    that allows to find parallel types through that information instead
21746    of having to do expensive parallel lookups by type name.  */
21747
21748 static int
21749 need_gnat_info (struct dwarf2_cu *cu)
21750 {
21751   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
21752      of GNAT produces this auxiliary information, without any indication
21753      that it is produced.  Part of enhancing the FSF version of GNAT
21754      to produce that information will be to put in place an indicator
21755      that we can use in order to determine whether the descriptive type
21756      info is available or not.  One suggestion that has been made is
21757      to use a new attribute, attached to the CU die.  For now, assume
21758      that the descriptive type info is not available.  */
21759   return 0;
21760 }
21761
21762 /* Return the auxiliary type of the die in question using its
21763    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21764    attribute is not present.  */
21765
21766 static struct type *
21767 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21768 {
21769   struct attribute *type_attr;
21770
21771   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21772   if (!type_attr)
21773     return NULL;
21774
21775   return lookup_die_type (die, type_attr, cu);
21776 }
21777
21778 /* If DIE has a descriptive_type attribute, then set the TYPE's
21779    descriptive type accordingly.  */
21780
21781 static void
21782 set_descriptive_type (struct type *type, struct die_info *die,
21783                       struct dwarf2_cu *cu)
21784 {
21785   struct type *descriptive_type = die_descriptive_type (die, cu);
21786
21787   if (descriptive_type)
21788     {
21789       ALLOCATE_GNAT_AUX_TYPE (type);
21790       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21791     }
21792 }
21793
21794 /* Return the containing type of the die in question using its
21795    DW_AT_containing_type attribute.  */
21796
21797 static struct type *
21798 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21799 {
21800   struct attribute *type_attr;
21801
21802   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21803   if (!type_attr)
21804     error (_("Dwarf Error: Problem turning containing type into gdb type "
21805              "[in module %s]"), objfile_name (cu->objfile));
21806
21807   return lookup_die_type (die, type_attr, cu);
21808 }
21809
21810 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21811
21812 static struct type *
21813 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21814 {
21815   struct objfile *objfile = dwarf2_per_objfile->objfile;
21816   char *message, *saved;
21817
21818   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
21819                         objfile_name (objfile),
21820                         to_underlying (cu->header.sect_off),
21821                         to_underlying (die->sect_off));
21822   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21823                                   message, strlen (message));
21824   xfree (message);
21825
21826   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21827 }
21828
21829 /* Look up the type of DIE in CU using its type attribute ATTR.
21830    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21831    DW_AT_containing_type.
21832    If there is no type substitute an error marker.  */
21833
21834 static struct type *
21835 lookup_die_type (struct die_info *die, const struct attribute *attr,
21836                  struct dwarf2_cu *cu)
21837 {
21838   struct objfile *objfile = cu->objfile;
21839   struct type *this_type;
21840
21841   gdb_assert (attr->name == DW_AT_type
21842               || attr->name == DW_AT_GNAT_descriptive_type
21843               || attr->name == DW_AT_containing_type);
21844
21845   /* First see if we have it cached.  */
21846
21847   if (attr->form == DW_FORM_GNU_ref_alt)
21848     {
21849       struct dwarf2_per_cu_data *per_cu;
21850       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21851
21852       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1, cu->objfile);
21853       this_type = get_die_type_at_offset (sect_off, per_cu);
21854     }
21855   else if (attr_form_is_ref (attr))
21856     {
21857       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21858
21859       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
21860     }
21861   else if (attr->form == DW_FORM_ref_sig8)
21862     {
21863       ULONGEST signature = DW_SIGNATURE (attr);
21864
21865       return get_signatured_type (die, signature, cu);
21866     }
21867   else
21868     {
21869       complaint (&symfile_complaints,
21870                  _("Dwarf Error: Bad type attribute %s in DIE"
21871                    " at 0x%x [in module %s]"),
21872                  dwarf_attr_name (attr->name), to_underlying (die->sect_off),
21873                  objfile_name (objfile));
21874       return build_error_marker_type (cu, die);
21875     }
21876
21877   /* If not cached we need to read it in.  */
21878
21879   if (this_type == NULL)
21880     {
21881       struct die_info *type_die = NULL;
21882       struct dwarf2_cu *type_cu = cu;
21883
21884       if (attr_form_is_ref (attr))
21885         type_die = follow_die_ref (die, attr, &type_cu);
21886       if (type_die == NULL)
21887         return build_error_marker_type (cu, die);
21888       /* If we find the type now, it's probably because the type came
21889          from an inter-CU reference and the type's CU got expanded before
21890          ours.  */
21891       this_type = read_type_die (type_die, type_cu);
21892     }
21893
21894   /* If we still don't have a type use an error marker.  */
21895
21896   if (this_type == NULL)
21897     return build_error_marker_type (cu, die);
21898
21899   return this_type;
21900 }
21901
21902 /* Return the type in DIE, CU.
21903    Returns NULL for invalid types.
21904
21905    This first does a lookup in die_type_hash,
21906    and only reads the die in if necessary.
21907
21908    NOTE: This can be called when reading in partial or full symbols.  */
21909
21910 static struct type *
21911 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
21912 {
21913   struct type *this_type;
21914
21915   this_type = get_die_type (die, cu);
21916   if (this_type)
21917     return this_type;
21918
21919   return read_type_die_1 (die, cu);
21920 }
21921
21922 /* Read the type in DIE, CU.
21923    Returns NULL for invalid types.  */
21924
21925 static struct type *
21926 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
21927 {
21928   struct type *this_type = NULL;
21929
21930   switch (die->tag)
21931     {
21932     case DW_TAG_class_type:
21933     case DW_TAG_interface_type:
21934     case DW_TAG_structure_type:
21935     case DW_TAG_union_type:
21936       this_type = read_structure_type (die, cu);
21937       break;
21938     case DW_TAG_enumeration_type:
21939       this_type = read_enumeration_type (die, cu);
21940       break;
21941     case DW_TAG_subprogram:
21942     case DW_TAG_subroutine_type:
21943     case DW_TAG_inlined_subroutine:
21944       this_type = read_subroutine_type (die, cu);
21945       break;
21946     case DW_TAG_array_type:
21947       this_type = read_array_type (die, cu);
21948       break;
21949     case DW_TAG_set_type:
21950       this_type = read_set_type (die, cu);
21951       break;
21952     case DW_TAG_pointer_type:
21953       this_type = read_tag_pointer_type (die, cu);
21954       break;
21955     case DW_TAG_ptr_to_member_type:
21956       this_type = read_tag_ptr_to_member_type (die, cu);
21957       break;
21958     case DW_TAG_reference_type:
21959       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
21960       break;
21961     case DW_TAG_rvalue_reference_type:
21962       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
21963       break;
21964     case DW_TAG_const_type:
21965       this_type = read_tag_const_type (die, cu);
21966       break;
21967     case DW_TAG_volatile_type:
21968       this_type = read_tag_volatile_type (die, cu);
21969       break;
21970     case DW_TAG_restrict_type:
21971       this_type = read_tag_restrict_type (die, cu);
21972       break;
21973     case DW_TAG_string_type:
21974       this_type = read_tag_string_type (die, cu);
21975       break;
21976     case DW_TAG_typedef:
21977       this_type = read_typedef (die, cu);
21978       break;
21979     case DW_TAG_subrange_type:
21980       this_type = read_subrange_type (die, cu);
21981       break;
21982     case DW_TAG_base_type:
21983       this_type = read_base_type (die, cu);
21984       break;
21985     case DW_TAG_unspecified_type:
21986       this_type = read_unspecified_type (die, cu);
21987       break;
21988     case DW_TAG_namespace:
21989       this_type = read_namespace_type (die, cu);
21990       break;
21991     case DW_TAG_module:
21992       this_type = read_module_type (die, cu);
21993       break;
21994     case DW_TAG_atomic_type:
21995       this_type = read_tag_atomic_type (die, cu);
21996       break;
21997     default:
21998       complaint (&symfile_complaints,
21999                  _("unexpected tag in read_type_die: '%s'"),
22000                  dwarf_tag_name (die->tag));
22001       break;
22002     }
22003
22004   return this_type;
22005 }
22006
22007 /* See if we can figure out if the class lives in a namespace.  We do
22008    this by looking for a member function; its demangled name will
22009    contain namespace info, if there is any.
22010    Return the computed name or NULL.
22011    Space for the result is allocated on the objfile's obstack.
22012    This is the full-die version of guess_partial_die_structure_name.
22013    In this case we know DIE has no useful parent.  */
22014
22015 static char *
22016 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22017 {
22018   struct die_info *spec_die;
22019   struct dwarf2_cu *spec_cu;
22020   struct die_info *child;
22021
22022   spec_cu = cu;
22023   spec_die = die_specification (die, &spec_cu);
22024   if (spec_die != NULL)
22025     {
22026       die = spec_die;
22027       cu = spec_cu;
22028     }
22029
22030   for (child = die->child;
22031        child != NULL;
22032        child = child->sibling)
22033     {
22034       if (child->tag == DW_TAG_subprogram)
22035         {
22036           const char *linkage_name = dw2_linkage_name (child, cu);
22037
22038           if (linkage_name != NULL)
22039             {
22040               char *actual_name
22041                 = language_class_name_from_physname (cu->language_defn,
22042                                                      linkage_name);
22043               char *name = NULL;
22044
22045               if (actual_name != NULL)
22046                 {
22047                   const char *die_name = dwarf2_name (die, cu);
22048
22049                   if (die_name != NULL
22050                       && strcmp (die_name, actual_name) != 0)
22051                     {
22052                       /* Strip off the class name from the full name.
22053                          We want the prefix.  */
22054                       int die_name_len = strlen (die_name);
22055                       int actual_name_len = strlen (actual_name);
22056
22057                       /* Test for '::' as a sanity check.  */
22058                       if (actual_name_len > die_name_len + 2
22059                           && actual_name[actual_name_len
22060                                          - die_name_len - 1] == ':')
22061                         name = (char *) obstack_copy0 (
22062                           &cu->objfile->per_bfd->storage_obstack,
22063                           actual_name, actual_name_len - die_name_len - 2);
22064                     }
22065                 }
22066               xfree (actual_name);
22067               return name;
22068             }
22069         }
22070     }
22071
22072   return NULL;
22073 }
22074
22075 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22076    prefix part in such case.  See
22077    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22078
22079 static const char *
22080 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22081 {
22082   struct attribute *attr;
22083   const char *base;
22084
22085   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22086       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22087     return NULL;
22088
22089   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22090     return NULL;
22091
22092   attr = dw2_linkage_name_attr (die, cu);
22093   if (attr == NULL || DW_STRING (attr) == NULL)
22094     return NULL;
22095
22096   /* dwarf2_name had to be already called.  */
22097   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22098
22099   /* Strip the base name, keep any leading namespaces/classes.  */
22100   base = strrchr (DW_STRING (attr), ':');
22101   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22102     return "";
22103
22104   return (char *) obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
22105                                  DW_STRING (attr),
22106                                  &base[-1] - DW_STRING (attr));
22107 }
22108
22109 /* Return the name of the namespace/class that DIE is defined within,
22110    or "" if we can't tell.  The caller should not xfree the result.
22111
22112    For example, if we're within the method foo() in the following
22113    code:
22114
22115    namespace N {
22116      class C {
22117        void foo () {
22118        }
22119      };
22120    }
22121
22122    then determine_prefix on foo's die will return "N::C".  */
22123
22124 static const char *
22125 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22126 {
22127   struct die_info *parent, *spec_die;
22128   struct dwarf2_cu *spec_cu;
22129   struct type *parent_type;
22130   const char *retval;
22131
22132   if (cu->language != language_cplus
22133       && cu->language != language_fortran && cu->language != language_d
22134       && cu->language != language_rust)
22135     return "";
22136
22137   retval = anonymous_struct_prefix (die, cu);
22138   if (retval)
22139     return retval;
22140
22141   /* We have to be careful in the presence of DW_AT_specification.
22142      For example, with GCC 3.4, given the code
22143
22144      namespace N {
22145        void foo() {
22146          // Definition of N::foo.
22147        }
22148      }
22149
22150      then we'll have a tree of DIEs like this:
22151
22152      1: DW_TAG_compile_unit
22153        2: DW_TAG_namespace        // N
22154          3: DW_TAG_subprogram     // declaration of N::foo
22155        4: DW_TAG_subprogram       // definition of N::foo
22156             DW_AT_specification   // refers to die #3
22157
22158      Thus, when processing die #4, we have to pretend that we're in
22159      the context of its DW_AT_specification, namely the contex of die
22160      #3.  */
22161   spec_cu = cu;
22162   spec_die = die_specification (die, &spec_cu);
22163   if (spec_die == NULL)
22164     parent = die->parent;
22165   else
22166     {
22167       parent = spec_die->parent;
22168       cu = spec_cu;
22169     }
22170
22171   if (parent == NULL)
22172     return "";
22173   else if (parent->building_fullname)
22174     {
22175       const char *name;
22176       const char *parent_name;
22177
22178       /* It has been seen on RealView 2.2 built binaries,
22179          DW_TAG_template_type_param types actually _defined_ as
22180          children of the parent class:
22181
22182          enum E {};
22183          template class <class Enum> Class{};
22184          Class<enum E> class_e;
22185
22186          1: DW_TAG_class_type (Class)
22187            2: DW_TAG_enumeration_type (E)
22188              3: DW_TAG_enumerator (enum1:0)
22189              3: DW_TAG_enumerator (enum2:1)
22190              ...
22191            2: DW_TAG_template_type_param
22192               DW_AT_type  DW_FORM_ref_udata (E)
22193
22194          Besides being broken debug info, it can put GDB into an
22195          infinite loop.  Consider:
22196
22197          When we're building the full name for Class<E>, we'll start
22198          at Class, and go look over its template type parameters,
22199          finding E.  We'll then try to build the full name of E, and
22200          reach here.  We're now trying to build the full name of E,
22201          and look over the parent DIE for containing scope.  In the
22202          broken case, if we followed the parent DIE of E, we'd again
22203          find Class, and once again go look at its template type
22204          arguments, etc., etc.  Simply don't consider such parent die
22205          as source-level parent of this die (it can't be, the language
22206          doesn't allow it), and break the loop here.  */
22207       name = dwarf2_name (die, cu);
22208       parent_name = dwarf2_name (parent, cu);
22209       complaint (&symfile_complaints,
22210                  _("template param type '%s' defined within parent '%s'"),
22211                  name ? name : "<unknown>",
22212                  parent_name ? parent_name : "<unknown>");
22213       return "";
22214     }
22215   else
22216     switch (parent->tag)
22217       {
22218       case DW_TAG_namespace:
22219         parent_type = read_type_die (parent, cu);
22220         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22221            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22222            Work around this problem here.  */
22223         if (cu->language == language_cplus
22224             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
22225           return "";
22226         /* We give a name to even anonymous namespaces.  */
22227         return TYPE_TAG_NAME (parent_type);
22228       case DW_TAG_class_type:
22229       case DW_TAG_interface_type:
22230       case DW_TAG_structure_type:
22231       case DW_TAG_union_type:
22232       case DW_TAG_module:
22233         parent_type = read_type_die (parent, cu);
22234         if (TYPE_TAG_NAME (parent_type) != NULL)
22235           return TYPE_TAG_NAME (parent_type);
22236         else
22237           /* An anonymous structure is only allowed non-static data
22238              members; no typedefs, no member functions, et cetera.
22239              So it does not need a prefix.  */
22240           return "";
22241       case DW_TAG_compile_unit:
22242       case DW_TAG_partial_unit:
22243         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22244         if (cu->language == language_cplus
22245             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22246             && die->child != NULL
22247             && (die->tag == DW_TAG_class_type
22248                 || die->tag == DW_TAG_structure_type
22249                 || die->tag == DW_TAG_union_type))
22250           {
22251             char *name = guess_full_die_structure_name (die, cu);
22252             if (name != NULL)
22253               return name;
22254           }
22255         return "";
22256       case DW_TAG_enumeration_type:
22257         parent_type = read_type_die (parent, cu);
22258         if (TYPE_DECLARED_CLASS (parent_type))
22259           {
22260             if (TYPE_TAG_NAME (parent_type) != NULL)
22261               return TYPE_TAG_NAME (parent_type);
22262             return "";
22263           }
22264         /* Fall through.  */
22265       default:
22266         return determine_prefix (parent, cu);
22267       }
22268 }
22269
22270 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22271    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22272    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22273    an obconcat, otherwise allocate storage for the result.  The CU argument is
22274    used to determine the language and hence, the appropriate separator.  */
22275
22276 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22277
22278 static char *
22279 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22280                  int physname, struct dwarf2_cu *cu)
22281 {
22282   const char *lead = "";
22283   const char *sep;
22284
22285   if (suffix == NULL || suffix[0] == '\0'
22286       || prefix == NULL || prefix[0] == '\0')
22287     sep = "";
22288   else if (cu->language == language_d)
22289     {
22290       /* For D, the 'main' function could be defined in any module, but it
22291          should never be prefixed.  */
22292       if (strcmp (suffix, "D main") == 0)
22293         {
22294           prefix = "";
22295           sep = "";
22296         }
22297       else
22298         sep = ".";
22299     }
22300   else if (cu->language == language_fortran && physname)
22301     {
22302       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22303          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22304
22305       lead = "__";
22306       sep = "_MOD_";
22307     }
22308   else
22309     sep = "::";
22310
22311   if (prefix == NULL)
22312     prefix = "";
22313   if (suffix == NULL)
22314     suffix = "";
22315
22316   if (obs == NULL)
22317     {
22318       char *retval
22319         = ((char *)
22320            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22321
22322       strcpy (retval, lead);
22323       strcat (retval, prefix);
22324       strcat (retval, sep);
22325       strcat (retval, suffix);
22326       return retval;
22327     }
22328   else
22329     {
22330       /* We have an obstack.  */
22331       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22332     }
22333 }
22334
22335 /* Return sibling of die, NULL if no sibling.  */
22336
22337 static struct die_info *
22338 sibling_die (struct die_info *die)
22339 {
22340   return die->sibling;
22341 }
22342
22343 /* Get name of a die, return NULL if not found.  */
22344
22345 static const char *
22346 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22347                           struct obstack *obstack)
22348 {
22349   if (name && cu->language == language_cplus)
22350     {
22351       std::string canon_name = cp_canonicalize_string (name);
22352
22353       if (!canon_name.empty ())
22354         {
22355           if (canon_name != name)
22356             name = (const char *) obstack_copy0 (obstack,
22357                                                  canon_name.c_str (),
22358                                                  canon_name.length ());
22359         }
22360     }
22361
22362   return name;
22363 }
22364
22365 /* Get name of a die, return NULL if not found.
22366    Anonymous namespaces are converted to their magic string.  */
22367
22368 static const char *
22369 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22370 {
22371   struct attribute *attr;
22372
22373   attr = dwarf2_attr (die, DW_AT_name, cu);
22374   if ((!attr || !DW_STRING (attr))
22375       && die->tag != DW_TAG_namespace
22376       && die->tag != DW_TAG_class_type
22377       && die->tag != DW_TAG_interface_type
22378       && die->tag != DW_TAG_structure_type
22379       && die->tag != DW_TAG_union_type)
22380     return NULL;
22381
22382   switch (die->tag)
22383     {
22384     case DW_TAG_compile_unit:
22385     case DW_TAG_partial_unit:
22386       /* Compilation units have a DW_AT_name that is a filename, not
22387          a source language identifier.  */
22388     case DW_TAG_enumeration_type:
22389     case DW_TAG_enumerator:
22390       /* These tags always have simple identifiers already; no need
22391          to canonicalize them.  */
22392       return DW_STRING (attr);
22393
22394     case DW_TAG_namespace:
22395       if (attr != NULL && DW_STRING (attr) != NULL)
22396         return DW_STRING (attr);
22397       return CP_ANONYMOUS_NAMESPACE_STR;
22398
22399     case DW_TAG_class_type:
22400     case DW_TAG_interface_type:
22401     case DW_TAG_structure_type:
22402     case DW_TAG_union_type:
22403       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22404          structures or unions.  These were of the form "._%d" in GCC 4.1,
22405          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22406          and GCC 4.4.  We work around this problem by ignoring these.  */
22407       if (attr && DW_STRING (attr)
22408           && (startswith (DW_STRING (attr), "._")
22409               || startswith (DW_STRING (attr), "<anonymous")))
22410         return NULL;
22411
22412       /* GCC might emit a nameless typedef that has a linkage name.  See
22413          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22414       if (!attr || DW_STRING (attr) == NULL)
22415         {
22416           char *demangled = NULL;
22417
22418           attr = dw2_linkage_name_attr (die, cu);
22419           if (attr == NULL || DW_STRING (attr) == NULL)
22420             return NULL;
22421
22422           /* Avoid demangling DW_STRING (attr) the second time on a second
22423              call for the same DIE.  */
22424           if (!DW_STRING_IS_CANONICAL (attr))
22425             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22426
22427           if (demangled)
22428             {
22429               const char *base;
22430
22431               /* FIXME: we already did this for the partial symbol... */
22432               DW_STRING (attr)
22433                 = ((const char *)
22434                    obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
22435                                   demangled, strlen (demangled)));
22436               DW_STRING_IS_CANONICAL (attr) = 1;
22437               xfree (demangled);
22438
22439               /* Strip any leading namespaces/classes, keep only the base name.
22440                  DW_AT_name for named DIEs does not contain the prefixes.  */
22441               base = strrchr (DW_STRING (attr), ':');
22442               if (base && base > DW_STRING (attr) && base[-1] == ':')
22443                 return &base[1];
22444               else
22445                 return DW_STRING (attr);
22446             }
22447         }
22448       break;
22449
22450     default:
22451       break;
22452     }
22453
22454   if (!DW_STRING_IS_CANONICAL (attr))
22455     {
22456       DW_STRING (attr)
22457         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22458                                     &cu->objfile->per_bfd->storage_obstack);
22459       DW_STRING_IS_CANONICAL (attr) = 1;
22460     }
22461   return DW_STRING (attr);
22462 }
22463
22464 /* Return the die that this die in an extension of, or NULL if there
22465    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22466    containing the return value on output.  */
22467
22468 static struct die_info *
22469 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22470 {
22471   struct attribute *attr;
22472
22473   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22474   if (attr == NULL)
22475     return NULL;
22476
22477   return follow_die_ref (die, attr, ext_cu);
22478 }
22479
22480 /* Convert a DIE tag into its string name.  */
22481
22482 static const char *
22483 dwarf_tag_name (unsigned tag)
22484 {
22485   const char *name = get_DW_TAG_name (tag);
22486
22487   if (name == NULL)
22488     return "DW_TAG_<unknown>";
22489
22490   return name;
22491 }
22492
22493 /* Convert a DWARF attribute code into its string name.  */
22494
22495 static const char *
22496 dwarf_attr_name (unsigned attr)
22497 {
22498   const char *name;
22499
22500 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22501   if (attr == DW_AT_MIPS_fde)
22502     return "DW_AT_MIPS_fde";
22503 #else
22504   if (attr == DW_AT_HP_block_index)
22505     return "DW_AT_HP_block_index";
22506 #endif
22507
22508   name = get_DW_AT_name (attr);
22509
22510   if (name == NULL)
22511     return "DW_AT_<unknown>";
22512
22513   return name;
22514 }
22515
22516 /* Convert a DWARF value form code into its string name.  */
22517
22518 static const char *
22519 dwarf_form_name (unsigned form)
22520 {
22521   const char *name = get_DW_FORM_name (form);
22522
22523   if (name == NULL)
22524     return "DW_FORM_<unknown>";
22525
22526   return name;
22527 }
22528
22529 static const char *
22530 dwarf_bool_name (unsigned mybool)
22531 {
22532   if (mybool)
22533     return "TRUE";
22534   else
22535     return "FALSE";
22536 }
22537
22538 /* Convert a DWARF type code into its string name.  */
22539
22540 static const char *
22541 dwarf_type_encoding_name (unsigned enc)
22542 {
22543   const char *name = get_DW_ATE_name (enc);
22544
22545   if (name == NULL)
22546     return "DW_ATE_<unknown>";
22547
22548   return name;
22549 }
22550
22551 static void
22552 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22553 {
22554   unsigned int i;
22555
22556   print_spaces (indent, f);
22557   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
22558                       dwarf_tag_name (die->tag), die->abbrev,
22559                       to_underlying (die->sect_off));
22560
22561   if (die->parent != NULL)
22562     {
22563       print_spaces (indent, f);
22564       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
22565                           to_underlying (die->parent->sect_off));
22566     }
22567
22568   print_spaces (indent, f);
22569   fprintf_unfiltered (f, "  has children: %s\n",
22570            dwarf_bool_name (die->child != NULL));
22571
22572   print_spaces (indent, f);
22573   fprintf_unfiltered (f, "  attributes:\n");
22574
22575   for (i = 0; i < die->num_attrs; ++i)
22576     {
22577       print_spaces (indent, f);
22578       fprintf_unfiltered (f, "    %s (%s) ",
22579                dwarf_attr_name (die->attrs[i].name),
22580                dwarf_form_name (die->attrs[i].form));
22581
22582       switch (die->attrs[i].form)
22583         {
22584         case DW_FORM_addr:
22585         case DW_FORM_GNU_addr_index:
22586           fprintf_unfiltered (f, "address: ");
22587           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22588           break;
22589         case DW_FORM_block2:
22590         case DW_FORM_block4:
22591         case DW_FORM_block:
22592         case DW_FORM_block1:
22593           fprintf_unfiltered (f, "block: size %s",
22594                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22595           break;
22596         case DW_FORM_exprloc:
22597           fprintf_unfiltered (f, "expression: size %s",
22598                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22599           break;
22600         case DW_FORM_data16:
22601           fprintf_unfiltered (f, "constant of 16 bytes");
22602           break;
22603         case DW_FORM_ref_addr:
22604           fprintf_unfiltered (f, "ref address: ");
22605           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22606           break;
22607         case DW_FORM_GNU_ref_alt:
22608           fprintf_unfiltered (f, "alt ref address: ");
22609           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22610           break;
22611         case DW_FORM_ref1:
22612         case DW_FORM_ref2:
22613         case DW_FORM_ref4:
22614         case DW_FORM_ref8:
22615         case DW_FORM_ref_udata:
22616           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22617                               (long) (DW_UNSND (&die->attrs[i])));
22618           break;
22619         case DW_FORM_data1:
22620         case DW_FORM_data2:
22621         case DW_FORM_data4:
22622         case DW_FORM_data8:
22623         case DW_FORM_udata:
22624         case DW_FORM_sdata:
22625           fprintf_unfiltered (f, "constant: %s",
22626                               pulongest (DW_UNSND (&die->attrs[i])));
22627           break;
22628         case DW_FORM_sec_offset:
22629           fprintf_unfiltered (f, "section offset: %s",
22630                               pulongest (DW_UNSND (&die->attrs[i])));
22631           break;
22632         case DW_FORM_ref_sig8:
22633           fprintf_unfiltered (f, "signature: %s",
22634                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22635           break;
22636         case DW_FORM_string:
22637         case DW_FORM_strp:
22638         case DW_FORM_line_strp:
22639         case DW_FORM_GNU_str_index:
22640         case DW_FORM_GNU_strp_alt:
22641           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22642                    DW_STRING (&die->attrs[i])
22643                    ? DW_STRING (&die->attrs[i]) : "",
22644                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22645           break;
22646         case DW_FORM_flag:
22647           if (DW_UNSND (&die->attrs[i]))
22648             fprintf_unfiltered (f, "flag: TRUE");
22649           else
22650             fprintf_unfiltered (f, "flag: FALSE");
22651           break;
22652         case DW_FORM_flag_present:
22653           fprintf_unfiltered (f, "flag: TRUE");
22654           break;
22655         case DW_FORM_indirect:
22656           /* The reader will have reduced the indirect form to
22657              the "base form" so this form should not occur.  */
22658           fprintf_unfiltered (f, 
22659                               "unexpected attribute form: DW_FORM_indirect");
22660           break;
22661         case DW_FORM_implicit_const:
22662           fprintf_unfiltered (f, "constant: %s",
22663                               plongest (DW_SND (&die->attrs[i])));
22664           break;
22665         default:
22666           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22667                    die->attrs[i].form);
22668           break;
22669         }
22670       fprintf_unfiltered (f, "\n");
22671     }
22672 }
22673
22674 static void
22675 dump_die_for_error (struct die_info *die)
22676 {
22677   dump_die_shallow (gdb_stderr, 0, die);
22678 }
22679
22680 static void
22681 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22682 {
22683   int indent = level * 4;
22684
22685   gdb_assert (die != NULL);
22686
22687   if (level >= max_level)
22688     return;
22689
22690   dump_die_shallow (f, indent, die);
22691
22692   if (die->child != NULL)
22693     {
22694       print_spaces (indent, f);
22695       fprintf_unfiltered (f, "  Children:");
22696       if (level + 1 < max_level)
22697         {
22698           fprintf_unfiltered (f, "\n");
22699           dump_die_1 (f, level + 1, max_level, die->child);
22700         }
22701       else
22702         {
22703           fprintf_unfiltered (f,
22704                               " [not printed, max nesting level reached]\n");
22705         }
22706     }
22707
22708   if (die->sibling != NULL && level > 0)
22709     {
22710       dump_die_1 (f, level, max_level, die->sibling);
22711     }
22712 }
22713
22714 /* This is called from the pdie macro in gdbinit.in.
22715    It's not static so gcc will keep a copy callable from gdb.  */
22716
22717 void
22718 dump_die (struct die_info *die, int max_level)
22719 {
22720   dump_die_1 (gdb_stdlog, 0, max_level, die);
22721 }
22722
22723 static void
22724 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22725 {
22726   void **slot;
22727
22728   slot = htab_find_slot_with_hash (cu->die_hash, die,
22729                                    to_underlying (die->sect_off),
22730                                    INSERT);
22731
22732   *slot = die;
22733 }
22734
22735 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22736    required kind.  */
22737
22738 static sect_offset
22739 dwarf2_get_ref_die_offset (const struct attribute *attr)
22740 {
22741   if (attr_form_is_ref (attr))
22742     return (sect_offset) DW_UNSND (attr);
22743
22744   complaint (&symfile_complaints,
22745              _("unsupported die ref attribute form: '%s'"),
22746              dwarf_form_name (attr->form));
22747   return {};
22748 }
22749
22750 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22751  * the value held by the attribute is not constant.  */
22752
22753 static LONGEST
22754 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22755 {
22756   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22757     return DW_SND (attr);
22758   else if (attr->form == DW_FORM_udata
22759            || attr->form == DW_FORM_data1
22760            || attr->form == DW_FORM_data2
22761            || attr->form == DW_FORM_data4
22762            || attr->form == DW_FORM_data8)
22763     return DW_UNSND (attr);
22764   else
22765     {
22766       /* For DW_FORM_data16 see attr_form_is_constant.  */
22767       complaint (&symfile_complaints,
22768                  _("Attribute value is not a constant (%s)"),
22769                  dwarf_form_name (attr->form));
22770       return default_value;
22771     }
22772 }
22773
22774 /* Follow reference or signature attribute ATTR of SRC_DIE.
22775    On entry *REF_CU is the CU of SRC_DIE.
22776    On exit *REF_CU is the CU of the result.  */
22777
22778 static struct die_info *
22779 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22780                        struct dwarf2_cu **ref_cu)
22781 {
22782   struct die_info *die;
22783
22784   if (attr_form_is_ref (attr))
22785     die = follow_die_ref (src_die, attr, ref_cu);
22786   else if (attr->form == DW_FORM_ref_sig8)
22787     die = follow_die_sig (src_die, attr, ref_cu);
22788   else
22789     {
22790       dump_die_for_error (src_die);
22791       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22792              objfile_name ((*ref_cu)->objfile));
22793     }
22794
22795   return die;
22796 }
22797
22798 /* Follow reference OFFSET.
22799    On entry *REF_CU is the CU of the source die referencing OFFSET.
22800    On exit *REF_CU is the CU of the result.
22801    Returns NULL if OFFSET is invalid.  */
22802
22803 static struct die_info *
22804 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22805                    struct dwarf2_cu **ref_cu)
22806 {
22807   struct die_info temp_die;
22808   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22809
22810   gdb_assert (cu->per_cu != NULL);
22811
22812   target_cu = cu;
22813
22814   if (cu->per_cu->is_debug_types)
22815     {
22816       /* .debug_types CUs cannot reference anything outside their CU.
22817          If they need to, they have to reference a signatured type via
22818          DW_FORM_ref_sig8.  */
22819       if (!offset_in_cu_p (&cu->header, sect_off))
22820         return NULL;
22821     }
22822   else if (offset_in_dwz != cu->per_cu->is_dwz
22823            || !offset_in_cu_p (&cu->header, sect_off))
22824     {
22825       struct dwarf2_per_cu_data *per_cu;
22826
22827       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22828                                                  cu->objfile);
22829
22830       /* If necessary, add it to the queue and load its DIEs.  */
22831       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22832         load_full_comp_unit (per_cu, cu->language);
22833
22834       target_cu = per_cu->cu;
22835     }
22836   else if (cu->dies == NULL)
22837     {
22838       /* We're loading full DIEs during partial symbol reading.  */
22839       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22840       load_full_comp_unit (cu->per_cu, language_minimal);
22841     }
22842
22843   *ref_cu = target_cu;
22844   temp_die.sect_off = sect_off;
22845   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22846                                                   &temp_die,
22847                                                   to_underlying (sect_off));
22848 }
22849
22850 /* Follow reference attribute ATTR of SRC_DIE.
22851    On entry *REF_CU is the CU of SRC_DIE.
22852    On exit *REF_CU is the CU of the result.  */
22853
22854 static struct die_info *
22855 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22856                 struct dwarf2_cu **ref_cu)
22857 {
22858   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22859   struct dwarf2_cu *cu = *ref_cu;
22860   struct die_info *die;
22861
22862   die = follow_die_offset (sect_off,
22863                            (attr->form == DW_FORM_GNU_ref_alt
22864                             || cu->per_cu->is_dwz),
22865                            ref_cu);
22866   if (!die)
22867     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
22868            "at 0x%x [in module %s]"),
22869            to_underlying (sect_off), to_underlying (src_die->sect_off),
22870            objfile_name (cu->objfile));
22871
22872   return die;
22873 }
22874
22875 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
22876    Returned value is intended for DW_OP_call*.  Returned
22877    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
22878
22879 struct dwarf2_locexpr_baton
22880 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
22881                                struct dwarf2_per_cu_data *per_cu,
22882                                CORE_ADDR (*get_frame_pc) (void *baton),
22883                                void *baton)
22884 {
22885   struct dwarf2_cu *cu;
22886   struct die_info *die;
22887   struct attribute *attr;
22888   struct dwarf2_locexpr_baton retval;
22889
22890   dw2_setup (per_cu->objfile);
22891
22892   if (per_cu->cu == NULL)
22893     load_cu (per_cu);
22894   cu = per_cu->cu;
22895   if (cu == NULL)
22896     {
22897       /* We shouldn't get here for a dummy CU, but don't crash on the user.
22898          Instead just throw an error, not much else we can do.  */
22899       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
22900              to_underlying (sect_off), objfile_name (per_cu->objfile));
22901     }
22902
22903   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
22904   if (!die)
22905     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
22906            to_underlying (sect_off), objfile_name (per_cu->objfile));
22907
22908   attr = dwarf2_attr (die, DW_AT_location, cu);
22909   if (!attr)
22910     {
22911       /* DWARF: "If there is no such attribute, then there is no effect.".
22912          DATA is ignored if SIZE is 0.  */
22913
22914       retval.data = NULL;
22915       retval.size = 0;
22916     }
22917   else if (attr_form_is_section_offset (attr))
22918     {
22919       struct dwarf2_loclist_baton loclist_baton;
22920       CORE_ADDR pc = (*get_frame_pc) (baton);
22921       size_t size;
22922
22923       fill_in_loclist_baton (cu, &loclist_baton, attr);
22924
22925       retval.data = dwarf2_find_location_expression (&loclist_baton,
22926                                                      &size, pc);
22927       retval.size = size;
22928     }
22929   else
22930     {
22931       if (!attr_form_is_block (attr))
22932         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
22933                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
22934                to_underlying (sect_off), objfile_name (per_cu->objfile));
22935
22936       retval.data = DW_BLOCK (attr)->data;
22937       retval.size = DW_BLOCK (attr)->size;
22938     }
22939   retval.per_cu = cu->per_cu;
22940
22941   age_cached_comp_units ();
22942
22943   return retval;
22944 }
22945
22946 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
22947    offset.  */
22948
22949 struct dwarf2_locexpr_baton
22950 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
22951                              struct dwarf2_per_cu_data *per_cu,
22952                              CORE_ADDR (*get_frame_pc) (void *baton),
22953                              void *baton)
22954 {
22955   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
22956
22957   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
22958 }
22959
22960 /* Write a constant of a given type as target-ordered bytes into
22961    OBSTACK.  */
22962
22963 static const gdb_byte *
22964 write_constant_as_bytes (struct obstack *obstack,
22965                          enum bfd_endian byte_order,
22966                          struct type *type,
22967                          ULONGEST value,
22968                          LONGEST *len)
22969 {
22970   gdb_byte *result;
22971
22972   *len = TYPE_LENGTH (type);
22973   result = (gdb_byte *) obstack_alloc (obstack, *len);
22974   store_unsigned_integer (result, *len, byte_order, value);
22975
22976   return result;
22977 }
22978
22979 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
22980    pointer to the constant bytes and set LEN to the length of the
22981    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
22982    does not have a DW_AT_const_value, return NULL.  */
22983
22984 const gdb_byte *
22985 dwarf2_fetch_constant_bytes (sect_offset sect_off,
22986                              struct dwarf2_per_cu_data *per_cu,
22987                              struct obstack *obstack,
22988                              LONGEST *len)
22989 {
22990   struct dwarf2_cu *cu;
22991   struct die_info *die;
22992   struct attribute *attr;
22993   const gdb_byte *result = NULL;
22994   struct type *type;
22995   LONGEST value;
22996   enum bfd_endian byte_order;
22997
22998   dw2_setup (per_cu->objfile);
22999
23000   if (per_cu->cu == NULL)
23001     load_cu (per_cu);
23002   cu = per_cu->cu;
23003   if (cu == NULL)
23004     {
23005       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23006          Instead just throw an error, not much else we can do.  */
23007       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
23008              to_underlying (sect_off), objfile_name (per_cu->objfile));
23009     }
23010
23011   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23012   if (!die)
23013     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
23014            to_underlying (sect_off), objfile_name (per_cu->objfile));
23015
23016
23017   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23018   if (attr == NULL)
23019     return NULL;
23020
23021   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
23022                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23023
23024   switch (attr->form)
23025     {
23026     case DW_FORM_addr:
23027     case DW_FORM_GNU_addr_index:
23028       {
23029         gdb_byte *tem;
23030
23031         *len = cu->header.addr_size;
23032         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23033         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23034         result = tem;
23035       }
23036       break;
23037     case DW_FORM_string:
23038     case DW_FORM_strp:
23039     case DW_FORM_GNU_str_index:
23040     case DW_FORM_GNU_strp_alt:
23041       /* DW_STRING is already allocated on the objfile obstack, point
23042          directly to it.  */
23043       result = (const gdb_byte *) DW_STRING (attr);
23044       *len = strlen (DW_STRING (attr));
23045       break;
23046     case DW_FORM_block1:
23047     case DW_FORM_block2:
23048     case DW_FORM_block4:
23049     case DW_FORM_block:
23050     case DW_FORM_exprloc:
23051     case DW_FORM_data16:
23052       result = DW_BLOCK (attr)->data;
23053       *len = DW_BLOCK (attr)->size;
23054       break;
23055
23056       /* The DW_AT_const_value attributes are supposed to carry the
23057          symbol's value "represented as it would be on the target
23058          architecture."  By the time we get here, it's already been
23059          converted to host endianness, so we just need to sign- or
23060          zero-extend it as appropriate.  */
23061     case DW_FORM_data1:
23062       type = die_type (die, cu);
23063       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23064       if (result == NULL)
23065         result = write_constant_as_bytes (obstack, byte_order,
23066                                           type, value, len);
23067       break;
23068     case DW_FORM_data2:
23069       type = die_type (die, cu);
23070       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23071       if (result == NULL)
23072         result = write_constant_as_bytes (obstack, byte_order,
23073                                           type, value, len);
23074       break;
23075     case DW_FORM_data4:
23076       type = die_type (die, cu);
23077       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23078       if (result == NULL)
23079         result = write_constant_as_bytes (obstack, byte_order,
23080                                           type, value, len);
23081       break;
23082     case DW_FORM_data8:
23083       type = die_type (die, cu);
23084       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23085       if (result == NULL)
23086         result = write_constant_as_bytes (obstack, byte_order,
23087                                           type, value, len);
23088       break;
23089
23090     case DW_FORM_sdata:
23091     case DW_FORM_implicit_const:
23092       type = die_type (die, cu);
23093       result = write_constant_as_bytes (obstack, byte_order,
23094                                         type, DW_SND (attr), len);
23095       break;
23096
23097     case DW_FORM_udata:
23098       type = die_type (die, cu);
23099       result = write_constant_as_bytes (obstack, byte_order,
23100                                         type, DW_UNSND (attr), len);
23101       break;
23102
23103     default:
23104       complaint (&symfile_complaints,
23105                  _("unsupported const value attribute form: '%s'"),
23106                  dwarf_form_name (attr->form));
23107       break;
23108     }
23109
23110   return result;
23111 }
23112
23113 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23114    valid type for this die is found.  */
23115
23116 struct type *
23117 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23118                                 struct dwarf2_per_cu_data *per_cu)
23119 {
23120   struct dwarf2_cu *cu;
23121   struct die_info *die;
23122
23123   dw2_setup (per_cu->objfile);
23124
23125   if (per_cu->cu == NULL)
23126     load_cu (per_cu);
23127   cu = per_cu->cu;
23128   if (!cu)
23129     return NULL;
23130
23131   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23132   if (!die)
23133     return NULL;
23134
23135   return die_type (die, cu);
23136 }
23137
23138 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23139    PER_CU.  */
23140
23141 struct type *
23142 dwarf2_get_die_type (cu_offset die_offset,
23143                      struct dwarf2_per_cu_data *per_cu)
23144 {
23145   dw2_setup (per_cu->objfile);
23146
23147   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23148   return get_die_type_at_offset (die_offset_sect, per_cu);
23149 }
23150
23151 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23152    On entry *REF_CU is the CU of SRC_DIE.
23153    On exit *REF_CU is the CU of the result.
23154    Returns NULL if the referenced DIE isn't found.  */
23155
23156 static struct die_info *
23157 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23158                   struct dwarf2_cu **ref_cu)
23159 {
23160   struct die_info temp_die;
23161   struct dwarf2_cu *sig_cu;
23162   struct die_info *die;
23163
23164   /* While it might be nice to assert sig_type->type == NULL here,
23165      we can get here for DW_AT_imported_declaration where we need
23166      the DIE not the type.  */
23167
23168   /* If necessary, add it to the queue and load its DIEs.  */
23169
23170   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23171     read_signatured_type (sig_type);
23172
23173   sig_cu = sig_type->per_cu.cu;
23174   gdb_assert (sig_cu != NULL);
23175   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23176   temp_die.sect_off = sig_type->type_offset_in_section;
23177   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23178                                                  to_underlying (temp_die.sect_off));
23179   if (die)
23180     {
23181       /* For .gdb_index version 7 keep track of included TUs.
23182          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23183       if (dwarf2_per_objfile->index_table != NULL
23184           && dwarf2_per_objfile->index_table->version <= 7)
23185         {
23186           VEC_safe_push (dwarf2_per_cu_ptr,
23187                          (*ref_cu)->per_cu->imported_symtabs,
23188                          sig_cu->per_cu);
23189         }
23190
23191       *ref_cu = sig_cu;
23192       return die;
23193     }
23194
23195   return NULL;
23196 }
23197
23198 /* Follow signatured type referenced by ATTR in SRC_DIE.
23199    On entry *REF_CU is the CU of SRC_DIE.
23200    On exit *REF_CU is the CU of the result.
23201    The result is the DIE of the type.
23202    If the referenced type cannot be found an error is thrown.  */
23203
23204 static struct die_info *
23205 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23206                 struct dwarf2_cu **ref_cu)
23207 {
23208   ULONGEST signature = DW_SIGNATURE (attr);
23209   struct signatured_type *sig_type;
23210   struct die_info *die;
23211
23212   gdb_assert (attr->form == DW_FORM_ref_sig8);
23213
23214   sig_type = lookup_signatured_type (*ref_cu, signature);
23215   /* sig_type will be NULL if the signatured type is missing from
23216      the debug info.  */
23217   if (sig_type == NULL)
23218     {
23219       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23220                " from DIE at 0x%x [in module %s]"),
23221              hex_string (signature), to_underlying (src_die->sect_off),
23222              objfile_name ((*ref_cu)->objfile));
23223     }
23224
23225   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23226   if (die == NULL)
23227     {
23228       dump_die_for_error (src_die);
23229       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23230                " from DIE at 0x%x [in module %s]"),
23231              hex_string (signature), to_underlying (src_die->sect_off),
23232              objfile_name ((*ref_cu)->objfile));
23233     }
23234
23235   return die;
23236 }
23237
23238 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23239    reading in and processing the type unit if necessary.  */
23240
23241 static struct type *
23242 get_signatured_type (struct die_info *die, ULONGEST signature,
23243                      struct dwarf2_cu *cu)
23244 {
23245   struct signatured_type *sig_type;
23246   struct dwarf2_cu *type_cu;
23247   struct die_info *type_die;
23248   struct type *type;
23249
23250   sig_type = lookup_signatured_type (cu, signature);
23251   /* sig_type will be NULL if the signatured type is missing from
23252      the debug info.  */
23253   if (sig_type == NULL)
23254     {
23255       complaint (&symfile_complaints,
23256                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
23257                    " from DIE at 0x%x [in module %s]"),
23258                  hex_string (signature), to_underlying (die->sect_off),
23259                  objfile_name (dwarf2_per_objfile->objfile));
23260       return build_error_marker_type (cu, die);
23261     }
23262
23263   /* If we already know the type we're done.  */
23264   if (sig_type->type != NULL)
23265     return sig_type->type;
23266
23267   type_cu = cu;
23268   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23269   if (type_die != NULL)
23270     {
23271       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23272          is created.  This is important, for example, because for c++ classes
23273          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23274       type = read_type_die (type_die, type_cu);
23275       if (type == NULL)
23276         {
23277           complaint (&symfile_complaints,
23278                      _("Dwarf Error: Cannot build signatured type %s"
23279                        " referenced from DIE at 0x%x [in module %s]"),
23280                      hex_string (signature), to_underlying (die->sect_off),
23281                      objfile_name (dwarf2_per_objfile->objfile));
23282           type = build_error_marker_type (cu, die);
23283         }
23284     }
23285   else
23286     {
23287       complaint (&symfile_complaints,
23288                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
23289                    " from DIE at 0x%x [in module %s]"),
23290                  hex_string (signature), to_underlying (die->sect_off),
23291                  objfile_name (dwarf2_per_objfile->objfile));
23292       type = build_error_marker_type (cu, die);
23293     }
23294   sig_type->type = type;
23295
23296   return type;
23297 }
23298
23299 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23300    reading in and processing the type unit if necessary.  */
23301
23302 static struct type *
23303 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23304                           struct dwarf2_cu *cu) /* ARI: editCase function */
23305 {
23306   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23307   if (attr_form_is_ref (attr))
23308     {
23309       struct dwarf2_cu *type_cu = cu;
23310       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23311
23312       return read_type_die (type_die, type_cu);
23313     }
23314   else if (attr->form == DW_FORM_ref_sig8)
23315     {
23316       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23317     }
23318   else
23319     {
23320       complaint (&symfile_complaints,
23321                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23322                    " at 0x%x [in module %s]"),
23323                  dwarf_form_name (attr->form), to_underlying (die->sect_off),
23324                  objfile_name (dwarf2_per_objfile->objfile));
23325       return build_error_marker_type (cu, die);
23326     }
23327 }
23328
23329 /* Load the DIEs associated with type unit PER_CU into memory.  */
23330
23331 static void
23332 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23333 {
23334   struct signatured_type *sig_type;
23335
23336   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23337   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23338
23339   /* We have the per_cu, but we need the signatured_type.
23340      Fortunately this is an easy translation.  */
23341   gdb_assert (per_cu->is_debug_types);
23342   sig_type = (struct signatured_type *) per_cu;
23343
23344   gdb_assert (per_cu->cu == NULL);
23345
23346   read_signatured_type (sig_type);
23347
23348   gdb_assert (per_cu->cu != NULL);
23349 }
23350
23351 /* die_reader_func for read_signatured_type.
23352    This is identical to load_full_comp_unit_reader,
23353    but is kept separate for now.  */
23354
23355 static void
23356 read_signatured_type_reader (const struct die_reader_specs *reader,
23357                              const gdb_byte *info_ptr,
23358                              struct die_info *comp_unit_die,
23359                              int has_children,
23360                              void *data)
23361 {
23362   struct dwarf2_cu *cu = reader->cu;
23363
23364   gdb_assert (cu->die_hash == NULL);
23365   cu->die_hash =
23366     htab_create_alloc_ex (cu->header.length / 12,
23367                           die_hash,
23368                           die_eq,
23369                           NULL,
23370                           &cu->comp_unit_obstack,
23371                           hashtab_obstack_allocate,
23372                           dummy_obstack_deallocate);
23373
23374   if (has_children)
23375     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23376                                                   &info_ptr, comp_unit_die);
23377   cu->dies = comp_unit_die;
23378   /* comp_unit_die is not stored in die_hash, no need.  */
23379
23380   /* We try not to read any attributes in this function, because not
23381      all CUs needed for references have been loaded yet, and symbol
23382      table processing isn't initialized.  But we have to set the CU language,
23383      or we won't be able to build types correctly.
23384      Similarly, if we do not read the producer, we can not apply
23385      producer-specific interpretation.  */
23386   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23387 }
23388
23389 /* Read in a signatured type and build its CU and DIEs.
23390    If the type is a stub for the real type in a DWO file,
23391    read in the real type from the DWO file as well.  */
23392
23393 static void
23394 read_signatured_type (struct signatured_type *sig_type)
23395 {
23396   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23397
23398   gdb_assert (per_cu->is_debug_types);
23399   gdb_assert (per_cu->cu == NULL);
23400
23401   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
23402                            read_signatured_type_reader, NULL);
23403   sig_type->per_cu.tu_read = 1;
23404 }
23405
23406 /* Decode simple location descriptions.
23407    Given a pointer to a dwarf block that defines a location, compute
23408    the location and return the value.
23409
23410    NOTE drow/2003-11-18: This function is called in two situations
23411    now: for the address of static or global variables (partial symbols
23412    only) and for offsets into structures which are expected to be
23413    (more or less) constant.  The partial symbol case should go away,
23414    and only the constant case should remain.  That will let this
23415    function complain more accurately.  A few special modes are allowed
23416    without complaint for global variables (for instance, global
23417    register values and thread-local values).
23418
23419    A location description containing no operations indicates that the
23420    object is optimized out.  The return value is 0 for that case.
23421    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23422    callers will only want a very basic result and this can become a
23423    complaint.
23424
23425    Note that stack[0] is unused except as a default error return.  */
23426
23427 static CORE_ADDR
23428 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23429 {
23430   struct objfile *objfile = cu->objfile;
23431   size_t i;
23432   size_t size = blk->size;
23433   const gdb_byte *data = blk->data;
23434   CORE_ADDR stack[64];
23435   int stacki;
23436   unsigned int bytes_read, unsnd;
23437   gdb_byte op;
23438
23439   i = 0;
23440   stacki = 0;
23441   stack[stacki] = 0;
23442   stack[++stacki] = 0;
23443
23444   while (i < size)
23445     {
23446       op = data[i++];
23447       switch (op)
23448         {
23449         case DW_OP_lit0:
23450         case DW_OP_lit1:
23451         case DW_OP_lit2:
23452         case DW_OP_lit3:
23453         case DW_OP_lit4:
23454         case DW_OP_lit5:
23455         case DW_OP_lit6:
23456         case DW_OP_lit7:
23457         case DW_OP_lit8:
23458         case DW_OP_lit9:
23459         case DW_OP_lit10:
23460         case DW_OP_lit11:
23461         case DW_OP_lit12:
23462         case DW_OP_lit13:
23463         case DW_OP_lit14:
23464         case DW_OP_lit15:
23465         case DW_OP_lit16:
23466         case DW_OP_lit17:
23467         case DW_OP_lit18:
23468         case DW_OP_lit19:
23469         case DW_OP_lit20:
23470         case DW_OP_lit21:
23471         case DW_OP_lit22:
23472         case DW_OP_lit23:
23473         case DW_OP_lit24:
23474         case DW_OP_lit25:
23475         case DW_OP_lit26:
23476         case DW_OP_lit27:
23477         case DW_OP_lit28:
23478         case DW_OP_lit29:
23479         case DW_OP_lit30:
23480         case DW_OP_lit31:
23481           stack[++stacki] = op - DW_OP_lit0;
23482           break;
23483
23484         case DW_OP_reg0:
23485         case DW_OP_reg1:
23486         case DW_OP_reg2:
23487         case DW_OP_reg3:
23488         case DW_OP_reg4:
23489         case DW_OP_reg5:
23490         case DW_OP_reg6:
23491         case DW_OP_reg7:
23492         case DW_OP_reg8:
23493         case DW_OP_reg9:
23494         case DW_OP_reg10:
23495         case DW_OP_reg11:
23496         case DW_OP_reg12:
23497         case DW_OP_reg13:
23498         case DW_OP_reg14:
23499         case DW_OP_reg15:
23500         case DW_OP_reg16:
23501         case DW_OP_reg17:
23502         case DW_OP_reg18:
23503         case DW_OP_reg19:
23504         case DW_OP_reg20:
23505         case DW_OP_reg21:
23506         case DW_OP_reg22:
23507         case DW_OP_reg23:
23508         case DW_OP_reg24:
23509         case DW_OP_reg25:
23510         case DW_OP_reg26:
23511         case DW_OP_reg27:
23512         case DW_OP_reg28:
23513         case DW_OP_reg29:
23514         case DW_OP_reg30:
23515         case DW_OP_reg31:
23516           stack[++stacki] = op - DW_OP_reg0;
23517           if (i < size)
23518             dwarf2_complex_location_expr_complaint ();
23519           break;
23520
23521         case DW_OP_regx:
23522           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23523           i += bytes_read;
23524           stack[++stacki] = unsnd;
23525           if (i < size)
23526             dwarf2_complex_location_expr_complaint ();
23527           break;
23528
23529         case DW_OP_addr:
23530           stack[++stacki] = read_address (objfile->obfd, &data[i],
23531                                           cu, &bytes_read);
23532           i += bytes_read;
23533           break;
23534
23535         case DW_OP_const1u:
23536           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23537           i += 1;
23538           break;
23539
23540         case DW_OP_const1s:
23541           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23542           i += 1;
23543           break;
23544
23545         case DW_OP_const2u:
23546           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23547           i += 2;
23548           break;
23549
23550         case DW_OP_const2s:
23551           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23552           i += 2;
23553           break;
23554
23555         case DW_OP_const4u:
23556           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23557           i += 4;
23558           break;
23559
23560         case DW_OP_const4s:
23561           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23562           i += 4;
23563           break;
23564
23565         case DW_OP_const8u:
23566           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23567           i += 8;
23568           break;
23569
23570         case DW_OP_constu:
23571           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23572                                                   &bytes_read);
23573           i += bytes_read;
23574           break;
23575
23576         case DW_OP_consts:
23577           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23578           i += bytes_read;
23579           break;
23580
23581         case DW_OP_dup:
23582           stack[stacki + 1] = stack[stacki];
23583           stacki++;
23584           break;
23585
23586         case DW_OP_plus:
23587           stack[stacki - 1] += stack[stacki];
23588           stacki--;
23589           break;
23590
23591         case DW_OP_plus_uconst:
23592           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23593                                                  &bytes_read);
23594           i += bytes_read;
23595           break;
23596
23597         case DW_OP_minus:
23598           stack[stacki - 1] -= stack[stacki];
23599           stacki--;
23600           break;
23601
23602         case DW_OP_deref:
23603           /* If we're not the last op, then we definitely can't encode
23604              this using GDB's address_class enum.  This is valid for partial
23605              global symbols, although the variable's address will be bogus
23606              in the psymtab.  */
23607           if (i < size)
23608             dwarf2_complex_location_expr_complaint ();
23609           break;
23610
23611         case DW_OP_GNU_push_tls_address:
23612         case DW_OP_form_tls_address:
23613           /* The top of the stack has the offset from the beginning
23614              of the thread control block at which the variable is located.  */
23615           /* Nothing should follow this operator, so the top of stack would
23616              be returned.  */
23617           /* This is valid for partial global symbols, but the variable's
23618              address will be bogus in the psymtab.  Make it always at least
23619              non-zero to not look as a variable garbage collected by linker
23620              which have DW_OP_addr 0.  */
23621           if (i < size)
23622             dwarf2_complex_location_expr_complaint ();
23623           stack[stacki]++;
23624           break;
23625
23626         case DW_OP_GNU_uninit:
23627           break;
23628
23629         case DW_OP_GNU_addr_index:
23630         case DW_OP_GNU_const_index:
23631           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23632                                                          &bytes_read);
23633           i += bytes_read;
23634           break;
23635
23636         default:
23637           {
23638             const char *name = get_DW_OP_name (op);
23639
23640             if (name)
23641               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
23642                          name);
23643             else
23644               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
23645                          op);
23646           }
23647
23648           return (stack[stacki]);
23649         }
23650
23651       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23652          outside of the allocated space.  Also enforce minimum>0.  */
23653       if (stacki >= ARRAY_SIZE (stack) - 1)
23654         {
23655           complaint (&symfile_complaints,
23656                      _("location description stack overflow"));
23657           return 0;
23658         }
23659
23660       if (stacki <= 0)
23661         {
23662           complaint (&symfile_complaints,
23663                      _("location description stack underflow"));
23664           return 0;
23665         }
23666     }
23667   return (stack[stacki]);
23668 }
23669
23670 /* memory allocation interface */
23671
23672 static struct dwarf_block *
23673 dwarf_alloc_block (struct dwarf2_cu *cu)
23674 {
23675   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23676 }
23677
23678 static struct die_info *
23679 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23680 {
23681   struct die_info *die;
23682   size_t size = sizeof (struct die_info);
23683
23684   if (num_attrs > 1)
23685     size += (num_attrs - 1) * sizeof (struct attribute);
23686
23687   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23688   memset (die, 0, sizeof (struct die_info));
23689   return (die);
23690 }
23691
23692 \f
23693 /* Macro support.  */
23694
23695 /* Return file name relative to the compilation directory of file number I in
23696    *LH's file name table.  The result is allocated using xmalloc; the caller is
23697    responsible for freeing it.  */
23698
23699 static char *
23700 file_file_name (int file, struct line_header *lh)
23701 {
23702   /* Is the file number a valid index into the line header's file name
23703      table?  Remember that file numbers start with one, not zero.  */
23704   if (1 <= file && file <= lh->file_names.size ())
23705     {
23706       const file_entry &fe = lh->file_names[file - 1];
23707
23708       if (!IS_ABSOLUTE_PATH (fe.name))
23709         {
23710           const char *dir = fe.include_dir (lh);
23711           if (dir != NULL)
23712             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23713         }
23714       return xstrdup (fe.name);
23715     }
23716   else
23717     {
23718       /* The compiler produced a bogus file number.  We can at least
23719          record the macro definitions made in the file, even if we
23720          won't be able to find the file by name.  */
23721       char fake_name[80];
23722
23723       xsnprintf (fake_name, sizeof (fake_name),
23724                  "<bad macro file number %d>", file);
23725
23726       complaint (&symfile_complaints,
23727                  _("bad file number in macro information (%d)"),
23728                  file);
23729
23730       return xstrdup (fake_name);
23731     }
23732 }
23733
23734 /* Return the full name of file number I in *LH's file name table.
23735    Use COMP_DIR as the name of the current directory of the
23736    compilation.  The result is allocated using xmalloc; the caller is
23737    responsible for freeing it.  */
23738 static char *
23739 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23740 {
23741   /* Is the file number a valid index into the line header's file name
23742      table?  Remember that file numbers start with one, not zero.  */
23743   if (1 <= file && file <= lh->file_names.size ())
23744     {
23745       char *relative = file_file_name (file, lh);
23746
23747       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23748         return relative;
23749       return reconcat (relative, comp_dir, SLASH_STRING,
23750                        relative, (char *) NULL);
23751     }
23752   else
23753     return file_file_name (file, lh);
23754 }
23755
23756
23757 static struct macro_source_file *
23758 macro_start_file (int file, int line,
23759                   struct macro_source_file *current_file,
23760                   struct line_header *lh)
23761 {
23762   /* File name relative to the compilation directory of this source file.  */
23763   char *file_name = file_file_name (file, lh);
23764
23765   if (! current_file)
23766     {
23767       /* Note: We don't create a macro table for this compilation unit
23768          at all until we actually get a filename.  */
23769       struct macro_table *macro_table = get_macro_table ();
23770
23771       /* If we have no current file, then this must be the start_file
23772          directive for the compilation unit's main source file.  */
23773       current_file = macro_set_main (macro_table, file_name);
23774       macro_define_special (macro_table);
23775     }
23776   else
23777     current_file = macro_include (current_file, line, file_name);
23778
23779   xfree (file_name);
23780
23781   return current_file;
23782 }
23783
23784 static const char *
23785 consume_improper_spaces (const char *p, const char *body)
23786 {
23787   if (*p == ' ')
23788     {
23789       complaint (&symfile_complaints,
23790                  _("macro definition contains spaces "
23791                    "in formal argument list:\n`%s'"),
23792                  body);
23793
23794       while (*p == ' ')
23795         p++;
23796     }
23797
23798   return p;
23799 }
23800
23801
23802 static void
23803 parse_macro_definition (struct macro_source_file *file, int line,
23804                         const char *body)
23805 {
23806   const char *p;
23807
23808   /* The body string takes one of two forms.  For object-like macro
23809      definitions, it should be:
23810
23811         <macro name> " " <definition>
23812
23813      For function-like macro definitions, it should be:
23814
23815         <macro name> "() " <definition>
23816      or
23817         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23818
23819      Spaces may appear only where explicitly indicated, and in the
23820      <definition>.
23821
23822      The Dwarf 2 spec says that an object-like macro's name is always
23823      followed by a space, but versions of GCC around March 2002 omit
23824      the space when the macro's definition is the empty string.
23825
23826      The Dwarf 2 spec says that there should be no spaces between the
23827      formal arguments in a function-like macro's formal argument list,
23828      but versions of GCC around March 2002 include spaces after the
23829      commas.  */
23830
23831
23832   /* Find the extent of the macro name.  The macro name is terminated
23833      by either a space or null character (for an object-like macro) or
23834      an opening paren (for a function-like macro).  */
23835   for (p = body; *p; p++)
23836     if (*p == ' ' || *p == '(')
23837       break;
23838
23839   if (*p == ' ' || *p == '\0')
23840     {
23841       /* It's an object-like macro.  */
23842       int name_len = p - body;
23843       char *name = savestring (body, name_len);
23844       const char *replacement;
23845
23846       if (*p == ' ')
23847         replacement = body + name_len + 1;
23848       else
23849         {
23850           dwarf2_macro_malformed_definition_complaint (body);
23851           replacement = body + name_len;
23852         }
23853
23854       macro_define_object (file, line, name, replacement);
23855
23856       xfree (name);
23857     }
23858   else if (*p == '(')
23859     {
23860       /* It's a function-like macro.  */
23861       char *name = savestring (body, p - body);
23862       int argc = 0;
23863       int argv_size = 1;
23864       char **argv = XNEWVEC (char *, argv_size);
23865
23866       p++;
23867
23868       p = consume_improper_spaces (p, body);
23869
23870       /* Parse the formal argument list.  */
23871       while (*p && *p != ')')
23872         {
23873           /* Find the extent of the current argument name.  */
23874           const char *arg_start = p;
23875
23876           while (*p && *p != ',' && *p != ')' && *p != ' ')
23877             p++;
23878
23879           if (! *p || p == arg_start)
23880             dwarf2_macro_malformed_definition_complaint (body);
23881           else
23882             {
23883               /* Make sure argv has room for the new argument.  */
23884               if (argc >= argv_size)
23885                 {
23886                   argv_size *= 2;
23887                   argv = XRESIZEVEC (char *, argv, argv_size);
23888                 }
23889
23890               argv[argc++] = savestring (arg_start, p - arg_start);
23891             }
23892
23893           p = consume_improper_spaces (p, body);
23894
23895           /* Consume the comma, if present.  */
23896           if (*p == ',')
23897             {
23898               p++;
23899
23900               p = consume_improper_spaces (p, body);
23901             }
23902         }
23903
23904       if (*p == ')')
23905         {
23906           p++;
23907
23908           if (*p == ' ')
23909             /* Perfectly formed definition, no complaints.  */
23910             macro_define_function (file, line, name,
23911                                    argc, (const char **) argv,
23912                                    p + 1);
23913           else if (*p == '\0')
23914             {
23915               /* Complain, but do define it.  */
23916               dwarf2_macro_malformed_definition_complaint (body);
23917               macro_define_function (file, line, name,
23918                                      argc, (const char **) argv,
23919                                      p);
23920             }
23921           else
23922             /* Just complain.  */
23923             dwarf2_macro_malformed_definition_complaint (body);
23924         }
23925       else
23926         /* Just complain.  */
23927         dwarf2_macro_malformed_definition_complaint (body);
23928
23929       xfree (name);
23930       {
23931         int i;
23932
23933         for (i = 0; i < argc; i++)
23934           xfree (argv[i]);
23935       }
23936       xfree (argv);
23937     }
23938   else
23939     dwarf2_macro_malformed_definition_complaint (body);
23940 }
23941
23942 /* Skip some bytes from BYTES according to the form given in FORM.
23943    Returns the new pointer.  */
23944
23945 static const gdb_byte *
23946 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
23947                  enum dwarf_form form,
23948                  unsigned int offset_size,
23949                  struct dwarf2_section_info *section)
23950 {
23951   unsigned int bytes_read;
23952
23953   switch (form)
23954     {
23955     case DW_FORM_data1:
23956     case DW_FORM_flag:
23957       ++bytes;
23958       break;
23959
23960     case DW_FORM_data2:
23961       bytes += 2;
23962       break;
23963
23964     case DW_FORM_data4:
23965       bytes += 4;
23966       break;
23967
23968     case DW_FORM_data8:
23969       bytes += 8;
23970       break;
23971
23972     case DW_FORM_data16:
23973       bytes += 16;
23974       break;
23975
23976     case DW_FORM_string:
23977       read_direct_string (abfd, bytes, &bytes_read);
23978       bytes += bytes_read;
23979       break;
23980
23981     case DW_FORM_sec_offset:
23982     case DW_FORM_strp:
23983     case DW_FORM_GNU_strp_alt:
23984       bytes += offset_size;
23985       break;
23986
23987     case DW_FORM_block:
23988       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
23989       bytes += bytes_read;
23990       break;
23991
23992     case DW_FORM_block1:
23993       bytes += 1 + read_1_byte (abfd, bytes);
23994       break;
23995     case DW_FORM_block2:
23996       bytes += 2 + read_2_bytes (abfd, bytes);
23997       break;
23998     case DW_FORM_block4:
23999       bytes += 4 + read_4_bytes (abfd, bytes);
24000       break;
24001
24002     case DW_FORM_sdata:
24003     case DW_FORM_udata:
24004     case DW_FORM_GNU_addr_index:
24005     case DW_FORM_GNU_str_index:
24006       bytes = gdb_skip_leb128 (bytes, buffer_end);
24007       if (bytes == NULL)
24008         {
24009           dwarf2_section_buffer_overflow_complaint (section);
24010           return NULL;
24011         }
24012       break;
24013
24014     case DW_FORM_implicit_const:
24015       break;
24016
24017     default:
24018       {
24019         complaint (&symfile_complaints,
24020                    _("invalid form 0x%x in `%s'"),
24021                    form, get_section_name (section));
24022         return NULL;
24023       }
24024     }
24025
24026   return bytes;
24027 }
24028
24029 /* A helper for dwarf_decode_macros that handles skipping an unknown
24030    opcode.  Returns an updated pointer to the macro data buffer; or,
24031    on error, issues a complaint and returns NULL.  */
24032
24033 static const gdb_byte *
24034 skip_unknown_opcode (unsigned int opcode,
24035                      const gdb_byte **opcode_definitions,
24036                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24037                      bfd *abfd,
24038                      unsigned int offset_size,
24039                      struct dwarf2_section_info *section)
24040 {
24041   unsigned int bytes_read, i;
24042   unsigned long arg;
24043   const gdb_byte *defn;
24044
24045   if (opcode_definitions[opcode] == NULL)
24046     {
24047       complaint (&symfile_complaints,
24048                  _("unrecognized DW_MACFINO opcode 0x%x"),
24049                  opcode);
24050       return NULL;
24051     }
24052
24053   defn = opcode_definitions[opcode];
24054   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24055   defn += bytes_read;
24056
24057   for (i = 0; i < arg; ++i)
24058     {
24059       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24060                                  (enum dwarf_form) defn[i], offset_size,
24061                                  section);
24062       if (mac_ptr == NULL)
24063         {
24064           /* skip_form_bytes already issued the complaint.  */
24065           return NULL;
24066         }
24067     }
24068
24069   return mac_ptr;
24070 }
24071
24072 /* A helper function which parses the header of a macro section.
24073    If the macro section is the extended (for now called "GNU") type,
24074    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24075    the header, or issues a complaint and returns NULL on error.  */
24076
24077 static const gdb_byte *
24078 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24079                           bfd *abfd,
24080                           const gdb_byte *mac_ptr,
24081                           unsigned int *offset_size,
24082                           int section_is_gnu)
24083 {
24084   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24085
24086   if (section_is_gnu)
24087     {
24088       unsigned int version, flags;
24089
24090       version = read_2_bytes (abfd, mac_ptr);
24091       if (version != 4 && version != 5)
24092         {
24093           complaint (&symfile_complaints,
24094                      _("unrecognized version `%d' in .debug_macro section"),
24095                      version);
24096           return NULL;
24097         }
24098       mac_ptr += 2;
24099
24100       flags = read_1_byte (abfd, mac_ptr);
24101       ++mac_ptr;
24102       *offset_size = (flags & 1) ? 8 : 4;
24103
24104       if ((flags & 2) != 0)
24105         /* We don't need the line table offset.  */
24106         mac_ptr += *offset_size;
24107
24108       /* Vendor opcode descriptions.  */
24109       if ((flags & 4) != 0)
24110         {
24111           unsigned int i, count;
24112
24113           count = read_1_byte (abfd, mac_ptr);
24114           ++mac_ptr;
24115           for (i = 0; i < count; ++i)
24116             {
24117               unsigned int opcode, bytes_read;
24118               unsigned long arg;
24119
24120               opcode = read_1_byte (abfd, mac_ptr);
24121               ++mac_ptr;
24122               opcode_definitions[opcode] = mac_ptr;
24123               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24124               mac_ptr += bytes_read;
24125               mac_ptr += arg;
24126             }
24127         }
24128     }
24129
24130   return mac_ptr;
24131 }
24132
24133 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24134    including DW_MACRO_import.  */
24135
24136 static void
24137 dwarf_decode_macro_bytes (bfd *abfd,
24138                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24139                           struct macro_source_file *current_file,
24140                           struct line_header *lh,
24141                           struct dwarf2_section_info *section,
24142                           int section_is_gnu, int section_is_dwz,
24143                           unsigned int offset_size,
24144                           htab_t include_hash)
24145 {
24146   struct objfile *objfile = dwarf2_per_objfile->objfile;
24147   enum dwarf_macro_record_type macinfo_type;
24148   int at_commandline;
24149   const gdb_byte *opcode_definitions[256];
24150
24151   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24152                                       &offset_size, section_is_gnu);
24153   if (mac_ptr == NULL)
24154     {
24155       /* We already issued a complaint.  */
24156       return;
24157     }
24158
24159   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24160      GDB is still reading the definitions from command line.  First
24161      DW_MACINFO_start_file will need to be ignored as it was already executed
24162      to create CURRENT_FILE for the main source holding also the command line
24163      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24164      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24165
24166   at_commandline = 1;
24167
24168   do
24169     {
24170       /* Do we at least have room for a macinfo type byte?  */
24171       if (mac_ptr >= mac_end)
24172         {
24173           dwarf2_section_buffer_overflow_complaint (section);
24174           break;
24175         }
24176
24177       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24178       mac_ptr++;
24179
24180       /* Note that we rely on the fact that the corresponding GNU and
24181          DWARF constants are the same.  */
24182       DIAGNOSTIC_PUSH
24183       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24184       switch (macinfo_type)
24185         {
24186           /* A zero macinfo type indicates the end of the macro
24187              information.  */
24188         case 0:
24189           break;
24190
24191         case DW_MACRO_define:
24192         case DW_MACRO_undef:
24193         case DW_MACRO_define_strp:
24194         case DW_MACRO_undef_strp:
24195         case DW_MACRO_define_sup:
24196         case DW_MACRO_undef_sup:
24197           {
24198             unsigned int bytes_read;
24199             int line;
24200             const char *body;
24201             int is_define;
24202
24203             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24204             mac_ptr += bytes_read;
24205
24206             if (macinfo_type == DW_MACRO_define
24207                 || macinfo_type == DW_MACRO_undef)
24208               {
24209                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24210                 mac_ptr += bytes_read;
24211               }
24212             else
24213               {
24214                 LONGEST str_offset;
24215
24216                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24217                 mac_ptr += offset_size;
24218
24219                 if (macinfo_type == DW_MACRO_define_sup
24220                     || macinfo_type == DW_MACRO_undef_sup
24221                     || section_is_dwz)
24222                   {
24223                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
24224
24225                     body = read_indirect_string_from_dwz (dwz, str_offset);
24226                   }
24227                 else
24228                   body = read_indirect_string_at_offset (abfd, str_offset);
24229               }
24230
24231             is_define = (macinfo_type == DW_MACRO_define
24232                          || macinfo_type == DW_MACRO_define_strp
24233                          || macinfo_type == DW_MACRO_define_sup);
24234             if (! current_file)
24235               {
24236                 /* DWARF violation as no main source is present.  */
24237                 complaint (&symfile_complaints,
24238                            _("debug info with no main source gives macro %s "
24239                              "on line %d: %s"),
24240                            is_define ? _("definition") : _("undefinition"),
24241                            line, body);
24242                 break;
24243               }
24244             if ((line == 0 && !at_commandline)
24245                 || (line != 0 && at_commandline))
24246               complaint (&symfile_complaints,
24247                          _("debug info gives %s macro %s with %s line %d: %s"),
24248                          at_commandline ? _("command-line") : _("in-file"),
24249                          is_define ? _("definition") : _("undefinition"),
24250                          line == 0 ? _("zero") : _("non-zero"), line, body);
24251
24252             if (is_define)
24253               parse_macro_definition (current_file, line, body);
24254             else
24255               {
24256                 gdb_assert (macinfo_type == DW_MACRO_undef
24257                             || macinfo_type == DW_MACRO_undef_strp
24258                             || macinfo_type == DW_MACRO_undef_sup);
24259                 macro_undef (current_file, line, body);
24260               }
24261           }
24262           break;
24263
24264         case DW_MACRO_start_file:
24265           {
24266             unsigned int bytes_read;
24267             int line, file;
24268
24269             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24270             mac_ptr += bytes_read;
24271             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24272             mac_ptr += bytes_read;
24273
24274             if ((line == 0 && !at_commandline)
24275                 || (line != 0 && at_commandline))
24276               complaint (&symfile_complaints,
24277                          _("debug info gives source %d included "
24278                            "from %s at %s line %d"),
24279                          file, at_commandline ? _("command-line") : _("file"),
24280                          line == 0 ? _("zero") : _("non-zero"), line);
24281
24282             if (at_commandline)
24283               {
24284                 /* This DW_MACRO_start_file was executed in the
24285                    pass one.  */
24286                 at_commandline = 0;
24287               }
24288             else
24289               current_file = macro_start_file (file, line, current_file, lh);
24290           }
24291           break;
24292
24293         case DW_MACRO_end_file:
24294           if (! current_file)
24295             complaint (&symfile_complaints,
24296                        _("macro debug info has an unmatched "
24297                          "`close_file' directive"));
24298           else
24299             {
24300               current_file = current_file->included_by;
24301               if (! current_file)
24302                 {
24303                   enum dwarf_macro_record_type next_type;
24304
24305                   /* GCC circa March 2002 doesn't produce the zero
24306                      type byte marking the end of the compilation
24307                      unit.  Complain if it's not there, but exit no
24308                      matter what.  */
24309
24310                   /* Do we at least have room for a macinfo type byte?  */
24311                   if (mac_ptr >= mac_end)
24312                     {
24313                       dwarf2_section_buffer_overflow_complaint (section);
24314                       return;
24315                     }
24316
24317                   /* We don't increment mac_ptr here, so this is just
24318                      a look-ahead.  */
24319                   next_type
24320                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24321                                                                   mac_ptr);
24322                   if (next_type != 0)
24323                     complaint (&symfile_complaints,
24324                                _("no terminating 0-type entry for "
24325                                  "macros in `.debug_macinfo' section"));
24326
24327                   return;
24328                 }
24329             }
24330           break;
24331
24332         case DW_MACRO_import:
24333         case DW_MACRO_import_sup:
24334           {
24335             LONGEST offset;
24336             void **slot;
24337             bfd *include_bfd = abfd;
24338             struct dwarf2_section_info *include_section = section;
24339             const gdb_byte *include_mac_end = mac_end;
24340             int is_dwz = section_is_dwz;
24341             const gdb_byte *new_mac_ptr;
24342
24343             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24344             mac_ptr += offset_size;
24345
24346             if (macinfo_type == DW_MACRO_import_sup)
24347               {
24348                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
24349
24350                 dwarf2_read_section (objfile, &dwz->macro);
24351
24352                 include_section = &dwz->macro;
24353                 include_bfd = get_section_bfd_owner (include_section);
24354                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24355                 is_dwz = 1;
24356               }
24357
24358             new_mac_ptr = include_section->buffer + offset;
24359             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24360
24361             if (*slot != NULL)
24362               {
24363                 /* This has actually happened; see
24364                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24365                 complaint (&symfile_complaints,
24366                            _("recursive DW_MACRO_import in "
24367                              ".debug_macro section"));
24368               }
24369             else
24370               {
24371                 *slot = (void *) new_mac_ptr;
24372
24373                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
24374                                           include_mac_end, current_file, lh,
24375                                           section, section_is_gnu, is_dwz,
24376                                           offset_size, include_hash);
24377
24378                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24379               }
24380           }
24381           break;
24382
24383         case DW_MACINFO_vendor_ext:
24384           if (!section_is_gnu)
24385             {
24386               unsigned int bytes_read;
24387
24388               /* This reads the constant, but since we don't recognize
24389                  any vendor extensions, we ignore it.  */
24390               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24391               mac_ptr += bytes_read;
24392               read_direct_string (abfd, mac_ptr, &bytes_read);
24393               mac_ptr += bytes_read;
24394
24395               /* We don't recognize any vendor extensions.  */
24396               break;
24397             }
24398           /* FALLTHROUGH */
24399
24400         default:
24401           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24402                                          mac_ptr, mac_end, abfd, offset_size,
24403                                          section);
24404           if (mac_ptr == NULL)
24405             return;
24406           break;
24407         }
24408       DIAGNOSTIC_POP
24409     } while (macinfo_type != 0);
24410 }
24411
24412 static void
24413 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24414                      int section_is_gnu)
24415 {
24416   struct objfile *objfile = dwarf2_per_objfile->objfile;
24417   struct line_header *lh = cu->line_header;
24418   bfd *abfd;
24419   const gdb_byte *mac_ptr, *mac_end;
24420   struct macro_source_file *current_file = 0;
24421   enum dwarf_macro_record_type macinfo_type;
24422   unsigned int offset_size = cu->header.offset_size;
24423   const gdb_byte *opcode_definitions[256];
24424   void **slot;
24425   struct dwarf2_section_info *section;
24426   const char *section_name;
24427
24428   if (cu->dwo_unit != NULL)
24429     {
24430       if (section_is_gnu)
24431         {
24432           section = &cu->dwo_unit->dwo_file->sections.macro;
24433           section_name = ".debug_macro.dwo";
24434         }
24435       else
24436         {
24437           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24438           section_name = ".debug_macinfo.dwo";
24439         }
24440     }
24441   else
24442     {
24443       if (section_is_gnu)
24444         {
24445           section = &dwarf2_per_objfile->macro;
24446           section_name = ".debug_macro";
24447         }
24448       else
24449         {
24450           section = &dwarf2_per_objfile->macinfo;
24451           section_name = ".debug_macinfo";
24452         }
24453     }
24454
24455   dwarf2_read_section (objfile, section);
24456   if (section->buffer == NULL)
24457     {
24458       complaint (&symfile_complaints, _("missing %s section"), section_name);
24459       return;
24460     }
24461   abfd = get_section_bfd_owner (section);
24462
24463   /* First pass: Find the name of the base filename.
24464      This filename is needed in order to process all macros whose definition
24465      (or undefinition) comes from the command line.  These macros are defined
24466      before the first DW_MACINFO_start_file entry, and yet still need to be
24467      associated to the base file.
24468
24469      To determine the base file name, we scan the macro definitions until we
24470      reach the first DW_MACINFO_start_file entry.  We then initialize
24471      CURRENT_FILE accordingly so that any macro definition found before the
24472      first DW_MACINFO_start_file can still be associated to the base file.  */
24473
24474   mac_ptr = section->buffer + offset;
24475   mac_end = section->buffer + section->size;
24476
24477   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24478                                       &offset_size, section_is_gnu);
24479   if (mac_ptr == NULL)
24480     {
24481       /* We already issued a complaint.  */
24482       return;
24483     }
24484
24485   do
24486     {
24487       /* Do we at least have room for a macinfo type byte?  */
24488       if (mac_ptr >= mac_end)
24489         {
24490           /* Complaint is printed during the second pass as GDB will probably
24491              stop the first pass earlier upon finding
24492              DW_MACINFO_start_file.  */
24493           break;
24494         }
24495
24496       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24497       mac_ptr++;
24498
24499       /* Note that we rely on the fact that the corresponding GNU and
24500          DWARF constants are the same.  */
24501       DIAGNOSTIC_PUSH
24502       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24503       switch (macinfo_type)
24504         {
24505           /* A zero macinfo type indicates the end of the macro
24506              information.  */
24507         case 0:
24508           break;
24509
24510         case DW_MACRO_define:
24511         case DW_MACRO_undef:
24512           /* Only skip the data by MAC_PTR.  */
24513           {
24514             unsigned int bytes_read;
24515
24516             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24517             mac_ptr += bytes_read;
24518             read_direct_string (abfd, mac_ptr, &bytes_read);
24519             mac_ptr += bytes_read;
24520           }
24521           break;
24522
24523         case DW_MACRO_start_file:
24524           {
24525             unsigned int bytes_read;
24526             int line, file;
24527
24528             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24529             mac_ptr += bytes_read;
24530             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24531             mac_ptr += bytes_read;
24532
24533             current_file = macro_start_file (file, line, current_file, lh);
24534           }
24535           break;
24536
24537         case DW_MACRO_end_file:
24538           /* No data to skip by MAC_PTR.  */
24539           break;
24540
24541         case DW_MACRO_define_strp:
24542         case DW_MACRO_undef_strp:
24543         case DW_MACRO_define_sup:
24544         case DW_MACRO_undef_sup:
24545           {
24546             unsigned int bytes_read;
24547
24548             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24549             mac_ptr += bytes_read;
24550             mac_ptr += offset_size;
24551           }
24552           break;
24553
24554         case DW_MACRO_import:
24555         case DW_MACRO_import_sup:
24556           /* Note that, according to the spec, a transparent include
24557              chain cannot call DW_MACRO_start_file.  So, we can just
24558              skip this opcode.  */
24559           mac_ptr += offset_size;
24560           break;
24561
24562         case DW_MACINFO_vendor_ext:
24563           /* Only skip the data by MAC_PTR.  */
24564           if (!section_is_gnu)
24565             {
24566               unsigned int bytes_read;
24567
24568               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24569               mac_ptr += bytes_read;
24570               read_direct_string (abfd, mac_ptr, &bytes_read);
24571               mac_ptr += bytes_read;
24572             }
24573           /* FALLTHROUGH */
24574
24575         default:
24576           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24577                                          mac_ptr, mac_end, abfd, offset_size,
24578                                          section);
24579           if (mac_ptr == NULL)
24580             return;
24581           break;
24582         }
24583       DIAGNOSTIC_POP
24584     } while (macinfo_type != 0 && current_file == NULL);
24585
24586   /* Second pass: Process all entries.
24587
24588      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24589      command-line macro definitions/undefinitions.  This flag is unset when we
24590      reach the first DW_MACINFO_start_file entry.  */
24591
24592   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24593                                            htab_eq_pointer,
24594                                            NULL, xcalloc, xfree));
24595   mac_ptr = section->buffer + offset;
24596   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24597   *slot = (void *) mac_ptr;
24598   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
24599                             current_file, lh, section,
24600                             section_is_gnu, 0, offset_size,
24601                             include_hash.get ());
24602 }
24603
24604 /* Check if the attribute's form is a DW_FORM_block*
24605    if so return true else false.  */
24606
24607 static int
24608 attr_form_is_block (const struct attribute *attr)
24609 {
24610   return (attr == NULL ? 0 :
24611       attr->form == DW_FORM_block1
24612       || attr->form == DW_FORM_block2
24613       || attr->form == DW_FORM_block4
24614       || attr->form == DW_FORM_block
24615       || attr->form == DW_FORM_exprloc);
24616 }
24617
24618 /* Return non-zero if ATTR's value is a section offset --- classes
24619    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24620    You may use DW_UNSND (attr) to retrieve such offsets.
24621
24622    Section 7.5.4, "Attribute Encodings", explains that no attribute
24623    may have a value that belongs to more than one of these classes; it
24624    would be ambiguous if we did, because we use the same forms for all
24625    of them.  */
24626
24627 static int
24628 attr_form_is_section_offset (const struct attribute *attr)
24629 {
24630   return (attr->form == DW_FORM_data4
24631           || attr->form == DW_FORM_data8
24632           || attr->form == DW_FORM_sec_offset);
24633 }
24634
24635 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24636    zero otherwise.  When this function returns true, you can apply
24637    dwarf2_get_attr_constant_value to it.
24638
24639    However, note that for some attributes you must check
24640    attr_form_is_section_offset before using this test.  DW_FORM_data4
24641    and DW_FORM_data8 are members of both the constant class, and of
24642    the classes that contain offsets into other debug sections
24643    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24644    that, if an attribute's can be either a constant or one of the
24645    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24646    taken as section offsets, not constants.
24647
24648    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24649    cannot handle that.  */
24650
24651 static int
24652 attr_form_is_constant (const struct attribute *attr)
24653 {
24654   switch (attr->form)
24655     {
24656     case DW_FORM_sdata:
24657     case DW_FORM_udata:
24658     case DW_FORM_data1:
24659     case DW_FORM_data2:
24660     case DW_FORM_data4:
24661     case DW_FORM_data8:
24662     case DW_FORM_implicit_const:
24663       return 1;
24664     default:
24665       return 0;
24666     }
24667 }
24668
24669
24670 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24671    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24672
24673 static int
24674 attr_form_is_ref (const struct attribute *attr)
24675 {
24676   switch (attr->form)
24677     {
24678     case DW_FORM_ref_addr:
24679     case DW_FORM_ref1:
24680     case DW_FORM_ref2:
24681     case DW_FORM_ref4:
24682     case DW_FORM_ref8:
24683     case DW_FORM_ref_udata:
24684     case DW_FORM_GNU_ref_alt:
24685       return 1;
24686     default:
24687       return 0;
24688     }
24689 }
24690
24691 /* Return the .debug_loc section to use for CU.
24692    For DWO files use .debug_loc.dwo.  */
24693
24694 static struct dwarf2_section_info *
24695 cu_debug_loc_section (struct dwarf2_cu *cu)
24696 {
24697   if (cu->dwo_unit)
24698     {
24699       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24700       
24701       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24702     }
24703   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24704                                   : &dwarf2_per_objfile->loc);
24705 }
24706
24707 /* A helper function that fills in a dwarf2_loclist_baton.  */
24708
24709 static void
24710 fill_in_loclist_baton (struct dwarf2_cu *cu,
24711                        struct dwarf2_loclist_baton *baton,
24712                        const struct attribute *attr)
24713 {
24714   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24715
24716   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24717
24718   baton->per_cu = cu->per_cu;
24719   gdb_assert (baton->per_cu);
24720   /* We don't know how long the location list is, but make sure we
24721      don't run off the edge of the section.  */
24722   baton->size = section->size - DW_UNSND (attr);
24723   baton->data = section->buffer + DW_UNSND (attr);
24724   baton->base_address = cu->base_address;
24725   baton->from_dwo = cu->dwo_unit != NULL;
24726 }
24727
24728 static void
24729 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24730                              struct dwarf2_cu *cu, int is_block)
24731 {
24732   struct objfile *objfile = dwarf2_per_objfile->objfile;
24733   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24734
24735   if (attr_form_is_section_offset (attr)
24736       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24737          the section.  If so, fall through to the complaint in the
24738          other branch.  */
24739       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24740     {
24741       struct dwarf2_loclist_baton *baton;
24742
24743       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24744
24745       fill_in_loclist_baton (cu, baton, attr);
24746
24747       if (cu->base_known == 0)
24748         complaint (&symfile_complaints,
24749                    _("Location list used without "
24750                      "specifying the CU base address."));
24751
24752       SYMBOL_ACLASS_INDEX (sym) = (is_block
24753                                    ? dwarf2_loclist_block_index
24754                                    : dwarf2_loclist_index);
24755       SYMBOL_LOCATION_BATON (sym) = baton;
24756     }
24757   else
24758     {
24759       struct dwarf2_locexpr_baton *baton;
24760
24761       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24762       baton->per_cu = cu->per_cu;
24763       gdb_assert (baton->per_cu);
24764
24765       if (attr_form_is_block (attr))
24766         {
24767           /* Note that we're just copying the block's data pointer
24768              here, not the actual data.  We're still pointing into the
24769              info_buffer for SYM's objfile; right now we never release
24770              that buffer, but when we do clean up properly this may
24771              need to change.  */
24772           baton->size = DW_BLOCK (attr)->size;
24773           baton->data = DW_BLOCK (attr)->data;
24774         }
24775       else
24776         {
24777           dwarf2_invalid_attrib_class_complaint ("location description",
24778                                                  SYMBOL_NATURAL_NAME (sym));
24779           baton->size = 0;
24780         }
24781
24782       SYMBOL_ACLASS_INDEX (sym) = (is_block
24783                                    ? dwarf2_locexpr_block_index
24784                                    : dwarf2_locexpr_index);
24785       SYMBOL_LOCATION_BATON (sym) = baton;
24786     }
24787 }
24788
24789 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24790    came from a separate debuginfo file, then the master objfile is
24791    returned.  */
24792
24793 struct objfile *
24794 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24795 {
24796   struct objfile *objfile = per_cu->objfile;
24797
24798   /* Return the master objfile, so that we can report and look up the
24799      correct file containing this variable.  */
24800   if (objfile->separate_debug_objfile_backlink)
24801     objfile = objfile->separate_debug_objfile_backlink;
24802
24803   return objfile;
24804 }
24805
24806 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24807    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24808    CU_HEADERP first.  */
24809
24810 static const struct comp_unit_head *
24811 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24812                        struct dwarf2_per_cu_data *per_cu)
24813 {
24814   const gdb_byte *info_ptr;
24815
24816   if (per_cu->cu)
24817     return &per_cu->cu->header;
24818
24819   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24820
24821   memset (cu_headerp, 0, sizeof (*cu_headerp));
24822   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24823                        rcuh_kind::COMPILE);
24824
24825   return cu_headerp;
24826 }
24827
24828 /* Return the address size given in the compilation unit header for CU.  */
24829
24830 int
24831 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24832 {
24833   struct comp_unit_head cu_header_local;
24834   const struct comp_unit_head *cu_headerp;
24835
24836   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24837
24838   return cu_headerp->addr_size;
24839 }
24840
24841 /* Return the offset size given in the compilation unit header for CU.  */
24842
24843 int
24844 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
24845 {
24846   struct comp_unit_head cu_header_local;
24847   const struct comp_unit_head *cu_headerp;
24848
24849   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24850
24851   return cu_headerp->offset_size;
24852 }
24853
24854 /* See its dwarf2loc.h declaration.  */
24855
24856 int
24857 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
24858 {
24859   struct comp_unit_head cu_header_local;
24860   const struct comp_unit_head *cu_headerp;
24861
24862   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24863
24864   if (cu_headerp->version == 2)
24865     return cu_headerp->addr_size;
24866   else
24867     return cu_headerp->offset_size;
24868 }
24869
24870 /* Return the text offset of the CU.  The returned offset comes from
24871    this CU's objfile.  If this objfile came from a separate debuginfo
24872    file, then the offset may be different from the corresponding
24873    offset in the parent objfile.  */
24874
24875 CORE_ADDR
24876 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
24877 {
24878   struct objfile *objfile = per_cu->objfile;
24879
24880   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
24881 }
24882
24883 /* Return DWARF version number of PER_CU.  */
24884
24885 short
24886 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
24887 {
24888   return per_cu->dwarf_version;
24889 }
24890
24891 /* Locate the .debug_info compilation unit from CU's objfile which contains
24892    the DIE at OFFSET.  Raises an error on failure.  */
24893
24894 static struct dwarf2_per_cu_data *
24895 dwarf2_find_containing_comp_unit (sect_offset sect_off,
24896                                   unsigned int offset_in_dwz,
24897                                   struct objfile *objfile)
24898 {
24899   struct dwarf2_per_cu_data *this_cu;
24900   int low, high;
24901   const sect_offset *cu_off;
24902
24903   low = 0;
24904   high = dwarf2_per_objfile->n_comp_units - 1;
24905   while (high > low)
24906     {
24907       struct dwarf2_per_cu_data *mid_cu;
24908       int mid = low + (high - low) / 2;
24909
24910       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
24911       cu_off = &mid_cu->sect_off;
24912       if (mid_cu->is_dwz > offset_in_dwz
24913           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
24914         high = mid;
24915       else
24916         low = mid + 1;
24917     }
24918   gdb_assert (low == high);
24919   this_cu = dwarf2_per_objfile->all_comp_units[low];
24920   cu_off = &this_cu->sect_off;
24921   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
24922     {
24923       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
24924         error (_("Dwarf Error: could not find partial DIE containing "
24925                "offset 0x%x [in module %s]"),
24926                to_underlying (sect_off), bfd_get_filename (objfile->obfd));
24927
24928       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
24929                   <= sect_off);
24930       return dwarf2_per_objfile->all_comp_units[low-1];
24931     }
24932   else
24933     {
24934       this_cu = dwarf2_per_objfile->all_comp_units[low];
24935       if (low == dwarf2_per_objfile->n_comp_units - 1
24936           && sect_off >= this_cu->sect_off + this_cu->length)
24937         error (_("invalid dwarf2 offset %u"), to_underlying (sect_off));
24938       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
24939       return this_cu;
24940     }
24941 }
24942
24943 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
24944
24945 static void
24946 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
24947 {
24948   memset (cu, 0, sizeof (*cu));
24949   per_cu->cu = cu;
24950   cu->per_cu = per_cu;
24951   cu->objfile = per_cu->objfile;
24952   obstack_init (&cu->comp_unit_obstack);
24953 }
24954
24955 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
24956
24957 static void
24958 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
24959                        enum language pretend_language)
24960 {
24961   struct attribute *attr;
24962
24963   /* Set the language we're debugging.  */
24964   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
24965   if (attr)
24966     set_cu_language (DW_UNSND (attr), cu);
24967   else
24968     {
24969       cu->language = pretend_language;
24970       cu->language_defn = language_def (cu->language);
24971     }
24972
24973   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
24974 }
24975
24976 /* Release one cached compilation unit, CU.  We unlink it from the tree
24977    of compilation units, but we don't remove it from the read_in_chain;
24978    the caller is responsible for that.
24979    NOTE: DATA is a void * because this function is also used as a
24980    cleanup routine.  */
24981
24982 static void
24983 free_heap_comp_unit (void *data)
24984 {
24985   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
24986
24987   gdb_assert (cu->per_cu != NULL);
24988   cu->per_cu->cu = NULL;
24989   cu->per_cu = NULL;
24990
24991   obstack_free (&cu->comp_unit_obstack, NULL);
24992
24993   xfree (cu);
24994 }
24995
24996 /* This cleanup function is passed the address of a dwarf2_cu on the stack
24997    when we're finished with it.  We can't free the pointer itself, but be
24998    sure to unlink it from the cache.  Also release any associated storage.  */
24999
25000 static void
25001 free_stack_comp_unit (void *data)
25002 {
25003   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
25004
25005   gdb_assert (cu->per_cu != NULL);
25006   cu->per_cu->cu = NULL;
25007   cu->per_cu = NULL;
25008
25009   obstack_free (&cu->comp_unit_obstack, NULL);
25010   cu->partial_dies = NULL;
25011 }
25012
25013 /* Free all cached compilation units.  */
25014
25015 static void
25016 free_cached_comp_units (void *data)
25017 {
25018   dwarf2_per_objfile->free_cached_comp_units ();
25019 }
25020
25021 /* Increase the age counter on each cached compilation unit, and free
25022    any that are too old.  */
25023
25024 static void
25025 age_cached_comp_units (void)
25026 {
25027   struct dwarf2_per_cu_data *per_cu, **last_chain;
25028
25029   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25030   per_cu = dwarf2_per_objfile->read_in_chain;
25031   while (per_cu != NULL)
25032     {
25033       per_cu->cu->last_used ++;
25034       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25035         dwarf2_mark (per_cu->cu);
25036       per_cu = per_cu->cu->read_in_chain;
25037     }
25038
25039   per_cu = dwarf2_per_objfile->read_in_chain;
25040   last_chain = &dwarf2_per_objfile->read_in_chain;
25041   while (per_cu != NULL)
25042     {
25043       struct dwarf2_per_cu_data *next_cu;
25044
25045       next_cu = per_cu->cu->read_in_chain;
25046
25047       if (!per_cu->cu->mark)
25048         {
25049           free_heap_comp_unit (per_cu->cu);
25050           *last_chain = next_cu;
25051         }
25052       else
25053         last_chain = &per_cu->cu->read_in_chain;
25054
25055       per_cu = next_cu;
25056     }
25057 }
25058
25059 /* Remove a single compilation unit from the cache.  */
25060
25061 static void
25062 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25063 {
25064   struct dwarf2_per_cu_data *per_cu, **last_chain;
25065
25066   per_cu = dwarf2_per_objfile->read_in_chain;
25067   last_chain = &dwarf2_per_objfile->read_in_chain;
25068   while (per_cu != NULL)
25069     {
25070       struct dwarf2_per_cu_data *next_cu;
25071
25072       next_cu = per_cu->cu->read_in_chain;
25073
25074       if (per_cu == target_per_cu)
25075         {
25076           free_heap_comp_unit (per_cu->cu);
25077           per_cu->cu = NULL;
25078           *last_chain = next_cu;
25079           break;
25080         }
25081       else
25082         last_chain = &per_cu->cu->read_in_chain;
25083
25084       per_cu = next_cu;
25085     }
25086 }
25087
25088 /* Release all extra memory associated with OBJFILE.  */
25089
25090 void
25091 dwarf2_free_objfile (struct objfile *objfile)
25092 {
25093   dwarf2_per_objfile
25094     = (struct dwarf2_per_objfile *) objfile_data (objfile,
25095                                                   dwarf2_objfile_data_key);
25096
25097   if (dwarf2_per_objfile == NULL)
25098     return;
25099
25100   dwarf2_per_objfile->~dwarf2_per_objfile ();
25101 }
25102
25103 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25104    We store these in a hash table separate from the DIEs, and preserve them
25105    when the DIEs are flushed out of cache.
25106
25107    The CU "per_cu" pointer is needed because offset alone is not enough to
25108    uniquely identify the type.  A file may have multiple .debug_types sections,
25109    or the type may come from a DWO file.  Furthermore, while it's more logical
25110    to use per_cu->section+offset, with Fission the section with the data is in
25111    the DWO file but we don't know that section at the point we need it.
25112    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25113    because we can enter the lookup routine, get_die_type_at_offset, from
25114    outside this file, and thus won't necessarily have PER_CU->cu.
25115    Fortunately, PER_CU is stable for the life of the objfile.  */
25116
25117 struct dwarf2_per_cu_offset_and_type
25118 {
25119   const struct dwarf2_per_cu_data *per_cu;
25120   sect_offset sect_off;
25121   struct type *type;
25122 };
25123
25124 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25125
25126 static hashval_t
25127 per_cu_offset_and_type_hash (const void *item)
25128 {
25129   const struct dwarf2_per_cu_offset_and_type *ofs
25130     = (const struct dwarf2_per_cu_offset_and_type *) item;
25131
25132   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25133 }
25134
25135 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25136
25137 static int
25138 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25139 {
25140   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25141     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25142   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25143     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25144
25145   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25146           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25147 }
25148
25149 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25150    table if necessary.  For convenience, return TYPE.
25151
25152    The DIEs reading must have careful ordering to:
25153     * Not cause infite loops trying to read in DIEs as a prerequisite for
25154       reading current DIE.
25155     * Not trying to dereference contents of still incompletely read in types
25156       while reading in other DIEs.
25157     * Enable referencing still incompletely read in types just by a pointer to
25158       the type without accessing its fields.
25159
25160    Therefore caller should follow these rules:
25161      * Try to fetch any prerequisite types we may need to build this DIE type
25162        before building the type and calling set_die_type.
25163      * After building type call set_die_type for current DIE as soon as
25164        possible before fetching more types to complete the current type.
25165      * Make the type as complete as possible before fetching more types.  */
25166
25167 static struct type *
25168 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25169 {
25170   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25171   struct objfile *objfile = cu->objfile;
25172   struct attribute *attr;
25173   struct dynamic_prop prop;
25174
25175   /* For Ada types, make sure that the gnat-specific data is always
25176      initialized (if not already set).  There are a few types where
25177      we should not be doing so, because the type-specific area is
25178      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25179      where the type-specific area is used to store the floatformat).
25180      But this is not a problem, because the gnat-specific information
25181      is actually not needed for these types.  */
25182   if (need_gnat_info (cu)
25183       && TYPE_CODE (type) != TYPE_CODE_FUNC
25184       && TYPE_CODE (type) != TYPE_CODE_FLT
25185       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25186       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25187       && TYPE_CODE (type) != TYPE_CODE_METHOD
25188       && !HAVE_GNAT_AUX_INFO (type))
25189     INIT_GNAT_SPECIFIC (type);
25190
25191   /* Read DW_AT_allocated and set in type.  */
25192   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25193   if (attr_form_is_block (attr))
25194     {
25195       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25196         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
25197     }
25198   else if (attr != NULL)
25199     {
25200       complaint (&symfile_complaints,
25201                  _("DW_AT_allocated has the wrong form (%s) at DIE 0x%x"),
25202                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25203                  to_underlying (die->sect_off));
25204     }
25205
25206   /* Read DW_AT_associated and set in type.  */
25207   attr = dwarf2_attr (die, DW_AT_associated, cu);
25208   if (attr_form_is_block (attr))
25209     {
25210       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25211         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
25212     }
25213   else if (attr != NULL)
25214     {
25215       complaint (&symfile_complaints,
25216                  _("DW_AT_associated has the wrong form (%s) at DIE 0x%x"),
25217                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25218                  to_underlying (die->sect_off));
25219     }
25220
25221   /* Read DW_AT_data_location and set in type.  */
25222   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25223   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25224     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
25225
25226   if (dwarf2_per_objfile->die_type_hash == NULL)
25227     {
25228       dwarf2_per_objfile->die_type_hash =
25229         htab_create_alloc_ex (127,
25230                               per_cu_offset_and_type_hash,
25231                               per_cu_offset_and_type_eq,
25232                               NULL,
25233                               &objfile->objfile_obstack,
25234                               hashtab_obstack_allocate,
25235                               dummy_obstack_deallocate);
25236     }
25237
25238   ofs.per_cu = cu->per_cu;
25239   ofs.sect_off = die->sect_off;
25240   ofs.type = type;
25241   slot = (struct dwarf2_per_cu_offset_and_type **)
25242     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25243   if (*slot)
25244     complaint (&symfile_complaints,
25245                _("A problem internal to GDB: DIE 0x%x has type already set"),
25246                to_underlying (die->sect_off));
25247   *slot = XOBNEW (&objfile->objfile_obstack,
25248                   struct dwarf2_per_cu_offset_and_type);
25249   **slot = ofs;
25250   return type;
25251 }
25252
25253 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25254    or return NULL if the die does not have a saved type.  */
25255
25256 static struct type *
25257 get_die_type_at_offset (sect_offset sect_off,
25258                         struct dwarf2_per_cu_data *per_cu)
25259 {
25260   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25261
25262   if (dwarf2_per_objfile->die_type_hash == NULL)
25263     return NULL;
25264
25265   ofs.per_cu = per_cu;
25266   ofs.sect_off = sect_off;
25267   slot = ((struct dwarf2_per_cu_offset_and_type *)
25268           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25269   if (slot)
25270     return slot->type;
25271   else
25272     return NULL;
25273 }
25274
25275 /* Look up the type for DIE in CU in die_type_hash,
25276    or return NULL if DIE does not have a saved type.  */
25277
25278 static struct type *
25279 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25280 {
25281   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25282 }
25283
25284 /* Add a dependence relationship from CU to REF_PER_CU.  */
25285
25286 static void
25287 dwarf2_add_dependence (struct dwarf2_cu *cu,
25288                        struct dwarf2_per_cu_data *ref_per_cu)
25289 {
25290   void **slot;
25291
25292   if (cu->dependencies == NULL)
25293     cu->dependencies
25294       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25295                               NULL, &cu->comp_unit_obstack,
25296                               hashtab_obstack_allocate,
25297                               dummy_obstack_deallocate);
25298
25299   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25300   if (*slot == NULL)
25301     *slot = ref_per_cu;
25302 }
25303
25304 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25305    Set the mark field in every compilation unit in the
25306    cache that we must keep because we are keeping CU.  */
25307
25308 static int
25309 dwarf2_mark_helper (void **slot, void *data)
25310 {
25311   struct dwarf2_per_cu_data *per_cu;
25312
25313   per_cu = (struct dwarf2_per_cu_data *) *slot;
25314
25315   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25316      reading of the chain.  As such dependencies remain valid it is not much
25317      useful to track and undo them during QUIT cleanups.  */
25318   if (per_cu->cu == NULL)
25319     return 1;
25320
25321   if (per_cu->cu->mark)
25322     return 1;
25323   per_cu->cu->mark = 1;
25324
25325   if (per_cu->cu->dependencies != NULL)
25326     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25327
25328   return 1;
25329 }
25330
25331 /* Set the mark field in CU and in every other compilation unit in the
25332    cache that we must keep because we are keeping CU.  */
25333
25334 static void
25335 dwarf2_mark (struct dwarf2_cu *cu)
25336 {
25337   if (cu->mark)
25338     return;
25339   cu->mark = 1;
25340   if (cu->dependencies != NULL)
25341     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25342 }
25343
25344 static void
25345 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25346 {
25347   while (per_cu)
25348     {
25349       per_cu->cu->mark = 0;
25350       per_cu = per_cu->cu->read_in_chain;
25351     }
25352 }
25353
25354 /* Trivial hash function for partial_die_info: the hash value of a DIE
25355    is its offset in .debug_info for this objfile.  */
25356
25357 static hashval_t
25358 partial_die_hash (const void *item)
25359 {
25360   const struct partial_die_info *part_die
25361     = (const struct partial_die_info *) item;
25362
25363   return to_underlying (part_die->sect_off);
25364 }
25365
25366 /* Trivial comparison function for partial_die_info structures: two DIEs
25367    are equal if they have the same offset.  */
25368
25369 static int
25370 partial_die_eq (const void *item_lhs, const void *item_rhs)
25371 {
25372   const struct partial_die_info *part_die_lhs
25373     = (const struct partial_die_info *) item_lhs;
25374   const struct partial_die_info *part_die_rhs
25375     = (const struct partial_die_info *) item_rhs;
25376
25377   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25378 }
25379
25380 static struct cmd_list_element *set_dwarf_cmdlist;
25381 static struct cmd_list_element *show_dwarf_cmdlist;
25382
25383 static void
25384 set_dwarf_cmd (const char *args, int from_tty)
25385 {
25386   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25387              gdb_stdout);
25388 }
25389
25390 static void
25391 show_dwarf_cmd (const char *args, int from_tty)
25392 {
25393   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25394 }
25395
25396 /* Free data associated with OBJFILE, if necessary.  */
25397
25398 static void
25399 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
25400 {
25401   struct dwarf2_per_objfile *data = (struct dwarf2_per_objfile *) d;
25402   int ix;
25403
25404   /* Make sure we don't accidentally use dwarf2_per_objfile while
25405      cleaning up.  */
25406   dwarf2_per_objfile = NULL;
25407
25408   for (ix = 0; ix < data->n_comp_units; ++ix)
25409    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
25410
25411   for (ix = 0; ix < data->n_type_units; ++ix)
25412     VEC_free (dwarf2_per_cu_ptr,
25413               data->all_type_units[ix]->per_cu.imported_symtabs);
25414   xfree (data->all_type_units);
25415
25416   VEC_free (dwarf2_section_info_def, data->types);
25417
25418   if (data->dwo_files)
25419     free_dwo_files (data->dwo_files, objfile);
25420   if (data->dwp_file)
25421     gdb_bfd_unref (data->dwp_file->dbfd);
25422
25423   if (data->dwz_file && data->dwz_file->dwz_bfd)
25424     gdb_bfd_unref (data->dwz_file->dwz_bfd);
25425
25426   if (data->index_table != NULL)
25427     data->index_table->~mapped_index ();
25428 }
25429
25430 \f
25431 /* The "save gdb-index" command.  */
25432
25433 /* Write SIZE bytes from the buffer pointed to by DATA to FILE, with
25434    error checking.  */
25435
25436 static void
25437 file_write (FILE *file, const void *data, size_t size)
25438 {
25439   if (fwrite (data, 1, size, file) != size)
25440     error (_("couldn't data write to file"));
25441 }
25442
25443 /* Write the contents of VEC to FILE, with error checking.  */
25444
25445 template<typename Elem, typename Alloc>
25446 static void
25447 file_write (FILE *file, const std::vector<Elem, Alloc> &vec)
25448 {
25449   file_write (file, vec.data (), vec.size () * sizeof (vec[0]));
25450 }
25451
25452 /* In-memory buffer to prepare data to be written later to a file.  */
25453 class data_buf
25454 {
25455 public:
25456   /* Copy DATA to the end of the buffer.  */
25457   template<typename T>
25458   void append_data (const T &data)
25459   {
25460     std::copy (reinterpret_cast<const gdb_byte *> (&data),
25461                reinterpret_cast<const gdb_byte *> (&data + 1),
25462                grow (sizeof (data)));
25463   }
25464
25465   /* Copy CSTR (a zero-terminated string) to the end of buffer.  The
25466      terminating zero is appended too.  */
25467   void append_cstr0 (const char *cstr)
25468   {
25469     const size_t size = strlen (cstr) + 1;
25470     std::copy (cstr, cstr + size, grow (size));
25471   }
25472
25473   /* Store INPUT as ULEB128 to the end of buffer.  */
25474   void append_unsigned_leb128 (ULONGEST input)
25475   {
25476     for (;;)
25477       {
25478         gdb_byte output = input & 0x7f;
25479         input >>= 7;
25480         if (input)
25481           output |= 0x80;
25482         append_data (output);
25483         if (input == 0)
25484           break;
25485       }
25486   }
25487
25488   /* Accept a host-format integer in VAL and append it to the buffer
25489      as a target-format integer which is LEN bytes long.  */
25490   void append_uint (size_t len, bfd_endian byte_order, ULONGEST val)
25491   {
25492     ::store_unsigned_integer (grow (len), len, byte_order, val);
25493   }
25494
25495   /* Return the size of the buffer.  */
25496   size_t size () const
25497   {
25498     return m_vec.size ();
25499   }
25500
25501   /* Return true iff the buffer is empty.  */
25502   bool empty () const
25503   {
25504     return m_vec.empty ();
25505   }
25506
25507   /* Write the buffer to FILE.  */
25508   void file_write (FILE *file) const
25509   {
25510     ::file_write (file, m_vec);
25511   }
25512
25513 private:
25514   /* Grow SIZE bytes at the end of the buffer.  Returns a pointer to
25515      the start of the new block.  */
25516   gdb_byte *grow (size_t size)
25517   {
25518     m_vec.resize (m_vec.size () + size);
25519     return &*m_vec.end () - size;
25520   }
25521
25522   gdb::byte_vector m_vec;
25523 };
25524
25525 /* An entry in the symbol table.  */
25526 struct symtab_index_entry
25527 {
25528   /* The name of the symbol.  */
25529   const char *name;
25530   /* The offset of the name in the constant pool.  */
25531   offset_type index_offset;
25532   /* A sorted vector of the indices of all the CUs that hold an object
25533      of this name.  */
25534   std::vector<offset_type> cu_indices;
25535 };
25536
25537 /* The symbol table.  This is a power-of-2-sized hash table.  */
25538 struct mapped_symtab
25539 {
25540   mapped_symtab ()
25541   {
25542     data.resize (1024);
25543   }
25544
25545   offset_type n_elements = 0;
25546   std::vector<symtab_index_entry> data;
25547 };
25548
25549 /* Find a slot in SYMTAB for the symbol NAME.  Returns a reference to
25550    the slot.
25551    
25552    Function is used only during write_hash_table so no index format backward
25553    compatibility is needed.  */
25554
25555 static symtab_index_entry &
25556 find_slot (struct mapped_symtab *symtab, const char *name)
25557 {
25558   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
25559
25560   index = hash & (symtab->data.size () - 1);
25561   step = ((hash * 17) & (symtab->data.size () - 1)) | 1;
25562
25563   for (;;)
25564     {
25565       if (symtab->data[index].name == NULL
25566           || strcmp (name, symtab->data[index].name) == 0)
25567         return symtab->data[index];
25568       index = (index + step) & (symtab->data.size () - 1);
25569     }
25570 }
25571
25572 /* Expand SYMTAB's hash table.  */
25573
25574 static void
25575 hash_expand (struct mapped_symtab *symtab)
25576 {
25577   auto old_entries = std::move (symtab->data);
25578
25579   symtab->data.clear ();
25580   symtab->data.resize (old_entries.size () * 2);
25581
25582   for (auto &it : old_entries)
25583     if (it.name != NULL)
25584       {
25585         auto &ref = find_slot (symtab, it.name);
25586         ref = std::move (it);
25587       }
25588 }
25589
25590 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
25591    CU_INDEX is the index of the CU in which the symbol appears.
25592    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
25593
25594 static void
25595 add_index_entry (struct mapped_symtab *symtab, const char *name,
25596                  int is_static, gdb_index_symbol_kind kind,
25597                  offset_type cu_index)
25598 {
25599   offset_type cu_index_and_attrs;
25600
25601   ++symtab->n_elements;
25602   if (4 * symtab->n_elements / 3 >= symtab->data.size ())
25603     hash_expand (symtab);
25604
25605   symtab_index_entry &slot = find_slot (symtab, name);
25606   if (slot.name == NULL)
25607     {
25608       slot.name = name;
25609       /* index_offset is set later.  */
25610     }
25611
25612   cu_index_and_attrs = 0;
25613   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
25614   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
25615   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
25616
25617   /* We don't want to record an index value twice as we want to avoid the
25618      duplication.
25619      We process all global symbols and then all static symbols
25620      (which would allow us to avoid the duplication by only having to check
25621      the last entry pushed), but a symbol could have multiple kinds in one CU.
25622      To keep things simple we don't worry about the duplication here and
25623      sort and uniqufy the list after we've processed all symbols.  */
25624   slot.cu_indices.push_back (cu_index_and_attrs);
25625 }
25626
25627 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
25628
25629 static void
25630 uniquify_cu_indices (struct mapped_symtab *symtab)
25631 {
25632   for (auto &entry : symtab->data)
25633     {
25634       if (entry.name != NULL && !entry.cu_indices.empty ())
25635         {
25636           auto &cu_indices = entry.cu_indices;
25637           std::sort (cu_indices.begin (), cu_indices.end ());
25638           auto from = std::unique (cu_indices.begin (), cu_indices.end ());
25639           cu_indices.erase (from, cu_indices.end ());
25640         }
25641     }
25642 }
25643
25644 /* A form of 'const char *' suitable for container keys.  Only the
25645    pointer is stored.  The strings themselves are compared, not the
25646    pointers.  */
25647 class c_str_view
25648 {
25649 public:
25650   c_str_view (const char *cstr)
25651     : m_cstr (cstr)
25652   {}
25653
25654   bool operator== (const c_str_view &other) const
25655   {
25656     return strcmp (m_cstr, other.m_cstr) == 0;
25657   }
25658
25659   /* Return the underlying C string.  Note, the returned string is
25660      only a reference with lifetime of this object.  */
25661   const char *c_str () const
25662   {
25663     return m_cstr;
25664   }
25665
25666 private:
25667   friend class c_str_view_hasher;
25668   const char *const m_cstr;
25669 };
25670
25671 /* A std::unordered_map::hasher for c_str_view that uses the right
25672    hash function for strings in a mapped index.  */
25673 class c_str_view_hasher
25674 {
25675 public:
25676   size_t operator () (const c_str_view &x) const
25677   {
25678     return mapped_index_string_hash (INT_MAX, x.m_cstr);
25679   }
25680 };
25681
25682 /* A std::unordered_map::hasher for std::vector<>.  */
25683 template<typename T>
25684 class vector_hasher
25685 {
25686 public:
25687   size_t operator () (const std::vector<T> &key) const
25688   {
25689     return iterative_hash (key.data (),
25690                            sizeof (key.front ()) * key.size (), 0);
25691   }
25692 };
25693
25694 /* Write the mapped hash table SYMTAB to the data buffer OUTPUT, with
25695    constant pool entries going into the data buffer CPOOL.  */
25696
25697 static void
25698 write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
25699 {
25700   {
25701     /* Elements are sorted vectors of the indices of all the CUs that
25702        hold an object of this name.  */
25703     std::unordered_map<std::vector<offset_type>, offset_type,
25704                        vector_hasher<offset_type>>
25705       symbol_hash_table;
25706
25707     /* We add all the index vectors to the constant pool first, to
25708        ensure alignment is ok.  */
25709     for (symtab_index_entry &entry : symtab->data)
25710       {
25711         if (entry.name == NULL)
25712           continue;
25713         gdb_assert (entry.index_offset == 0);
25714
25715         /* Finding before inserting is faster than always trying to
25716            insert, because inserting always allocates a node, does the
25717            lookup, and then destroys the new node if another node
25718            already had the same key.  C++17 try_emplace will avoid
25719            this.  */
25720         const auto found
25721           = symbol_hash_table.find (entry.cu_indices);
25722         if (found != symbol_hash_table.end ())
25723           {
25724             entry.index_offset = found->second;
25725             continue;
25726           }
25727
25728         symbol_hash_table.emplace (entry.cu_indices, cpool.size ());
25729         entry.index_offset = cpool.size ();
25730         cpool.append_data (MAYBE_SWAP (entry.cu_indices.size ()));
25731         for (const auto index : entry.cu_indices)
25732           cpool.append_data (MAYBE_SWAP (index));
25733       }
25734   }
25735
25736   /* Now write out the hash table.  */
25737   std::unordered_map<c_str_view, offset_type, c_str_view_hasher> str_table;
25738   for (const auto &entry : symtab->data)
25739     {
25740       offset_type str_off, vec_off;
25741
25742       if (entry.name != NULL)
25743         {
25744           const auto insertpair = str_table.emplace (entry.name, cpool.size ());
25745           if (insertpair.second)
25746             cpool.append_cstr0 (entry.name);
25747           str_off = insertpair.first->second;
25748           vec_off = entry.index_offset;
25749         }
25750       else
25751         {
25752           /* While 0 is a valid constant pool index, it is not valid
25753              to have 0 for both offsets.  */
25754           str_off = 0;
25755           vec_off = 0;
25756         }
25757
25758       output.append_data (MAYBE_SWAP (str_off));
25759       output.append_data (MAYBE_SWAP (vec_off));
25760     }
25761 }
25762
25763 typedef std::unordered_map<partial_symtab *, unsigned int> psym_index_map;
25764
25765 /* Helper struct for building the address table.  */
25766 struct addrmap_index_data
25767 {
25768   addrmap_index_data (data_buf &addr_vec_, psym_index_map &cu_index_htab_)
25769     : addr_vec (addr_vec_), cu_index_htab (cu_index_htab_)
25770   {}
25771
25772   struct objfile *objfile;
25773   data_buf &addr_vec;
25774   psym_index_map &cu_index_htab;
25775
25776   /* Non-zero if the previous_* fields are valid.
25777      We can't write an entry until we see the next entry (since it is only then
25778      that we know the end of the entry).  */
25779   int previous_valid;
25780   /* Index of the CU in the table of all CUs in the index file.  */
25781   unsigned int previous_cu_index;
25782   /* Start address of the CU.  */
25783   CORE_ADDR previous_cu_start;
25784 };
25785
25786 /* Write an address entry to ADDR_VEC.  */
25787
25788 static void
25789 add_address_entry (struct objfile *objfile, data_buf &addr_vec,
25790                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
25791 {
25792   CORE_ADDR baseaddr;
25793
25794   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25795
25796   addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, start - baseaddr);
25797   addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, end - baseaddr);
25798   addr_vec.append_data (MAYBE_SWAP (cu_index));
25799 }
25800
25801 /* Worker function for traversing an addrmap to build the address table.  */
25802
25803 static int
25804 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
25805 {
25806   struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
25807   struct partial_symtab *pst = (struct partial_symtab *) obj;
25808
25809   if (data->previous_valid)
25810     add_address_entry (data->objfile, data->addr_vec,
25811                        data->previous_cu_start, start_addr,
25812                        data->previous_cu_index);
25813
25814   data->previous_cu_start = start_addr;
25815   if (pst != NULL)
25816     {
25817       const auto it = data->cu_index_htab.find (pst);
25818       gdb_assert (it != data->cu_index_htab.cend ());
25819       data->previous_cu_index = it->second;
25820       data->previous_valid = 1;
25821     }
25822   else
25823     data->previous_valid = 0;
25824
25825   return 0;
25826 }
25827
25828 /* Write OBJFILE's address map to ADDR_VEC.
25829    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
25830    in the index file.  */
25831
25832 static void
25833 write_address_map (struct objfile *objfile, data_buf &addr_vec,
25834                    psym_index_map &cu_index_htab)
25835 {
25836   struct addrmap_index_data addrmap_index_data (addr_vec, cu_index_htab);
25837
25838   /* When writing the address table, we have to cope with the fact that
25839      the addrmap iterator only provides the start of a region; we have to
25840      wait until the next invocation to get the start of the next region.  */
25841
25842   addrmap_index_data.objfile = objfile;
25843   addrmap_index_data.previous_valid = 0;
25844
25845   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
25846                    &addrmap_index_data);
25847
25848   /* It's highly unlikely the last entry (end address = 0xff...ff)
25849      is valid, but we should still handle it.
25850      The end address is recorded as the start of the next region, but that
25851      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
25852      anyway.  */
25853   if (addrmap_index_data.previous_valid)
25854     add_address_entry (objfile, addr_vec,
25855                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
25856                        addrmap_index_data.previous_cu_index);
25857 }
25858
25859 /* Return the symbol kind of PSYM.  */
25860
25861 static gdb_index_symbol_kind
25862 symbol_kind (struct partial_symbol *psym)
25863 {
25864   domain_enum domain = PSYMBOL_DOMAIN (psym);
25865   enum address_class aclass = PSYMBOL_CLASS (psym);
25866
25867   switch (domain)
25868     {
25869     case VAR_DOMAIN:
25870       switch (aclass)
25871         {
25872         case LOC_BLOCK:
25873           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
25874         case LOC_TYPEDEF:
25875           return GDB_INDEX_SYMBOL_KIND_TYPE;
25876         case LOC_COMPUTED:
25877         case LOC_CONST_BYTES:
25878         case LOC_OPTIMIZED_OUT:
25879         case LOC_STATIC:
25880           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
25881         case LOC_CONST:
25882           /* Note: It's currently impossible to recognize psyms as enum values
25883              short of reading the type info.  For now punt.  */
25884           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
25885         default:
25886           /* There are other LOC_FOO values that one might want to classify
25887              as variables, but dwarf2read.c doesn't currently use them.  */
25888           return GDB_INDEX_SYMBOL_KIND_OTHER;
25889         }
25890     case STRUCT_DOMAIN:
25891       return GDB_INDEX_SYMBOL_KIND_TYPE;
25892     default:
25893       return GDB_INDEX_SYMBOL_KIND_OTHER;
25894     }
25895 }
25896
25897 /* Add a list of partial symbols to SYMTAB.  */
25898
25899 static void
25900 write_psymbols (struct mapped_symtab *symtab,
25901                 std::unordered_set<partial_symbol *> &psyms_seen,
25902                 struct partial_symbol **psymp,
25903                 int count,
25904                 offset_type cu_index,
25905                 int is_static)
25906 {
25907   for (; count-- > 0; ++psymp)
25908     {
25909       struct partial_symbol *psym = *psymp;
25910
25911       if (SYMBOL_LANGUAGE (psym) == language_ada)
25912         error (_("Ada is not currently supported by the index"));
25913
25914       /* Only add a given psymbol once.  */
25915       if (psyms_seen.insert (psym).second)
25916         {
25917           gdb_index_symbol_kind kind = symbol_kind (psym);
25918
25919           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
25920                            is_static, kind, cu_index);
25921         }
25922     }
25923 }
25924
25925 /* A helper struct used when iterating over debug_types.  */
25926 struct signatured_type_index_data
25927 {
25928   signatured_type_index_data (data_buf &types_list_,
25929                               std::unordered_set<partial_symbol *> &psyms_seen_)
25930     : types_list (types_list_), psyms_seen (psyms_seen_)
25931   {}
25932
25933   struct objfile *objfile;
25934   struct mapped_symtab *symtab;
25935   data_buf &types_list;
25936   std::unordered_set<partial_symbol *> &psyms_seen;
25937   int cu_index;
25938 };
25939
25940 /* A helper function that writes a single signatured_type to an
25941    obstack.  */
25942
25943 static int
25944 write_one_signatured_type (void **slot, void *d)
25945 {
25946   struct signatured_type_index_data *info
25947     = (struct signatured_type_index_data *) d;
25948   struct signatured_type *entry = (struct signatured_type *) *slot;
25949   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
25950
25951   write_psymbols (info->symtab,
25952                   info->psyms_seen,
25953                   &info->objfile->global_psymbols[psymtab->globals_offset],
25954                   psymtab->n_global_syms, info->cu_index,
25955                   0);
25956   write_psymbols (info->symtab,
25957                   info->psyms_seen,
25958                   &info->objfile->static_psymbols[psymtab->statics_offset],
25959                   psymtab->n_static_syms, info->cu_index,
25960                   1);
25961
25962   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
25963                                 to_underlying (entry->per_cu.sect_off));
25964   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
25965                                 to_underlying (entry->type_offset_in_tu));
25966   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, entry->signature);
25967
25968   ++info->cu_index;
25969
25970   return 1;
25971 }
25972
25973 /* Recurse into all "included" dependencies and count their symbols as
25974    if they appeared in this psymtab.  */
25975
25976 static void
25977 recursively_count_psymbols (struct partial_symtab *psymtab,
25978                             size_t &psyms_seen)
25979 {
25980   for (int i = 0; i < psymtab->number_of_dependencies; ++i)
25981     if (psymtab->dependencies[i]->user != NULL)
25982       recursively_count_psymbols (psymtab->dependencies[i],
25983                                   psyms_seen);
25984
25985   psyms_seen += psymtab->n_global_syms;
25986   psyms_seen += psymtab->n_static_syms;
25987 }
25988
25989 /* Recurse into all "included" dependencies and write their symbols as
25990    if they appeared in this psymtab.  */
25991
25992 static void
25993 recursively_write_psymbols (struct objfile *objfile,
25994                             struct partial_symtab *psymtab,
25995                             struct mapped_symtab *symtab,
25996                             std::unordered_set<partial_symbol *> &psyms_seen,
25997                             offset_type cu_index)
25998 {
25999   int i;
26000
26001   for (i = 0; i < psymtab->number_of_dependencies; ++i)
26002     if (psymtab->dependencies[i]->user != NULL)
26003       recursively_write_psymbols (objfile, psymtab->dependencies[i],
26004                                   symtab, psyms_seen, cu_index);
26005
26006   write_psymbols (symtab,
26007                   psyms_seen,
26008                   &objfile->global_psymbols[psymtab->globals_offset],
26009                   psymtab->n_global_syms, cu_index,
26010                   0);
26011   write_psymbols (symtab,
26012                   psyms_seen,
26013                   &objfile->static_psymbols[psymtab->statics_offset],
26014                   psymtab->n_static_syms, cu_index,
26015                   1);
26016 }
26017
26018 /* DWARF-5 .debug_names builder.  */
26019 class debug_names
26020 {
26021 public:
26022   debug_names (bool is_dwarf64, bfd_endian dwarf5_byte_order)
26023     : m_dwarf5_byte_order (dwarf5_byte_order),
26024       m_dwarf32 (dwarf5_byte_order),
26025       m_dwarf64 (dwarf5_byte_order),
26026       m_dwarf (is_dwarf64
26027                ? static_cast<dwarf &> (m_dwarf64)
26028                : static_cast<dwarf &> (m_dwarf32)),
26029       m_name_table_string_offs (m_dwarf.name_table_string_offs),
26030       m_name_table_entry_offs (m_dwarf.name_table_entry_offs)
26031   {}
26032
26033   int dwarf5_offset_size () const
26034   {
26035     const bool dwarf5_is_dwarf64 = &m_dwarf == &m_dwarf64;
26036     return dwarf5_is_dwarf64 ? 8 : 4;
26037   }
26038
26039   /* Is this symbol from DW_TAG_compile_unit or DW_TAG_type_unit?  */
26040   enum class unit_kind { cu, tu };
26041
26042   /* Insert one symbol.  */
26043   void insert (const partial_symbol *psym, int cu_index, bool is_static,
26044                unit_kind kind)
26045   {
26046     const int dwarf_tag = psymbol_tag (psym);
26047     if (dwarf_tag == 0)
26048       return;
26049     const char *const name = SYMBOL_SEARCH_NAME (psym);
26050     const auto insertpair
26051       = m_name_to_value_set.emplace (c_str_view (name),
26052                                      std::set<symbol_value> ());
26053     std::set<symbol_value> &value_set = insertpair.first->second;
26054     value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static, kind));
26055   }
26056
26057   /* Build all the tables.  All symbols must be already inserted.
26058      This function does not call file_write, caller has to do it
26059      afterwards.  */
26060   void build ()
26061   {
26062     /* Verify the build method has not be called twice.  */
26063     gdb_assert (m_abbrev_table.empty ());
26064     const size_t name_count = m_name_to_value_set.size ();
26065     m_bucket_table.resize
26066       (std::pow (2, std::ceil (std::log2 (name_count * 4 / 3))));
26067     m_hash_table.reserve (name_count);
26068     m_name_table_string_offs.reserve (name_count);
26069     m_name_table_entry_offs.reserve (name_count);
26070
26071     /* Map each hash of symbol to its name and value.  */
26072     struct hash_it_pair
26073     {
26074       uint32_t hash;
26075       decltype (m_name_to_value_set)::const_iterator it;
26076     };
26077     std::vector<std::forward_list<hash_it_pair>> bucket_hash;
26078     bucket_hash.resize (m_bucket_table.size ());
26079     for (decltype (m_name_to_value_set)::const_iterator it
26080            = m_name_to_value_set.cbegin ();
26081          it != m_name_to_value_set.cend ();
26082          ++it)
26083       {
26084         const char *const name = it->first.c_str ();
26085         const uint32_t hash = dwarf5_djb_hash (name);
26086         hash_it_pair hashitpair;
26087         hashitpair.hash = hash;
26088         hashitpair.it = it;
26089         auto &slot = bucket_hash[hash % bucket_hash.size()];
26090         slot.push_front (std::move (hashitpair));
26091       }
26092     for (size_t bucket_ix = 0; bucket_ix < bucket_hash.size (); ++bucket_ix)
26093       {
26094         const std::forward_list<hash_it_pair> &hashitlist
26095           = bucket_hash[bucket_ix];
26096         if (hashitlist.empty ())
26097           continue;
26098         uint32_t &bucket_slot = m_bucket_table[bucket_ix];
26099         /* The hashes array is indexed starting at 1.  */
26100         store_unsigned_integer (reinterpret_cast<gdb_byte *> (&bucket_slot),
26101                                 sizeof (bucket_slot), m_dwarf5_byte_order,
26102                                 m_hash_table.size () + 1);
26103         for (const hash_it_pair &hashitpair : hashitlist)
26104           {
26105             m_hash_table.push_back (0);
26106             store_unsigned_integer (reinterpret_cast<gdb_byte *>
26107                                                         (&m_hash_table.back ()),
26108                                     sizeof (m_hash_table.back ()),
26109                                     m_dwarf5_byte_order, hashitpair.hash);
26110             const c_str_view &name = hashitpair.it->first;
26111             const std::set<symbol_value> &value_set = hashitpair.it->second;
26112             m_name_table_string_offs.push_back_reorder
26113               (m_debugstrlookup.lookup (name.c_str ()));
26114             m_name_table_entry_offs.push_back_reorder (m_entry_pool.size ());
26115             gdb_assert (!value_set.empty ());
26116             for (const symbol_value &value : value_set)
26117               {
26118                 int &idx = m_indexkey_to_idx[index_key (value.dwarf_tag,
26119                                                         value.is_static,
26120                                                         value.kind)];
26121                 if (idx == 0)
26122                   {
26123                     idx = m_idx_next++;
26124                     m_abbrev_table.append_unsigned_leb128 (idx);
26125                     m_abbrev_table.append_unsigned_leb128 (value.dwarf_tag);
26126                     m_abbrev_table.append_unsigned_leb128
26127                               (value.kind == unit_kind::cu ? DW_IDX_compile_unit
26128                                                            : DW_IDX_type_unit);
26129                     m_abbrev_table.append_unsigned_leb128 (DW_FORM_udata);
26130                     m_abbrev_table.append_unsigned_leb128 (value.is_static
26131                                                            ? DW_IDX_GNU_internal
26132                                                            : DW_IDX_GNU_external);
26133                     m_abbrev_table.append_unsigned_leb128 (DW_FORM_flag_present);
26134
26135                     /* Terminate attributes list.  */
26136                     m_abbrev_table.append_unsigned_leb128 (0);
26137                     m_abbrev_table.append_unsigned_leb128 (0);
26138                   }
26139
26140                 m_entry_pool.append_unsigned_leb128 (idx);
26141                 m_entry_pool.append_unsigned_leb128 (value.cu_index);
26142               }
26143
26144             /* Terminate the list of CUs.  */
26145             m_entry_pool.append_unsigned_leb128 (0);
26146           }
26147       }
26148     gdb_assert (m_hash_table.size () == name_count);
26149
26150     /* Terminate tags list.  */
26151     m_abbrev_table.append_unsigned_leb128 (0);
26152   }
26153
26154   /* Return .debug_names bucket count.  This must be called only after
26155      calling the build method.  */
26156   uint32_t bucket_count () const
26157   {
26158     /* Verify the build method has been already called.  */
26159     gdb_assert (!m_abbrev_table.empty ());
26160     const uint32_t retval = m_bucket_table.size ();
26161
26162     /* Check for overflow.  */
26163     gdb_assert (retval == m_bucket_table.size ());
26164     return retval;
26165   }
26166
26167   /* Return .debug_names names count.  This must be called only after
26168      calling the build method.  */
26169   uint32_t name_count () const
26170   {
26171     /* Verify the build method has been already called.  */
26172     gdb_assert (!m_abbrev_table.empty ());
26173     const uint32_t retval = m_hash_table.size ();
26174
26175     /* Check for overflow.  */
26176     gdb_assert (retval == m_hash_table.size ());
26177     return retval;
26178   }
26179
26180   /* Return number of bytes of .debug_names abbreviation table.  This
26181      must be called only after calling the build method.  */
26182   uint32_t abbrev_table_bytes () const
26183   {
26184     gdb_assert (!m_abbrev_table.empty ());
26185     return m_abbrev_table.size ();
26186   }
26187
26188   /* Recurse into all "included" dependencies and store their symbols
26189      as if they appeared in this psymtab.  */
26190   void recursively_write_psymbols
26191     (struct objfile *objfile,
26192      struct partial_symtab *psymtab,
26193      std::unordered_set<partial_symbol *> &psyms_seen,
26194      int cu_index)
26195   {
26196     for (int i = 0; i < psymtab->number_of_dependencies; ++i)
26197       if (psymtab->dependencies[i]->user != NULL)
26198         recursively_write_psymbols (objfile, psymtab->dependencies[i],
26199                                     psyms_seen, cu_index);
26200
26201     write_psymbols (psyms_seen,
26202                     &objfile->global_psymbols[psymtab->globals_offset],
26203                     psymtab->n_global_syms, cu_index, false, unit_kind::cu);
26204     write_psymbols (psyms_seen,
26205                     &objfile->static_psymbols[psymtab->statics_offset],
26206                     psymtab->n_static_syms, cu_index, true, unit_kind::cu);
26207   }
26208
26209   /* Return number of bytes the .debug_names section will have.  This
26210      must be called only after calling the build method.  */
26211   size_t bytes () const
26212   {
26213     /* Verify the build method has been already called.  */
26214     gdb_assert (!m_abbrev_table.empty ());
26215     size_t expected_bytes = 0;
26216     expected_bytes += m_bucket_table.size () * sizeof (m_bucket_table[0]);
26217     expected_bytes += m_hash_table.size () * sizeof (m_hash_table[0]);
26218     expected_bytes += m_name_table_string_offs.bytes ();
26219     expected_bytes += m_name_table_entry_offs.bytes ();
26220     expected_bytes += m_abbrev_table.size ();
26221     expected_bytes += m_entry_pool.size ();
26222     return expected_bytes;
26223   }
26224
26225   /* Write .debug_names to FILE_NAMES and .debug_str addition to
26226      FILE_STR.  This must be called only after calling the build
26227      method.  */
26228   void file_write (FILE *file_names, FILE *file_str) const
26229   {
26230     /* Verify the build method has been already called.  */
26231     gdb_assert (!m_abbrev_table.empty ());
26232     ::file_write (file_names, m_bucket_table);
26233     ::file_write (file_names, m_hash_table);
26234     m_name_table_string_offs.file_write (file_names);
26235     m_name_table_entry_offs.file_write (file_names);
26236     m_abbrev_table.file_write (file_names);
26237     m_entry_pool.file_write (file_names);
26238     m_debugstrlookup.file_write (file_str);
26239   }
26240
26241   /* A helper user data for write_one_signatured_type.  */
26242   class write_one_signatured_type_data
26243   {
26244   public:
26245     write_one_signatured_type_data (debug_names &nametable_,
26246                                     signatured_type_index_data &&info_)
26247     : nametable (nametable_), info (std::move (info_))
26248     {}
26249     debug_names &nametable;
26250     struct signatured_type_index_data info;
26251   };
26252
26253   /* A helper function to pass write_one_signatured_type to
26254      htab_traverse_noresize.  */
26255   static int
26256   write_one_signatured_type (void **slot, void *d)
26257   {
26258     write_one_signatured_type_data *data = (write_one_signatured_type_data *) d;
26259     struct signatured_type_index_data *info = &data->info;
26260     struct signatured_type *entry = (struct signatured_type *) *slot;
26261
26262     data->nametable.write_one_signatured_type (entry, info);
26263
26264     return 1;
26265   }
26266
26267 private:
26268
26269   /* Storage for symbol names mapping them to their .debug_str section
26270      offsets.  */
26271   class debug_str_lookup
26272   {
26273   public:
26274
26275     /* Object costructor to be called for current DWARF2_PER_OBJFILE.
26276        All .debug_str section strings are automatically stored.  */
26277     debug_str_lookup ()
26278       : m_abfd (dwarf2_per_objfile->objfile->obfd)
26279     {
26280       dwarf2_read_section (dwarf2_per_objfile->objfile,
26281                            &dwarf2_per_objfile->str);
26282       if (dwarf2_per_objfile->str.buffer == NULL)
26283         return;
26284       for (const gdb_byte *data = dwarf2_per_objfile->str.buffer;
26285            data < (dwarf2_per_objfile->str.buffer
26286                    + dwarf2_per_objfile->str.size);)
26287         {
26288           const char *const s = reinterpret_cast<const char *> (data);
26289           const auto insertpair
26290             = m_str_table.emplace (c_str_view (s),
26291                                    data - dwarf2_per_objfile->str.buffer);
26292           if (!insertpair.second)
26293             complaint (&symfile_complaints,
26294                        _("Duplicate string \"%s\" in "
26295                          ".debug_str section [in module %s]"),
26296                        s, bfd_get_filename (m_abfd));
26297           data += strlen (s) + 1;
26298         }
26299     }
26300
26301     /* Return offset of symbol name S in the .debug_str section.  Add
26302        such symbol to the section's end if it does not exist there
26303        yet.  */
26304     size_t lookup (const char *s)
26305     {
26306       const auto it = m_str_table.find (c_str_view (s));
26307       if (it != m_str_table.end ())
26308         return it->second;
26309       const size_t offset = (dwarf2_per_objfile->str.size
26310                              + m_str_add_buf.size ());
26311       m_str_table.emplace (c_str_view (s), offset);
26312       m_str_add_buf.append_cstr0 (s);
26313       return offset;
26314     }
26315
26316     /* Append the end of the .debug_str section to FILE.  */
26317     void file_write (FILE *file) const
26318     {
26319       m_str_add_buf.file_write (file);
26320     }
26321
26322   private:
26323     std::unordered_map<c_str_view, size_t, c_str_view_hasher> m_str_table;
26324     bfd *const m_abfd;
26325
26326     /* Data to add at the end of .debug_str for new needed symbol names.  */
26327     data_buf m_str_add_buf;
26328   };
26329
26330   /* Container to map used DWARF tags to their .debug_names abbreviation
26331      tags.  */
26332   class index_key
26333   {
26334   public:
26335     index_key (int dwarf_tag_, bool is_static_, unit_kind kind_)
26336       : dwarf_tag (dwarf_tag_), is_static (is_static_), kind (kind_)
26337     {
26338     }
26339
26340     bool
26341     operator== (const index_key &other) const
26342     {
26343       return (dwarf_tag == other.dwarf_tag && is_static == other.is_static
26344               && kind == other.kind);
26345     }
26346
26347     const int dwarf_tag;
26348     const bool is_static;
26349     const unit_kind kind;
26350   };
26351
26352   /* Provide std::unordered_map::hasher for index_key.  */
26353   class index_key_hasher
26354   {
26355   public:
26356     size_t
26357     operator () (const index_key &key) const
26358     {
26359       return (std::hash<int>() (key.dwarf_tag) << 1) | key.is_static;
26360     }
26361   };
26362
26363   /* Parameters of one symbol entry.  */
26364   class symbol_value
26365   {
26366   public:
26367     const int dwarf_tag, cu_index;
26368     const bool is_static;
26369     const unit_kind kind;
26370
26371     symbol_value (int dwarf_tag_, int cu_index_, bool is_static_,
26372                   unit_kind kind_)
26373       : dwarf_tag (dwarf_tag_), cu_index (cu_index_), is_static (is_static_),
26374         kind (kind_)
26375     {}
26376
26377     bool
26378     operator< (const symbol_value &other) const
26379     {
26380 #define X(n) \
26381   do \
26382     { \
26383       if (n < other.n) \
26384         return true; \
26385       if (n > other.n) \
26386         return false; \
26387     } \
26388   while (0)
26389       X (dwarf_tag);
26390       X (is_static);
26391       X (kind);
26392       X (cu_index);
26393 #undef X
26394       return false;
26395     }
26396   };
26397
26398   /* Abstract base class to unify DWARF-32 and DWARF-64 name table
26399      output.  */
26400   class offset_vec
26401   {
26402   protected:
26403     const bfd_endian dwarf5_byte_order;
26404   public:
26405     explicit offset_vec (bfd_endian dwarf5_byte_order_)
26406       : dwarf5_byte_order (dwarf5_byte_order_)
26407     {}
26408
26409     /* Call std::vector::reserve for NELEM elements.  */
26410     virtual void reserve (size_t nelem) = 0;
26411
26412     /* Call std::vector::push_back with store_unsigned_integer byte
26413        reordering for ELEM.  */
26414     virtual void push_back_reorder (size_t elem) = 0;
26415
26416     /* Return expected output size in bytes.  */
26417     virtual size_t bytes () const = 0;
26418
26419     /* Write name table to FILE.  */
26420     virtual void file_write (FILE *file) const = 0;
26421   };
26422
26423   /* Template to unify DWARF-32 and DWARF-64 output.  */
26424   template<typename OffsetSize>
26425   class offset_vec_tmpl : public offset_vec
26426   {
26427   public:
26428     explicit offset_vec_tmpl (bfd_endian dwarf5_byte_order_)
26429       : offset_vec (dwarf5_byte_order_)
26430     {}
26431
26432     /* Implement offset_vec::reserve.  */
26433     void reserve (size_t nelem) override
26434     {
26435       m_vec.reserve (nelem);
26436     }
26437
26438     /* Implement offset_vec::push_back_reorder.  */
26439     void push_back_reorder (size_t elem) override
26440     {
26441       m_vec.push_back (elem);
26442       /* Check for overflow.  */
26443       gdb_assert (m_vec.back () == elem);
26444       store_unsigned_integer (reinterpret_cast<gdb_byte *> (&m_vec.back ()),
26445                               sizeof (m_vec.back ()), dwarf5_byte_order, elem);
26446     }
26447
26448     /* Implement offset_vec::bytes.  */
26449     size_t bytes () const override
26450     {
26451       return m_vec.size () * sizeof (m_vec[0]);
26452     }
26453
26454     /* Implement offset_vec::file_write.  */
26455     void file_write (FILE *file) const override
26456     {
26457       ::file_write (file, m_vec);
26458     }
26459
26460   private:
26461     std::vector<OffsetSize> m_vec;
26462   };
26463
26464   /* Base class to unify DWARF-32 and DWARF-64 .debug_names output
26465      respecting name table width.  */
26466   class dwarf
26467   {
26468   public:
26469     offset_vec &name_table_string_offs, &name_table_entry_offs;
26470
26471     dwarf (offset_vec &name_table_string_offs_,
26472            offset_vec &name_table_entry_offs_)
26473       : name_table_string_offs (name_table_string_offs_),
26474         name_table_entry_offs (name_table_entry_offs_)
26475     {
26476     }
26477   };
26478
26479   /* Template to unify DWARF-32 and DWARF-64 .debug_names output
26480      respecting name table width.  */
26481   template<typename OffsetSize>
26482   class dwarf_tmpl : public dwarf
26483   {
26484   public:
26485     explicit dwarf_tmpl (bfd_endian dwarf5_byte_order_)
26486       : dwarf (m_name_table_string_offs, m_name_table_entry_offs),
26487         m_name_table_string_offs (dwarf5_byte_order_),
26488         m_name_table_entry_offs (dwarf5_byte_order_)
26489     {}
26490
26491   private:
26492     offset_vec_tmpl<OffsetSize> m_name_table_string_offs;
26493     offset_vec_tmpl<OffsetSize> m_name_table_entry_offs;
26494   };
26495
26496   /* Try to reconstruct original DWARF tag for given partial_symbol.
26497      This function is not DWARF-5 compliant but it is sufficient for
26498      GDB as a DWARF-5 index consumer.  */
26499   static int psymbol_tag (const struct partial_symbol *psym)
26500   {
26501     domain_enum domain = PSYMBOL_DOMAIN (psym);
26502     enum address_class aclass = PSYMBOL_CLASS (psym);
26503
26504     switch (domain)
26505       {
26506       case VAR_DOMAIN:
26507         switch (aclass)
26508           {
26509           case LOC_BLOCK:
26510             return DW_TAG_subprogram;
26511           case LOC_TYPEDEF:
26512             return DW_TAG_typedef;
26513           case LOC_COMPUTED:
26514           case LOC_CONST_BYTES:
26515           case LOC_OPTIMIZED_OUT:
26516           case LOC_STATIC:
26517             return DW_TAG_variable;
26518           case LOC_CONST:
26519             /* Note: It's currently impossible to recognize psyms as enum values
26520                short of reading the type info.  For now punt.  */
26521             return DW_TAG_variable;
26522           default:
26523             /* There are other LOC_FOO values that one might want to classify
26524                as variables, but dwarf2read.c doesn't currently use them.  */
26525             return DW_TAG_variable;
26526           }
26527       case STRUCT_DOMAIN:
26528         return DW_TAG_structure_type;
26529       default:
26530         return 0;
26531       }
26532   }
26533
26534   /* Call insert for all partial symbols and mark them in PSYMS_SEEN.  */
26535   void write_psymbols (std::unordered_set<partial_symbol *> &psyms_seen,
26536                        struct partial_symbol **psymp, int count, int cu_index,
26537                        bool is_static, unit_kind kind)
26538   {
26539     for (; count-- > 0; ++psymp)
26540       {
26541         struct partial_symbol *psym = *psymp;
26542
26543         if (SYMBOL_LANGUAGE (psym) == language_ada)
26544           error (_("Ada is not currently supported by the index"));
26545
26546         /* Only add a given psymbol once.  */
26547         if (psyms_seen.insert (psym).second)
26548           insert (psym, cu_index, is_static, kind);
26549       }
26550   }
26551
26552   /* A helper function that writes a single signatured_type
26553      to a debug_names.  */
26554   void
26555   write_one_signatured_type (struct signatured_type *entry,
26556                              struct signatured_type_index_data *info)
26557   {
26558     struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
26559
26560     write_psymbols (info->psyms_seen,
26561                     &info->objfile->global_psymbols[psymtab->globals_offset],
26562                     psymtab->n_global_syms, info->cu_index, false,
26563                     unit_kind::tu);
26564     write_psymbols (info->psyms_seen,
26565                     &info->objfile->static_psymbols[psymtab->statics_offset],
26566                     psymtab->n_static_syms, info->cu_index, true,
26567                     unit_kind::tu);
26568
26569     info->types_list.append_uint (dwarf5_offset_size (), m_dwarf5_byte_order,
26570                                   to_underlying (entry->per_cu.sect_off));
26571
26572     ++info->cu_index;
26573   }
26574
26575   /* Store value of each symbol.  */
26576   std::unordered_map<c_str_view, std::set<symbol_value>, c_str_view_hasher>
26577     m_name_to_value_set;
26578
26579   /* Tables of DWARF-5 .debug_names.  They are in object file byte
26580      order.  */
26581   std::vector<uint32_t> m_bucket_table;
26582   std::vector<uint32_t> m_hash_table;
26583
26584   const bfd_endian m_dwarf5_byte_order;
26585   dwarf_tmpl<uint32_t> m_dwarf32;
26586   dwarf_tmpl<uint64_t> m_dwarf64;
26587   dwarf &m_dwarf;
26588   offset_vec &m_name_table_string_offs, &m_name_table_entry_offs;
26589   debug_str_lookup m_debugstrlookup;
26590
26591   /* Map each used .debug_names abbreviation tag parameter to its
26592      index value.  */
26593   std::unordered_map<index_key, int, index_key_hasher> m_indexkey_to_idx;
26594
26595   /* Next unused .debug_names abbreviation tag for
26596      m_indexkey_to_idx.  */
26597   int m_idx_next = 1;
26598
26599   /* .debug_names abbreviation table.  */
26600   data_buf m_abbrev_table;
26601
26602   /* .debug_names entry pool.  */
26603   data_buf m_entry_pool;
26604 };
26605
26606 /* Return iff any of the needed offsets does not fit into 32-bit
26607    .debug_names section.  */
26608
26609 static bool
26610 check_dwarf64_offsets ()
26611 {
26612   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26613     {
26614       const dwarf2_per_cu_data &per_cu = *dwarf2_per_objfile->all_comp_units[i];
26615
26616       if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
26617         return true;
26618     }
26619   for (int i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
26620     {
26621       const signatured_type &sigtype = *dwarf2_per_objfile->all_type_units[i];
26622       const dwarf2_per_cu_data &per_cu = sigtype.per_cu;
26623
26624       if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
26625         return true;
26626     }
26627   return false;
26628 }
26629
26630 /* The psyms_seen set is potentially going to be largish (~40k
26631    elements when indexing a -g3 build of GDB itself).  Estimate the
26632    number of elements in order to avoid too many rehashes, which
26633    require rebuilding buckets and thus many trips to
26634    malloc/free.  */
26635
26636 static size_t
26637 psyms_seen_size ()
26638 {
26639   size_t psyms_count = 0;
26640   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26641     {
26642       struct dwarf2_per_cu_data *per_cu
26643         = dwarf2_per_objfile->all_comp_units[i];
26644       struct partial_symtab *psymtab = per_cu->v.psymtab;
26645
26646       if (psymtab != NULL && psymtab->user == NULL)
26647         recursively_count_psymbols (psymtab, psyms_count);
26648     }
26649   /* Generating an index for gdb itself shows a ratio of
26650      TOTAL_SEEN_SYMS/UNIQUE_SYMS or ~5.  4 seems like a good bet.  */
26651   return psyms_count / 4;
26652 }
26653
26654 /* Write new .gdb_index section for OBJFILE into OUT_FILE.
26655    Return how many bytes were expected to be written into OUT_FILE.  */
26656
26657 static size_t
26658 write_gdbindex (struct objfile *objfile, FILE *out_file)
26659 {
26660   mapped_symtab symtab;
26661   data_buf cu_list;
26662
26663   /* While we're scanning CU's create a table that maps a psymtab pointer
26664      (which is what addrmap records) to its index (which is what is recorded
26665      in the index file).  This will later be needed to write the address
26666      table.  */
26667   psym_index_map cu_index_htab;
26668   cu_index_htab.reserve (dwarf2_per_objfile->n_comp_units);
26669
26670   /* The CU list is already sorted, so we don't need to do additional
26671      work here.  Also, the debug_types entries do not appear in
26672      all_comp_units, but only in their own hash table.  */
26673
26674   std::unordered_set<partial_symbol *> psyms_seen (psyms_seen_size ());
26675   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26676     {
26677       struct dwarf2_per_cu_data *per_cu
26678         = dwarf2_per_objfile->all_comp_units[i];
26679       struct partial_symtab *psymtab = per_cu->v.psymtab;
26680
26681       /* CU of a shared file from 'dwz -m' may be unused by this main file.
26682          It may be referenced from a local scope but in such case it does not
26683          need to be present in .gdb_index.  */
26684       if (psymtab == NULL)
26685         continue;
26686
26687       if (psymtab->user == NULL)
26688         recursively_write_psymbols (objfile, psymtab, &symtab,
26689                                     psyms_seen, i);
26690
26691       const auto insertpair = cu_index_htab.emplace (psymtab, i);
26692       gdb_assert (insertpair.second);
26693
26694       cu_list.append_uint (8, BFD_ENDIAN_LITTLE,
26695                            to_underlying (per_cu->sect_off));
26696       cu_list.append_uint (8, BFD_ENDIAN_LITTLE, per_cu->length);
26697     }
26698
26699   /* Dump the address map.  */
26700   data_buf addr_vec;
26701   write_address_map (objfile, addr_vec, cu_index_htab);
26702
26703   /* Write out the .debug_type entries, if any.  */
26704   data_buf types_cu_list;
26705   if (dwarf2_per_objfile->signatured_types)
26706     {
26707       signatured_type_index_data sig_data (types_cu_list,
26708                                            psyms_seen);
26709
26710       sig_data.objfile = objfile;
26711       sig_data.symtab = &symtab;
26712       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
26713       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
26714                               write_one_signatured_type, &sig_data);
26715     }
26716
26717   /* Now that we've processed all symbols we can shrink their cu_indices
26718      lists.  */
26719   uniquify_cu_indices (&symtab);
26720
26721   data_buf symtab_vec, constant_pool;
26722   write_hash_table (&symtab, symtab_vec, constant_pool);
26723
26724   data_buf contents;
26725   const offset_type size_of_contents = 6 * sizeof (offset_type);
26726   offset_type total_len = size_of_contents;
26727
26728   /* The version number.  */
26729   contents.append_data (MAYBE_SWAP (8));
26730
26731   /* The offset of the CU list from the start of the file.  */
26732   contents.append_data (MAYBE_SWAP (total_len));
26733   total_len += cu_list.size ();
26734
26735   /* The offset of the types CU list from the start of the file.  */
26736   contents.append_data (MAYBE_SWAP (total_len));
26737   total_len += types_cu_list.size ();
26738
26739   /* The offset of the address table from the start of the file.  */
26740   contents.append_data (MAYBE_SWAP (total_len));
26741   total_len += addr_vec.size ();
26742
26743   /* The offset of the symbol table from the start of the file.  */
26744   contents.append_data (MAYBE_SWAP (total_len));
26745   total_len += symtab_vec.size ();
26746
26747   /* The offset of the constant pool from the start of the file.  */
26748   contents.append_data (MAYBE_SWAP (total_len));
26749   total_len += constant_pool.size ();
26750
26751   gdb_assert (contents.size () == size_of_contents);
26752
26753   contents.file_write (out_file);
26754   cu_list.file_write (out_file);
26755   types_cu_list.file_write (out_file);
26756   addr_vec.file_write (out_file);
26757   symtab_vec.file_write (out_file);
26758   constant_pool.file_write (out_file);
26759
26760   return total_len;
26761 }
26762
26763 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
26764 static const gdb_byte dwarf5_gdb_augmentation[] = { 'G', 'D', 'B', 0 };
26765
26766 /* Write a new .debug_names section for OBJFILE into OUT_FILE, write
26767    needed addition to .debug_str section to OUT_FILE_STR.  Return how
26768    many bytes were expected to be written into OUT_FILE.  */
26769
26770 static size_t
26771 write_debug_names (struct objfile *objfile, FILE *out_file, FILE *out_file_str)
26772 {
26773   const bool dwarf5_is_dwarf64 = check_dwarf64_offsets ();
26774   const enum bfd_endian dwarf5_byte_order
26775     = gdbarch_byte_order (get_objfile_arch (objfile));
26776
26777   /* The CU list is already sorted, so we don't need to do additional
26778      work here.  Also, the debug_types entries do not appear in
26779      all_comp_units, but only in their own hash table.  */
26780   data_buf cu_list;
26781   debug_names nametable (dwarf5_is_dwarf64, dwarf5_byte_order);
26782   std::unordered_set<partial_symbol *> psyms_seen (psyms_seen_size ());
26783   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26784     {
26785       const dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->all_comp_units[i];
26786       partial_symtab *psymtab = per_cu->v.psymtab;
26787
26788       /* CU of a shared file from 'dwz -m' may be unused by this main
26789          file.  It may be referenced from a local scope but in such
26790          case it does not need to be present in .debug_names.  */
26791       if (psymtab == NULL)
26792         continue;
26793
26794       if (psymtab->user == NULL)
26795         nametable.recursively_write_psymbols (objfile, psymtab, psyms_seen, i);
26796
26797       cu_list.append_uint (nametable.dwarf5_offset_size (), dwarf5_byte_order,
26798                            to_underlying (per_cu->sect_off));
26799     }
26800
26801   /* Write out the .debug_type entries, if any.  */
26802   data_buf types_cu_list;
26803   if (dwarf2_per_objfile->signatured_types)
26804     {
26805       debug_names::write_one_signatured_type_data sig_data (nametable,
26806                         signatured_type_index_data (types_cu_list, psyms_seen));
26807
26808       sig_data.info.objfile = objfile;
26809       /* It is used only for gdb_index.  */
26810       sig_data.info.symtab = nullptr;
26811       sig_data.info.cu_index = 0;
26812       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
26813                               debug_names::write_one_signatured_type,
26814                               &sig_data);
26815     }
26816
26817   nametable.build ();
26818
26819   /* No addr_vec - DWARF-5 uses .debug_aranges generated by GCC.  */
26820
26821   const offset_type bytes_of_header
26822     = ((dwarf5_is_dwarf64 ? 12 : 4)
26823        + 2 + 2 + 7 * 4
26824        + sizeof (dwarf5_gdb_augmentation));
26825   size_t expected_bytes = 0;
26826   expected_bytes += bytes_of_header;
26827   expected_bytes += cu_list.size ();
26828   expected_bytes += types_cu_list.size ();
26829   expected_bytes += nametable.bytes ();
26830   data_buf header;
26831
26832   if (!dwarf5_is_dwarf64)
26833     {
26834       const uint64_t size64 = expected_bytes - 4;
26835       gdb_assert (size64 < 0xfffffff0);
26836       header.append_uint (4, dwarf5_byte_order, size64);
26837     }
26838   else
26839     {
26840       header.append_uint (4, dwarf5_byte_order, 0xffffffff);
26841       header.append_uint (8, dwarf5_byte_order, expected_bytes - 12);
26842     }
26843
26844   /* The version number.  */
26845   header.append_uint (2, dwarf5_byte_order, 5);
26846
26847   /* Padding.  */
26848   header.append_uint (2, dwarf5_byte_order, 0);
26849
26850   /* comp_unit_count - The number of CUs in the CU list.  */
26851   header.append_uint (4, dwarf5_byte_order, dwarf2_per_objfile->n_comp_units);
26852
26853   /* local_type_unit_count - The number of TUs in the local TU
26854      list.  */
26855   header.append_uint (4, dwarf5_byte_order, dwarf2_per_objfile->n_type_units);
26856
26857   /* foreign_type_unit_count - The number of TUs in the foreign TU
26858      list.  */
26859   header.append_uint (4, dwarf5_byte_order, 0);
26860
26861   /* bucket_count - The number of hash buckets in the hash lookup
26862      table.  */
26863   header.append_uint (4, dwarf5_byte_order, nametable.bucket_count ());
26864
26865   /* name_count - The number of unique names in the index.  */
26866   header.append_uint (4, dwarf5_byte_order, nametable.name_count ());
26867
26868   /* abbrev_table_size - The size in bytes of the abbreviations
26869      table.  */
26870   header.append_uint (4, dwarf5_byte_order, nametable.abbrev_table_bytes ());
26871
26872   /* augmentation_string_size - The size in bytes of the augmentation
26873      string.  This value is rounded up to a multiple of 4.  */
26874   static_assert (sizeof (dwarf5_gdb_augmentation) % 4 == 0, "");
26875   header.append_uint (4, dwarf5_byte_order, sizeof (dwarf5_gdb_augmentation));
26876   header.append_data (dwarf5_gdb_augmentation);
26877
26878   gdb_assert (header.size () == bytes_of_header);
26879
26880   header.file_write (out_file);
26881   cu_list.file_write (out_file);
26882   types_cu_list.file_write (out_file);
26883   nametable.file_write (out_file, out_file_str);
26884
26885   return expected_bytes;
26886 }
26887
26888 /* Assert that FILE's size is EXPECTED_SIZE.  Assumes file's seek
26889    position is at the end of the file.  */
26890
26891 static void
26892 assert_file_size (FILE *file, const char *filename, size_t expected_size)
26893 {
26894   const auto file_size = ftell (file);
26895   if (file_size == -1)
26896     error (_("Can't get `%s' size"), filename);
26897   gdb_assert (file_size == expected_size);
26898 }
26899
26900 /* Create an index file for OBJFILE in the directory DIR.  */
26901
26902 static void
26903 write_psymtabs_to_index (struct objfile *objfile, const char *dir,
26904                          dw_index_kind index_kind)
26905 {
26906   if (dwarf2_per_objfile->using_index)
26907     error (_("Cannot use an index to create the index"));
26908
26909   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
26910     error (_("Cannot make an index when the file has multiple .debug_types sections"));
26911
26912   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
26913     return;
26914
26915   struct stat st;
26916   if (stat (objfile_name (objfile), &st) < 0)
26917     perror_with_name (objfile_name (objfile));
26918
26919   std::string filename (std::string (dir) + SLASH_STRING
26920                         + lbasename (objfile_name (objfile))
26921                         + (index_kind == dw_index_kind::DEBUG_NAMES
26922                            ? INDEX5_SUFFIX : INDEX4_SUFFIX));
26923
26924   FILE *out_file = gdb_fopen_cloexec (filename.c_str (), "wb").release ();
26925   if (!out_file)
26926     error (_("Can't open `%s' for writing"), filename.c_str ());
26927
26928   /* Order matters here; we want FILE to be closed before FILENAME is
26929      unlinked, because on MS-Windows one cannot delete a file that is
26930      still open.  (Don't call anything here that might throw until
26931      file_closer is created.)  */
26932   gdb::unlinker unlink_file (filename.c_str ());
26933   gdb_file_up close_out_file (out_file);
26934
26935   if (index_kind == dw_index_kind::DEBUG_NAMES)
26936     {
26937       std::string filename_str (std::string (dir) + SLASH_STRING
26938                                 + lbasename (objfile_name (objfile))
26939                                 + DEBUG_STR_SUFFIX);
26940       FILE *out_file_str
26941         = gdb_fopen_cloexec (filename_str.c_str (), "wb").release ();
26942       if (!out_file_str)
26943         error (_("Can't open `%s' for writing"), filename_str.c_str ());
26944       gdb::unlinker unlink_file_str (filename_str.c_str ());
26945       gdb_file_up close_out_file_str (out_file_str);
26946
26947       const size_t total_len
26948         = write_debug_names (objfile, out_file, out_file_str);
26949       assert_file_size (out_file, filename.c_str (), total_len);
26950
26951       /* We want to keep the file .debug_str file too.  */
26952       unlink_file_str.keep ();
26953     }
26954   else
26955     {
26956       const size_t total_len
26957         = write_gdbindex (objfile, out_file);
26958       assert_file_size (out_file, filename.c_str (), total_len);
26959     }
26960
26961   /* We want to keep the file.  */
26962   unlink_file.keep ();
26963 }
26964
26965 /* Implementation of the `save gdb-index' command.
26966    
26967    Note that the .gdb_index file format used by this command is
26968    documented in the GDB manual.  Any changes here must be documented
26969    there.  */
26970
26971 static void
26972 save_gdb_index_command (const char *arg, int from_tty)
26973 {
26974   struct objfile *objfile;
26975   const char dwarf5space[] = "-dwarf-5 ";
26976   dw_index_kind index_kind = dw_index_kind::GDB_INDEX;
26977
26978   if (!arg)
26979     arg = "";
26980
26981   arg = skip_spaces (arg);
26982   if (strncmp (arg, dwarf5space, strlen (dwarf5space)) == 0)
26983     {
26984       index_kind = dw_index_kind::DEBUG_NAMES;
26985       arg += strlen (dwarf5space);
26986       arg = skip_spaces (arg);
26987     }
26988
26989   if (!*arg)
26990     error (_("usage: save gdb-index [-dwarf-5] DIRECTORY"));
26991
26992   ALL_OBJFILES (objfile)
26993   {
26994     struct stat st;
26995
26996     /* If the objfile does not correspond to an actual file, skip it.  */
26997     if (stat (objfile_name (objfile), &st) < 0)
26998       continue;
26999
27000     dwarf2_per_objfile
27001       = (struct dwarf2_per_objfile *) objfile_data (objfile,
27002                                                     dwarf2_objfile_data_key);
27003     if (dwarf2_per_objfile)
27004       {
27005
27006         TRY
27007           {
27008             write_psymtabs_to_index (objfile, arg, index_kind);
27009           }
27010         CATCH (except, RETURN_MASK_ERROR)
27011           {
27012             exception_fprintf (gdb_stderr, except,
27013                                _("Error while writing index for `%s': "),
27014                                objfile_name (objfile));
27015           }
27016         END_CATCH
27017       }
27018   }
27019 }
27020
27021 \f
27022
27023 int dwarf_always_disassemble;
27024
27025 static void
27026 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
27027                                struct cmd_list_element *c, const char *value)
27028 {
27029   fprintf_filtered (file,
27030                     _("Whether to always disassemble "
27031                       "DWARF expressions is %s.\n"),
27032                     value);
27033 }
27034
27035 static void
27036 show_check_physname (struct ui_file *file, int from_tty,
27037                      struct cmd_list_element *c, const char *value)
27038 {
27039   fprintf_filtered (file,
27040                     _("Whether to check \"physname\" is %s.\n"),
27041                     value);
27042 }
27043
27044 void
27045 _initialize_dwarf2_read (void)
27046 {
27047   struct cmd_list_element *c;
27048
27049   dwarf2_objfile_data_key
27050     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
27051
27052   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
27053 Set DWARF specific variables.\n\
27054 Configure DWARF variables such as the cache size"),
27055                   &set_dwarf_cmdlist, "maintenance set dwarf ",
27056                   0/*allow-unknown*/, &maintenance_set_cmdlist);
27057
27058   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
27059 Show DWARF specific variables\n\
27060 Show DWARF variables such as the cache size"),
27061                   &show_dwarf_cmdlist, "maintenance show dwarf ",
27062                   0/*allow-unknown*/, &maintenance_show_cmdlist);
27063
27064   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
27065                             &dwarf_max_cache_age, _("\
27066 Set the upper bound on the age of cached DWARF compilation units."), _("\
27067 Show the upper bound on the age of cached DWARF compilation units."), _("\
27068 A higher limit means that cached compilation units will be stored\n\
27069 in memory longer, and more total memory will be used.  Zero disables\n\
27070 caching, which can slow down startup."),
27071                             NULL,
27072                             show_dwarf_max_cache_age,
27073                             &set_dwarf_cmdlist,
27074                             &show_dwarf_cmdlist);
27075
27076   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
27077                            &dwarf_always_disassemble, _("\
27078 Set whether `info address' always disassembles DWARF expressions."), _("\
27079 Show whether `info address' always disassembles DWARF expressions."), _("\
27080 When enabled, DWARF expressions are always printed in an assembly-like\n\
27081 syntax.  When disabled, expressions will be printed in a more\n\
27082 conversational style, when possible."),
27083                            NULL,
27084                            show_dwarf_always_disassemble,
27085                            &set_dwarf_cmdlist,
27086                            &show_dwarf_cmdlist);
27087
27088   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
27089 Set debugging of the DWARF reader."), _("\
27090 Show debugging of the DWARF reader."), _("\
27091 When enabled (non-zero), debugging messages are printed during DWARF\n\
27092 reading and symtab expansion.  A value of 1 (one) provides basic\n\
27093 information.  A value greater than 1 provides more verbose information."),
27094                             NULL,
27095                             NULL,
27096                             &setdebuglist, &showdebuglist);
27097
27098   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
27099 Set debugging of the DWARF DIE reader."), _("\
27100 Show debugging of the DWARF DIE reader."), _("\
27101 When enabled (non-zero), DIEs are dumped after they are read in.\n\
27102 The value is the maximum depth to print."),
27103                              NULL,
27104                              NULL,
27105                              &setdebuglist, &showdebuglist);
27106
27107   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
27108 Set debugging of the dwarf line reader."), _("\
27109 Show debugging of the dwarf line reader."), _("\
27110 When enabled (non-zero), line number entries are dumped as they are read in.\n\
27111 A value of 1 (one) provides basic information.\n\
27112 A value greater than 1 provides more verbose information."),
27113                              NULL,
27114                              NULL,
27115                              &setdebuglist, &showdebuglist);
27116
27117   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
27118 Set cross-checking of \"physname\" code against demangler."), _("\
27119 Show cross-checking of \"physname\" code against demangler."), _("\
27120 When enabled, GDB's internal \"physname\" code is checked against\n\
27121 the demangler."),
27122                            NULL, show_check_physname,
27123                            &setdebuglist, &showdebuglist);
27124
27125   add_setshow_boolean_cmd ("use-deprecated-index-sections",
27126                            no_class, &use_deprecated_index_sections, _("\
27127 Set whether to use deprecated gdb_index sections."), _("\
27128 Show whether to use deprecated gdb_index sections."), _("\
27129 When enabled, deprecated .gdb_index sections are used anyway.\n\
27130 Normally they are ignored either because of a missing feature or\n\
27131 performance issue.\n\
27132 Warning: This option must be enabled before gdb reads the file."),
27133                            NULL,
27134                            NULL,
27135                            &setlist, &showlist);
27136
27137   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
27138                _("\
27139 Save a gdb-index file.\n\
27140 Usage: save gdb-index [-dwarf-5] DIRECTORY\n\
27141 \n\
27142 No options create one file with .gdb-index extension for pre-DWARF-5\n\
27143 compatible .gdb_index section.  With -dwarf-5 creates two files with\n\
27144 extension .debug_names and .debug_str for DWARF-5 .debug_names section."),
27145                &save_cmdlist);
27146   set_cmd_completer (c, filename_completer);
27147
27148   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
27149                                                         &dwarf2_locexpr_funcs);
27150   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
27151                                                         &dwarf2_loclist_funcs);
27152
27153   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
27154                                         &dwarf2_block_frame_base_locexpr_funcs);
27155   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
27156                                         &dwarf2_block_frame_base_loclist_funcs);
27157
27158 #if GDB_SELF_TEST
27159   selftests::register_test ("dw2_expand_symtabs_matching",
27160                             selftests::dw2_expand_symtabs_matching::run_test);
27161 #endif
27162 }