Remove dwarf2_cu::dwarf2_per_objfile
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "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   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
324   : dwarf2_per_objfile (dwarf2_per_objfile_)
325   {}
326
327   struct dwarf2_per_objfile *dwarf2_per_objfile;
328   bfd_endian dwarf5_byte_order;
329   bool dwarf5_is_dwarf64;
330   bool augmentation_is_gdb;
331   uint8_t offset_size;
332   uint32_t cu_count = 0;
333   uint32_t tu_count, bucket_count, name_count;
334   const gdb_byte *cu_table_reordered, *tu_table_reordered;
335   const uint32_t *bucket_table_reordered, *hash_table_reordered;
336   const gdb_byte *name_table_string_offs_reordered;
337   const gdb_byte *name_table_entry_offs_reordered;
338   const gdb_byte *entry_pool;
339
340   struct index_val
341   {
342     ULONGEST dwarf_tag;
343     struct attr
344     {
345       /* Attribute name DW_IDX_*.  */
346       ULONGEST dw_idx;
347
348       /* Attribute form DW_FORM_*.  */
349       ULONGEST form;
350
351       /* Value if FORM is DW_FORM_implicit_const.  */
352       LONGEST implicit_const;
353     };
354     std::vector<attr> attr_vec;
355   };
356
357   std::unordered_map<ULONGEST, index_val> abbrev_map;
358
359   const char *namei_to_name (uint32_t namei) const;
360
361   /* Implementation of the mapped_index_base virtual interface, for
362      the name_components cache.  */
363
364   const char *symbol_name_at (offset_type idx) const override
365   { return namei_to_name (idx); }
366
367   size_t symbol_name_count () const override
368   { return this->name_count; }
369 };
370
371 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
372 DEF_VEC_P (dwarf2_per_cu_ptr);
373
374 struct tu_stats
375 {
376   int nr_uniq_abbrev_tables;
377   int nr_symtabs;
378   int nr_symtab_sharers;
379   int nr_stmt_less_type_units;
380   int nr_all_type_units_reallocs;
381 };
382
383 /* Collection of data recorded per objfile.
384    This hangs off of dwarf2_objfile_data_key.  */
385
386 struct dwarf2_per_objfile
387 {
388   /* Construct a dwarf2_per_objfile for OBJFILE.  NAMES points to the
389      dwarf2 section names, or is NULL if the standard ELF names are
390      used.  */
391   dwarf2_per_objfile (struct objfile *objfile,
392                       const dwarf2_debug_sections *names);
393
394   ~dwarf2_per_objfile ();
395
396   DISABLE_COPY_AND_ASSIGN (dwarf2_per_objfile);
397
398   /* Free all cached compilation units.  */
399   void free_cached_comp_units ();
400 private:
401   /* This function is mapped across the sections and remembers the
402      offset and size of each of the debugging sections we are
403      interested in.  */
404   void locate_sections (bfd *abfd, asection *sectp,
405                         const dwarf2_debug_sections &names);
406
407 public:
408   dwarf2_section_info info {};
409   dwarf2_section_info abbrev {};
410   dwarf2_section_info line {};
411   dwarf2_section_info loc {};
412   dwarf2_section_info loclists {};
413   dwarf2_section_info macinfo {};
414   dwarf2_section_info macro {};
415   dwarf2_section_info str {};
416   dwarf2_section_info line_str {};
417   dwarf2_section_info ranges {};
418   dwarf2_section_info rnglists {};
419   dwarf2_section_info addr {};
420   dwarf2_section_info frame {};
421   dwarf2_section_info eh_frame {};
422   dwarf2_section_info gdb_index {};
423   dwarf2_section_info debug_names {};
424   dwarf2_section_info debug_aranges {};
425
426   VEC (dwarf2_section_info_def) *types = NULL;
427
428   /* Back link.  */
429   struct objfile *objfile = NULL;
430
431   /* Table of all the compilation units.  This is used to locate
432      the target compilation unit of a particular reference.  */
433   struct dwarf2_per_cu_data **all_comp_units = NULL;
434
435   /* The number of compilation units in ALL_COMP_UNITS.  */
436   int n_comp_units = 0;
437
438   /* The number of .debug_types-related CUs.  */
439   int n_type_units = 0;
440
441   /* The number of elements allocated in all_type_units.
442      If there are skeleton-less TUs, we add them to all_type_units lazily.  */
443   int n_allocated_type_units = 0;
444
445   /* The .debug_types-related CUs (TUs).
446      This is stored in malloc space because we may realloc it.  */
447   struct signatured_type **all_type_units = NULL;
448
449   /* Table of struct type_unit_group objects.
450      The hash key is the DW_AT_stmt_list value.  */
451   htab_t type_unit_groups {};
452
453   /* A table mapping .debug_types signatures to its signatured_type entry.
454      This is NULL if the .debug_types section hasn't been read in yet.  */
455   htab_t signatured_types {};
456
457   /* Type unit statistics, to see how well the scaling improvements
458      are doing.  */
459   struct tu_stats tu_stats {};
460
461   /* A chain of compilation units that are currently read in, so that
462      they can be freed later.  */
463   dwarf2_per_cu_data *read_in_chain = NULL;
464
465   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
466      This is NULL if the table hasn't been allocated yet.  */
467   htab_t dwo_files {};
468
469   /* True if we've checked for whether there is a DWP file.  */
470   bool dwp_checked = false;
471
472   /* The DWP file if there is one, or NULL.  */
473   struct dwp_file *dwp_file = NULL;
474
475   /* The shared '.dwz' file, if one exists.  This is used when the
476      original data was compressed using 'dwz -m'.  */
477   struct dwz_file *dwz_file = NULL;
478
479   /* A flag indicating whether this objfile has a section loaded at a
480      VMA of 0.  */
481   bool has_section_at_zero = false;
482
483   /* True if we are using the mapped index,
484      or we are faking it for OBJF_READNOW's sake.  */
485   bool using_index = false;
486
487   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
488   mapped_index *index_table = NULL;
489
490   /* The mapped index, or NULL if .debug_names is missing or not being used.  */
491   std::unique_ptr<mapped_debug_names> debug_names_table;
492
493   /* When using index_table, this keeps track of all quick_file_names entries.
494      TUs typically share line table entries with a CU, so we maintain a
495      separate table of all line table entries to support the sharing.
496      Note that while there can be way more TUs than CUs, we've already
497      sorted all the TUs into "type unit groups", grouped by their
498      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
499      CU and its associated TU group if there is one.  */
500   htab_t quick_file_names_table {};
501
502   /* Set during partial symbol reading, to prevent queueing of full
503      symbols.  */
504   bool reading_partial_symbols = false;
505
506   /* Table mapping type DIEs to their struct type *.
507      This is NULL if not allocated yet.
508      The mapping is done via (CU/TU + DIE offset) -> type.  */
509   htab_t die_type_hash {};
510
511   /* The CUs we recently read.  */
512   VEC (dwarf2_per_cu_ptr) *just_read_cus = NULL;
513
514   /* Table containing line_header indexed by offset and offset_in_dwz.  */
515   htab_t line_header_hash {};
516
517   /* Table containing all filenames.  This is an optional because the
518      table is lazily constructed on first access.  */
519   gdb::optional<filename_seen_cache> filenames_cache;
520 };
521
522 /* Get the dwarf2_per_objfile associated to OBJFILE.  */
523
524 struct dwarf2_per_objfile *
525 get_dwarf2_per_objfile (struct objfile *objfile)
526 {
527   return ((struct dwarf2_per_objfile *)
528           objfile_data (objfile, dwarf2_objfile_data_key));
529 }
530
531 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
532
533 void
534 set_dwarf2_per_objfile (struct objfile *objfile,
535                         struct dwarf2_per_objfile *dwarf2_per_objfile)
536 {
537   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
538   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
539 }
540
541 /* Default names of the debugging sections.  */
542
543 /* Note that if the debugging section has been compressed, it might
544    have a name like .zdebug_info.  */
545
546 static const struct dwarf2_debug_sections dwarf2_elf_names =
547 {
548   { ".debug_info", ".zdebug_info" },
549   { ".debug_abbrev", ".zdebug_abbrev" },
550   { ".debug_line", ".zdebug_line" },
551   { ".debug_loc", ".zdebug_loc" },
552   { ".debug_loclists", ".zdebug_loclists" },
553   { ".debug_macinfo", ".zdebug_macinfo" },
554   { ".debug_macro", ".zdebug_macro" },
555   { ".debug_str", ".zdebug_str" },
556   { ".debug_line_str", ".zdebug_line_str" },
557   { ".debug_ranges", ".zdebug_ranges" },
558   { ".debug_rnglists", ".zdebug_rnglists" },
559   { ".debug_types", ".zdebug_types" },
560   { ".debug_addr", ".zdebug_addr" },
561   { ".debug_frame", ".zdebug_frame" },
562   { ".eh_frame", NULL },
563   { ".gdb_index", ".zgdb_index" },
564   { ".debug_names", ".zdebug_names" },
565   { ".debug_aranges", ".zdebug_aranges" },
566   23
567 };
568
569 /* List of DWO/DWP sections.  */
570
571 static const struct dwop_section_names
572 {
573   struct dwarf2_section_names abbrev_dwo;
574   struct dwarf2_section_names info_dwo;
575   struct dwarf2_section_names line_dwo;
576   struct dwarf2_section_names loc_dwo;
577   struct dwarf2_section_names loclists_dwo;
578   struct dwarf2_section_names macinfo_dwo;
579   struct dwarf2_section_names macro_dwo;
580   struct dwarf2_section_names str_dwo;
581   struct dwarf2_section_names str_offsets_dwo;
582   struct dwarf2_section_names types_dwo;
583   struct dwarf2_section_names cu_index;
584   struct dwarf2_section_names tu_index;
585 }
586 dwop_section_names =
587 {
588   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
589   { ".debug_info.dwo", ".zdebug_info.dwo" },
590   { ".debug_line.dwo", ".zdebug_line.dwo" },
591   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
592   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
593   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
594   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
595   { ".debug_str.dwo", ".zdebug_str.dwo" },
596   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
597   { ".debug_types.dwo", ".zdebug_types.dwo" },
598   { ".debug_cu_index", ".zdebug_cu_index" },
599   { ".debug_tu_index", ".zdebug_tu_index" },
600 };
601
602 /* local data types */
603
604 /* The data in a compilation unit header, after target2host
605    translation, looks like this.  */
606 struct comp_unit_head
607 {
608   unsigned int length;
609   short version;
610   unsigned char addr_size;
611   unsigned char signed_addr_p;
612   sect_offset abbrev_sect_off;
613
614   /* Size of file offsets; either 4 or 8.  */
615   unsigned int offset_size;
616
617   /* Size of the length field; either 4 or 12.  */
618   unsigned int initial_length_size;
619
620   enum dwarf_unit_type unit_type;
621
622   /* Offset to the first byte of this compilation unit header in the
623      .debug_info section, for resolving relative reference dies.  */
624   sect_offset sect_off;
625
626   /* Offset to first die in this cu from the start of the cu.
627      This will be the first byte following the compilation unit header.  */
628   cu_offset first_die_cu_offset;
629
630   /* 64-bit signature of this type unit - it is valid only for
631      UNIT_TYPE DW_UT_type.  */
632   ULONGEST signature;
633
634   /* For types, offset in the type's DIE of the type defined by this TU.  */
635   cu_offset type_cu_offset_in_tu;
636 };
637
638 /* Type used for delaying computation of method physnames.
639    See comments for compute_delayed_physnames.  */
640 struct delayed_method_info
641 {
642   /* The type to which the method is attached, i.e., its parent class.  */
643   struct type *type;
644
645   /* The index of the method in the type's function fieldlists.  */
646   int fnfield_index;
647
648   /* The index of the method in the fieldlist.  */
649   int index;
650
651   /* The name of the DIE.  */
652   const char *name;
653
654   /*  The DIE associated with this method.  */
655   struct die_info *die;
656 };
657
658 typedef struct delayed_method_info delayed_method_info;
659 DEF_VEC_O (delayed_method_info);
660
661 /* Internal state when decoding a particular compilation unit.  */
662 struct dwarf2_cu
663 {
664   /* The header of the compilation unit.  */
665   struct comp_unit_head header;
666
667   /* Base address of this compilation unit.  */
668   CORE_ADDR base_address;
669
670   /* Non-zero if base_address has been set.  */
671   int base_known;
672
673   /* The language we are debugging.  */
674   enum language language;
675   const struct language_defn *language_defn;
676
677   const char *producer;
678
679   /* The generic symbol table building routines have separate lists for
680      file scope symbols and all all other scopes (local scopes).  So
681      we need to select the right one to pass to add_symbol_to_list().
682      We do it by keeping a pointer to the correct list in list_in_scope.
683
684      FIXME: The original dwarf code just treated the file scope as the
685      first local scope, and all other local scopes as nested local
686      scopes, and worked fine.  Check to see if we really need to
687      distinguish these in buildsym.c.  */
688   struct pending **list_in_scope;
689
690   /* The abbrev table for this CU.
691      Normally this points to the abbrev table in the objfile.
692      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
693   struct abbrev_table *abbrev_table;
694
695   /* Hash table holding all the loaded partial DIEs
696      with partial_die->offset.SECT_OFF as hash.  */
697   htab_t partial_dies;
698
699   /* Storage for things with the same lifetime as this read-in compilation
700      unit, including partial DIEs.  */
701   struct obstack comp_unit_obstack;
702
703   /* When multiple dwarf2_cu structures are living in memory, this field
704      chains them all together, so that they can be released efficiently.
705      We will probably also want a generation counter so that most-recently-used
706      compilation units are cached...  */
707   struct dwarf2_per_cu_data *read_in_chain;
708
709   /* Backlink to our per_cu entry.  */
710   struct dwarf2_per_cu_data *per_cu;
711
712   /* How many compilation units ago was this CU last referenced?  */
713   int last_used;
714
715   /* A hash table of DIE cu_offset for following references with
716      die_info->offset.sect_off as hash.  */
717   htab_t die_hash;
718
719   /* Full DIEs if read in.  */
720   struct die_info *dies;
721
722   /* A set of pointers to dwarf2_per_cu_data objects for compilation
723      units referenced by this one.  Only set during full symbol processing;
724      partial symbol tables do not have dependencies.  */
725   htab_t dependencies;
726
727   /* Header data from the line table, during full symbol processing.  */
728   struct line_header *line_header;
729   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
730      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
731      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
732      to the line header as long as this DIE is being processed.  See
733      process_die_scope.  */
734   die_info *line_header_die_owner;
735
736   /* A list of methods which need to have physnames computed
737      after all type information has been read.  */
738   VEC (delayed_method_info) *method_list;
739
740   /* To be copied to symtab->call_site_htab.  */
741   htab_t call_site_htab;
742
743   /* Non-NULL if this CU came from a DWO file.
744      There is an invariant here that is important to remember:
745      Except for attributes copied from the top level DIE in the "main"
746      (or "stub") file in preparation for reading the DWO file
747      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
748      Either there isn't a DWO file (in which case this is NULL and the point
749      is moot), or there is and either we're not going to read it (in which
750      case this is NULL) or there is and we are reading it (in which case this
751      is non-NULL).  */
752   struct dwo_unit *dwo_unit;
753
754   /* The DW_AT_addr_base attribute if present, zero otherwise
755      (zero is a valid value though).
756      Note this value comes from the Fission stub CU/TU's DIE.  */
757   ULONGEST addr_base;
758
759   /* The DW_AT_ranges_base attribute if present, zero otherwise
760      (zero is a valid value though).
761      Note this value comes from the Fission stub CU/TU's DIE.
762      Also note that the value is zero in the non-DWO case so this value can
763      be used without needing to know whether DWO files are in use or not.
764      N.B. This does not apply to DW_AT_ranges appearing in
765      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
766      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
767      DW_AT_ranges_base *would* have to be applied, and we'd have to care
768      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
769   ULONGEST ranges_base;
770
771   /* Mark used when releasing cached dies.  */
772   unsigned int mark : 1;
773
774   /* This CU references .debug_loc.  See the symtab->locations_valid field.
775      This test is imperfect as there may exist optimized debug code not using
776      any location list and still facing inlining issues if handled as
777      unoptimized code.  For a future better test see GCC PR other/32998.  */
778   unsigned int has_loclist : 1;
779
780   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
781      if all the producer_is_* fields are valid.  This information is cached
782      because profiling CU expansion showed excessive time spent in
783      producer_is_gxx_lt_4_6.  */
784   unsigned int checked_producer : 1;
785   unsigned int producer_is_gxx_lt_4_6 : 1;
786   unsigned int producer_is_gcc_lt_4_3 : 1;
787   unsigned int producer_is_icc_lt_14 : 1;
788
789   /* When set, the file that we're processing is known to have
790      debugging info for C++ namespaces.  GCC 3.3.x did not produce
791      this information, but later versions do.  */
792
793   unsigned int processing_has_namespace_info : 1;
794 };
795
796 /* Persistent data held for a compilation unit, even when not
797    processing it.  We put a pointer to this structure in the
798    read_symtab_private field of the psymtab.  */
799
800 struct dwarf2_per_cu_data
801 {
802   /* The start offset and length of this compilation unit.
803      NOTE: Unlike comp_unit_head.length, this length includes
804      initial_length_size.
805      If the DIE refers to a DWO file, this is always of the original die,
806      not the DWO file.  */
807   sect_offset sect_off;
808   unsigned int length;
809
810   /* DWARF standard version this data has been read from (such as 4 or 5).  */
811   short dwarf_version;
812
813   /* Flag indicating this compilation unit will be read in before
814      any of the current compilation units are processed.  */
815   unsigned int queued : 1;
816
817   /* This flag will be set when reading partial DIEs if we need to load
818      absolutely all DIEs for this compilation unit, instead of just the ones
819      we think are interesting.  It gets set if we look for a DIE in the
820      hash table and don't find it.  */
821   unsigned int load_all_dies : 1;
822
823   /* Non-zero if this CU is from .debug_types.
824      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
825      this is non-zero.  */
826   unsigned int is_debug_types : 1;
827
828   /* Non-zero if this CU is from the .dwz file.  */
829   unsigned int is_dwz : 1;
830
831   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
832      This flag is only valid if is_debug_types is true.
833      We can't read a CU directly from a DWO file: There are required
834      attributes in the stub.  */
835   unsigned int reading_dwo_directly : 1;
836
837   /* Non-zero if the TU has been read.
838      This is used to assist the "Stay in DWO Optimization" for Fission:
839      When reading a DWO, it's faster to read TUs from the DWO instead of
840      fetching them from random other DWOs (due to comdat folding).
841      If the TU has already been read, the optimization is unnecessary
842      (and unwise - we don't want to change where gdb thinks the TU lives
843      "midflight").
844      This flag is only valid if is_debug_types is true.  */
845   unsigned int tu_read : 1;
846
847   /* The section this CU/TU lives in.
848      If the DIE refers to a DWO file, this is always the original die,
849      not the DWO file.  */
850   struct dwarf2_section_info *section;
851
852   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
853      of the CU cache it gets reset to NULL again.  This is left as NULL for
854      dummy CUs (a CU header, but nothing else).  */
855   struct dwarf2_cu *cu;
856
857   /* The corresponding dwarf2_per_objfile.  */
858   struct dwarf2_per_objfile *dwarf2_per_objfile;
859
860   /* When dwarf2_per_objfile->using_index is true, the 'quick' field
861      is active.  Otherwise, the 'psymtab' field is active.  */
862   union
863   {
864     /* The partial symbol table associated with this compilation unit,
865        or NULL for unread partial units.  */
866     struct partial_symtab *psymtab;
867
868     /* Data needed by the "quick" functions.  */
869     struct dwarf2_per_cu_quick_data *quick;
870   } v;
871
872   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
873      while reading psymtabs, used to compute the psymtab dependencies,
874      and then cleared.  Then it is filled in again while reading full
875      symbols, and only deleted when the objfile is destroyed.
876
877      This is also used to work around a difference between the way gold
878      generates .gdb_index version <=7 and the way gdb does.  Arguably this
879      is a gold bug.  For symbols coming from TUs, gold records in the index
880      the CU that includes the TU instead of the TU itself.  This breaks
881      dw2_lookup_symbol: It assumes that if the index says symbol X lives
882      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
883      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
884      we need to look in TU Z to find X.  Fortunately, this is akin to
885      DW_TAG_imported_unit, so we just use the same mechanism: For
886      .gdb_index version <=7 this also records the TUs that the CU referred
887      to.  Concurrently with this change gdb was modified to emit version 8
888      indices so we only pay a price for gold generated indices.
889      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
890   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
891 };
892
893 /* Entry in the signatured_types hash table.  */
894
895 struct signatured_type
896 {
897   /* The "per_cu" object of this type.
898      This struct is used iff per_cu.is_debug_types.
899      N.B.: This is the first member so that it's easy to convert pointers
900      between them.  */
901   struct dwarf2_per_cu_data per_cu;
902
903   /* The type's signature.  */
904   ULONGEST signature;
905
906   /* Offset in the TU of the type's DIE, as read from the TU header.
907      If this TU is a DWO stub and the definition lives in a DWO file
908      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
909   cu_offset type_offset_in_tu;
910
911   /* Offset in the section of the type's DIE.
912      If the definition lives in a DWO file, this is the offset in the
913      .debug_types.dwo section.
914      The value is zero until the actual value is known.
915      Zero is otherwise not a valid section offset.  */
916   sect_offset type_offset_in_section;
917
918   /* Type units are grouped by their DW_AT_stmt_list entry so that they
919      can share them.  This points to the containing symtab.  */
920   struct type_unit_group *type_unit_group;
921
922   /* The type.
923      The first time we encounter this type we fully read it in and install it
924      in the symbol tables.  Subsequent times we only need the type.  */
925   struct type *type;
926
927   /* Containing DWO unit.
928      This field is valid iff per_cu.reading_dwo_directly.  */
929   struct dwo_unit *dwo_unit;
930 };
931
932 typedef struct signatured_type *sig_type_ptr;
933 DEF_VEC_P (sig_type_ptr);
934
935 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
936    This includes type_unit_group and quick_file_names.  */
937
938 struct stmt_list_hash
939 {
940   /* The DWO unit this table is from or NULL if there is none.  */
941   struct dwo_unit *dwo_unit;
942
943   /* Offset in .debug_line or .debug_line.dwo.  */
944   sect_offset line_sect_off;
945 };
946
947 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
948    an object of this type.  */
949
950 struct type_unit_group
951 {
952   /* dwarf2read.c's main "handle" on a TU symtab.
953      To simplify things we create an artificial CU that "includes" all the
954      type units using this stmt_list so that the rest of the code still has
955      a "per_cu" handle on the symtab.
956      This PER_CU is recognized by having no section.  */
957 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
958   struct dwarf2_per_cu_data per_cu;
959
960   /* The TUs that share this DW_AT_stmt_list entry.
961      This is added to while parsing type units to build partial symtabs,
962      and is deleted afterwards and not used again.  */
963   VEC (sig_type_ptr) *tus;
964
965   /* The compunit symtab.
966      Type units in a group needn't all be defined in the same source file,
967      so we create an essentially anonymous symtab as the compunit symtab.  */
968   struct compunit_symtab *compunit_symtab;
969
970   /* The data used to construct the hash key.  */
971   struct stmt_list_hash hash;
972
973   /* The number of symtabs from the line header.
974      The value here must match line_header.num_file_names.  */
975   unsigned int num_symtabs;
976
977   /* The symbol tables for this TU (obtained from the files listed in
978      DW_AT_stmt_list).
979      WARNING: The order of entries here must match the order of entries
980      in the line header.  After the first TU using this type_unit_group, the
981      line header for the subsequent TUs is recreated from this.  This is done
982      because we need to use the same symtabs for each TU using the same
983      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
984      there's no guarantee the line header doesn't have duplicate entries.  */
985   struct symtab **symtabs;
986 };
987
988 /* These sections are what may appear in a (real or virtual) DWO file.  */
989
990 struct dwo_sections
991 {
992   struct dwarf2_section_info abbrev;
993   struct dwarf2_section_info line;
994   struct dwarf2_section_info loc;
995   struct dwarf2_section_info loclists;
996   struct dwarf2_section_info macinfo;
997   struct dwarf2_section_info macro;
998   struct dwarf2_section_info str;
999   struct dwarf2_section_info str_offsets;
1000   /* In the case of a virtual DWO file, these two are unused.  */
1001   struct dwarf2_section_info info;
1002   VEC (dwarf2_section_info_def) *types;
1003 };
1004
1005 /* CUs/TUs in DWP/DWO files.  */
1006
1007 struct dwo_unit
1008 {
1009   /* Backlink to the containing struct dwo_file.  */
1010   struct dwo_file *dwo_file;
1011
1012   /* The "id" that distinguishes this CU/TU.
1013      .debug_info calls this "dwo_id", .debug_types calls this "signature".
1014      Since signatures came first, we stick with it for consistency.  */
1015   ULONGEST signature;
1016
1017   /* The section this CU/TU lives in, in the DWO file.  */
1018   struct dwarf2_section_info *section;
1019
1020   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
1021   sect_offset sect_off;
1022   unsigned int length;
1023
1024   /* For types, offset in the type's DIE of the type defined by this TU.  */
1025   cu_offset type_offset_in_tu;
1026 };
1027
1028 /* include/dwarf2.h defines the DWP section codes.
1029    It defines a max value but it doesn't define a min value, which we
1030    use for error checking, so provide one.  */
1031
1032 enum dwp_v2_section_ids
1033 {
1034   DW_SECT_MIN = 1
1035 };
1036
1037 /* Data for one DWO file.
1038
1039    This includes virtual DWO files (a virtual DWO file is a DWO file as it
1040    appears in a DWP file).  DWP files don't really have DWO files per se -
1041    comdat folding of types "loses" the DWO file they came from, and from
1042    a high level view DWP files appear to contain a mass of random types.
1043    However, to maintain consistency with the non-DWP case we pretend DWP
1044    files contain virtual DWO files, and we assign each TU with one virtual
1045    DWO file (generally based on the line and abbrev section offsets -
1046    a heuristic that seems to work in practice).  */
1047
1048 struct dwo_file
1049 {
1050   /* The DW_AT_GNU_dwo_name attribute.
1051      For virtual DWO files the name is constructed from the section offsets
1052      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
1053      from related CU+TUs.  */
1054   const char *dwo_name;
1055
1056   /* The DW_AT_comp_dir attribute.  */
1057   const char *comp_dir;
1058
1059   /* The bfd, when the file is open.  Otherwise this is NULL.
1060      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
1061   bfd *dbfd;
1062
1063   /* The sections that make up this DWO file.
1064      Remember that for virtual DWO files in DWP V2, these are virtual
1065      sections (for lack of a better name).  */
1066   struct dwo_sections sections;
1067
1068   /* The CUs in the file.
1069      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
1070      an extension to handle LLVM's Link Time Optimization output (where
1071      multiple source files may be compiled into a single object/dwo pair). */
1072   htab_t cus;
1073
1074   /* Table of TUs in the file.
1075      Each element is a struct dwo_unit.  */
1076   htab_t tus;
1077 };
1078
1079 /* These sections are what may appear in a DWP file.  */
1080
1081 struct dwp_sections
1082 {
1083   /* These are used by both DWP version 1 and 2.  */
1084   struct dwarf2_section_info str;
1085   struct dwarf2_section_info cu_index;
1086   struct dwarf2_section_info tu_index;
1087
1088   /* These are only used by DWP version 2 files.
1089      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
1090      sections are referenced by section number, and are not recorded here.
1091      In DWP version 2 there is at most one copy of all these sections, each
1092      section being (effectively) comprised of the concatenation of all of the
1093      individual sections that exist in the version 1 format.
1094      To keep the code simple we treat each of these concatenated pieces as a
1095      section itself (a virtual section?).  */
1096   struct dwarf2_section_info abbrev;
1097   struct dwarf2_section_info info;
1098   struct dwarf2_section_info line;
1099   struct dwarf2_section_info loc;
1100   struct dwarf2_section_info macinfo;
1101   struct dwarf2_section_info macro;
1102   struct dwarf2_section_info str_offsets;
1103   struct dwarf2_section_info types;
1104 };
1105
1106 /* These sections are what may appear in a virtual DWO file in DWP version 1.
1107    A virtual DWO file is a DWO file as it appears in a DWP file.  */
1108
1109 struct virtual_v1_dwo_sections
1110 {
1111   struct dwarf2_section_info abbrev;
1112   struct dwarf2_section_info line;
1113   struct dwarf2_section_info loc;
1114   struct dwarf2_section_info macinfo;
1115   struct dwarf2_section_info macro;
1116   struct dwarf2_section_info str_offsets;
1117   /* Each DWP hash table entry records one CU or one TU.
1118      That is recorded here, and copied to dwo_unit.section.  */
1119   struct dwarf2_section_info info_or_types;
1120 };
1121
1122 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
1123    In version 2, the sections of the DWO files are concatenated together
1124    and stored in one section of that name.  Thus each ELF section contains
1125    several "virtual" sections.  */
1126
1127 struct virtual_v2_dwo_sections
1128 {
1129   bfd_size_type abbrev_offset;
1130   bfd_size_type abbrev_size;
1131
1132   bfd_size_type line_offset;
1133   bfd_size_type line_size;
1134
1135   bfd_size_type loc_offset;
1136   bfd_size_type loc_size;
1137
1138   bfd_size_type macinfo_offset;
1139   bfd_size_type macinfo_size;
1140
1141   bfd_size_type macro_offset;
1142   bfd_size_type macro_size;
1143
1144   bfd_size_type str_offsets_offset;
1145   bfd_size_type str_offsets_size;
1146
1147   /* Each DWP hash table entry records one CU or one TU.
1148      That is recorded here, and copied to dwo_unit.section.  */
1149   bfd_size_type info_or_types_offset;
1150   bfd_size_type info_or_types_size;
1151 };
1152
1153 /* Contents of DWP hash tables.  */
1154
1155 struct dwp_hash_table
1156 {
1157   uint32_t version, nr_columns;
1158   uint32_t nr_units, nr_slots;
1159   const gdb_byte *hash_table, *unit_table;
1160   union
1161   {
1162     struct
1163     {
1164       const gdb_byte *indices;
1165     } v1;
1166     struct
1167     {
1168       /* This is indexed by column number and gives the id of the section
1169          in that column.  */
1170 #define MAX_NR_V2_DWO_SECTIONS \
1171   (1 /* .debug_info or .debug_types */ \
1172    + 1 /* .debug_abbrev */ \
1173    + 1 /* .debug_line */ \
1174    + 1 /* .debug_loc */ \
1175    + 1 /* .debug_str_offsets */ \
1176    + 1 /* .debug_macro or .debug_macinfo */)
1177       int section_ids[MAX_NR_V2_DWO_SECTIONS];
1178       const gdb_byte *offsets;
1179       const gdb_byte *sizes;
1180     } v2;
1181   } section_pool;
1182 };
1183
1184 /* Data for one DWP file.  */
1185
1186 struct dwp_file
1187 {
1188   /* Name of the file.  */
1189   const char *name;
1190
1191   /* File format version.  */
1192   int version;
1193
1194   /* The bfd.  */
1195   bfd *dbfd;
1196
1197   /* Section info for this file.  */
1198   struct dwp_sections sections;
1199
1200   /* Table of CUs in the file.  */
1201   const struct dwp_hash_table *cus;
1202
1203   /* Table of TUs in the file.  */
1204   const struct dwp_hash_table *tus;
1205
1206   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
1207   htab_t loaded_cus;
1208   htab_t loaded_tus;
1209
1210   /* Table to map ELF section numbers to their sections.
1211      This is only needed for the DWP V1 file format.  */
1212   unsigned int num_sections;
1213   asection **elf_sections;
1214 };
1215
1216 /* This represents a '.dwz' file.  */
1217
1218 struct dwz_file
1219 {
1220   /* A dwz file can only contain a few sections.  */
1221   struct dwarf2_section_info abbrev;
1222   struct dwarf2_section_info info;
1223   struct dwarf2_section_info str;
1224   struct dwarf2_section_info line;
1225   struct dwarf2_section_info macro;
1226   struct dwarf2_section_info gdb_index;
1227   struct dwarf2_section_info debug_names;
1228
1229   /* The dwz's BFD.  */
1230   bfd *dwz_bfd;
1231 };
1232
1233 /* Struct used to pass misc. parameters to read_die_and_children, et
1234    al.  which are used for both .debug_info and .debug_types dies.
1235    All parameters here are unchanging for the life of the call.  This
1236    struct exists to abstract away the constant parameters of die reading.  */
1237
1238 struct die_reader_specs
1239 {
1240   /* The bfd of die_section.  */
1241   bfd* abfd;
1242
1243   /* The CU of the DIE we are parsing.  */
1244   struct dwarf2_cu *cu;
1245
1246   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
1247   struct dwo_file *dwo_file;
1248
1249   /* The section the die comes from.
1250      This is either .debug_info or .debug_types, or the .dwo variants.  */
1251   struct dwarf2_section_info *die_section;
1252
1253   /* die_section->buffer.  */
1254   const gdb_byte *buffer;
1255
1256   /* The end of the buffer.  */
1257   const gdb_byte *buffer_end;
1258
1259   /* The value of the DW_AT_comp_dir attribute.  */
1260   const char *comp_dir;
1261 };
1262
1263 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1264 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1265                                       const gdb_byte *info_ptr,
1266                                       struct die_info *comp_unit_die,
1267                                       int has_children,
1268                                       void *data);
1269
1270 /* A 1-based directory index.  This is a strong typedef to prevent
1271    accidentally using a directory index as a 0-based index into an
1272    array/vector.  */
1273 enum class dir_index : unsigned int {};
1274
1275 /* Likewise, a 1-based file name index.  */
1276 enum class file_name_index : unsigned int {};
1277
1278 struct file_entry
1279 {
1280   file_entry () = default;
1281
1282   file_entry (const char *name_, dir_index d_index_,
1283               unsigned int mod_time_, unsigned int length_)
1284     : name (name_),
1285       d_index (d_index_),
1286       mod_time (mod_time_),
1287       length (length_)
1288   {}
1289
1290   /* Return the include directory at D_INDEX stored in LH.  Returns
1291      NULL if D_INDEX is out of bounds.  */
1292   const char *include_dir (const line_header *lh) const;
1293
1294   /* The file name.  Note this is an observing pointer.  The memory is
1295      owned by debug_line_buffer.  */
1296   const char *name {};
1297
1298   /* The directory index (1-based).  */
1299   dir_index d_index {};
1300
1301   unsigned int mod_time {};
1302
1303   unsigned int length {};
1304
1305   /* True if referenced by the Line Number Program.  */
1306   bool included_p {};
1307
1308   /* The associated symbol table, if any.  */
1309   struct symtab *symtab {};
1310 };
1311
1312 /* The line number information for a compilation unit (found in the
1313    .debug_line section) begins with a "statement program header",
1314    which contains the following information.  */
1315 struct line_header
1316 {
1317   line_header ()
1318     : offset_in_dwz {}
1319   {}
1320
1321   /* Add an entry to the include directory table.  */
1322   void add_include_dir (const char *include_dir);
1323
1324   /* Add an entry to the file name table.  */
1325   void add_file_name (const char *name, dir_index d_index,
1326                       unsigned int mod_time, unsigned int length);
1327
1328   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
1329      is out of bounds.  */
1330   const char *include_dir_at (dir_index index) const
1331   {
1332     /* Convert directory index number (1-based) to vector index
1333        (0-based).  */
1334     size_t vec_index = to_underlying (index) - 1;
1335
1336     if (vec_index >= include_dirs.size ())
1337       return NULL;
1338     return include_dirs[vec_index];
1339   }
1340
1341   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
1342      is out of bounds.  */
1343   file_entry *file_name_at (file_name_index index)
1344   {
1345     /* Convert file name index number (1-based) to vector index
1346        (0-based).  */
1347     size_t vec_index = to_underlying (index) - 1;
1348
1349     if (vec_index >= file_names.size ())
1350       return NULL;
1351     return &file_names[vec_index];
1352   }
1353
1354   /* Const version of the above.  */
1355   const file_entry *file_name_at (unsigned int index) const
1356   {
1357     if (index >= file_names.size ())
1358       return NULL;
1359     return &file_names[index];
1360   }
1361
1362   /* Offset of line number information in .debug_line section.  */
1363   sect_offset sect_off {};
1364
1365   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1366   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1367
1368   unsigned int total_length {};
1369   unsigned short version {};
1370   unsigned int header_length {};
1371   unsigned char minimum_instruction_length {};
1372   unsigned char maximum_ops_per_instruction {};
1373   unsigned char default_is_stmt {};
1374   int line_base {};
1375   unsigned char line_range {};
1376   unsigned char opcode_base {};
1377
1378   /* standard_opcode_lengths[i] is the number of operands for the
1379      standard opcode whose value is i.  This means that
1380      standard_opcode_lengths[0] is unused, and the last meaningful
1381      element is standard_opcode_lengths[opcode_base - 1].  */
1382   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1383
1384   /* The include_directories table.  Note these are observing
1385      pointers.  The memory is owned by debug_line_buffer.  */
1386   std::vector<const char *> include_dirs;
1387
1388   /* The file_names table.  */
1389   std::vector<file_entry> file_names;
1390
1391   /* The start and end of the statement program following this
1392      header.  These point into dwarf2_per_objfile->line_buffer.  */
1393   const gdb_byte *statement_program_start {}, *statement_program_end {};
1394 };
1395
1396 typedef std::unique_ptr<line_header> line_header_up;
1397
1398 const char *
1399 file_entry::include_dir (const line_header *lh) const
1400 {
1401   return lh->include_dir_at (d_index);
1402 }
1403
1404 /* When we construct a partial symbol table entry we only
1405    need this much information.  */
1406 struct partial_die_info
1407   {
1408     /* Offset of this DIE.  */
1409     sect_offset sect_off;
1410
1411     /* DWARF-2 tag for this DIE.  */
1412     ENUM_BITFIELD(dwarf_tag) tag : 16;
1413
1414     /* Assorted flags describing the data found in this DIE.  */
1415     unsigned int has_children : 1;
1416     unsigned int is_external : 1;
1417     unsigned int is_declaration : 1;
1418     unsigned int has_type : 1;
1419     unsigned int has_specification : 1;
1420     unsigned int has_pc_info : 1;
1421     unsigned int may_be_inlined : 1;
1422
1423     /* This DIE has been marked DW_AT_main_subprogram.  */
1424     unsigned int main_subprogram : 1;
1425
1426     /* Flag set if the SCOPE field of this structure has been
1427        computed.  */
1428     unsigned int scope_set : 1;
1429
1430     /* Flag set if the DIE has a byte_size attribute.  */
1431     unsigned int has_byte_size : 1;
1432
1433     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1434     unsigned int has_const_value : 1;
1435
1436     /* Flag set if any of the DIE's children are template arguments.  */
1437     unsigned int has_template_arguments : 1;
1438
1439     /* Flag set if fixup_partial_die has been called on this die.  */
1440     unsigned int fixup_called : 1;
1441
1442     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1443     unsigned int is_dwz : 1;
1444
1445     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1446     unsigned int spec_is_dwz : 1;
1447
1448     /* The name of this DIE.  Normally the value of DW_AT_name, but
1449        sometimes a default name for unnamed DIEs.  */
1450     const char *name;
1451
1452     /* The linkage name, if present.  */
1453     const char *linkage_name;
1454
1455     /* The scope to prepend to our children.  This is generally
1456        allocated on the comp_unit_obstack, so will disappear
1457        when this compilation unit leaves the cache.  */
1458     const char *scope;
1459
1460     /* Some data associated with the partial DIE.  The tag determines
1461        which field is live.  */
1462     union
1463     {
1464       /* The location description associated with this DIE, if any.  */
1465       struct dwarf_block *locdesc;
1466       /* The offset of an import, for DW_TAG_imported_unit.  */
1467       sect_offset sect_off;
1468     } d;
1469
1470     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1471     CORE_ADDR lowpc;
1472     CORE_ADDR highpc;
1473
1474     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1475        DW_AT_sibling, if any.  */
1476     /* NOTE: This member isn't strictly necessary, read_partial_die could
1477        return DW_AT_sibling values to its caller load_partial_dies.  */
1478     const gdb_byte *sibling;
1479
1480     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1481        DW_AT_specification (or DW_AT_abstract_origin or
1482        DW_AT_extension).  */
1483     sect_offset spec_offset;
1484
1485     /* Pointers to this DIE's parent, first child, and next sibling,
1486        if any.  */
1487     struct partial_die_info *die_parent, *die_child, *die_sibling;
1488   };
1489
1490 /* This data structure holds the information of an abbrev.  */
1491 struct abbrev_info
1492   {
1493     unsigned int number;        /* number identifying abbrev */
1494     enum dwarf_tag tag;         /* dwarf tag */
1495     unsigned short has_children;                /* boolean */
1496     unsigned short num_attrs;   /* number of attributes */
1497     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1498     struct abbrev_info *next;   /* next in chain */
1499   };
1500
1501 struct attr_abbrev
1502   {
1503     ENUM_BITFIELD(dwarf_attribute) name : 16;
1504     ENUM_BITFIELD(dwarf_form) form : 16;
1505
1506     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1507     LONGEST implicit_const;
1508   };
1509
1510 /* Size of abbrev_table.abbrev_hash_table.  */
1511 #define ABBREV_HASH_SIZE 121
1512
1513 /* Top level data structure to contain an abbreviation table.  */
1514
1515 struct abbrev_table
1516 {
1517   /* Where the abbrev table came from.
1518      This is used as a sanity check when the table is used.  */
1519   sect_offset sect_off;
1520
1521   /* Storage for the abbrev table.  */
1522   struct obstack abbrev_obstack;
1523
1524   /* Hash table of abbrevs.
1525      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1526      It could be statically allocated, but the previous code didn't so we
1527      don't either.  */
1528   struct abbrev_info **abbrevs;
1529 };
1530
1531 /* Attributes have a name and a value.  */
1532 struct attribute
1533   {
1534     ENUM_BITFIELD(dwarf_attribute) name : 16;
1535     ENUM_BITFIELD(dwarf_form) form : 15;
1536
1537     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1538        field should be in u.str (existing only for DW_STRING) but it is kept
1539        here for better struct attribute alignment.  */
1540     unsigned int string_is_canonical : 1;
1541
1542     union
1543       {
1544         const char *str;
1545         struct dwarf_block *blk;
1546         ULONGEST unsnd;
1547         LONGEST snd;
1548         CORE_ADDR addr;
1549         ULONGEST signature;
1550       }
1551     u;
1552   };
1553
1554 /* This data structure holds a complete die structure.  */
1555 struct die_info
1556   {
1557     /* DWARF-2 tag for this DIE.  */
1558     ENUM_BITFIELD(dwarf_tag) tag : 16;
1559
1560     /* Number of attributes */
1561     unsigned char num_attrs;
1562
1563     /* True if we're presently building the full type name for the
1564        type derived from this DIE.  */
1565     unsigned char building_fullname : 1;
1566
1567     /* True if this die is in process.  PR 16581.  */
1568     unsigned char in_process : 1;
1569
1570     /* Abbrev number */
1571     unsigned int abbrev;
1572
1573     /* Offset in .debug_info or .debug_types section.  */
1574     sect_offset sect_off;
1575
1576     /* The dies in a compilation unit form an n-ary tree.  PARENT
1577        points to this die's parent; CHILD points to the first child of
1578        this node; and all the children of a given node are chained
1579        together via their SIBLING fields.  */
1580     struct die_info *child;     /* Its first child, if any.  */
1581     struct die_info *sibling;   /* Its next sibling, if any.  */
1582     struct die_info *parent;    /* Its parent, if any.  */
1583
1584     /* An array of attributes, with NUM_ATTRS elements.  There may be
1585        zero, but it's not common and zero-sized arrays are not
1586        sufficiently portable C.  */
1587     struct attribute attrs[1];
1588   };
1589
1590 /* Get at parts of an attribute structure.  */
1591
1592 #define DW_STRING(attr)    ((attr)->u.str)
1593 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1594 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1595 #define DW_BLOCK(attr)     ((attr)->u.blk)
1596 #define DW_SND(attr)       ((attr)->u.snd)
1597 #define DW_ADDR(attr)      ((attr)->u.addr)
1598 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1599
1600 /* Blocks are a bunch of untyped bytes.  */
1601 struct dwarf_block
1602   {
1603     size_t size;
1604
1605     /* Valid only if SIZE is not zero.  */
1606     const gdb_byte *data;
1607   };
1608
1609 #ifndef ATTR_ALLOC_CHUNK
1610 #define ATTR_ALLOC_CHUNK 4
1611 #endif
1612
1613 /* Allocate fields for structs, unions and enums in this size.  */
1614 #ifndef DW_FIELD_ALLOC_CHUNK
1615 #define DW_FIELD_ALLOC_CHUNK 4
1616 #endif
1617
1618 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1619    but this would require a corresponding change in unpack_field_as_long
1620    and friends.  */
1621 static int bits_per_byte = 8;
1622
1623 struct nextfield
1624 {
1625   struct nextfield *next;
1626   int accessibility;
1627   int virtuality;
1628   struct field field;
1629 };
1630
1631 struct nextfnfield
1632 {
1633   struct nextfnfield *next;
1634   struct fn_field fnfield;
1635 };
1636
1637 struct fnfieldlist
1638 {
1639   const char *name;
1640   int length;
1641   struct nextfnfield *head;
1642 };
1643
1644 struct decl_field_list
1645 {
1646   struct decl_field field;
1647   struct decl_field_list *next;
1648 };
1649
1650 /* The routines that read and process dies for a C struct or C++ class
1651    pass lists of data member fields and lists of member function fields
1652    in an instance of a field_info structure, as defined below.  */
1653 struct field_info
1654   {
1655     /* List of data member and baseclasses fields.  */
1656     struct nextfield *fields, *baseclasses;
1657
1658     /* Number of fields (including baseclasses).  */
1659     int nfields;
1660
1661     /* Number of baseclasses.  */
1662     int nbaseclasses;
1663
1664     /* Set if the accesibility of one of the fields is not public.  */
1665     int non_public_fields;
1666
1667     /* Member function fieldlist array, contains name of possibly overloaded
1668        member function, number of overloaded member functions and a pointer
1669        to the head of the member function field chain.  */
1670     struct fnfieldlist *fnfieldlists;
1671
1672     /* Number of entries in the fnfieldlists array.  */
1673     int nfnfields;
1674
1675     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1676        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1677     struct decl_field_list *typedef_field_list;
1678     unsigned typedef_field_list_count;
1679
1680     /* Nested types defined by this class and the number of elements in this
1681        list.  */
1682     struct decl_field_list *nested_types_list;
1683     unsigned nested_types_list_count;
1684   };
1685
1686 /* One item on the queue of compilation units to read in full symbols
1687    for.  */
1688 struct dwarf2_queue_item
1689 {
1690   struct dwarf2_per_cu_data *per_cu;
1691   enum language pretend_language;
1692   struct dwarf2_queue_item *next;
1693 };
1694
1695 /* The current queue.  */
1696 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1697
1698 /* Loaded secondary compilation units are kept in memory until they
1699    have not been referenced for the processing of this many
1700    compilation units.  Set this to zero to disable caching.  Cache
1701    sizes of up to at least twenty will improve startup time for
1702    typical inter-CU-reference binaries, at an obvious memory cost.  */
1703 static int dwarf_max_cache_age = 5;
1704 static void
1705 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1706                           struct cmd_list_element *c, const char *value)
1707 {
1708   fprintf_filtered (file, _("The upper bound on the age of cached "
1709                             "DWARF compilation units is %s.\n"),
1710                     value);
1711 }
1712 \f
1713 /* local function prototypes */
1714
1715 static const char *get_section_name (const struct dwarf2_section_info *);
1716
1717 static const char *get_section_file_name (const struct dwarf2_section_info *);
1718
1719 static void dwarf2_find_base_address (struct die_info *die,
1720                                       struct dwarf2_cu *cu);
1721
1722 static struct partial_symtab *create_partial_symtab
1723   (struct dwarf2_per_cu_data *per_cu, const char *name);
1724
1725 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1726                                         const gdb_byte *info_ptr,
1727                                         struct die_info *type_unit_die,
1728                                         int has_children, void *data);
1729
1730 static void dwarf2_build_psymtabs_hard
1731   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1732
1733 static void scan_partial_symbols (struct partial_die_info *,
1734                                   CORE_ADDR *, CORE_ADDR *,
1735                                   int, struct dwarf2_cu *);
1736
1737 static void add_partial_symbol (struct partial_die_info *,
1738                                 struct dwarf2_cu *);
1739
1740 static void add_partial_namespace (struct partial_die_info *pdi,
1741                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1742                                    int set_addrmap, struct dwarf2_cu *cu);
1743
1744 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1745                                 CORE_ADDR *highpc, int set_addrmap,
1746                                 struct dwarf2_cu *cu);
1747
1748 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1749                                      struct dwarf2_cu *cu);
1750
1751 static void add_partial_subprogram (struct partial_die_info *pdi,
1752                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1753                                     int need_pc, struct dwarf2_cu *cu);
1754
1755 static void dwarf2_read_symtab (struct partial_symtab *,
1756                                 struct objfile *);
1757
1758 static void psymtab_to_symtab_1 (struct partial_symtab *);
1759
1760 static struct abbrev_info *abbrev_table_lookup_abbrev
1761   (const struct abbrev_table *, unsigned int);
1762
1763 static struct abbrev_table *abbrev_table_read_table
1764   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1765    sect_offset);
1766
1767 static void abbrev_table_free (struct abbrev_table *);
1768
1769 static void abbrev_table_free_cleanup (void *);
1770
1771 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1772                                  struct dwarf2_section_info *);
1773
1774 static void dwarf2_free_abbrev_table (void *);
1775
1776 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1777
1778 static struct partial_die_info *load_partial_dies
1779   (const struct die_reader_specs *, const gdb_byte *, int);
1780
1781 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1782                                          struct partial_die_info *,
1783                                          struct abbrev_info *,
1784                                          unsigned int,
1785                                          const gdb_byte *);
1786
1787 static struct partial_die_info *find_partial_die (sect_offset, int,
1788                                                   struct dwarf2_cu *);
1789
1790 static void fixup_partial_die (struct partial_die_info *,
1791                                struct dwarf2_cu *);
1792
1793 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1794                                        struct attribute *, struct attr_abbrev *,
1795                                        const gdb_byte *);
1796
1797 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1798
1799 static int read_1_signed_byte (bfd *, const gdb_byte *);
1800
1801 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1802
1803 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1804
1805 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1806
1807 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1808                                unsigned int *);
1809
1810 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1811
1812 static LONGEST read_checked_initial_length_and_offset
1813   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1814    unsigned int *, unsigned int *);
1815
1816 static LONGEST read_offset (bfd *, const gdb_byte *,
1817                             const struct comp_unit_head *,
1818                             unsigned int *);
1819
1820 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1821
1822 static sect_offset read_abbrev_offset
1823   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1824    struct dwarf2_section_info *, sect_offset);
1825
1826 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1827
1828 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1829
1830 static const char *read_indirect_string
1831   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1832    const struct comp_unit_head *, unsigned int *);
1833
1834 static const char *read_indirect_line_string
1835   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1836    const struct comp_unit_head *, unsigned int *);
1837
1838 static const char *read_indirect_string_at_offset
1839   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1840    LONGEST str_offset);
1841
1842 static const char *read_indirect_string_from_dwz
1843   (struct objfile *objfile, struct dwz_file *, LONGEST);
1844
1845 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1846
1847 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1848                                               const gdb_byte *,
1849                                               unsigned int *);
1850
1851 static const char *read_str_index (const struct die_reader_specs *reader,
1852                                    ULONGEST str_index);
1853
1854 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1855
1856 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1857                                       struct dwarf2_cu *);
1858
1859 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1860                                                 unsigned int);
1861
1862 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1863                                        struct dwarf2_cu *cu);
1864
1865 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1866                                struct dwarf2_cu *cu);
1867
1868 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1869
1870 static struct die_info *die_specification (struct die_info *die,
1871                                            struct dwarf2_cu **);
1872
1873 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1874                                                 struct dwarf2_cu *cu);
1875
1876 static void dwarf_decode_lines (struct line_header *, const char *,
1877                                 struct dwarf2_cu *, struct partial_symtab *,
1878                                 CORE_ADDR, int decode_mapping);
1879
1880 static void dwarf2_start_subfile (const char *, const char *);
1881
1882 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1883                                                     const char *, const char *,
1884                                                     CORE_ADDR);
1885
1886 static struct symbol *new_symbol (struct die_info *, struct type *,
1887                                   struct dwarf2_cu *);
1888
1889 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1890                                        struct dwarf2_cu *, struct symbol *);
1891
1892 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1893                                 struct dwarf2_cu *);
1894
1895 static void dwarf2_const_value_attr (const struct attribute *attr,
1896                                      struct type *type,
1897                                      const char *name,
1898                                      struct obstack *obstack,
1899                                      struct dwarf2_cu *cu, LONGEST *value,
1900                                      const gdb_byte **bytes,
1901                                      struct dwarf2_locexpr_baton **baton);
1902
1903 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1904
1905 static int need_gnat_info (struct dwarf2_cu *);
1906
1907 static struct type *die_descriptive_type (struct die_info *,
1908                                           struct dwarf2_cu *);
1909
1910 static void set_descriptive_type (struct type *, struct die_info *,
1911                                   struct dwarf2_cu *);
1912
1913 static struct type *die_containing_type (struct die_info *,
1914                                          struct dwarf2_cu *);
1915
1916 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1917                                      struct dwarf2_cu *);
1918
1919 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1920
1921 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1922
1923 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1924
1925 static char *typename_concat (struct obstack *obs, const char *prefix,
1926                               const char *suffix, int physname,
1927                               struct dwarf2_cu *cu);
1928
1929 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1930
1931 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1932
1933 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1934
1935 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1936
1937 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1938
1939 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1940
1941 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1942                                struct dwarf2_cu *, struct partial_symtab *);
1943
1944 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1945    values.  Keep the items ordered with increasing constraints compliance.  */
1946 enum pc_bounds_kind
1947 {
1948   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1949   PC_BOUNDS_NOT_PRESENT,
1950
1951   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1952      were present but they do not form a valid range of PC addresses.  */
1953   PC_BOUNDS_INVALID,
1954
1955   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1956   PC_BOUNDS_RANGES,
1957
1958   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1959   PC_BOUNDS_HIGH_LOW,
1960 };
1961
1962 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1963                                                  CORE_ADDR *, CORE_ADDR *,
1964                                                  struct dwarf2_cu *,
1965                                                  struct partial_symtab *);
1966
1967 static void get_scope_pc_bounds (struct die_info *,
1968                                  CORE_ADDR *, CORE_ADDR *,
1969                                  struct dwarf2_cu *);
1970
1971 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1972                                         CORE_ADDR, struct dwarf2_cu *);
1973
1974 static void dwarf2_add_field (struct field_info *, struct die_info *,
1975                               struct dwarf2_cu *);
1976
1977 static void dwarf2_attach_fields_to_type (struct field_info *,
1978                                           struct type *, struct dwarf2_cu *);
1979
1980 static void dwarf2_add_member_fn (struct field_info *,
1981                                   struct die_info *, struct type *,
1982                                   struct dwarf2_cu *);
1983
1984 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1985                                              struct type *,
1986                                              struct dwarf2_cu *);
1987
1988 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1989
1990 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1991
1992 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1993
1994 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1995
1996 static struct using_direct **using_directives (enum language);
1997
1998 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1999
2000 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
2001
2002 static struct type *read_module_type (struct die_info *die,
2003                                       struct dwarf2_cu *cu);
2004
2005 static const char *namespace_name (struct die_info *die,
2006                                    int *is_anonymous, struct dwarf2_cu *);
2007
2008 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
2009
2010 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
2011
2012 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
2013                                                        struct dwarf2_cu *);
2014
2015 static struct die_info *read_die_and_siblings_1
2016   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
2017    struct die_info *);
2018
2019 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
2020                                                const gdb_byte *info_ptr,
2021                                                const gdb_byte **new_info_ptr,
2022                                                struct die_info *parent);
2023
2024 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
2025                                         struct die_info **, const gdb_byte *,
2026                                         int *, int);
2027
2028 static const gdb_byte *read_full_die (const struct die_reader_specs *,
2029                                       struct die_info **, const gdb_byte *,
2030                                       int *);
2031
2032 static void process_die (struct die_info *, struct dwarf2_cu *);
2033
2034 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
2035                                              struct obstack *);
2036
2037 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
2038
2039 static const char *dwarf2_full_name (const char *name,
2040                                      struct die_info *die,
2041                                      struct dwarf2_cu *cu);
2042
2043 static const char *dwarf2_physname (const char *name, struct die_info *die,
2044                                     struct dwarf2_cu *cu);
2045
2046 static struct die_info *dwarf2_extension (struct die_info *die,
2047                                           struct dwarf2_cu **);
2048
2049 static const char *dwarf_tag_name (unsigned int);
2050
2051 static const char *dwarf_attr_name (unsigned int);
2052
2053 static const char *dwarf_form_name (unsigned int);
2054
2055 static const char *dwarf_bool_name (unsigned int);
2056
2057 static const char *dwarf_type_encoding_name (unsigned int);
2058
2059 static struct die_info *sibling_die (struct die_info *);
2060
2061 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
2062
2063 static void dump_die_for_error (struct die_info *);
2064
2065 static void dump_die_1 (struct ui_file *, int level, int max_level,
2066                         struct die_info *);
2067
2068 /*static*/ void dump_die (struct die_info *, int max_level);
2069
2070 static void store_in_ref_table (struct die_info *,
2071                                 struct dwarf2_cu *);
2072
2073 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
2074
2075 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
2076
2077 static struct die_info *follow_die_ref_or_sig (struct die_info *,
2078                                                const struct attribute *,
2079                                                struct dwarf2_cu **);
2080
2081 static struct die_info *follow_die_ref (struct die_info *,
2082                                         const struct attribute *,
2083                                         struct dwarf2_cu **);
2084
2085 static struct die_info *follow_die_sig (struct die_info *,
2086                                         const struct attribute *,
2087                                         struct dwarf2_cu **);
2088
2089 static struct type *get_signatured_type (struct die_info *, ULONGEST,
2090                                          struct dwarf2_cu *);
2091
2092 static struct type *get_DW_AT_signature_type (struct die_info *,
2093                                               const struct attribute *,
2094                                               struct dwarf2_cu *);
2095
2096 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
2097
2098 static void read_signatured_type (struct signatured_type *);
2099
2100 static int attr_to_dynamic_prop (const struct attribute *attr,
2101                                  struct die_info *die, struct dwarf2_cu *cu,
2102                                  struct dynamic_prop *prop);
2103
2104 /* memory allocation interface */
2105
2106 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
2107
2108 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
2109
2110 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2111
2112 static int attr_form_is_block (const struct attribute *);
2113
2114 static int attr_form_is_section_offset (const struct attribute *);
2115
2116 static int attr_form_is_constant (const struct attribute *);
2117
2118 static int attr_form_is_ref (const struct attribute *);
2119
2120 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
2121                                    struct dwarf2_loclist_baton *baton,
2122                                    const struct attribute *attr);
2123
2124 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
2125                                          struct symbol *sym,
2126                                          struct dwarf2_cu *cu,
2127                                          int is_block);
2128
2129 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
2130                                      const gdb_byte *info_ptr,
2131                                      struct abbrev_info *abbrev);
2132
2133 static void free_stack_comp_unit (void *);
2134
2135 static hashval_t partial_die_hash (const void *item);
2136
2137 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
2138
2139 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
2140   (sect_offset sect_off, unsigned int offset_in_dwz,
2141    struct dwarf2_per_objfile *dwarf2_per_objfile);
2142
2143 static void init_one_comp_unit (struct dwarf2_cu *cu,
2144                                 struct dwarf2_per_cu_data *per_cu);
2145
2146 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
2147                                    struct die_info *comp_unit_die,
2148                                    enum language pretend_language);
2149
2150 static void free_heap_comp_unit (void *);
2151
2152 static void free_cached_comp_units (void *);
2153
2154 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
2155
2156 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
2157
2158 static struct type *set_die_type (struct die_info *, struct type *,
2159                                   struct dwarf2_cu *);
2160
2161 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
2162
2163 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
2164
2165 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
2166                                  enum language);
2167
2168 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
2169                                     enum language);
2170
2171 static void process_full_type_unit (struct dwarf2_per_cu_data *,
2172                                     enum language);
2173
2174 static void dwarf2_add_dependence (struct dwarf2_cu *,
2175                                    struct dwarf2_per_cu_data *);
2176
2177 static void dwarf2_mark (struct dwarf2_cu *);
2178
2179 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
2180
2181 static struct type *get_die_type_at_offset (sect_offset,
2182                                             struct dwarf2_per_cu_data *);
2183
2184 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
2185
2186 static void dwarf2_release_queue (void *dummy);
2187
2188 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
2189                              enum language pretend_language);
2190
2191 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
2192
2193 /* The return type of find_file_and_directory.  Note, the enclosed
2194    string pointers are only valid while this object is valid.  */
2195
2196 struct file_and_directory
2197 {
2198   /* The filename.  This is never NULL.  */
2199   const char *name;
2200
2201   /* The compilation directory.  NULL if not known.  If we needed to
2202      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
2203      points directly to the DW_AT_comp_dir string attribute owned by
2204      the obstack that owns the DIE.  */
2205   const char *comp_dir;
2206
2207   /* If we needed to build a new string for comp_dir, this is what
2208      owns the storage.  */
2209   std::string comp_dir_storage;
2210 };
2211
2212 static file_and_directory find_file_and_directory (struct die_info *die,
2213                                                    struct dwarf2_cu *cu);
2214
2215 static char *file_full_name (int file, struct line_header *lh,
2216                              const char *comp_dir);
2217
2218 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
2219 enum class rcuh_kind { COMPILE, TYPE };
2220
2221 static const gdb_byte *read_and_check_comp_unit_head
2222   (struct dwarf2_per_objfile* dwarf2_per_objfile,
2223    struct comp_unit_head *header,
2224    struct dwarf2_section_info *section,
2225    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
2226    rcuh_kind section_kind);
2227
2228 static void init_cutu_and_read_dies
2229   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
2230    int use_existing_cu, int keep,
2231    die_reader_func_ftype *die_reader_func, void *data);
2232
2233 static void init_cutu_and_read_dies_simple
2234   (struct dwarf2_per_cu_data *this_cu,
2235    die_reader_func_ftype *die_reader_func, void *data);
2236
2237 static htab_t allocate_signatured_type_table (struct objfile *objfile);
2238
2239 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
2240
2241 static struct dwo_unit *lookup_dwo_unit_in_dwp
2242   (struct dwarf2_per_objfile *dwarf2_per_objfile,
2243    struct dwp_file *dwp_file, const char *comp_dir,
2244    ULONGEST signature, int is_debug_types);
2245
2246 static struct dwp_file *get_dwp_file
2247   (struct dwarf2_per_objfile *dwarf2_per_objfile);
2248
2249 static struct dwo_unit *lookup_dwo_comp_unit
2250   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
2251
2252 static struct dwo_unit *lookup_dwo_type_unit
2253   (struct signatured_type *, const char *, const char *);
2254
2255 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2256
2257 static void free_dwo_file_cleanup (void *);
2258
2259 struct free_dwo_file_cleanup_data
2260 {
2261   struct dwo_file *dwo_file;
2262   struct dwarf2_per_objfile *dwarf2_per_objfile;
2263 };
2264
2265 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2266
2267 static void check_producer (struct dwarf2_cu *cu);
2268
2269 static void free_line_header_voidp (void *arg);
2270 \f
2271 /* Various complaints about symbol reading that don't abort the process.  */
2272
2273 static void
2274 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2275 {
2276   complaint (&symfile_complaints,
2277              _("statement list doesn't fit in .debug_line section"));
2278 }
2279
2280 static void
2281 dwarf2_debug_line_missing_file_complaint (void)
2282 {
2283   complaint (&symfile_complaints,
2284              _(".debug_line section has line data without a file"));
2285 }
2286
2287 static void
2288 dwarf2_debug_line_missing_end_sequence_complaint (void)
2289 {
2290   complaint (&symfile_complaints,
2291              _(".debug_line section has line "
2292                "program sequence without an end"));
2293 }
2294
2295 static void
2296 dwarf2_complex_location_expr_complaint (void)
2297 {
2298   complaint (&symfile_complaints, _("location expression too complex"));
2299 }
2300
2301 static void
2302 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2303                                               int arg3)
2304 {
2305   complaint (&symfile_complaints,
2306              _("const value length mismatch for '%s', got %d, expected %d"),
2307              arg1, arg2, arg3);
2308 }
2309
2310 static void
2311 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2312 {
2313   complaint (&symfile_complaints,
2314              _("debug info runs off end of %s section"
2315                " [in module %s]"),
2316              get_section_name (section),
2317              get_section_file_name (section));
2318 }
2319
2320 static void
2321 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2322 {
2323   complaint (&symfile_complaints,
2324              _("macro debug info contains a "
2325                "malformed macro definition:\n`%s'"),
2326              arg1);
2327 }
2328
2329 static void
2330 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2331 {
2332   complaint (&symfile_complaints,
2333              _("invalid attribute class or form for '%s' in '%s'"),
2334              arg1, arg2);
2335 }
2336
2337 /* Hash function for line_header_hash.  */
2338
2339 static hashval_t
2340 line_header_hash (const struct line_header *ofs)
2341 {
2342   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2343 }
2344
2345 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2346
2347 static hashval_t
2348 line_header_hash_voidp (const void *item)
2349 {
2350   const struct line_header *ofs = (const struct line_header *) item;
2351
2352   return line_header_hash (ofs);
2353 }
2354
2355 /* Equality function for line_header_hash.  */
2356
2357 static int
2358 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2359 {
2360   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2361   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2362
2363   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2364           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2365 }
2366
2367 \f
2368
2369 /* Read the given attribute value as an address, taking the attribute's
2370    form into account.  */
2371
2372 static CORE_ADDR
2373 attr_value_as_address (struct attribute *attr)
2374 {
2375   CORE_ADDR addr;
2376
2377   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2378     {
2379       /* Aside from a few clearly defined exceptions, attributes that
2380          contain an address must always be in DW_FORM_addr form.
2381          Unfortunately, some compilers happen to be violating this
2382          requirement by encoding addresses using other forms, such
2383          as DW_FORM_data4 for example.  For those broken compilers,
2384          we try to do our best, without any guarantee of success,
2385          to interpret the address correctly.  It would also be nice
2386          to generate a complaint, but that would require us to maintain
2387          a list of legitimate cases where a non-address form is allowed,
2388          as well as update callers to pass in at least the CU's DWARF
2389          version.  This is more overhead than what we're willing to
2390          expand for a pretty rare case.  */
2391       addr = DW_UNSND (attr);
2392     }
2393   else
2394     addr = DW_ADDR (attr);
2395
2396   return addr;
2397 }
2398
2399 /* The suffix for an index file.  */
2400 #define INDEX4_SUFFIX ".gdb-index"
2401 #define INDEX5_SUFFIX ".debug_names"
2402 #define DEBUG_STR_SUFFIX ".debug_str"
2403
2404 /* See declaration.  */
2405
2406 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2407                                         const dwarf2_debug_sections *names)
2408   : objfile (objfile_)
2409 {
2410   if (names == NULL)
2411     names = &dwarf2_elf_names;
2412
2413   bfd *obfd = objfile->obfd;
2414
2415   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2416     locate_sections (obfd, sec, *names);
2417 }
2418
2419 dwarf2_per_objfile::~dwarf2_per_objfile ()
2420 {
2421   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2422   free_cached_comp_units ();
2423
2424   if (quick_file_names_table)
2425     htab_delete (quick_file_names_table);
2426
2427   if (line_header_hash)
2428     htab_delete (line_header_hash);
2429
2430   /* Everything else should be on the objfile obstack.  */
2431 }
2432
2433 /* See declaration.  */
2434
2435 void
2436 dwarf2_per_objfile::free_cached_comp_units ()
2437 {
2438   dwarf2_per_cu_data *per_cu = read_in_chain;
2439   dwarf2_per_cu_data **last_chain = &read_in_chain;
2440   while (per_cu != NULL)
2441     {
2442       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2443
2444       free_heap_comp_unit (per_cu->cu);
2445       *last_chain = next_cu;
2446       per_cu = next_cu;
2447     }
2448 }
2449
2450 /* Try to locate the sections we need for DWARF 2 debugging
2451    information and return true if we have enough to do something.
2452    NAMES points to the dwarf2 section names, or is NULL if the standard
2453    ELF names are used.  */
2454
2455 int
2456 dwarf2_has_info (struct objfile *objfile,
2457                  const struct dwarf2_debug_sections *names)
2458 {
2459   if (objfile->flags & OBJF_READNEVER)
2460     return 0;
2461
2462   struct dwarf2_per_objfile *dwarf2_per_objfile
2463     = get_dwarf2_per_objfile (objfile);
2464
2465   if (dwarf2_per_objfile == NULL)
2466     {
2467       /* Initialize per-objfile state.  */
2468       struct dwarf2_per_objfile *data
2469         = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_objfile);
2470
2471       dwarf2_per_objfile = new (data) struct dwarf2_per_objfile (objfile, names);
2472       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2473     }
2474   return (!dwarf2_per_objfile->info.is_virtual
2475           && dwarf2_per_objfile->info.s.section != NULL
2476           && !dwarf2_per_objfile->abbrev.is_virtual
2477           && dwarf2_per_objfile->abbrev.s.section != NULL);
2478 }
2479
2480 /* Return the containing section of virtual section SECTION.  */
2481
2482 static struct dwarf2_section_info *
2483 get_containing_section (const struct dwarf2_section_info *section)
2484 {
2485   gdb_assert (section->is_virtual);
2486   return section->s.containing_section;
2487 }
2488
2489 /* Return the bfd owner of SECTION.  */
2490
2491 static struct bfd *
2492 get_section_bfd_owner (const struct dwarf2_section_info *section)
2493 {
2494   if (section->is_virtual)
2495     {
2496       section = get_containing_section (section);
2497       gdb_assert (!section->is_virtual);
2498     }
2499   return section->s.section->owner;
2500 }
2501
2502 /* Return the bfd section of SECTION.
2503    Returns NULL if the section is not present.  */
2504
2505 static asection *
2506 get_section_bfd_section (const struct dwarf2_section_info *section)
2507 {
2508   if (section->is_virtual)
2509     {
2510       section = get_containing_section (section);
2511       gdb_assert (!section->is_virtual);
2512     }
2513   return section->s.section;
2514 }
2515
2516 /* Return the name of SECTION.  */
2517
2518 static const char *
2519 get_section_name (const struct dwarf2_section_info *section)
2520 {
2521   asection *sectp = get_section_bfd_section (section);
2522
2523   gdb_assert (sectp != NULL);
2524   return bfd_section_name (get_section_bfd_owner (section), sectp);
2525 }
2526
2527 /* Return the name of the file SECTION is in.  */
2528
2529 static const char *
2530 get_section_file_name (const struct dwarf2_section_info *section)
2531 {
2532   bfd *abfd = get_section_bfd_owner (section);
2533
2534   return bfd_get_filename (abfd);
2535 }
2536
2537 /* Return the id of SECTION.
2538    Returns 0 if SECTION doesn't exist.  */
2539
2540 static int
2541 get_section_id (const struct dwarf2_section_info *section)
2542 {
2543   asection *sectp = get_section_bfd_section (section);
2544
2545   if (sectp == NULL)
2546     return 0;
2547   return sectp->id;
2548 }
2549
2550 /* Return the flags of SECTION.
2551    SECTION (or containing section if this is a virtual section) must exist.  */
2552
2553 static int
2554 get_section_flags (const struct dwarf2_section_info *section)
2555 {
2556   asection *sectp = get_section_bfd_section (section);
2557
2558   gdb_assert (sectp != NULL);
2559   return bfd_get_section_flags (sectp->owner, sectp);
2560 }
2561
2562 /* When loading sections, we look either for uncompressed section or for
2563    compressed section names.  */
2564
2565 static int
2566 section_is_p (const char *section_name,
2567               const struct dwarf2_section_names *names)
2568 {
2569   if (names->normal != NULL
2570       && strcmp (section_name, names->normal) == 0)
2571     return 1;
2572   if (names->compressed != NULL
2573       && strcmp (section_name, names->compressed) == 0)
2574     return 1;
2575   return 0;
2576 }
2577
2578 /* See declaration.  */
2579
2580 void
2581 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2582                                      const dwarf2_debug_sections &names)
2583 {
2584   flagword aflag = bfd_get_section_flags (abfd, sectp);
2585
2586   if ((aflag & SEC_HAS_CONTENTS) == 0)
2587     {
2588     }
2589   else if (section_is_p (sectp->name, &names.info))
2590     {
2591       this->info.s.section = sectp;
2592       this->info.size = bfd_get_section_size (sectp);
2593     }
2594   else if (section_is_p (sectp->name, &names.abbrev))
2595     {
2596       this->abbrev.s.section = sectp;
2597       this->abbrev.size = bfd_get_section_size (sectp);
2598     }
2599   else if (section_is_p (sectp->name, &names.line))
2600     {
2601       this->line.s.section = sectp;
2602       this->line.size = bfd_get_section_size (sectp);
2603     }
2604   else if (section_is_p (sectp->name, &names.loc))
2605     {
2606       this->loc.s.section = sectp;
2607       this->loc.size = bfd_get_section_size (sectp);
2608     }
2609   else if (section_is_p (sectp->name, &names.loclists))
2610     {
2611       this->loclists.s.section = sectp;
2612       this->loclists.size = bfd_get_section_size (sectp);
2613     }
2614   else if (section_is_p (sectp->name, &names.macinfo))
2615     {
2616       this->macinfo.s.section = sectp;
2617       this->macinfo.size = bfd_get_section_size (sectp);
2618     }
2619   else if (section_is_p (sectp->name, &names.macro))
2620     {
2621       this->macro.s.section = sectp;
2622       this->macro.size = bfd_get_section_size (sectp);
2623     }
2624   else if (section_is_p (sectp->name, &names.str))
2625     {
2626       this->str.s.section = sectp;
2627       this->str.size = bfd_get_section_size (sectp);
2628     }
2629   else if (section_is_p (sectp->name, &names.line_str))
2630     {
2631       this->line_str.s.section = sectp;
2632       this->line_str.size = bfd_get_section_size (sectp);
2633     }
2634   else if (section_is_p (sectp->name, &names.addr))
2635     {
2636       this->addr.s.section = sectp;
2637       this->addr.size = bfd_get_section_size (sectp);
2638     }
2639   else if (section_is_p (sectp->name, &names.frame))
2640     {
2641       this->frame.s.section = sectp;
2642       this->frame.size = bfd_get_section_size (sectp);
2643     }
2644   else if (section_is_p (sectp->name, &names.eh_frame))
2645     {
2646       this->eh_frame.s.section = sectp;
2647       this->eh_frame.size = bfd_get_section_size (sectp);
2648     }
2649   else if (section_is_p (sectp->name, &names.ranges))
2650     {
2651       this->ranges.s.section = sectp;
2652       this->ranges.size = bfd_get_section_size (sectp);
2653     }
2654   else if (section_is_p (sectp->name, &names.rnglists))
2655     {
2656       this->rnglists.s.section = sectp;
2657       this->rnglists.size = bfd_get_section_size (sectp);
2658     }
2659   else if (section_is_p (sectp->name, &names.types))
2660     {
2661       struct dwarf2_section_info type_section;
2662
2663       memset (&type_section, 0, sizeof (type_section));
2664       type_section.s.section = sectp;
2665       type_section.size = bfd_get_section_size (sectp);
2666
2667       VEC_safe_push (dwarf2_section_info_def, this->types,
2668                      &type_section);
2669     }
2670   else if (section_is_p (sectp->name, &names.gdb_index))
2671     {
2672       this->gdb_index.s.section = sectp;
2673       this->gdb_index.size = bfd_get_section_size (sectp);
2674     }
2675   else if (section_is_p (sectp->name, &names.debug_names))
2676     {
2677       this->debug_names.s.section = sectp;
2678       this->debug_names.size = bfd_get_section_size (sectp);
2679     }
2680   else if (section_is_p (sectp->name, &names.debug_aranges))
2681     {
2682       this->debug_aranges.s.section = sectp;
2683       this->debug_aranges.size = bfd_get_section_size (sectp);
2684     }
2685
2686   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2687       && bfd_section_vma (abfd, sectp) == 0)
2688     this->has_section_at_zero = true;
2689 }
2690
2691 /* A helper function that decides whether a section is empty,
2692    or not present.  */
2693
2694 static int
2695 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2696 {
2697   if (section->is_virtual)
2698     return section->size == 0;
2699   return section->s.section == NULL || section->size == 0;
2700 }
2701
2702 /* Read the contents of the section INFO.
2703    OBJFILE is the main object file, but not necessarily the file where
2704    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2705    of the DWO file.
2706    If the section is compressed, uncompress it before returning.  */
2707
2708 static void
2709 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2710 {
2711   asection *sectp;
2712   bfd *abfd;
2713   gdb_byte *buf, *retbuf;
2714
2715   if (info->readin)
2716     return;
2717   info->buffer = NULL;
2718   info->readin = 1;
2719
2720   if (dwarf2_section_empty_p (info))
2721     return;
2722
2723   sectp = get_section_bfd_section (info);
2724
2725   /* If this is a virtual section we need to read in the real one first.  */
2726   if (info->is_virtual)
2727     {
2728       struct dwarf2_section_info *containing_section =
2729         get_containing_section (info);
2730
2731       gdb_assert (sectp != NULL);
2732       if ((sectp->flags & SEC_RELOC) != 0)
2733         {
2734           error (_("Dwarf Error: DWP format V2 with relocations is not"
2735                    " supported in section %s [in module %s]"),
2736                  get_section_name (info), get_section_file_name (info));
2737         }
2738       dwarf2_read_section (objfile, containing_section);
2739       /* Other code should have already caught virtual sections that don't
2740          fit.  */
2741       gdb_assert (info->virtual_offset + info->size
2742                   <= containing_section->size);
2743       /* If the real section is empty or there was a problem reading the
2744          section we shouldn't get here.  */
2745       gdb_assert (containing_section->buffer != NULL);
2746       info->buffer = containing_section->buffer + info->virtual_offset;
2747       return;
2748     }
2749
2750   /* If the section has relocations, we must read it ourselves.
2751      Otherwise we attach it to the BFD.  */
2752   if ((sectp->flags & SEC_RELOC) == 0)
2753     {
2754       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2755       return;
2756     }
2757
2758   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2759   info->buffer = buf;
2760
2761   /* When debugging .o files, we may need to apply relocations; see
2762      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2763      We never compress sections in .o files, so we only need to
2764      try this when the section is not compressed.  */
2765   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2766   if (retbuf != NULL)
2767     {
2768       info->buffer = retbuf;
2769       return;
2770     }
2771
2772   abfd = get_section_bfd_owner (info);
2773   gdb_assert (abfd != NULL);
2774
2775   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2776       || bfd_bread (buf, info->size, abfd) != info->size)
2777     {
2778       error (_("Dwarf Error: Can't read DWARF data"
2779                " in section %s [in module %s]"),
2780              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2781     }
2782 }
2783
2784 /* A helper function that returns the size of a section in a safe way.
2785    If you are positive that the section has been read before using the
2786    size, then it is safe to refer to the dwarf2_section_info object's
2787    "size" field directly.  In other cases, you must call this
2788    function, because for compressed sections the size field is not set
2789    correctly until the section has been read.  */
2790
2791 static bfd_size_type
2792 dwarf2_section_size (struct objfile *objfile,
2793                      struct dwarf2_section_info *info)
2794 {
2795   if (!info->readin)
2796     dwarf2_read_section (objfile, info);
2797   return info->size;
2798 }
2799
2800 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2801    SECTION_NAME.  */
2802
2803 void
2804 dwarf2_get_section_info (struct objfile *objfile,
2805                          enum dwarf2_section_enum sect,
2806                          asection **sectp, const gdb_byte **bufp,
2807                          bfd_size_type *sizep)
2808 {
2809   struct dwarf2_per_objfile *data
2810     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2811                                                   dwarf2_objfile_data_key);
2812   struct dwarf2_section_info *info;
2813
2814   /* We may see an objfile without any DWARF, in which case we just
2815      return nothing.  */
2816   if (data == NULL)
2817     {
2818       *sectp = NULL;
2819       *bufp = NULL;
2820       *sizep = 0;
2821       return;
2822     }
2823   switch (sect)
2824     {
2825     case DWARF2_DEBUG_FRAME:
2826       info = &data->frame;
2827       break;
2828     case DWARF2_EH_FRAME:
2829       info = &data->eh_frame;
2830       break;
2831     default:
2832       gdb_assert_not_reached ("unexpected section");
2833     }
2834
2835   dwarf2_read_section (objfile, info);
2836
2837   *sectp = get_section_bfd_section (info);
2838   *bufp = info->buffer;
2839   *sizep = info->size;
2840 }
2841
2842 /* A helper function to find the sections for a .dwz file.  */
2843
2844 static void
2845 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2846 {
2847   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2848
2849   /* Note that we only support the standard ELF names, because .dwz
2850      is ELF-only (at the time of writing).  */
2851   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2852     {
2853       dwz_file->abbrev.s.section = sectp;
2854       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2855     }
2856   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2857     {
2858       dwz_file->info.s.section = sectp;
2859       dwz_file->info.size = bfd_get_section_size (sectp);
2860     }
2861   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2862     {
2863       dwz_file->str.s.section = sectp;
2864       dwz_file->str.size = bfd_get_section_size (sectp);
2865     }
2866   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2867     {
2868       dwz_file->line.s.section = sectp;
2869       dwz_file->line.size = bfd_get_section_size (sectp);
2870     }
2871   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2872     {
2873       dwz_file->macro.s.section = sectp;
2874       dwz_file->macro.size = bfd_get_section_size (sectp);
2875     }
2876   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2877     {
2878       dwz_file->gdb_index.s.section = sectp;
2879       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2880     }
2881   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2882     {
2883       dwz_file->debug_names.s.section = sectp;
2884       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2885     }
2886 }
2887
2888 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2889    there is no .gnu_debugaltlink section in the file.  Error if there
2890    is such a section but the file cannot be found.  */
2891
2892 static struct dwz_file *
2893 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2894 {
2895   const char *filename;
2896   struct dwz_file *result;
2897   bfd_size_type buildid_len_arg;
2898   size_t buildid_len;
2899   bfd_byte *buildid;
2900
2901   if (dwarf2_per_objfile->dwz_file != NULL)
2902     return dwarf2_per_objfile->dwz_file;
2903
2904   bfd_set_error (bfd_error_no_error);
2905   gdb::unique_xmalloc_ptr<char> data
2906     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2907                                   &buildid_len_arg, &buildid));
2908   if (data == NULL)
2909     {
2910       if (bfd_get_error () == bfd_error_no_error)
2911         return NULL;
2912       error (_("could not read '.gnu_debugaltlink' section: %s"),
2913              bfd_errmsg (bfd_get_error ()));
2914     }
2915
2916   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2917
2918   buildid_len = (size_t) buildid_len_arg;
2919
2920   filename = data.get ();
2921
2922   std::string abs_storage;
2923   if (!IS_ABSOLUTE_PATH (filename))
2924     {
2925       gdb::unique_xmalloc_ptr<char> abs
2926         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2927
2928       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2929       filename = abs_storage.c_str ();
2930     }
2931
2932   /* First try the file name given in the section.  If that doesn't
2933      work, try to use the build-id instead.  */
2934   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2935   if (dwz_bfd != NULL)
2936     {
2937       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2938         dwz_bfd.release ();
2939     }
2940
2941   if (dwz_bfd == NULL)
2942     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2943
2944   if (dwz_bfd == NULL)
2945     error (_("could not find '.gnu_debugaltlink' file for %s"),
2946            objfile_name (dwarf2_per_objfile->objfile));
2947
2948   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2949                            struct dwz_file);
2950   result->dwz_bfd = dwz_bfd.release ();
2951
2952   bfd_map_over_sections (result->dwz_bfd, locate_dwz_sections, result);
2953
2954   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, result->dwz_bfd);
2955   dwarf2_per_objfile->dwz_file = result;
2956   return result;
2957 }
2958 \f
2959 /* DWARF quick_symbols_functions support.  */
2960
2961 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2962    unique line tables, so we maintain a separate table of all .debug_line
2963    derived entries to support the sharing.
2964    All the quick functions need is the list of file names.  We discard the
2965    line_header when we're done and don't need to record it here.  */
2966 struct quick_file_names
2967 {
2968   /* The data used to construct the hash key.  */
2969   struct stmt_list_hash hash;
2970
2971   /* The number of entries in file_names, real_names.  */
2972   unsigned int num_file_names;
2973
2974   /* The file names from the line table, after being run through
2975      file_full_name.  */
2976   const char **file_names;
2977
2978   /* The file names from the line table after being run through
2979      gdb_realpath.  These are computed lazily.  */
2980   const char **real_names;
2981 };
2982
2983 /* When using the index (and thus not using psymtabs), each CU has an
2984    object of this type.  This is used to hold information needed by
2985    the various "quick" methods.  */
2986 struct dwarf2_per_cu_quick_data
2987 {
2988   /* The file table.  This can be NULL if there was no file table
2989      or it's currently not read in.
2990      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2991   struct quick_file_names *file_names;
2992
2993   /* The corresponding symbol table.  This is NULL if symbols for this
2994      CU have not yet been read.  */
2995   struct compunit_symtab *compunit_symtab;
2996
2997   /* A temporary mark bit used when iterating over all CUs in
2998      expand_symtabs_matching.  */
2999   unsigned int mark : 1;
3000
3001   /* True if we've tried to read the file table and found there isn't one.
3002      There will be no point in trying to read it again next time.  */
3003   unsigned int no_file_data : 1;
3004 };
3005
3006 /* Utility hash function for a stmt_list_hash.  */
3007
3008 static hashval_t
3009 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
3010 {
3011   hashval_t v = 0;
3012
3013   if (stmt_list_hash->dwo_unit != NULL)
3014     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
3015   v += to_underlying (stmt_list_hash->line_sect_off);
3016   return v;
3017 }
3018
3019 /* Utility equality function for a stmt_list_hash.  */
3020
3021 static int
3022 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
3023                     const struct stmt_list_hash *rhs)
3024 {
3025   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
3026     return 0;
3027   if (lhs->dwo_unit != NULL
3028       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
3029     return 0;
3030
3031   return lhs->line_sect_off == rhs->line_sect_off;
3032 }
3033
3034 /* Hash function for a quick_file_names.  */
3035
3036 static hashval_t
3037 hash_file_name_entry (const void *e)
3038 {
3039   const struct quick_file_names *file_data
3040     = (const struct quick_file_names *) e;
3041
3042   return hash_stmt_list_entry (&file_data->hash);
3043 }
3044
3045 /* Equality function for a quick_file_names.  */
3046
3047 static int
3048 eq_file_name_entry (const void *a, const void *b)
3049 {
3050   const struct quick_file_names *ea = (const struct quick_file_names *) a;
3051   const struct quick_file_names *eb = (const struct quick_file_names *) b;
3052
3053   return eq_stmt_list_entry (&ea->hash, &eb->hash);
3054 }
3055
3056 /* Delete function for a quick_file_names.  */
3057
3058 static void
3059 delete_file_name_entry (void *e)
3060 {
3061   struct quick_file_names *file_data = (struct quick_file_names *) e;
3062   int i;
3063
3064   for (i = 0; i < file_data->num_file_names; ++i)
3065     {
3066       xfree ((void*) file_data->file_names[i]);
3067       if (file_data->real_names)
3068         xfree ((void*) file_data->real_names[i]);
3069     }
3070
3071   /* The space for the struct itself lives on objfile_obstack,
3072      so we don't free it here.  */
3073 }
3074
3075 /* Create a quick_file_names hash table.  */
3076
3077 static htab_t
3078 create_quick_file_names_table (unsigned int nr_initial_entries)
3079 {
3080   return htab_create_alloc (nr_initial_entries,
3081                             hash_file_name_entry, eq_file_name_entry,
3082                             delete_file_name_entry, xcalloc, xfree);
3083 }
3084
3085 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
3086    have to be created afterwards.  You should call age_cached_comp_units after
3087    processing PER_CU->CU.  dw2_setup must have been already called.  */
3088
3089 static void
3090 load_cu (struct dwarf2_per_cu_data *per_cu)
3091 {
3092   if (per_cu->is_debug_types)
3093     load_full_type_unit (per_cu);
3094   else
3095     load_full_comp_unit (per_cu, language_minimal);
3096
3097   if (per_cu->cu == NULL)
3098     return;  /* Dummy CU.  */
3099
3100   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
3101 }
3102
3103 /* Read in the symbols for PER_CU.  */
3104
3105 static void
3106 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
3107 {
3108   struct cleanup *back_to;
3109   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
3110
3111   /* Skip type_unit_groups, reading the type units they contain
3112      is handled elsewhere.  */
3113   if (IS_TYPE_UNIT_GROUP (per_cu))
3114     return;
3115
3116   back_to = make_cleanup (dwarf2_release_queue, NULL);
3117
3118   if (dwarf2_per_objfile->using_index
3119       ? per_cu->v.quick->compunit_symtab == NULL
3120       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
3121     {
3122       queue_comp_unit (per_cu, language_minimal);
3123       load_cu (per_cu);
3124
3125       /* If we just loaded a CU from a DWO, and we're working with an index
3126          that may badly handle TUs, load all the TUs in that DWO as well.
3127          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
3128       if (!per_cu->is_debug_types
3129           && per_cu->cu != NULL
3130           && per_cu->cu->dwo_unit != NULL
3131           && dwarf2_per_objfile->index_table != NULL
3132           && dwarf2_per_objfile->index_table->version <= 7
3133           /* DWP files aren't supported yet.  */
3134           && get_dwp_file (dwarf2_per_objfile) == NULL)
3135         queue_and_load_all_dwo_tus (per_cu);
3136     }
3137
3138   process_queue (dwarf2_per_objfile);
3139
3140   /* Age the cache, releasing compilation units that have not
3141      been used recently.  */
3142   age_cached_comp_units (dwarf2_per_objfile);
3143
3144   do_cleanups (back_to);
3145 }
3146
3147 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
3148    the objfile from which this CU came.  Returns the resulting symbol
3149    table.  */
3150
3151 static struct compunit_symtab *
3152 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
3153 {
3154   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
3155
3156   gdb_assert (dwarf2_per_objfile->using_index);
3157   if (!per_cu->v.quick->compunit_symtab)
3158     {
3159       struct cleanup *back_to = make_cleanup (free_cached_comp_units,
3160                                               dwarf2_per_objfile);
3161       scoped_restore decrementer = increment_reading_symtab ();
3162       dw2_do_instantiate_symtab (per_cu);
3163       process_cu_includes (dwarf2_per_objfile);
3164       do_cleanups (back_to);
3165     }
3166
3167   return per_cu->v.quick->compunit_symtab;
3168 }
3169
3170 /* Return the CU/TU given its index.
3171
3172    This is intended for loops like:
3173
3174    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3175                     + dwarf2_per_objfile->n_type_units); ++i)
3176      {
3177        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3178
3179        ...;
3180      }
3181 */
3182
3183 static struct dwarf2_per_cu_data *
3184 dw2_get_cutu (struct dwarf2_per_objfile *dwarf2_per_objfile,
3185               int index)
3186 {
3187   if (index >= dwarf2_per_objfile->n_comp_units)
3188     {
3189       index -= dwarf2_per_objfile->n_comp_units;
3190       gdb_assert (index < dwarf2_per_objfile->n_type_units);
3191       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
3192     }
3193
3194   return dwarf2_per_objfile->all_comp_units[index];
3195 }
3196
3197 /* Return the CU given its index.
3198    This differs from dw2_get_cutu in that it's for when you know INDEX
3199    refers to a CU.  */
3200
3201 static struct dwarf2_per_cu_data *
3202 dw2_get_cu (struct dwarf2_per_objfile *dwarf2_per_objfile, int index)
3203 {
3204   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
3205
3206   return dwarf2_per_objfile->all_comp_units[index];
3207 }
3208
3209 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
3210    objfile_obstack, and constructed with the specified field
3211    values.  */
3212
3213 static dwarf2_per_cu_data *
3214 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
3215                           struct dwarf2_section_info *section,
3216                           int is_dwz,
3217                           sect_offset sect_off, ULONGEST length)
3218 {
3219   struct objfile *objfile = dwarf2_per_objfile->objfile;
3220   dwarf2_per_cu_data *the_cu
3221     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3222                      struct dwarf2_per_cu_data);
3223   the_cu->sect_off = sect_off;
3224   the_cu->length = length;
3225   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
3226   the_cu->section = section;
3227   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3228                                    struct dwarf2_per_cu_quick_data);
3229   the_cu->is_dwz = is_dwz;
3230   return the_cu;
3231 }
3232
3233 /* A helper for create_cus_from_index that handles a given list of
3234    CUs.  */
3235
3236 static void
3237 create_cus_from_index_list (struct objfile *objfile,
3238                             const gdb_byte *cu_list, offset_type n_elements,
3239                             struct dwarf2_section_info *section,
3240                             int is_dwz,
3241                             int base_offset)
3242 {
3243   offset_type i;
3244   struct dwarf2_per_objfile *dwarf2_per_objfile
3245     = get_dwarf2_per_objfile (objfile);
3246
3247   for (i = 0; i < n_elements; i += 2)
3248     {
3249       gdb_static_assert (sizeof (ULONGEST) >= 8);
3250
3251       sect_offset sect_off
3252         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
3253       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
3254       cu_list += 2 * 8;
3255
3256       dwarf2_per_objfile->all_comp_units[base_offset + i / 2]
3257         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3258                                      sect_off, length);
3259     }
3260 }
3261
3262 /* Read the CU list from the mapped index, and use it to create all
3263    the CU objects for this objfile.  */
3264
3265 static void
3266 create_cus_from_index (struct objfile *objfile,
3267                        const gdb_byte *cu_list, offset_type cu_list_elements,
3268                        const gdb_byte *dwz_list, offset_type dwz_elements)
3269 {
3270   struct dwz_file *dwz;
3271   struct dwarf2_per_objfile *dwarf2_per_objfile
3272     = get_dwarf2_per_objfile (objfile);
3273
3274   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
3275   dwarf2_per_objfile->all_comp_units =
3276     XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
3277                dwarf2_per_objfile->n_comp_units);
3278
3279   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
3280                               &dwarf2_per_objfile->info, 0, 0);
3281
3282   if (dwz_elements == 0)
3283     return;
3284
3285   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3286   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
3287                               cu_list_elements / 2);
3288 }
3289
3290 /* Create the signatured type hash table from the index.  */
3291
3292 static void
3293 create_signatured_type_table_from_index (struct objfile *objfile,
3294                                          struct dwarf2_section_info *section,
3295                                          const gdb_byte *bytes,
3296                                          offset_type elements)
3297 {
3298   offset_type i;
3299   htab_t sig_types_hash;
3300   struct dwarf2_per_objfile *dwarf2_per_objfile
3301     = get_dwarf2_per_objfile (objfile);
3302
3303   dwarf2_per_objfile->n_type_units
3304     = dwarf2_per_objfile->n_allocated_type_units
3305     = elements / 3;
3306   dwarf2_per_objfile->all_type_units =
3307     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
3308
3309   sig_types_hash = allocate_signatured_type_table (objfile);
3310
3311   for (i = 0; i < elements; i += 3)
3312     {
3313       struct signatured_type *sig_type;
3314       ULONGEST signature;
3315       void **slot;
3316       cu_offset type_offset_in_tu;
3317
3318       gdb_static_assert (sizeof (ULONGEST) >= 8);
3319       sect_offset sect_off
3320         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3321       type_offset_in_tu
3322         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3323                                                 BFD_ENDIAN_LITTLE);
3324       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3325       bytes += 3 * 8;
3326
3327       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3328                                  struct signatured_type);
3329       sig_type->signature = signature;
3330       sig_type->type_offset_in_tu = type_offset_in_tu;
3331       sig_type->per_cu.is_debug_types = 1;
3332       sig_type->per_cu.section = section;
3333       sig_type->per_cu.sect_off = sect_off;
3334       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3335       sig_type->per_cu.v.quick
3336         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3337                           struct dwarf2_per_cu_quick_data);
3338
3339       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3340       *slot = sig_type;
3341
3342       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
3343     }
3344
3345   dwarf2_per_objfile->signatured_types = sig_types_hash;
3346 }
3347
3348 /* Create the signatured type hash table from .debug_names.  */
3349
3350 static void
3351 create_signatured_type_table_from_debug_names
3352   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3353    const mapped_debug_names &map,
3354    struct dwarf2_section_info *section,
3355    struct dwarf2_section_info *abbrev_section)
3356 {
3357   struct objfile *objfile = dwarf2_per_objfile->objfile;
3358
3359   dwarf2_read_section (objfile, section);
3360   dwarf2_read_section (objfile, abbrev_section);
3361
3362   dwarf2_per_objfile->n_type_units
3363     = dwarf2_per_objfile->n_allocated_type_units
3364     = map.tu_count;
3365   dwarf2_per_objfile->all_type_units
3366     = XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
3367
3368   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3369
3370   for (uint32_t i = 0; i < map.tu_count; ++i)
3371     {
3372       struct signatured_type *sig_type;
3373       ULONGEST signature;
3374       void **slot;
3375       cu_offset type_offset_in_tu;
3376
3377       sect_offset sect_off
3378         = (sect_offset) (extract_unsigned_integer
3379                          (map.tu_table_reordered + i * map.offset_size,
3380                           map.offset_size,
3381                           map.dwarf5_byte_order));
3382
3383       comp_unit_head cu_header;
3384       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3385                                      abbrev_section,
3386                                      section->buffer + to_underlying (sect_off),
3387                                      rcuh_kind::TYPE);
3388
3389       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3390                                  struct signatured_type);
3391       sig_type->signature = cu_header.signature;
3392       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3393       sig_type->per_cu.is_debug_types = 1;
3394       sig_type->per_cu.section = section;
3395       sig_type->per_cu.sect_off = sect_off;
3396       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3397       sig_type->per_cu.v.quick
3398         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3399                           struct dwarf2_per_cu_quick_data);
3400
3401       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3402       *slot = sig_type;
3403
3404       dwarf2_per_objfile->all_type_units[i] = sig_type;
3405     }
3406
3407   dwarf2_per_objfile->signatured_types = sig_types_hash;
3408 }
3409
3410 /* Read the address map data from the mapped index, and use it to
3411    populate the objfile's psymtabs_addrmap.  */
3412
3413 static void
3414 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3415                            struct mapped_index *index)
3416 {
3417   struct objfile *objfile = dwarf2_per_objfile->objfile;
3418   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3419   const gdb_byte *iter, *end;
3420   struct addrmap *mutable_map;
3421   CORE_ADDR baseaddr;
3422
3423   auto_obstack temp_obstack;
3424
3425   mutable_map = addrmap_create_mutable (&temp_obstack);
3426
3427   iter = index->address_table.data ();
3428   end = iter + index->address_table.size ();
3429
3430   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3431
3432   while (iter < end)
3433     {
3434       ULONGEST hi, lo, cu_index;
3435       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3436       iter += 8;
3437       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3438       iter += 8;
3439       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3440       iter += 4;
3441
3442       if (lo > hi)
3443         {
3444           complaint (&symfile_complaints,
3445                      _(".gdb_index address table has invalid range (%s - %s)"),
3446                      hex_string (lo), hex_string (hi));
3447           continue;
3448         }
3449
3450       if (cu_index >= dwarf2_per_objfile->n_comp_units)
3451         {
3452           complaint (&symfile_complaints,
3453                      _(".gdb_index address table has invalid CU number %u"),
3454                      (unsigned) cu_index);
3455           continue;
3456         }
3457
3458       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
3459       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
3460       addrmap_set_empty (mutable_map, lo, hi - 1,
3461                          dw2_get_cutu (dwarf2_per_objfile, cu_index));
3462     }
3463
3464   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3465                                                     &objfile->objfile_obstack);
3466 }
3467
3468 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3469    populate the objfile's psymtabs_addrmap.  */
3470
3471 static void
3472 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3473                              struct dwarf2_section_info *section)
3474 {
3475   struct objfile *objfile = dwarf2_per_objfile->objfile;
3476   bfd *abfd = objfile->obfd;
3477   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3478   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3479                                        SECT_OFF_TEXT (objfile));
3480
3481   auto_obstack temp_obstack;
3482   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3483
3484   std::unordered_map<sect_offset,
3485                      dwarf2_per_cu_data *,
3486                      gdb::hash_enum<sect_offset>>
3487     debug_info_offset_to_per_cu;
3488   for (int cui = 0; cui < dwarf2_per_objfile->n_comp_units; ++cui)
3489     {
3490       dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, cui);
3491       const auto insertpair
3492         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3493       if (!insertpair.second)
3494         {
3495           warning (_("Section .debug_aranges in %s has duplicate "
3496                      "debug_info_offset %u, ignoring .debug_aranges."),
3497                    objfile_name (objfile), to_underlying (per_cu->sect_off));
3498           return;
3499         }
3500     }
3501
3502   dwarf2_read_section (objfile, section);
3503
3504   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3505
3506   const gdb_byte *addr = section->buffer;
3507
3508   while (addr < section->buffer + section->size)
3509     {
3510       const gdb_byte *const entry_addr = addr;
3511       unsigned int bytes_read;
3512
3513       const LONGEST entry_length = read_initial_length (abfd, addr,
3514                                                         &bytes_read);
3515       addr += bytes_read;
3516
3517       const gdb_byte *const entry_end = addr + entry_length;
3518       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3519       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3520       if (addr + entry_length > section->buffer + section->size)
3521         {
3522           warning (_("Section .debug_aranges in %s entry at offset %zu "
3523                      "length %s exceeds section length %s, "
3524                      "ignoring .debug_aranges."),
3525                    objfile_name (objfile), entry_addr - section->buffer,
3526                    plongest (bytes_read + entry_length),
3527                    pulongest (section->size));
3528           return;
3529         }
3530
3531       /* The version number.  */
3532       const uint16_t version = read_2_bytes (abfd, addr);
3533       addr += 2;
3534       if (version != 2)
3535         {
3536           warning (_("Section .debug_aranges in %s entry at offset %zu "
3537                      "has unsupported version %d, ignoring .debug_aranges."),
3538                    objfile_name (objfile), entry_addr - section->buffer,
3539                    version);
3540           return;
3541         }
3542
3543       const uint64_t debug_info_offset
3544         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3545       addr += offset_size;
3546       const auto per_cu_it
3547         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3548       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3549         {
3550           warning (_("Section .debug_aranges in %s entry at offset %zu "
3551                      "debug_info_offset %s does not exists, "
3552                      "ignoring .debug_aranges."),
3553                    objfile_name (objfile), entry_addr - section->buffer,
3554                    pulongest (debug_info_offset));
3555           return;
3556         }
3557       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3558
3559       const uint8_t address_size = *addr++;
3560       if (address_size < 1 || address_size > 8)
3561         {
3562           warning (_("Section .debug_aranges in %s entry at offset %zu "
3563                      "address_size %u is invalid, ignoring .debug_aranges."),
3564                    objfile_name (objfile), entry_addr - section->buffer,
3565                    address_size);
3566           return;
3567         }
3568
3569       const uint8_t segment_selector_size = *addr++;
3570       if (segment_selector_size != 0)
3571         {
3572           warning (_("Section .debug_aranges in %s entry at offset %zu "
3573                      "segment_selector_size %u is not supported, "
3574                      "ignoring .debug_aranges."),
3575                    objfile_name (objfile), entry_addr - section->buffer,
3576                    segment_selector_size);
3577           return;
3578         }
3579
3580       /* Must pad to an alignment boundary that is twice the address
3581          size.  It is undocumented by the DWARF standard but GCC does
3582          use it.  */
3583       for (size_t padding = ((-(addr - section->buffer))
3584                              & (2 * address_size - 1));
3585            padding > 0; padding--)
3586         if (*addr++ != 0)
3587           {
3588             warning (_("Section .debug_aranges in %s entry at offset %zu "
3589                        "padding is not zero, ignoring .debug_aranges."),
3590                      objfile_name (objfile), entry_addr - section->buffer);
3591             return;
3592           }
3593
3594       for (;;)
3595         {
3596           if (addr + 2 * address_size > entry_end)
3597             {
3598               warning (_("Section .debug_aranges in %s entry at offset %zu "
3599                          "address list is not properly terminated, "
3600                          "ignoring .debug_aranges."),
3601                        objfile_name (objfile), entry_addr - section->buffer);
3602               return;
3603             }
3604           ULONGEST start = extract_unsigned_integer (addr, address_size,
3605                                                      dwarf5_byte_order);
3606           addr += address_size;
3607           ULONGEST length = extract_unsigned_integer (addr, address_size,
3608                                                       dwarf5_byte_order);
3609           addr += address_size;
3610           if (start == 0 && length == 0)
3611             break;
3612           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3613             {
3614               /* Symbol was eliminated due to a COMDAT group.  */
3615               continue;
3616             }
3617           ULONGEST end = start + length;
3618           start = gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr);
3619           end = gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr);
3620           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3621         }
3622     }
3623
3624   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3625                                                     &objfile->objfile_obstack);
3626 }
3627
3628 /* The hash function for strings in the mapped index.  This is the same as
3629    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
3630    implementation.  This is necessary because the hash function is tied to the
3631    format of the mapped index file.  The hash values do not have to match with
3632    SYMBOL_HASH_NEXT.
3633    
3634    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
3635
3636 static hashval_t
3637 mapped_index_string_hash (int index_version, const void *p)
3638 {
3639   const unsigned char *str = (const unsigned char *) p;
3640   hashval_t r = 0;
3641   unsigned char c;
3642
3643   while ((c = *str++) != 0)
3644     {
3645       if (index_version >= 5)
3646         c = tolower (c);
3647       r = r * 67 + c - 113;
3648     }
3649
3650   return r;
3651 }
3652
3653 /* Find a slot in the mapped index INDEX for the object named NAME.
3654    If NAME is found, set *VEC_OUT to point to the CU vector in the
3655    constant pool and return true.  If NAME cannot be found, return
3656    false.  */
3657
3658 static bool
3659 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3660                           offset_type **vec_out)
3661 {
3662   offset_type hash;
3663   offset_type slot, step;
3664   int (*cmp) (const char *, const char *);
3665
3666   gdb::unique_xmalloc_ptr<char> without_params;
3667   if (current_language->la_language == language_cplus
3668       || current_language->la_language == language_fortran
3669       || current_language->la_language == language_d)
3670     {
3671       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3672          not contain any.  */
3673
3674       if (strchr (name, '(') != NULL)
3675         {
3676           without_params = cp_remove_params (name);
3677
3678           if (without_params != NULL)
3679             name = without_params.get ();
3680         }
3681     }
3682
3683   /* Index version 4 did not support case insensitive searches.  But the
3684      indices for case insensitive languages are built in lowercase, therefore
3685      simulate our NAME being searched is also lowercased.  */
3686   hash = mapped_index_string_hash ((index->version == 4
3687                                     && case_sensitivity == case_sensitive_off
3688                                     ? 5 : index->version),
3689                                    name);
3690
3691   slot = hash & (index->symbol_table.size () - 1);
3692   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3693   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3694
3695   for (;;)
3696     {
3697       const char *str;
3698
3699       const auto &bucket = index->symbol_table[slot];
3700       if (bucket.name == 0 && bucket.vec == 0)
3701         return false;
3702
3703       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3704       if (!cmp (name, str))
3705         {
3706           *vec_out = (offset_type *) (index->constant_pool
3707                                       + MAYBE_SWAP (bucket.vec));
3708           return true;
3709         }
3710
3711       slot = (slot + step) & (index->symbol_table.size () - 1);
3712     }
3713 }
3714
3715 /* A helper function that reads the .gdb_index from SECTION and fills
3716    in MAP.  FILENAME is the name of the file containing the section;
3717    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
3718    ok to use deprecated sections.
3719
3720    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3721    out parameters that are filled in with information about the CU and
3722    TU lists in the section.
3723
3724    Returns 1 if all went well, 0 otherwise.  */
3725
3726 static int
3727 read_index_from_section (struct objfile *objfile,
3728                          const char *filename,
3729                          int deprecated_ok,
3730                          struct dwarf2_section_info *section,
3731                          struct mapped_index *map,
3732                          const gdb_byte **cu_list,
3733                          offset_type *cu_list_elements,
3734                          const gdb_byte **types_list,
3735                          offset_type *types_list_elements)
3736 {
3737   const gdb_byte *addr;
3738   offset_type version;
3739   offset_type *metadata;
3740   int i;
3741
3742   if (dwarf2_section_empty_p (section))
3743     return 0;
3744
3745   /* Older elfutils strip versions could keep the section in the main
3746      executable while splitting it for the separate debug info file.  */
3747   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3748     return 0;
3749
3750   dwarf2_read_section (objfile, section);
3751
3752   addr = section->buffer;
3753   /* Version check.  */
3754   version = MAYBE_SWAP (*(offset_type *) addr);
3755   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3756      causes the index to behave very poorly for certain requests.  Version 3
3757      contained incomplete addrmap.  So, it seems better to just ignore such
3758      indices.  */
3759   if (version < 4)
3760     {
3761       static int warning_printed = 0;
3762       if (!warning_printed)
3763         {
3764           warning (_("Skipping obsolete .gdb_index section in %s."),
3765                    filename);
3766           warning_printed = 1;
3767         }
3768       return 0;
3769     }
3770   /* Index version 4 uses a different hash function than index version
3771      5 and later.
3772
3773      Versions earlier than 6 did not emit psymbols for inlined
3774      functions.  Using these files will cause GDB not to be able to
3775      set breakpoints on inlined functions by name, so we ignore these
3776      indices unless the user has done
3777      "set use-deprecated-index-sections on".  */
3778   if (version < 6 && !deprecated_ok)
3779     {
3780       static int warning_printed = 0;
3781       if (!warning_printed)
3782         {
3783           warning (_("\
3784 Skipping deprecated .gdb_index section in %s.\n\
3785 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3786 to use the section anyway."),
3787                    filename);
3788           warning_printed = 1;
3789         }
3790       return 0;
3791     }
3792   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3793      of the TU (for symbols coming from TUs),
3794      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3795      Plus gold-generated indices can have duplicate entries for global symbols,
3796      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3797      These are just performance bugs, and we can't distinguish gdb-generated
3798      indices from gold-generated ones, so issue no warning here.  */
3799
3800   /* Indexes with higher version than the one supported by GDB may be no
3801      longer backward compatible.  */
3802   if (version > 8)
3803     return 0;
3804
3805   map->version = version;
3806   map->total_size = section->size;
3807
3808   metadata = (offset_type *) (addr + sizeof (offset_type));
3809
3810   i = 0;
3811   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3812   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3813                        / 8);
3814   ++i;
3815
3816   *types_list = addr + MAYBE_SWAP (metadata[i]);
3817   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3818                            - MAYBE_SWAP (metadata[i]))
3819                           / 8);
3820   ++i;
3821
3822   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3823   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3824   map->address_table
3825     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3826   ++i;
3827
3828   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3829   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3830   map->symbol_table
3831     = gdb::array_view<mapped_index::symbol_table_slot>
3832        ((mapped_index::symbol_table_slot *) symbol_table,
3833         (mapped_index::symbol_table_slot *) symbol_table_end);
3834
3835   ++i;
3836   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3837
3838   return 1;
3839 }
3840
3841 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3842    elements of all the CUs and return 1.  Otherwise, return 0.  */
3843
3844 static int
3845 dwarf2_read_index (struct objfile *objfile)
3846 {
3847   struct mapped_index local_map, *map;
3848   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3849   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3850   struct dwz_file *dwz;
3851   struct dwarf2_per_objfile *dwarf2_per_objfile
3852     = get_dwarf2_per_objfile (objfile);
3853
3854   if (!read_index_from_section (objfile, objfile_name (objfile),
3855                                 use_deprecated_index_sections,
3856                                 &dwarf2_per_objfile->gdb_index, &local_map,
3857                                 &cu_list, &cu_list_elements,
3858                                 &types_list, &types_list_elements))
3859     return 0;
3860
3861   /* Don't use the index if it's empty.  */
3862   if (local_map.symbol_table.empty ())
3863     return 0;
3864
3865   /* If there is a .dwz file, read it so we can get its CU list as
3866      well.  */
3867   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3868   if (dwz != NULL)
3869     {
3870       struct mapped_index dwz_map;
3871       const gdb_byte *dwz_types_ignore;
3872       offset_type dwz_types_elements_ignore;
3873
3874       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3875                                     1,
3876                                     &dwz->gdb_index, &dwz_map,
3877                                     &dwz_list, &dwz_list_elements,
3878                                     &dwz_types_ignore,
3879                                     &dwz_types_elements_ignore))
3880         {
3881           warning (_("could not read '.gdb_index' section from %s; skipping"),
3882                    bfd_get_filename (dwz->dwz_bfd));
3883           return 0;
3884         }
3885     }
3886
3887   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3888                          dwz_list_elements);
3889
3890   if (types_list_elements)
3891     {
3892       struct dwarf2_section_info *section;
3893
3894       /* We can only handle a single .debug_types when we have an
3895          index.  */
3896       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3897         return 0;
3898
3899       section = VEC_index (dwarf2_section_info_def,
3900                            dwarf2_per_objfile->types, 0);
3901
3902       create_signatured_type_table_from_index (objfile, section, types_list,
3903                                                types_list_elements);
3904     }
3905
3906   create_addrmap_from_index (dwarf2_per_objfile, &local_map);
3907
3908   map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
3909   map = new (map) mapped_index ();
3910   *map = local_map;
3911
3912   dwarf2_per_objfile->index_table = map;
3913   dwarf2_per_objfile->using_index = 1;
3914   dwarf2_per_objfile->quick_file_names_table =
3915     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3916
3917   return 1;
3918 }
3919
3920 /* die_reader_func for dw2_get_file_names.  */
3921
3922 static void
3923 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3924                            const gdb_byte *info_ptr,
3925                            struct die_info *comp_unit_die,
3926                            int has_children,
3927                            void *data)
3928 {
3929   struct dwarf2_cu *cu = reader->cu;
3930   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3931   struct dwarf2_per_objfile *dwarf2_per_objfile
3932     = cu->per_cu->dwarf2_per_objfile;
3933   struct objfile *objfile = dwarf2_per_objfile->objfile;
3934   struct dwarf2_per_cu_data *lh_cu;
3935   struct attribute *attr;
3936   int i;
3937   void **slot;
3938   struct quick_file_names *qfn;
3939
3940   gdb_assert (! this_cu->is_debug_types);
3941
3942   /* Our callers never want to match partial units -- instead they
3943      will match the enclosing full CU.  */
3944   if (comp_unit_die->tag == DW_TAG_partial_unit)
3945     {
3946       this_cu->v.quick->no_file_data = 1;
3947       return;
3948     }
3949
3950   lh_cu = this_cu;
3951   slot = NULL;
3952
3953   line_header_up lh;
3954   sect_offset line_offset {};
3955
3956   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3957   if (attr)
3958     {
3959       struct quick_file_names find_entry;
3960
3961       line_offset = (sect_offset) DW_UNSND (attr);
3962
3963       /* We may have already read in this line header (TU line header sharing).
3964          If we have we're done.  */
3965       find_entry.hash.dwo_unit = cu->dwo_unit;
3966       find_entry.hash.line_sect_off = line_offset;
3967       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3968                              &find_entry, INSERT);
3969       if (*slot != NULL)
3970         {
3971           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3972           return;
3973         }
3974
3975       lh = dwarf_decode_line_header (line_offset, cu);
3976     }
3977   if (lh == NULL)
3978     {
3979       lh_cu->v.quick->no_file_data = 1;
3980       return;
3981     }
3982
3983   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3984   qfn->hash.dwo_unit = cu->dwo_unit;
3985   qfn->hash.line_sect_off = line_offset;
3986   gdb_assert (slot != NULL);
3987   *slot = qfn;
3988
3989   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3990
3991   qfn->num_file_names = lh->file_names.size ();
3992   qfn->file_names =
3993     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3994   for (i = 0; i < lh->file_names.size (); ++i)
3995     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3996   qfn->real_names = NULL;
3997
3998   lh_cu->v.quick->file_names = qfn;
3999 }
4000
4001 /* A helper for the "quick" functions which attempts to read the line
4002    table for THIS_CU.  */
4003
4004 static struct quick_file_names *
4005 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
4006 {
4007   /* This should never be called for TUs.  */
4008   gdb_assert (! this_cu->is_debug_types);
4009   /* Nor type unit groups.  */
4010   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
4011
4012   if (this_cu->v.quick->file_names != NULL)
4013     return this_cu->v.quick->file_names;
4014   /* If we know there is no line data, no point in looking again.  */
4015   if (this_cu->v.quick->no_file_data)
4016     return NULL;
4017
4018   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
4019
4020   if (this_cu->v.quick->no_file_data)
4021     return NULL;
4022   return this_cu->v.quick->file_names;
4023 }
4024
4025 /* A helper for the "quick" functions which computes and caches the
4026    real path for a given file name from the line table.  */
4027
4028 static const char *
4029 dw2_get_real_path (struct objfile *objfile,
4030                    struct quick_file_names *qfn, int index)
4031 {
4032   if (qfn->real_names == NULL)
4033     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
4034                                       qfn->num_file_names, const char *);
4035
4036   if (qfn->real_names[index] == NULL)
4037     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
4038
4039   return qfn->real_names[index];
4040 }
4041
4042 static struct symtab *
4043 dw2_find_last_source_symtab (struct objfile *objfile)
4044 {
4045   struct dwarf2_per_objfile *dwarf2_per_objfile
4046     = get_dwarf2_per_objfile (objfile);
4047   int index = dwarf2_per_objfile->n_comp_units - 1;
4048   dwarf2_per_cu_data *dwarf_cu = dw2_get_cutu (dwarf2_per_objfile, index);
4049   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu);
4050
4051   if (cust == NULL)
4052     return NULL;
4053
4054   return compunit_primary_filetab (cust);
4055 }
4056
4057 /* Traversal function for dw2_forget_cached_source_info.  */
4058
4059 static int
4060 dw2_free_cached_file_names (void **slot, void *info)
4061 {
4062   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
4063
4064   if (file_data->real_names)
4065     {
4066       int i;
4067
4068       for (i = 0; i < file_data->num_file_names; ++i)
4069         {
4070           xfree ((void*) file_data->real_names[i]);
4071           file_data->real_names[i] = NULL;
4072         }
4073     }
4074
4075   return 1;
4076 }
4077
4078 static void
4079 dw2_forget_cached_source_info (struct objfile *objfile)
4080 {
4081   struct dwarf2_per_objfile *dwarf2_per_objfile
4082     = get_dwarf2_per_objfile (objfile);
4083
4084   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
4085                           dw2_free_cached_file_names, NULL);
4086 }
4087
4088 /* Helper function for dw2_map_symtabs_matching_filename that expands
4089    the symtabs and calls the iterator.  */
4090
4091 static int
4092 dw2_map_expand_apply (struct objfile *objfile,
4093                       struct dwarf2_per_cu_data *per_cu,
4094                       const char *name, const char *real_path,
4095                       gdb::function_view<bool (symtab *)> callback)
4096 {
4097   struct compunit_symtab *last_made = objfile->compunit_symtabs;
4098
4099   /* Don't visit already-expanded CUs.  */
4100   if (per_cu->v.quick->compunit_symtab)
4101     return 0;
4102
4103   /* This may expand more than one symtab, and we want to iterate over
4104      all of them.  */
4105   dw2_instantiate_symtab (per_cu);
4106
4107   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
4108                                     last_made, callback);
4109 }
4110
4111 /* Implementation of the map_symtabs_matching_filename method.  */
4112
4113 static bool
4114 dw2_map_symtabs_matching_filename
4115   (struct objfile *objfile, const char *name, const char *real_path,
4116    gdb::function_view<bool (symtab *)> callback)
4117 {
4118   int i;
4119   const char *name_basename = lbasename (name);
4120   struct dwarf2_per_objfile *dwarf2_per_objfile
4121     = get_dwarf2_per_objfile (objfile);
4122
4123   /* The rule is CUs specify all the files, including those used by
4124      any TU, so there's no need to scan TUs here.  */
4125
4126   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4127     {
4128       int j;
4129       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (dwarf2_per_objfile, i);
4130       struct quick_file_names *file_data;
4131
4132       /* We only need to look at symtabs not already expanded.  */
4133       if (per_cu->v.quick->compunit_symtab)
4134         continue;
4135
4136       file_data = dw2_get_file_names (per_cu);
4137       if (file_data == NULL)
4138         continue;
4139
4140       for (j = 0; j < file_data->num_file_names; ++j)
4141         {
4142           const char *this_name = file_data->file_names[j];
4143           const char *this_real_name;
4144
4145           if (compare_filenames_for_search (this_name, name))
4146             {
4147               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
4148                                         callback))
4149                 return true;
4150               continue;
4151             }
4152
4153           /* Before we invoke realpath, which can get expensive when many
4154              files are involved, do a quick comparison of the basenames.  */
4155           if (! basenames_may_differ
4156               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
4157             continue;
4158
4159           this_real_name = dw2_get_real_path (objfile, file_data, j);
4160           if (compare_filenames_for_search (this_real_name, name))
4161             {
4162               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
4163                                         callback))
4164                 return true;
4165               continue;
4166             }
4167
4168           if (real_path != NULL)
4169             {
4170               gdb_assert (IS_ABSOLUTE_PATH (real_path));
4171               gdb_assert (IS_ABSOLUTE_PATH (name));
4172               if (this_real_name != NULL
4173                   && FILENAME_CMP (real_path, this_real_name) == 0)
4174                 {
4175                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
4176                                             callback))
4177                     return true;
4178                   continue;
4179                 }
4180             }
4181         }
4182     }
4183
4184   return false;
4185 }
4186
4187 /* Struct used to manage iterating over all CUs looking for a symbol.  */
4188
4189 struct dw2_symtab_iterator
4190 {
4191   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
4192   struct dwarf2_per_objfile *dwarf2_per_objfile;
4193   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
4194   int want_specific_block;
4195   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
4196      Unused if !WANT_SPECIFIC_BLOCK.  */
4197   int block_index;
4198   /* The kind of symbol we're looking for.  */
4199   domain_enum domain;
4200   /* The list of CUs from the index entry of the symbol,
4201      or NULL if not found.  */
4202   offset_type *vec;
4203   /* The next element in VEC to look at.  */
4204   int next;
4205   /* The number of elements in VEC, or zero if there is no match.  */
4206   int length;
4207   /* Have we seen a global version of the symbol?
4208      If so we can ignore all further global instances.
4209      This is to work around gold/15646, inefficient gold-generated
4210      indices.  */
4211   int global_seen;
4212 };
4213
4214 /* Initialize the index symtab iterator ITER.
4215    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
4216    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
4217
4218 static void
4219 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
4220                       struct dwarf2_per_objfile *dwarf2_per_objfile,
4221                       int want_specific_block,
4222                       int block_index,
4223                       domain_enum domain,
4224                       const char *name)
4225 {
4226   iter->dwarf2_per_objfile = dwarf2_per_objfile;
4227   iter->want_specific_block = want_specific_block;
4228   iter->block_index = block_index;
4229   iter->domain = domain;
4230   iter->next = 0;
4231   iter->global_seen = 0;
4232
4233   mapped_index *index = dwarf2_per_objfile->index_table;
4234
4235   /* index is NULL if OBJF_READNOW.  */
4236   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
4237     iter->length = MAYBE_SWAP (*iter->vec);
4238   else
4239     {
4240       iter->vec = NULL;
4241       iter->length = 0;
4242     }
4243 }
4244
4245 /* Return the next matching CU or NULL if there are no more.  */
4246
4247 static struct dwarf2_per_cu_data *
4248 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
4249 {
4250   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
4251
4252   for ( ; iter->next < iter->length; ++iter->next)
4253     {
4254       offset_type cu_index_and_attrs =
4255         MAYBE_SWAP (iter->vec[iter->next + 1]);
4256       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4257       struct dwarf2_per_cu_data *per_cu;
4258       int want_static = iter->block_index != GLOBAL_BLOCK;
4259       /* This value is only valid for index versions >= 7.  */
4260       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4261       gdb_index_symbol_kind symbol_kind =
4262         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4263       /* Only check the symbol attributes if they're present.
4264          Indices prior to version 7 don't record them,
4265          and indices >= 7 may elide them for certain symbols
4266          (gold does this).  */
4267       int attrs_valid =
4268         (dwarf2_per_objfile->index_table->version >= 7
4269          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4270
4271       /* Don't crash on bad data.  */
4272       if (cu_index >= (dwarf2_per_objfile->n_comp_units
4273                        + dwarf2_per_objfile->n_type_units))
4274         {
4275           complaint (&symfile_complaints,
4276                      _(".gdb_index entry has bad CU index"
4277                        " [in module %s]"),
4278                      objfile_name (dwarf2_per_objfile->objfile));
4279           continue;
4280         }
4281
4282       per_cu = dw2_get_cutu (dwarf2_per_objfile, cu_index);
4283
4284       /* Skip if already read in.  */
4285       if (per_cu->v.quick->compunit_symtab)
4286         continue;
4287
4288       /* Check static vs global.  */
4289       if (attrs_valid)
4290         {
4291           if (iter->want_specific_block
4292               && want_static != is_static)
4293             continue;
4294           /* Work around gold/15646.  */
4295           if (!is_static && iter->global_seen)
4296             continue;
4297           if (!is_static)
4298             iter->global_seen = 1;
4299         }
4300
4301       /* Only check the symbol's kind if it has one.  */
4302       if (attrs_valid)
4303         {
4304           switch (iter->domain)
4305             {
4306             case VAR_DOMAIN:
4307               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4308                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4309                   /* Some types are also in VAR_DOMAIN.  */
4310                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4311                 continue;
4312               break;
4313             case STRUCT_DOMAIN:
4314               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4315                 continue;
4316               break;
4317             case LABEL_DOMAIN:
4318               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4319                 continue;
4320               break;
4321             default:
4322               break;
4323             }
4324         }
4325
4326       ++iter->next;
4327       return per_cu;
4328     }
4329
4330   return NULL;
4331 }
4332
4333 static struct compunit_symtab *
4334 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4335                    const char *name, domain_enum domain)
4336 {
4337   struct compunit_symtab *stab_best = NULL;
4338   struct dwarf2_per_objfile *dwarf2_per_objfile
4339     = get_dwarf2_per_objfile (objfile);
4340
4341   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4342
4343   struct dw2_symtab_iterator iter;
4344   struct dwarf2_per_cu_data *per_cu;
4345
4346   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4347
4348   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4349     {
4350       struct symbol *sym, *with_opaque = NULL;
4351       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
4352       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4353       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4354
4355       sym = block_find_symbol (block, name, domain,
4356                                block_find_non_opaque_type_preferred,
4357                                &with_opaque);
4358
4359       /* Some caution must be observed with overloaded functions
4360          and methods, since the index will not contain any overload
4361          information (but NAME might contain it).  */
4362
4363       if (sym != NULL
4364           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4365         return stab;
4366       if (with_opaque != NULL
4367           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4368         stab_best = stab;
4369
4370       /* Keep looking through other CUs.  */
4371     }
4372
4373   return stab_best;
4374 }
4375
4376 static void
4377 dw2_print_stats (struct objfile *objfile)
4378 {
4379   struct dwarf2_per_objfile *dwarf2_per_objfile
4380     = get_dwarf2_per_objfile (objfile);
4381   int total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
4382   int count = 0;
4383
4384   for (int i = 0; i < total; ++i)
4385     {
4386       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, i);
4387
4388       if (!per_cu->v.quick->compunit_symtab)
4389         ++count;
4390     }
4391   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4392   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4393 }
4394
4395 /* This dumps minimal information about the index.
4396    It is called via "mt print objfiles".
4397    One use is to verify .gdb_index has been loaded by the
4398    gdb.dwarf2/gdb-index.exp testcase.  */
4399
4400 static void
4401 dw2_dump (struct objfile *objfile)
4402 {
4403   struct dwarf2_per_objfile *dwarf2_per_objfile
4404     = get_dwarf2_per_objfile (objfile);
4405
4406   gdb_assert (dwarf2_per_objfile->using_index);
4407   printf_filtered (".gdb_index:");
4408   if (dwarf2_per_objfile->index_table != NULL)
4409     {
4410       printf_filtered (" version %d\n",
4411                        dwarf2_per_objfile->index_table->version);
4412     }
4413   else
4414     printf_filtered (" faked for \"readnow\"\n");
4415   printf_filtered ("\n");
4416 }
4417
4418 static void
4419 dw2_relocate (struct objfile *objfile,
4420               const struct section_offsets *new_offsets,
4421               const struct section_offsets *delta)
4422 {
4423   /* There's nothing to relocate here.  */
4424 }
4425
4426 static void
4427 dw2_expand_symtabs_for_function (struct objfile *objfile,
4428                                  const char *func_name)
4429 {
4430   struct dwarf2_per_objfile *dwarf2_per_objfile
4431     = get_dwarf2_per_objfile (objfile);
4432
4433   struct dw2_symtab_iterator iter;
4434   struct dwarf2_per_cu_data *per_cu;
4435
4436   /* Note: It doesn't matter what we pass for block_index here.  */
4437   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4438                         func_name);
4439
4440   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4441     dw2_instantiate_symtab (per_cu);
4442
4443 }
4444
4445 static void
4446 dw2_expand_all_symtabs (struct objfile *objfile)
4447 {
4448   struct dwarf2_per_objfile *dwarf2_per_objfile
4449     = get_dwarf2_per_objfile (objfile);
4450   int total_units = (dwarf2_per_objfile->n_comp_units
4451                      + dwarf2_per_objfile->n_type_units);
4452
4453   for (int i = 0; i < total_units; ++i)
4454     {
4455       struct dwarf2_per_cu_data *per_cu
4456         = dw2_get_cutu (dwarf2_per_objfile, i);
4457
4458       dw2_instantiate_symtab (per_cu);
4459     }
4460 }
4461
4462 static void
4463 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4464                                   const char *fullname)
4465 {
4466   struct dwarf2_per_objfile *dwarf2_per_objfile
4467     = get_dwarf2_per_objfile (objfile);
4468
4469   /* We don't need to consider type units here.
4470      This is only called for examining code, e.g. expand_line_sal.
4471      There can be an order of magnitude (or more) more type units
4472      than comp units, and we avoid them if we can.  */
4473
4474   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4475     {
4476       int j;
4477       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, i);
4478       struct quick_file_names *file_data;
4479
4480       /* We only need to look at symtabs not already expanded.  */
4481       if (per_cu->v.quick->compunit_symtab)
4482         continue;
4483
4484       file_data = dw2_get_file_names (per_cu);
4485       if (file_data == NULL)
4486         continue;
4487
4488       for (j = 0; j < file_data->num_file_names; ++j)
4489         {
4490           const char *this_fullname = file_data->file_names[j];
4491
4492           if (filename_cmp (this_fullname, fullname) == 0)
4493             {
4494               dw2_instantiate_symtab (per_cu);
4495               break;
4496             }
4497         }
4498     }
4499 }
4500
4501 static void
4502 dw2_map_matching_symbols (struct objfile *objfile,
4503                           const char * name, domain_enum domain,
4504                           int global,
4505                           int (*callback) (struct block *,
4506                                            struct symbol *, void *),
4507                           void *data, symbol_name_match_type match,
4508                           symbol_compare_ftype *ordered_compare)
4509 {
4510   /* Currently unimplemented; used for Ada.  The function can be called if the
4511      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4512      does not look for non-Ada symbols this function should just return.  */
4513 }
4514
4515 /* Symbol name matcher for .gdb_index names.
4516
4517    Symbol names in .gdb_index have a few particularities:
4518
4519    - There's no indication of which is the language of each symbol.
4520
4521      Since each language has its own symbol name matching algorithm,
4522      and we don't know which language is the right one, we must match
4523      each symbol against all languages.  This would be a potential
4524      performance problem if it were not mitigated by the
4525      mapped_index::name_components lookup table, which significantly
4526      reduces the number of times we need to call into this matcher,
4527      making it a non-issue.
4528
4529    - Symbol names in the index have no overload (parameter)
4530      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4531      appear as "foo" in the index, for example.
4532
4533      This means that the lookup names passed to the symbol name
4534      matcher functions must have no parameter information either
4535      because (e.g.) symbol search name "foo" does not match
4536      lookup-name "foo(int)" [while swapping search name for lookup
4537      name would match].
4538 */
4539 class gdb_index_symbol_name_matcher
4540 {
4541 public:
4542   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4543   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4544
4545   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4546      Returns true if any matcher matches.  */
4547   bool matches (const char *symbol_name);
4548
4549 private:
4550   /* A reference to the lookup name we're matching against.  */
4551   const lookup_name_info &m_lookup_name;
4552
4553   /* A vector holding all the different symbol name matchers, for all
4554      languages.  */
4555   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4556 };
4557
4558 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4559   (const lookup_name_info &lookup_name)
4560     : m_lookup_name (lookup_name)
4561 {
4562   /* Prepare the vector of comparison functions upfront, to avoid
4563      doing the same work for each symbol.  Care is taken to avoid
4564      matching with the same matcher more than once if/when multiple
4565      languages use the same matcher function.  */
4566   auto &matchers = m_symbol_name_matcher_funcs;
4567   matchers.reserve (nr_languages);
4568
4569   matchers.push_back (default_symbol_name_matcher);
4570
4571   for (int i = 0; i < nr_languages; i++)
4572     {
4573       const language_defn *lang = language_def ((enum language) i);
4574       if (lang->la_get_symbol_name_matcher != NULL)
4575         {
4576           symbol_name_matcher_ftype *name_matcher
4577             = lang->la_get_symbol_name_matcher (m_lookup_name);
4578
4579           /* Don't insert the same comparison routine more than once.
4580              Note that we do this linear walk instead of a cheaper
4581              sorted insert, or use a std::set or something like that,
4582              because relative order of function addresses is not
4583              stable.  This is not a problem in practice because the
4584              number of supported languages is low, and the cost here
4585              is tiny compared to the number of searches we'll do
4586              afterwards using this object.  */
4587           if (std::find (matchers.begin (), matchers.end (), name_matcher)
4588               == matchers.end ())
4589             matchers.push_back (name_matcher);
4590         }
4591     }
4592 }
4593
4594 bool
4595 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4596 {
4597   for (auto matches_name : m_symbol_name_matcher_funcs)
4598     if (matches_name (symbol_name, m_lookup_name, NULL))
4599       return true;
4600
4601   return false;
4602 }
4603
4604 /* Starting from a search name, return the string that finds the upper
4605    bound of all strings that start with SEARCH_NAME in a sorted name
4606    list.  Returns the empty string to indicate that the upper bound is
4607    the end of the list.  */
4608
4609 static std::string
4610 make_sort_after_prefix_name (const char *search_name)
4611 {
4612   /* When looking to complete "func", we find the upper bound of all
4613      symbols that start with "func" by looking for where we'd insert
4614      the closest string that would follow "func" in lexicographical
4615      order.  Usually, that's "func"-with-last-character-incremented,
4616      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4617      will be UTF-8 multi-byte sequences, but we can't be certain.
4618      Especially mind the 0xff character, which is a valid character in
4619      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4620      rule out compilers allowing it in identifiers.  Note that
4621      conveniently, strcmp/strcasecmp are specified to compare
4622      characters interpreted as unsigned char.  So what we do is treat
4623      the whole string as a base 256 number composed of a sequence of
4624      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4625      to 0, and carries 1 to the following more-significant position.
4626      If the very first character in SEARCH_NAME ends up incremented
4627      and carries/overflows, then the upper bound is the end of the
4628      list.  The string after the empty string is also the empty
4629      string.
4630
4631      Some examples of this operation:
4632
4633        SEARCH_NAME  => "+1" RESULT
4634
4635        "abc"              => "abd"
4636        "ab\xff"           => "ac"
4637        "\xff" "a" "\xff"  => "\xff" "b"
4638        "\xff"             => ""
4639        "\xff\xff"         => ""
4640        ""                 => ""
4641
4642      Then, with these symbols for example:
4643
4644       func
4645       func1
4646       fund
4647
4648      completing "func" looks for symbols between "func" and
4649      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4650      which finds "func" and "func1", but not "fund".
4651
4652      And with:
4653
4654       funcÿ     (Latin1 'ÿ' [0xff])
4655       funcÿ1
4656       fund
4657
4658      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4659      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4660
4661      And with:
4662
4663       ÿÿ        (Latin1 'ÿ' [0xff])
4664       ÿÿ1
4665
4666      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4667      the end of the list.
4668   */
4669   std::string after = search_name;
4670   while (!after.empty () && (unsigned char) after.back () == 0xff)
4671     after.pop_back ();
4672   if (!after.empty ())
4673     after.back () = (unsigned char) after.back () + 1;
4674   return after;
4675 }
4676
4677 /* See declaration.  */
4678
4679 std::pair<std::vector<name_component>::const_iterator,
4680           std::vector<name_component>::const_iterator>
4681 mapped_index_base::find_name_components_bounds
4682   (const lookup_name_info &lookup_name_without_params) const
4683 {
4684   auto *name_cmp
4685     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4686
4687   const char *cplus
4688     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4689
4690   /* Comparison function object for lower_bound that matches against a
4691      given symbol name.  */
4692   auto lookup_compare_lower = [&] (const name_component &elem,
4693                                    const char *name)
4694     {
4695       const char *elem_qualified = this->symbol_name_at (elem.idx);
4696       const char *elem_name = elem_qualified + elem.name_offset;
4697       return name_cmp (elem_name, name) < 0;
4698     };
4699
4700   /* Comparison function object for upper_bound that matches against a
4701      given symbol name.  */
4702   auto lookup_compare_upper = [&] (const char *name,
4703                                    const name_component &elem)
4704     {
4705       const char *elem_qualified = this->symbol_name_at (elem.idx);
4706       const char *elem_name = elem_qualified + elem.name_offset;
4707       return name_cmp (name, elem_name) < 0;
4708     };
4709
4710   auto begin = this->name_components.begin ();
4711   auto end = this->name_components.end ();
4712
4713   /* Find the lower bound.  */
4714   auto lower = [&] ()
4715     {
4716       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4717         return begin;
4718       else
4719         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4720     } ();
4721
4722   /* Find the upper bound.  */
4723   auto upper = [&] ()
4724     {
4725       if (lookup_name_without_params.completion_mode ())
4726         {
4727           /* In completion mode, we want UPPER to point past all
4728              symbols names that have the same prefix.  I.e., with
4729              these symbols, and completing "func":
4730
4731               function        << lower bound
4732               function1
4733               other_function  << upper bound
4734
4735              We find the upper bound by looking for the insertion
4736              point of "func"-with-last-character-incremented,
4737              i.e. "fund".  */
4738           std::string after = make_sort_after_prefix_name (cplus);
4739           if (after.empty ())
4740             return end;
4741           return std::lower_bound (lower, end, after.c_str (),
4742                                    lookup_compare_lower);
4743         }
4744       else
4745         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4746     } ();
4747
4748   return {lower, upper};
4749 }
4750
4751 /* See declaration.  */
4752
4753 void
4754 mapped_index_base::build_name_components ()
4755 {
4756   if (!this->name_components.empty ())
4757     return;
4758
4759   this->name_components_casing = case_sensitivity;
4760   auto *name_cmp
4761     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4762
4763   /* The code below only knows how to break apart components of C++
4764      symbol names (and other languages that use '::' as
4765      namespace/module separator).  If we add support for wild matching
4766      to some language that uses some other operator (E.g., Ada, Go and
4767      D use '.'), then we'll need to try splitting the symbol name
4768      according to that language too.  Note that Ada does support wild
4769      matching, but doesn't currently support .gdb_index.  */
4770   auto count = this->symbol_name_count ();
4771   for (offset_type idx = 0; idx < count; idx++)
4772     {
4773       if (this->symbol_name_slot_invalid (idx))
4774         continue;
4775
4776       const char *name = this->symbol_name_at (idx);
4777
4778       /* Add each name component to the name component table.  */
4779       unsigned int previous_len = 0;
4780       for (unsigned int current_len = cp_find_first_component (name);
4781            name[current_len] != '\0';
4782            current_len += cp_find_first_component (name + current_len))
4783         {
4784           gdb_assert (name[current_len] == ':');
4785           this->name_components.push_back ({previous_len, idx});
4786           /* Skip the '::'.  */
4787           current_len += 2;
4788           previous_len = current_len;
4789         }
4790       this->name_components.push_back ({previous_len, idx});
4791     }
4792
4793   /* Sort name_components elements by name.  */
4794   auto name_comp_compare = [&] (const name_component &left,
4795                                 const name_component &right)
4796     {
4797       const char *left_qualified = this->symbol_name_at (left.idx);
4798       const char *right_qualified = this->symbol_name_at (right.idx);
4799
4800       const char *left_name = left_qualified + left.name_offset;
4801       const char *right_name = right_qualified + right.name_offset;
4802
4803       return name_cmp (left_name, right_name) < 0;
4804     };
4805
4806   std::sort (this->name_components.begin (),
4807              this->name_components.end (),
4808              name_comp_compare);
4809 }
4810
4811 /* Helper for dw2_expand_symtabs_matching that works with a
4812    mapped_index_base instead of the containing objfile.  This is split
4813    to a separate function in order to be able to unit test the
4814    name_components matching using a mock mapped_index_base.  For each
4815    symbol name that matches, calls MATCH_CALLBACK, passing it the
4816    symbol's index in the mapped_index_base symbol table.  */
4817
4818 static void
4819 dw2_expand_symtabs_matching_symbol
4820   (mapped_index_base &index,
4821    const lookup_name_info &lookup_name_in,
4822    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4823    enum search_domain kind,
4824    gdb::function_view<void (offset_type)> match_callback)
4825 {
4826   lookup_name_info lookup_name_without_params
4827     = lookup_name_in.make_ignore_params ();
4828   gdb_index_symbol_name_matcher lookup_name_matcher
4829     (lookup_name_without_params);
4830
4831   /* Build the symbol name component sorted vector, if we haven't
4832      yet.  */
4833   index.build_name_components ();
4834
4835   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4836
4837   /* Now for each symbol name in range, check to see if we have a name
4838      match, and if so, call the MATCH_CALLBACK callback.  */
4839
4840   /* The same symbol may appear more than once in the range though.
4841      E.g., if we're looking for symbols that complete "w", and we have
4842      a symbol named "w1::w2", we'll find the two name components for
4843      that same symbol in the range.  To be sure we only call the
4844      callback once per symbol, we first collect the symbol name
4845      indexes that matched in a temporary vector and ignore
4846      duplicates.  */
4847   std::vector<offset_type> matches;
4848   matches.reserve (std::distance (bounds.first, bounds.second));
4849
4850   for (; bounds.first != bounds.second; ++bounds.first)
4851     {
4852       const char *qualified = index.symbol_name_at (bounds.first->idx);
4853
4854       if (!lookup_name_matcher.matches (qualified)
4855           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4856         continue;
4857
4858       matches.push_back (bounds.first->idx);
4859     }
4860
4861   std::sort (matches.begin (), matches.end ());
4862
4863   /* Finally call the callback, once per match.  */
4864   ULONGEST prev = -1;
4865   for (offset_type idx : matches)
4866     {
4867       if (prev != idx)
4868         {
4869           match_callback (idx);
4870           prev = idx;
4871         }
4872     }
4873
4874   /* Above we use a type wider than idx's for 'prev', since 0 and
4875      (offset_type)-1 are both possible values.  */
4876   static_assert (sizeof (prev) > sizeof (offset_type), "");
4877 }
4878
4879 #if GDB_SELF_TEST
4880
4881 namespace selftests { namespace dw2_expand_symtabs_matching {
4882
4883 /* A mock .gdb_index/.debug_names-like name index table, enough to
4884    exercise dw2_expand_symtabs_matching_symbol, which works with the
4885    mapped_index_base interface.  Builds an index from the symbol list
4886    passed as parameter to the constructor.  */
4887 class mock_mapped_index : public mapped_index_base
4888 {
4889 public:
4890   mock_mapped_index (gdb::array_view<const char *> symbols)
4891     : m_symbol_table (symbols)
4892   {}
4893
4894   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4895
4896   /* Return the number of names in the symbol table.  */
4897   virtual size_t symbol_name_count () const
4898   {
4899     return m_symbol_table.size ();
4900   }
4901
4902   /* Get the name of the symbol at IDX in the symbol table.  */
4903   virtual const char *symbol_name_at (offset_type idx) const
4904   {
4905     return m_symbol_table[idx];
4906   }
4907
4908 private:
4909   gdb::array_view<const char *> m_symbol_table;
4910 };
4911
4912 /* Convenience function that converts a NULL pointer to a "<null>"
4913    string, to pass to print routines.  */
4914
4915 static const char *
4916 string_or_null (const char *str)
4917 {
4918   return str != NULL ? str : "<null>";
4919 }
4920
4921 /* Check if a lookup_name_info built from
4922    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4923    index.  EXPECTED_LIST is the list of expected matches, in expected
4924    matching order.  If no match expected, then an empty list is
4925    specified.  Returns true on success.  On failure prints a warning
4926    indicating the file:line that failed, and returns false.  */
4927
4928 static bool
4929 check_match (const char *file, int line,
4930              mock_mapped_index &mock_index,
4931              const char *name, symbol_name_match_type match_type,
4932              bool completion_mode,
4933              std::initializer_list<const char *> expected_list)
4934 {
4935   lookup_name_info lookup_name (name, match_type, completion_mode);
4936
4937   bool matched = true;
4938
4939   auto mismatch = [&] (const char *expected_str,
4940                        const char *got)
4941   {
4942     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4943                "expected=\"%s\", got=\"%s\"\n"),
4944              file, line,
4945              (match_type == symbol_name_match_type::FULL
4946               ? "FULL" : "WILD"),
4947              name, string_or_null (expected_str), string_or_null (got));
4948     matched = false;
4949   };
4950
4951   auto expected_it = expected_list.begin ();
4952   auto expected_end = expected_list.end ();
4953
4954   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4955                                       NULL, ALL_DOMAIN,
4956                                       [&] (offset_type idx)
4957   {
4958     const char *matched_name = mock_index.symbol_name_at (idx);
4959     const char *expected_str
4960       = expected_it == expected_end ? NULL : *expected_it++;
4961
4962     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4963       mismatch (expected_str, matched_name);
4964   });
4965
4966   const char *expected_str
4967   = expected_it == expected_end ? NULL : *expected_it++;
4968   if (expected_str != NULL)
4969     mismatch (expected_str, NULL);
4970
4971   return matched;
4972 }
4973
4974 /* The symbols added to the mock mapped_index for testing (in
4975    canonical form).  */
4976 static const char *test_symbols[] = {
4977   "function",
4978   "std::bar",
4979   "std::zfunction",
4980   "std::zfunction2",
4981   "w1::w2",
4982   "ns::foo<char*>",
4983   "ns::foo<int>",
4984   "ns::foo<long>",
4985   "ns2::tmpl<int>::foo2",
4986   "(anonymous namespace)::A::B::C",
4987
4988   /* These are used to check that the increment-last-char in the
4989      matching algorithm for completion doesn't match "t1_fund" when
4990      completing "t1_func".  */
4991   "t1_func",
4992   "t1_func1",
4993   "t1_fund",
4994   "t1_fund1",
4995
4996   /* A UTF-8 name with multi-byte sequences to make sure that
4997      cp-name-parser understands this as a single identifier ("função"
4998      is "function" in PT).  */
4999   u8"u8função",
5000
5001   /* \377 (0xff) is Latin1 'ÿ'.  */
5002   "yfunc\377",
5003
5004   /* \377 (0xff) is Latin1 'ÿ'.  */
5005   "\377",
5006   "\377\377123",
5007
5008   /* A name with all sorts of complications.  Starts with "z" to make
5009      it easier for the completion tests below.  */
5010 #define Z_SYM_NAME \
5011   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
5012     "::tuple<(anonymous namespace)::ui*, " \
5013     "std::default_delete<(anonymous namespace)::ui>, void>"
5014
5015   Z_SYM_NAME
5016 };
5017
5018 /* Returns true if the mapped_index_base::find_name_component_bounds
5019    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
5020    in completion mode.  */
5021
5022 static bool
5023 check_find_bounds_finds (mapped_index_base &index,
5024                          const char *search_name,
5025                          gdb::array_view<const char *> expected_syms)
5026 {
5027   lookup_name_info lookup_name (search_name,
5028                                 symbol_name_match_type::FULL, true);
5029
5030   auto bounds = index.find_name_components_bounds (lookup_name);
5031
5032   size_t distance = std::distance (bounds.first, bounds.second);
5033   if (distance != expected_syms.size ())
5034     return false;
5035
5036   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
5037     {
5038       auto nc_elem = bounds.first + exp_elem;
5039       const char *qualified = index.symbol_name_at (nc_elem->idx);
5040       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
5041         return false;
5042     }
5043
5044   return true;
5045 }
5046
5047 /* Test the lower-level mapped_index::find_name_component_bounds
5048    method.  */
5049
5050 static void
5051 test_mapped_index_find_name_component_bounds ()
5052 {
5053   mock_mapped_index mock_index (test_symbols);
5054
5055   mock_index.build_name_components ();
5056
5057   /* Test the lower-level mapped_index::find_name_component_bounds
5058      method in completion mode.  */
5059   {
5060     static const char *expected_syms[] = {
5061       "t1_func",
5062       "t1_func1",
5063     };
5064
5065     SELF_CHECK (check_find_bounds_finds (mock_index,
5066                                          "t1_func", expected_syms));
5067   }
5068
5069   /* Check that the increment-last-char in the name matching algorithm
5070      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
5071   {
5072     static const char *expected_syms1[] = {
5073       "\377",
5074       "\377\377123",
5075     };
5076     SELF_CHECK (check_find_bounds_finds (mock_index,
5077                                          "\377", expected_syms1));
5078
5079     static const char *expected_syms2[] = {
5080       "\377\377123",
5081     };
5082     SELF_CHECK (check_find_bounds_finds (mock_index,
5083                                          "\377\377", expected_syms2));
5084   }
5085 }
5086
5087 /* Test dw2_expand_symtabs_matching_symbol.  */
5088
5089 static void
5090 test_dw2_expand_symtabs_matching_symbol ()
5091 {
5092   mock_mapped_index mock_index (test_symbols);
5093
5094   /* We let all tests run until the end even if some fails, for debug
5095      convenience.  */
5096   bool any_mismatch = false;
5097
5098   /* Create the expected symbols list (an initializer_list).  Needed
5099      because lists have commas, and we need to pass them to CHECK,
5100      which is a macro.  */
5101 #define EXPECT(...) { __VA_ARGS__ }
5102
5103   /* Wrapper for check_match that passes down the current
5104      __FILE__/__LINE__.  */
5105 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
5106   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
5107                                 mock_index,                             \
5108                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
5109                                 EXPECTED_LIST)
5110
5111   /* Identity checks.  */
5112   for (const char *sym : test_symbols)
5113     {
5114       /* Should be able to match all existing symbols.  */
5115       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
5116                    EXPECT (sym));
5117
5118       /* Should be able to match all existing symbols with
5119          parameters.  */
5120       std::string with_params = std::string (sym) + "(int)";
5121       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
5122                    EXPECT (sym));
5123
5124       /* Should be able to match all existing symbols with
5125          parameters and qualifiers.  */
5126       with_params = std::string (sym) + " ( int ) const";
5127       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
5128                    EXPECT (sym));
5129
5130       /* This should really find sym, but cp-name-parser.y doesn't
5131          know about lvalue/rvalue qualifiers yet.  */
5132       with_params = std::string (sym) + " ( int ) &&";
5133       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
5134                    {});
5135     }
5136
5137   /* Check that the name matching algorithm for completion doesn't get
5138      confused with Latin1 'ÿ' / 0xff.  */
5139   {
5140     static const char str[] = "\377";
5141     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
5142                  EXPECT ("\377", "\377\377123"));
5143   }
5144
5145   /* Check that the increment-last-char in the matching algorithm for
5146      completion doesn't match "t1_fund" when completing "t1_func".  */
5147   {
5148     static const char str[] = "t1_func";
5149     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
5150                  EXPECT ("t1_func", "t1_func1"));
5151   }
5152
5153   /* Check that completion mode works at each prefix of the expected
5154      symbol name.  */
5155   {
5156     static const char str[] = "function(int)";
5157     size_t len = strlen (str);
5158     std::string lookup;
5159
5160     for (size_t i = 1; i < len; i++)
5161       {
5162         lookup.assign (str, i);
5163         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
5164                      EXPECT ("function"));
5165       }
5166   }
5167
5168   /* While "w" is a prefix of both components, the match function
5169      should still only be called once.  */
5170   {
5171     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
5172                  EXPECT ("w1::w2"));
5173     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
5174                  EXPECT ("w1::w2"));
5175   }
5176
5177   /* Same, with a "complicated" symbol.  */
5178   {
5179     static const char str[] = Z_SYM_NAME;
5180     size_t len = strlen (str);
5181     std::string lookup;
5182
5183     for (size_t i = 1; i < len; i++)
5184       {
5185         lookup.assign (str, i);
5186         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
5187                      EXPECT (Z_SYM_NAME));
5188       }
5189   }
5190
5191   /* In FULL mode, an incomplete symbol doesn't match.  */
5192   {
5193     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
5194                  {});
5195   }
5196
5197   /* A complete symbol with parameters matches any overload, since the
5198      index has no overload info.  */
5199   {
5200     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
5201                  EXPECT ("std::zfunction", "std::zfunction2"));
5202     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
5203                  EXPECT ("std::zfunction", "std::zfunction2"));
5204     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
5205                  EXPECT ("std::zfunction", "std::zfunction2"));
5206   }
5207
5208   /* Check that whitespace is ignored appropriately.  A symbol with a
5209      template argument list. */
5210   {
5211     static const char expected[] = "ns::foo<int>";
5212     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
5213                  EXPECT (expected));
5214     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
5215                  EXPECT (expected));
5216   }
5217
5218   /* Check that whitespace is ignored appropriately.  A symbol with a
5219      template argument list that includes a pointer.  */
5220   {
5221     static const char expected[] = "ns::foo<char*>";
5222     /* Try both completion and non-completion modes.  */
5223     static const bool completion_mode[2] = {false, true};
5224     for (size_t i = 0; i < 2; i++)
5225       {
5226         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
5227                      completion_mode[i], EXPECT (expected));
5228         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
5229                      completion_mode[i], EXPECT (expected));
5230
5231         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
5232                      completion_mode[i], EXPECT (expected));
5233         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
5234                      completion_mode[i], EXPECT (expected));
5235       }
5236   }
5237
5238   {
5239     /* Check method qualifiers are ignored.  */
5240     static const char expected[] = "ns::foo<char*>";
5241     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
5242                  symbol_name_match_type::FULL, true, EXPECT (expected));
5243     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
5244                  symbol_name_match_type::FULL, true, EXPECT (expected));
5245     CHECK_MATCH ("foo < char * >  ( int ) const",
5246                  symbol_name_match_type::WILD, true, EXPECT (expected));
5247     CHECK_MATCH ("foo < char * >  ( int ) &&",
5248                  symbol_name_match_type::WILD, true, EXPECT (expected));
5249   }
5250
5251   /* Test lookup names that don't match anything.  */
5252   {
5253     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
5254                  {});
5255
5256     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
5257                  {});
5258   }
5259
5260   /* Some wild matching tests, exercising "(anonymous namespace)",
5261      which should not be confused with a parameter list.  */
5262   {
5263     static const char *syms[] = {
5264       "A::B::C",
5265       "B::C",
5266       "C",
5267       "A :: B :: C ( int )",
5268       "B :: C ( int )",
5269       "C ( int )",
5270     };
5271
5272     for (const char *s : syms)
5273       {
5274         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
5275                      EXPECT ("(anonymous namespace)::A::B::C"));
5276       }
5277   }
5278
5279   {
5280     static const char expected[] = "ns2::tmpl<int>::foo2";
5281     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
5282                  EXPECT (expected));
5283     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
5284                  EXPECT (expected));
5285   }
5286
5287   SELF_CHECK (!any_mismatch);
5288
5289 #undef EXPECT
5290 #undef CHECK_MATCH
5291 }
5292
5293 static void
5294 run_test ()
5295 {
5296   test_mapped_index_find_name_component_bounds ();
5297   test_dw2_expand_symtabs_matching_symbol ();
5298 }
5299
5300 }} // namespace selftests::dw2_expand_symtabs_matching
5301
5302 #endif /* GDB_SELF_TEST */
5303
5304 /* If FILE_MATCHER is NULL or if PER_CU has
5305    dwarf2_per_cu_quick_data::MARK set (see
5306    dw_expand_symtabs_matching_file_matcher), expand the CU and call
5307    EXPANSION_NOTIFY on it.  */
5308
5309 static void
5310 dw2_expand_symtabs_matching_one
5311   (struct dwarf2_per_cu_data *per_cu,
5312    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5313    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5314 {
5315   if (file_matcher == NULL || per_cu->v.quick->mark)
5316     {
5317       bool symtab_was_null
5318         = (per_cu->v.quick->compunit_symtab == NULL);
5319
5320       dw2_instantiate_symtab (per_cu);
5321
5322       if (expansion_notify != NULL
5323           && symtab_was_null
5324           && per_cu->v.quick->compunit_symtab != NULL)
5325         expansion_notify (per_cu->v.quick->compunit_symtab);
5326     }
5327 }
5328
5329 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5330    matched, to expand corresponding CUs that were marked.  IDX is the
5331    index of the symbol name that matched.  */
5332
5333 static void
5334 dw2_expand_marked_cus
5335   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5336    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5337    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5338    search_domain kind)
5339 {
5340   offset_type *vec, vec_len, vec_idx;
5341   bool global_seen = false;
5342   mapped_index &index = *dwarf2_per_objfile->index_table;
5343
5344   vec = (offset_type *) (index.constant_pool
5345                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5346   vec_len = MAYBE_SWAP (vec[0]);
5347   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5348     {
5349       struct dwarf2_per_cu_data *per_cu;
5350       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5351       /* This value is only valid for index versions >= 7.  */
5352       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5353       gdb_index_symbol_kind symbol_kind =
5354         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5355       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5356       /* Only check the symbol attributes if they're present.
5357          Indices prior to version 7 don't record them,
5358          and indices >= 7 may elide them for certain symbols
5359          (gold does this).  */
5360       int attrs_valid =
5361         (index.version >= 7
5362          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5363
5364       /* Work around gold/15646.  */
5365       if (attrs_valid)
5366         {
5367           if (!is_static && global_seen)
5368             continue;
5369           if (!is_static)
5370             global_seen = true;
5371         }
5372
5373       /* Only check the symbol's kind if it has one.  */
5374       if (attrs_valid)
5375         {
5376           switch (kind)
5377             {
5378             case VARIABLES_DOMAIN:
5379               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5380                 continue;
5381               break;
5382             case FUNCTIONS_DOMAIN:
5383               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5384                 continue;
5385               break;
5386             case TYPES_DOMAIN:
5387               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5388                 continue;
5389               break;
5390             default:
5391               break;
5392             }
5393         }
5394
5395       /* Don't crash on bad data.  */
5396       if (cu_index >= (dwarf2_per_objfile->n_comp_units
5397                        + dwarf2_per_objfile->n_type_units))
5398         {
5399           complaint (&symfile_complaints,
5400                      _(".gdb_index entry has bad CU index"
5401                        " [in module %s]"),
5402                        objfile_name (dwarf2_per_objfile->objfile));
5403           continue;
5404         }
5405
5406       per_cu = dw2_get_cutu (dwarf2_per_objfile, cu_index);
5407       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5408                                        expansion_notify);
5409     }
5410 }
5411
5412 /* If FILE_MATCHER is non-NULL, set all the
5413    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5414    that match FILE_MATCHER.  */
5415
5416 static void
5417 dw_expand_symtabs_matching_file_matcher
5418   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5419    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5420 {
5421   if (file_matcher == NULL)
5422     return;
5423
5424   objfile *const objfile = dwarf2_per_objfile->objfile;
5425
5426   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5427                                             htab_eq_pointer,
5428                                             NULL, xcalloc, xfree));
5429   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5430                                                 htab_eq_pointer,
5431                                                 NULL, xcalloc, xfree));
5432
5433   /* The rule is CUs specify all the files, including those used by
5434      any TU, so there's no need to scan TUs here.  */
5435
5436   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5437     {
5438       int j;
5439       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (dwarf2_per_objfile, i);
5440       struct quick_file_names *file_data;
5441       void **slot;
5442
5443       QUIT;
5444
5445       per_cu->v.quick->mark = 0;
5446
5447       /* We only need to look at symtabs not already expanded.  */
5448       if (per_cu->v.quick->compunit_symtab)
5449         continue;
5450
5451       file_data = dw2_get_file_names (per_cu);
5452       if (file_data == NULL)
5453         continue;
5454
5455       if (htab_find (visited_not_found.get (), file_data) != NULL)
5456         continue;
5457       else if (htab_find (visited_found.get (), file_data) != NULL)
5458         {
5459           per_cu->v.quick->mark = 1;
5460           continue;
5461         }
5462
5463       for (j = 0; j < file_data->num_file_names; ++j)
5464         {
5465           const char *this_real_name;
5466
5467           if (file_matcher (file_data->file_names[j], false))
5468             {
5469               per_cu->v.quick->mark = 1;
5470               break;
5471             }
5472
5473           /* Before we invoke realpath, which can get expensive when many
5474              files are involved, do a quick comparison of the basenames.  */
5475           if (!basenames_may_differ
5476               && !file_matcher (lbasename (file_data->file_names[j]),
5477                                 true))
5478             continue;
5479
5480           this_real_name = dw2_get_real_path (objfile, file_data, j);
5481           if (file_matcher (this_real_name, false))
5482             {
5483               per_cu->v.quick->mark = 1;
5484               break;
5485             }
5486         }
5487
5488       slot = htab_find_slot (per_cu->v.quick->mark
5489                              ? visited_found.get ()
5490                              : visited_not_found.get (),
5491                              file_data, INSERT);
5492       *slot = file_data;
5493     }
5494 }
5495
5496 static void
5497 dw2_expand_symtabs_matching
5498   (struct objfile *objfile,
5499    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5500    const lookup_name_info &lookup_name,
5501    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5502    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5503    enum search_domain kind)
5504 {
5505   struct dwarf2_per_objfile *dwarf2_per_objfile
5506     = get_dwarf2_per_objfile (objfile);
5507
5508   /* index_table is NULL if OBJF_READNOW.  */
5509   if (!dwarf2_per_objfile->index_table)
5510     return;
5511
5512   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5513
5514   mapped_index &index = *dwarf2_per_objfile->index_table;
5515
5516   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5517                                       symbol_matcher,
5518                                       kind, [&] (offset_type idx)
5519     {
5520       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5521                              expansion_notify, kind);
5522     });
5523 }
5524
5525 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5526    symtab.  */
5527
5528 static struct compunit_symtab *
5529 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5530                                           CORE_ADDR pc)
5531 {
5532   int i;
5533
5534   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5535       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5536     return cust;
5537
5538   if (cust->includes == NULL)
5539     return NULL;
5540
5541   for (i = 0; cust->includes[i]; ++i)
5542     {
5543       struct compunit_symtab *s = cust->includes[i];
5544
5545       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5546       if (s != NULL)
5547         return s;
5548     }
5549
5550   return NULL;
5551 }
5552
5553 static struct compunit_symtab *
5554 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5555                                   struct bound_minimal_symbol msymbol,
5556                                   CORE_ADDR pc,
5557                                   struct obj_section *section,
5558                                   int warn_if_readin)
5559 {
5560   struct dwarf2_per_cu_data *data;
5561   struct compunit_symtab *result;
5562
5563   if (!objfile->psymtabs_addrmap)
5564     return NULL;
5565
5566   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5567                                                      pc);
5568   if (!data)
5569     return NULL;
5570
5571   if (warn_if_readin && data->v.quick->compunit_symtab)
5572     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5573              paddress (get_objfile_arch (objfile), pc));
5574
5575   result
5576     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
5577                                                 pc);
5578   gdb_assert (result != NULL);
5579   return result;
5580 }
5581
5582 static void
5583 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5584                           void *data, int need_fullname)
5585 {
5586   struct dwarf2_per_objfile *dwarf2_per_objfile
5587     = get_dwarf2_per_objfile (objfile);
5588
5589   if (!dwarf2_per_objfile->filenames_cache)
5590     {
5591       dwarf2_per_objfile->filenames_cache.emplace ();
5592
5593       htab_up visited (htab_create_alloc (10,
5594                                           htab_hash_pointer, htab_eq_pointer,
5595                                           NULL, xcalloc, xfree));
5596
5597       /* The rule is CUs specify all the files, including those used
5598          by any TU, so there's no need to scan TUs here.  We can
5599          ignore file names coming from already-expanded CUs.  */
5600
5601       for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5602         {
5603           dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, i);
5604
5605           if (per_cu->v.quick->compunit_symtab)
5606             {
5607               void **slot = htab_find_slot (visited.get (),
5608                                             per_cu->v.quick->file_names,
5609                                             INSERT);
5610
5611               *slot = per_cu->v.quick->file_names;
5612             }
5613         }
5614
5615       for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5616         {
5617           dwarf2_per_cu_data *per_cu = dw2_get_cu (dwarf2_per_objfile, i);
5618           struct quick_file_names *file_data;
5619           void **slot;
5620
5621           /* We only need to look at symtabs not already expanded.  */
5622           if (per_cu->v.quick->compunit_symtab)
5623             continue;
5624
5625           file_data = dw2_get_file_names (per_cu);
5626           if (file_data == NULL)
5627             continue;
5628
5629           slot = htab_find_slot (visited.get (), file_data, INSERT);
5630           if (*slot)
5631             {
5632               /* Already visited.  */
5633               continue;
5634             }
5635           *slot = file_data;
5636
5637           for (int j = 0; j < file_data->num_file_names; ++j)
5638             {
5639               const char *filename = file_data->file_names[j];
5640               dwarf2_per_objfile->filenames_cache->seen (filename);
5641             }
5642         }
5643     }
5644
5645   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5646     {
5647       gdb::unique_xmalloc_ptr<char> this_real_name;
5648
5649       if (need_fullname)
5650         this_real_name = gdb_realpath (filename);
5651       (*fun) (filename, this_real_name.get (), data);
5652     });
5653 }
5654
5655 static int
5656 dw2_has_symbols (struct objfile *objfile)
5657 {
5658   return 1;
5659 }
5660
5661 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5662 {
5663   dw2_has_symbols,
5664   dw2_find_last_source_symtab,
5665   dw2_forget_cached_source_info,
5666   dw2_map_symtabs_matching_filename,
5667   dw2_lookup_symbol,
5668   dw2_print_stats,
5669   dw2_dump,
5670   dw2_relocate,
5671   dw2_expand_symtabs_for_function,
5672   dw2_expand_all_symtabs,
5673   dw2_expand_symtabs_with_fullname,
5674   dw2_map_matching_symbols,
5675   dw2_expand_symtabs_matching,
5676   dw2_find_pc_sect_compunit_symtab,
5677   NULL,
5678   dw2_map_symbol_filenames
5679 };
5680
5681 /* DWARF-5 debug_names reader.  */
5682
5683 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5684 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5685
5686 /* A helper function that reads the .debug_names section in SECTION
5687    and fills in MAP.  FILENAME is the name of the file containing the
5688    section; it is used for error reporting.
5689
5690    Returns true if all went well, false otherwise.  */
5691
5692 static bool
5693 read_debug_names_from_section (struct objfile *objfile,
5694                                const char *filename,
5695                                struct dwarf2_section_info *section,
5696                                mapped_debug_names &map)
5697 {
5698   if (dwarf2_section_empty_p (section))
5699     return false;
5700
5701   /* Older elfutils strip versions could keep the section in the main
5702      executable while splitting it for the separate debug info file.  */
5703   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5704     return false;
5705
5706   dwarf2_read_section (objfile, section);
5707
5708   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5709
5710   const gdb_byte *addr = section->buffer;
5711
5712   bfd *const abfd = get_section_bfd_owner (section);
5713
5714   unsigned int bytes_read;
5715   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5716   addr += bytes_read;
5717
5718   map.dwarf5_is_dwarf64 = bytes_read != 4;
5719   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5720   if (bytes_read + length != section->size)
5721     {
5722       /* There may be multiple per-CU indices.  */
5723       warning (_("Section .debug_names in %s length %s does not match "
5724                  "section length %s, ignoring .debug_names."),
5725                filename, plongest (bytes_read + length),
5726                pulongest (section->size));
5727       return false;
5728     }
5729
5730   /* The version number.  */
5731   uint16_t version = read_2_bytes (abfd, addr);
5732   addr += 2;
5733   if (version != 5)
5734     {
5735       warning (_("Section .debug_names in %s has unsupported version %d, "
5736                  "ignoring .debug_names."),
5737                filename, version);
5738       return false;
5739     }
5740
5741   /* Padding.  */
5742   uint16_t padding = read_2_bytes (abfd, addr);
5743   addr += 2;
5744   if (padding != 0)
5745     {
5746       warning (_("Section .debug_names in %s has unsupported padding %d, "
5747                  "ignoring .debug_names."),
5748                filename, padding);
5749       return false;
5750     }
5751
5752   /* comp_unit_count - The number of CUs in the CU list.  */
5753   map.cu_count = read_4_bytes (abfd, addr);
5754   addr += 4;
5755
5756   /* local_type_unit_count - The number of TUs in the local TU
5757      list.  */
5758   map.tu_count = read_4_bytes (abfd, addr);
5759   addr += 4;
5760
5761   /* foreign_type_unit_count - The number of TUs in the foreign TU
5762      list.  */
5763   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5764   addr += 4;
5765   if (foreign_tu_count != 0)
5766     {
5767       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5768                  "ignoring .debug_names."),
5769                filename, static_cast<unsigned long> (foreign_tu_count));
5770       return false;
5771     }
5772
5773   /* bucket_count - The number of hash buckets in the hash lookup
5774      table.  */
5775   map.bucket_count = read_4_bytes (abfd, addr);
5776   addr += 4;
5777
5778   /* name_count - The number of unique names in the index.  */
5779   map.name_count = read_4_bytes (abfd, addr);
5780   addr += 4;
5781
5782   /* abbrev_table_size - The size in bytes of the abbreviations
5783      table.  */
5784   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5785   addr += 4;
5786
5787   /* augmentation_string_size - The size in bytes of the augmentation
5788      string.  This value is rounded up to a multiple of 4.  */
5789   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5790   addr += 4;
5791   map.augmentation_is_gdb = ((augmentation_string_size
5792                               == sizeof (dwarf5_augmentation))
5793                              && memcmp (addr, dwarf5_augmentation,
5794                                         sizeof (dwarf5_augmentation)) == 0);
5795   augmentation_string_size += (-augmentation_string_size) & 3;
5796   addr += augmentation_string_size;
5797
5798   /* List of CUs */
5799   map.cu_table_reordered = addr;
5800   addr += map.cu_count * map.offset_size;
5801
5802   /* List of Local TUs */
5803   map.tu_table_reordered = addr;
5804   addr += map.tu_count * map.offset_size;
5805
5806   /* Hash Lookup Table */
5807   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5808   addr += map.bucket_count * 4;
5809   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5810   addr += map.name_count * 4;
5811
5812   /* Name Table */
5813   map.name_table_string_offs_reordered = addr;
5814   addr += map.name_count * map.offset_size;
5815   map.name_table_entry_offs_reordered = addr;
5816   addr += map.name_count * map.offset_size;
5817
5818   const gdb_byte *abbrev_table_start = addr;
5819   for (;;)
5820     {
5821       unsigned int bytes_read;
5822       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5823       addr += bytes_read;
5824       if (index_num == 0)
5825         break;
5826
5827       const auto insertpair
5828         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5829       if (!insertpair.second)
5830         {
5831           warning (_("Section .debug_names in %s has duplicate index %s, "
5832                      "ignoring .debug_names."),
5833                    filename, pulongest (index_num));
5834           return false;
5835         }
5836       mapped_debug_names::index_val &indexval = insertpair.first->second;
5837       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5838       addr += bytes_read;
5839
5840       for (;;)
5841         {
5842           mapped_debug_names::index_val::attr attr;
5843           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5844           addr += bytes_read;
5845           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5846           addr += bytes_read;
5847           if (attr.form == DW_FORM_implicit_const)
5848             {
5849               attr.implicit_const = read_signed_leb128 (abfd, addr,
5850                                                         &bytes_read);
5851               addr += bytes_read;
5852             }
5853           if (attr.dw_idx == 0 && attr.form == 0)
5854             break;
5855           indexval.attr_vec.push_back (std::move (attr));
5856         }
5857     }
5858   if (addr != abbrev_table_start + abbrev_table_size)
5859     {
5860       warning (_("Section .debug_names in %s has abbreviation_table "
5861                  "of size %zu vs. written as %u, ignoring .debug_names."),
5862                filename, addr - abbrev_table_start, abbrev_table_size);
5863       return false;
5864     }
5865   map.entry_pool = addr;
5866
5867   return true;
5868 }
5869
5870 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5871    list.  */
5872
5873 static void
5874 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5875                                   const mapped_debug_names &map,
5876                                   dwarf2_section_info &section,
5877                                   bool is_dwz, int base_offset)
5878 {
5879   sect_offset sect_off_prev;
5880   for (uint32_t i = 0; i <= map.cu_count; ++i)
5881     {
5882       sect_offset sect_off_next;
5883       if (i < map.cu_count)
5884         {
5885           sect_off_next
5886             = (sect_offset) (extract_unsigned_integer
5887                              (map.cu_table_reordered + i * map.offset_size,
5888                               map.offset_size,
5889                               map.dwarf5_byte_order));
5890         }
5891       else
5892         sect_off_next = (sect_offset) section.size;
5893       if (i >= 1)
5894         {
5895           const ULONGEST length = sect_off_next - sect_off_prev;
5896           dwarf2_per_objfile->all_comp_units[base_offset + (i - 1)]
5897             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5898                                          sect_off_prev, length);
5899         }
5900       sect_off_prev = sect_off_next;
5901     }
5902 }
5903
5904 /* Read the CU list from the mapped index, and use it to create all
5905    the CU objects for this dwarf2_per_objfile.  */
5906
5907 static void
5908 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5909                              const mapped_debug_names &map,
5910                              const mapped_debug_names &dwz_map)
5911 {
5912   struct objfile *objfile = dwarf2_per_objfile->objfile;
5913
5914   dwarf2_per_objfile->n_comp_units = map.cu_count + dwz_map.cu_count;
5915   dwarf2_per_objfile->all_comp_units
5916     = XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
5917                  dwarf2_per_objfile->n_comp_units);
5918
5919   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5920                                     dwarf2_per_objfile->info,
5921                                     false /* is_dwz */,
5922                                     0 /* base_offset */);
5923
5924   if (dwz_map.cu_count == 0)
5925     return;
5926
5927   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5928   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5929                                     true /* is_dwz */,
5930                                     map.cu_count /* base_offset */);
5931 }
5932
5933 /* Read .debug_names.  If everything went ok, initialize the "quick"
5934    elements of all the CUs and return true.  Otherwise, return false.  */
5935
5936 static bool
5937 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5938 {
5939   mapped_debug_names local_map (dwarf2_per_objfile);
5940   mapped_debug_names dwz_map (dwarf2_per_objfile);
5941   struct objfile *objfile = dwarf2_per_objfile->objfile;
5942
5943   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5944                                       &dwarf2_per_objfile->debug_names,
5945                                       local_map))
5946     return false;
5947
5948   /* Don't use the index if it's empty.  */
5949   if (local_map.name_count == 0)
5950     return false;
5951
5952   /* If there is a .dwz file, read it so we can get its CU list as
5953      well.  */
5954   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5955   if (dwz != NULL)
5956     {
5957       if (!read_debug_names_from_section (objfile,
5958                                           bfd_get_filename (dwz->dwz_bfd),
5959                                           &dwz->debug_names, dwz_map))
5960         {
5961           warning (_("could not read '.debug_names' section from %s; skipping"),
5962                    bfd_get_filename (dwz->dwz_bfd));
5963           return false;
5964         }
5965     }
5966
5967   create_cus_from_debug_names (dwarf2_per_objfile, local_map, dwz_map);
5968
5969   if (local_map.tu_count != 0)
5970     {
5971       /* We can only handle a single .debug_types when we have an
5972          index.  */
5973       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5974         return false;
5975
5976       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5977                                                 dwarf2_per_objfile->types, 0);
5978
5979       create_signatured_type_table_from_debug_names
5980         (dwarf2_per_objfile, local_map, section, &dwarf2_per_objfile->abbrev);
5981     }
5982
5983   create_addrmap_from_aranges (dwarf2_per_objfile,
5984                                &dwarf2_per_objfile->debug_aranges);
5985
5986   dwarf2_per_objfile->debug_names_table.reset
5987     (new mapped_debug_names (dwarf2_per_objfile));
5988   *dwarf2_per_objfile->debug_names_table = std::move (local_map);
5989   dwarf2_per_objfile->using_index = 1;
5990   dwarf2_per_objfile->quick_file_names_table =
5991     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
5992
5993   return true;
5994 }
5995
5996 /* Symbol name hashing function as specified by DWARF-5.  */
5997
5998 static uint32_t
5999 dwarf5_djb_hash (const char *str_)
6000 {
6001   const unsigned char *str = (const unsigned char *) str_;
6002
6003   /* Note: tolower here ignores UTF-8, which isn't fully compliant.
6004      See http://dwarfstd.org/ShowIssue.php?issue=161027.1.  */
6005
6006   uint32_t hash = 5381;
6007   while (int c = *str++)
6008     hash = hash * 33 + tolower (c);
6009   return hash;
6010 }
6011
6012 /* Type used to manage iterating over all CUs looking for a symbol for
6013    .debug_names.  */
6014
6015 class dw2_debug_names_iterator
6016 {
6017 public:
6018   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
6019      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
6020   dw2_debug_names_iterator (const mapped_debug_names &map,
6021                             bool want_specific_block,
6022                             block_enum block_index, domain_enum domain,
6023                             const char *name)
6024     : m_map (map), m_want_specific_block (want_specific_block),
6025       m_block_index (block_index), m_domain (domain),
6026       m_addr (find_vec_in_debug_names (map, name))
6027   {}
6028
6029   dw2_debug_names_iterator (const mapped_debug_names &map,
6030                             search_domain search, uint32_t namei)
6031     : m_map (map),
6032       m_search (search),
6033       m_addr (find_vec_in_debug_names (map, namei))
6034   {}
6035
6036   /* Return the next matching CU or NULL if there are no more.  */
6037   dwarf2_per_cu_data *next ();
6038
6039 private:
6040   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
6041                                                   const char *name);
6042   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
6043                                                   uint32_t namei);
6044
6045   /* The internalized form of .debug_names.  */
6046   const mapped_debug_names &m_map;
6047
6048   /* If true, only look for symbols that match BLOCK_INDEX.  */
6049   const bool m_want_specific_block = false;
6050
6051   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
6052      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
6053      value.  */
6054   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
6055
6056   /* The kind of symbol we're looking for.  */
6057   const domain_enum m_domain = UNDEF_DOMAIN;
6058   const search_domain m_search = ALL_DOMAIN;
6059
6060   /* The list of CUs from the index entry of the symbol, or NULL if
6061      not found.  */
6062   const gdb_byte *m_addr;
6063 };
6064
6065 const char *
6066 mapped_debug_names::namei_to_name (uint32_t namei) const
6067 {
6068   const ULONGEST namei_string_offs
6069     = extract_unsigned_integer ((name_table_string_offs_reordered
6070                                  + namei * offset_size),
6071                                 offset_size,
6072                                 dwarf5_byte_order);
6073   return read_indirect_string_at_offset
6074     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
6075 }
6076
6077 /* Find a slot in .debug_names for the object named NAME.  If NAME is
6078    found, return pointer to its pool data.  If NAME cannot be found,
6079    return NULL.  */
6080
6081 const gdb_byte *
6082 dw2_debug_names_iterator::find_vec_in_debug_names
6083   (const mapped_debug_names &map, const char *name)
6084 {
6085   int (*cmp) (const char *, const char *);
6086
6087   if (current_language->la_language == language_cplus
6088       || current_language->la_language == language_fortran
6089       || current_language->la_language == language_d)
6090     {
6091       /* NAME is already canonical.  Drop any qualifiers as
6092          .debug_names does not contain any.  */
6093
6094       if (strchr (name, '(') != NULL)
6095         {
6096           gdb::unique_xmalloc_ptr<char> without_params
6097             = cp_remove_params (name);
6098
6099           if (without_params != NULL)
6100             {
6101               name = without_params.get();
6102             }
6103         }
6104     }
6105
6106   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
6107
6108   const uint32_t full_hash = dwarf5_djb_hash (name);
6109   uint32_t namei
6110     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
6111                                 (map.bucket_table_reordered
6112                                  + (full_hash % map.bucket_count)), 4,
6113                                 map.dwarf5_byte_order);
6114   if (namei == 0)
6115     return NULL;
6116   --namei;
6117   if (namei >= map.name_count)
6118     {
6119       complaint (&symfile_complaints,
6120                  _("Wrong .debug_names with name index %u but name_count=%u "
6121                    "[in module %s]"),
6122                  namei, map.name_count,
6123                  objfile_name (map.dwarf2_per_objfile->objfile));
6124       return NULL;
6125     }
6126
6127   for (;;)
6128     {
6129       const uint32_t namei_full_hash
6130         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
6131                                     (map.hash_table_reordered + namei), 4,
6132                                     map.dwarf5_byte_order);
6133       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
6134         return NULL;
6135
6136       if (full_hash == namei_full_hash)
6137         {
6138           const char *const namei_string = map.namei_to_name (namei);
6139
6140 #if 0 /* An expensive sanity check.  */
6141           if (namei_full_hash != dwarf5_djb_hash (namei_string))
6142             {
6143               complaint (&symfile_complaints,
6144                          _("Wrong .debug_names hash for string at index %u "
6145                            "[in module %s]"),
6146                          namei, objfile_name (dwarf2_per_objfile->objfile));
6147               return NULL;
6148             }
6149 #endif
6150
6151           if (cmp (namei_string, name) == 0)
6152             {
6153               const ULONGEST namei_entry_offs
6154                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
6155                                              + namei * map.offset_size),
6156                                             map.offset_size, map.dwarf5_byte_order);
6157               return map.entry_pool + namei_entry_offs;
6158             }
6159         }
6160
6161       ++namei;
6162       if (namei >= map.name_count)
6163         return NULL;
6164     }
6165 }
6166
6167 const gdb_byte *
6168 dw2_debug_names_iterator::find_vec_in_debug_names
6169   (const mapped_debug_names &map, uint32_t namei)
6170 {
6171   if (namei >= map.name_count)
6172     {
6173       complaint (&symfile_complaints,
6174                  _("Wrong .debug_names with name index %u but name_count=%u "
6175                    "[in module %s]"),
6176                  namei, map.name_count,
6177                  objfile_name (map.dwarf2_per_objfile->objfile));
6178       return NULL;
6179     }
6180
6181   const ULONGEST namei_entry_offs
6182     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
6183                                  + namei * map.offset_size),
6184                                 map.offset_size, map.dwarf5_byte_order);
6185   return map.entry_pool + namei_entry_offs;
6186 }
6187
6188 /* See dw2_debug_names_iterator.  */
6189
6190 dwarf2_per_cu_data *
6191 dw2_debug_names_iterator::next ()
6192 {
6193   if (m_addr == NULL)
6194     return NULL;
6195
6196   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
6197   struct objfile *objfile = dwarf2_per_objfile->objfile;
6198   bfd *const abfd = objfile->obfd;
6199
6200  again:
6201
6202   unsigned int bytes_read;
6203   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
6204   m_addr += bytes_read;
6205   if (abbrev == 0)
6206     return NULL;
6207
6208   const auto indexval_it = m_map.abbrev_map.find (abbrev);
6209   if (indexval_it == m_map.abbrev_map.cend ())
6210     {
6211       complaint (&symfile_complaints,
6212                  _("Wrong .debug_names undefined abbrev code %s "
6213                    "[in module %s]"),
6214                  pulongest (abbrev), objfile_name (objfile));
6215       return NULL;
6216     }
6217   const mapped_debug_names::index_val &indexval = indexval_it->second;
6218   bool have_is_static = false;
6219   bool is_static;
6220   dwarf2_per_cu_data *per_cu = NULL;
6221   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
6222     {
6223       ULONGEST ull;
6224       switch (attr.form)
6225         {
6226         case DW_FORM_implicit_const:
6227           ull = attr.implicit_const;
6228           break;
6229         case DW_FORM_flag_present:
6230           ull = 1;
6231           break;
6232         case DW_FORM_udata:
6233           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
6234           m_addr += bytes_read;
6235           break;
6236         default:
6237           complaint (&symfile_complaints,
6238                      _("Unsupported .debug_names form %s [in module %s]"),
6239                      dwarf_form_name (attr.form),
6240                      objfile_name (objfile));
6241           return NULL;
6242         }
6243       switch (attr.dw_idx)
6244         {
6245         case DW_IDX_compile_unit:
6246           /* Don't crash on bad data.  */
6247           if (ull >= dwarf2_per_objfile->n_comp_units)
6248             {
6249               complaint (&symfile_complaints,
6250                          _(".debug_names entry has bad CU index %s"
6251                            " [in module %s]"),
6252                          pulongest (ull),
6253                          objfile_name (dwarf2_per_objfile->objfile));
6254               continue;
6255             }
6256           per_cu = dw2_get_cutu (dwarf2_per_objfile, ull);
6257           break;
6258         case DW_IDX_type_unit:
6259           /* Don't crash on bad data.  */
6260           if (ull >= dwarf2_per_objfile->n_type_units)
6261             {
6262               complaint (&symfile_complaints,
6263                          _(".debug_names entry has bad TU index %s"
6264                            " [in module %s]"),
6265                          pulongest (ull),
6266                          objfile_name (dwarf2_per_objfile->objfile));
6267               continue;
6268             }
6269           per_cu = dw2_get_cutu (dwarf2_per_objfile,
6270                                  dwarf2_per_objfile->n_comp_units + ull);
6271           break;
6272         case DW_IDX_GNU_internal:
6273           if (!m_map.augmentation_is_gdb)
6274             break;
6275           have_is_static = true;
6276           is_static = true;
6277           break;
6278         case DW_IDX_GNU_external:
6279           if (!m_map.augmentation_is_gdb)
6280             break;
6281           have_is_static = true;
6282           is_static = false;
6283           break;
6284         }
6285     }
6286
6287   /* Skip if already read in.  */
6288   if (per_cu->v.quick->compunit_symtab)
6289     goto again;
6290
6291   /* Check static vs global.  */
6292   if (have_is_static)
6293     {
6294       const bool want_static = m_block_index != GLOBAL_BLOCK;
6295       if (m_want_specific_block && want_static != is_static)
6296         goto again;
6297     }
6298
6299   /* Match dw2_symtab_iter_next, symbol_kind
6300      and debug_names::psymbol_tag.  */
6301   switch (m_domain)
6302     {
6303     case VAR_DOMAIN:
6304       switch (indexval.dwarf_tag)
6305         {
6306         case DW_TAG_variable:
6307         case DW_TAG_subprogram:
6308         /* Some types are also in VAR_DOMAIN.  */
6309         case DW_TAG_typedef:
6310         case DW_TAG_structure_type:
6311           break;
6312         default:
6313           goto again;
6314         }
6315       break;
6316     case STRUCT_DOMAIN:
6317       switch (indexval.dwarf_tag)
6318         {
6319         case DW_TAG_typedef:
6320         case DW_TAG_structure_type:
6321           break;
6322         default:
6323           goto again;
6324         }
6325       break;
6326     case LABEL_DOMAIN:
6327       switch (indexval.dwarf_tag)
6328         {
6329         case 0:
6330         case DW_TAG_variable:
6331           break;
6332         default:
6333           goto again;
6334         }
6335       break;
6336     default:
6337       break;
6338     }
6339
6340   /* Match dw2_expand_symtabs_matching, symbol_kind and
6341      debug_names::psymbol_tag.  */
6342   switch (m_search)
6343     {
6344     case VARIABLES_DOMAIN:
6345       switch (indexval.dwarf_tag)
6346         {
6347         case DW_TAG_variable:
6348           break;
6349         default:
6350           goto again;
6351         }
6352       break;
6353     case FUNCTIONS_DOMAIN:
6354       switch (indexval.dwarf_tag)
6355         {
6356         case DW_TAG_subprogram:
6357           break;
6358         default:
6359           goto again;
6360         }
6361       break;
6362     case TYPES_DOMAIN:
6363       switch (indexval.dwarf_tag)
6364         {
6365         case DW_TAG_typedef:
6366         case DW_TAG_structure_type:
6367           break;
6368         default:
6369           goto again;
6370         }
6371       break;
6372     default:
6373       break;
6374     }
6375
6376   return per_cu;
6377 }
6378
6379 static struct compunit_symtab *
6380 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6381                                const char *name, domain_enum domain)
6382 {
6383   const block_enum block_index = static_cast<block_enum> (block_index_int);
6384   struct dwarf2_per_objfile *dwarf2_per_objfile
6385     = get_dwarf2_per_objfile (objfile);
6386
6387   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6388   if (!mapp)
6389     {
6390       /* index is NULL if OBJF_READNOW.  */
6391       return NULL;
6392     }
6393   const auto &map = *mapp;
6394
6395   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6396                                  block_index, domain, name);
6397
6398   struct compunit_symtab *stab_best = NULL;
6399   struct dwarf2_per_cu_data *per_cu;
6400   while ((per_cu = iter.next ()) != NULL)
6401     {
6402       struct symbol *sym, *with_opaque = NULL;
6403       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
6404       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6405       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6406
6407       sym = block_find_symbol (block, name, domain,
6408                                block_find_non_opaque_type_preferred,
6409                                &with_opaque);
6410
6411       /* Some caution must be observed with overloaded functions and
6412          methods, since the index will not contain any overload
6413          information (but NAME might contain it).  */
6414
6415       if (sym != NULL
6416           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6417         return stab;
6418       if (with_opaque != NULL
6419           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6420         stab_best = stab;
6421
6422       /* Keep looking through other CUs.  */
6423     }
6424
6425   return stab_best;
6426 }
6427
6428 /* This dumps minimal information about .debug_names.  It is called
6429    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6430    uses this to verify that .debug_names has been loaded.  */
6431
6432 static void
6433 dw2_debug_names_dump (struct objfile *objfile)
6434 {
6435   struct dwarf2_per_objfile *dwarf2_per_objfile
6436     = get_dwarf2_per_objfile (objfile);
6437
6438   gdb_assert (dwarf2_per_objfile->using_index);
6439   printf_filtered (".debug_names:");
6440   if (dwarf2_per_objfile->debug_names_table)
6441     printf_filtered (" exists\n");
6442   else
6443     printf_filtered (" faked for \"readnow\"\n");
6444   printf_filtered ("\n");
6445 }
6446
6447 static void
6448 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6449                                              const char *func_name)
6450 {
6451   struct dwarf2_per_objfile *dwarf2_per_objfile
6452     = get_dwarf2_per_objfile (objfile);
6453
6454   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6455   if (dwarf2_per_objfile->debug_names_table)
6456     {
6457       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6458
6459       /* Note: It doesn't matter what we pass for block_index here.  */
6460       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6461                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6462
6463       struct dwarf2_per_cu_data *per_cu;
6464       while ((per_cu = iter.next ()) != NULL)
6465         dw2_instantiate_symtab (per_cu);
6466     }
6467 }
6468
6469 static void
6470 dw2_debug_names_expand_symtabs_matching
6471   (struct objfile *objfile,
6472    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6473    const lookup_name_info &lookup_name,
6474    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6475    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6476    enum search_domain kind)
6477 {
6478   struct dwarf2_per_objfile *dwarf2_per_objfile
6479     = get_dwarf2_per_objfile (objfile);
6480
6481   /* debug_names_table is NULL if OBJF_READNOW.  */
6482   if (!dwarf2_per_objfile->debug_names_table)
6483     return;
6484
6485   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6486
6487   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6488
6489   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6490                                       symbol_matcher,
6491                                       kind, [&] (offset_type namei)
6492     {
6493       /* The name was matched, now expand corresponding CUs that were
6494          marked.  */
6495       dw2_debug_names_iterator iter (map, kind, namei);
6496
6497       struct dwarf2_per_cu_data *per_cu;
6498       while ((per_cu = iter.next ()) != NULL)
6499         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6500                                          expansion_notify);
6501     });
6502 }
6503
6504 const struct quick_symbol_functions dwarf2_debug_names_functions =
6505 {
6506   dw2_has_symbols,
6507   dw2_find_last_source_symtab,
6508   dw2_forget_cached_source_info,
6509   dw2_map_symtabs_matching_filename,
6510   dw2_debug_names_lookup_symbol,
6511   dw2_print_stats,
6512   dw2_debug_names_dump,
6513   dw2_relocate,
6514   dw2_debug_names_expand_symtabs_for_function,
6515   dw2_expand_all_symtabs,
6516   dw2_expand_symtabs_with_fullname,
6517   dw2_map_matching_symbols,
6518   dw2_debug_names_expand_symtabs_matching,
6519   dw2_find_pc_sect_compunit_symtab,
6520   NULL,
6521   dw2_map_symbol_filenames
6522 };
6523
6524 /* See symfile.h.  */
6525
6526 bool
6527 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6528 {
6529   struct dwarf2_per_objfile *dwarf2_per_objfile
6530     = get_dwarf2_per_objfile (objfile);
6531
6532   /* If we're about to read full symbols, don't bother with the
6533      indices.  In this case we also don't care if some other debug
6534      format is making psymtabs, because they are all about to be
6535      expanded anyway.  */
6536   if ((objfile->flags & OBJF_READNOW))
6537     {
6538       int i;
6539
6540       dwarf2_per_objfile->using_index = 1;
6541       create_all_comp_units (dwarf2_per_objfile);
6542       create_all_type_units (dwarf2_per_objfile);
6543       dwarf2_per_objfile->quick_file_names_table =
6544         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
6545
6546       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
6547                        + dwarf2_per_objfile->n_type_units); ++i)
6548         {
6549           dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, i);
6550
6551           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6552                                             struct dwarf2_per_cu_quick_data);
6553         }
6554
6555       /* Return 1 so that gdb sees the "quick" functions.  However,
6556          these functions will be no-ops because we will have expanded
6557          all symtabs.  */
6558       *index_kind = dw_index_kind::GDB_INDEX;
6559       return true;
6560     }
6561
6562   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6563     {
6564       *index_kind = dw_index_kind::DEBUG_NAMES;
6565       return true;
6566     }
6567
6568   if (dwarf2_read_index (objfile))
6569     {
6570       *index_kind = dw_index_kind::GDB_INDEX;
6571       return true;
6572     }
6573
6574   return false;
6575 }
6576
6577 \f
6578
6579 /* Build a partial symbol table.  */
6580
6581 void
6582 dwarf2_build_psymtabs (struct objfile *objfile)
6583 {
6584   struct dwarf2_per_objfile *dwarf2_per_objfile
6585     = get_dwarf2_per_objfile (objfile);
6586
6587   if (objfile->global_psymbols.capacity () == 0
6588       && objfile->static_psymbols.capacity () == 0)
6589     init_psymbol_list (objfile, 1024);
6590
6591   TRY
6592     {
6593       /* This isn't really ideal: all the data we allocate on the
6594          objfile's obstack is still uselessly kept around.  However,
6595          freeing it seems unsafe.  */
6596       psymtab_discarder psymtabs (objfile);
6597       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6598       psymtabs.keep ();
6599     }
6600   CATCH (except, RETURN_MASK_ERROR)
6601     {
6602       exception_print (gdb_stderr, except);
6603     }
6604   END_CATCH
6605 }
6606
6607 /* Return the total length of the CU described by HEADER.  */
6608
6609 static unsigned int
6610 get_cu_length (const struct comp_unit_head *header)
6611 {
6612   return header->initial_length_size + header->length;
6613 }
6614
6615 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6616
6617 static inline bool
6618 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6619 {
6620   sect_offset bottom = cu_header->sect_off;
6621   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6622
6623   return sect_off >= bottom && sect_off < top;
6624 }
6625
6626 /* Find the base address of the compilation unit for range lists and
6627    location lists.  It will normally be specified by DW_AT_low_pc.
6628    In DWARF-3 draft 4, the base address could be overridden by
6629    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6630    compilation units with discontinuous ranges.  */
6631
6632 static void
6633 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6634 {
6635   struct attribute *attr;
6636
6637   cu->base_known = 0;
6638   cu->base_address = 0;
6639
6640   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6641   if (attr)
6642     {
6643       cu->base_address = attr_value_as_address (attr);
6644       cu->base_known = 1;
6645     }
6646   else
6647     {
6648       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6649       if (attr)
6650         {
6651           cu->base_address = attr_value_as_address (attr);
6652           cu->base_known = 1;
6653         }
6654     }
6655 }
6656
6657 /* Read in the comp unit header information from the debug_info at info_ptr.
6658    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6659    NOTE: This leaves members offset, first_die_offset to be filled in
6660    by the caller.  */
6661
6662 static const gdb_byte *
6663 read_comp_unit_head (struct comp_unit_head *cu_header,
6664                      const gdb_byte *info_ptr,
6665                      struct dwarf2_section_info *section,
6666                      rcuh_kind section_kind)
6667 {
6668   int signed_addr;
6669   unsigned int bytes_read;
6670   const char *filename = get_section_file_name (section);
6671   bfd *abfd = get_section_bfd_owner (section);
6672
6673   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6674   cu_header->initial_length_size = bytes_read;
6675   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6676   info_ptr += bytes_read;
6677   cu_header->version = read_2_bytes (abfd, info_ptr);
6678   info_ptr += 2;
6679   if (cu_header->version < 5)
6680     switch (section_kind)
6681       {
6682       case rcuh_kind::COMPILE:
6683         cu_header->unit_type = DW_UT_compile;
6684         break;
6685       case rcuh_kind::TYPE:
6686         cu_header->unit_type = DW_UT_type;
6687         break;
6688       default:
6689         internal_error (__FILE__, __LINE__,
6690                         _("read_comp_unit_head: invalid section_kind"));
6691       }
6692   else
6693     {
6694       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6695                                                  (read_1_byte (abfd, info_ptr));
6696       info_ptr += 1;
6697       switch (cu_header->unit_type)
6698         {
6699         case DW_UT_compile:
6700           if (section_kind != rcuh_kind::COMPILE)
6701             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6702                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6703                    filename);
6704           break;
6705         case DW_UT_type:
6706           section_kind = rcuh_kind::TYPE;
6707           break;
6708         default:
6709           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6710                  "(is %d, should be %d or %d) [in module %s]"),
6711                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6712         }
6713
6714       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6715       info_ptr += 1;
6716     }
6717   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6718                                                           cu_header,
6719                                                           &bytes_read);
6720   info_ptr += bytes_read;
6721   if (cu_header->version < 5)
6722     {
6723       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6724       info_ptr += 1;
6725     }
6726   signed_addr = bfd_get_sign_extend_vma (abfd);
6727   if (signed_addr < 0)
6728     internal_error (__FILE__, __LINE__,
6729                     _("read_comp_unit_head: dwarf from non elf file"));
6730   cu_header->signed_addr_p = signed_addr;
6731
6732   if (section_kind == rcuh_kind::TYPE)
6733     {
6734       LONGEST type_offset;
6735
6736       cu_header->signature = read_8_bytes (abfd, info_ptr);
6737       info_ptr += 8;
6738
6739       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6740       info_ptr += bytes_read;
6741       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6742       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6743         error (_("Dwarf Error: Too big type_offset in compilation unit "
6744                "header (is %s) [in module %s]"), plongest (type_offset),
6745                filename);
6746     }
6747
6748   return info_ptr;
6749 }
6750
6751 /* Helper function that returns the proper abbrev section for
6752    THIS_CU.  */
6753
6754 static struct dwarf2_section_info *
6755 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6756 {
6757   struct dwarf2_section_info *abbrev;
6758   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6759
6760   if (this_cu->is_dwz)
6761     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6762   else
6763     abbrev = &dwarf2_per_objfile->abbrev;
6764
6765   return abbrev;
6766 }
6767
6768 /* Subroutine of read_and_check_comp_unit_head and
6769    read_and_check_type_unit_head to simplify them.
6770    Perform various error checking on the header.  */
6771
6772 static void
6773 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6774                             struct comp_unit_head *header,
6775                             struct dwarf2_section_info *section,
6776                             struct dwarf2_section_info *abbrev_section)
6777 {
6778   const char *filename = get_section_file_name (section);
6779
6780   if (header->version < 2 || header->version > 5)
6781     error (_("Dwarf Error: wrong version in compilation unit header "
6782            "(is %d, should be 2, 3, 4 or 5) [in module %s]"), header->version,
6783            filename);
6784
6785   if (to_underlying (header->abbrev_sect_off)
6786       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6787     error (_("Dwarf Error: bad offset (0x%x) in compilation unit header "
6788            "(offset 0x%x + 6) [in module %s]"),
6789            to_underlying (header->abbrev_sect_off),
6790            to_underlying (header->sect_off),
6791            filename);
6792
6793   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6794      avoid potential 32-bit overflow.  */
6795   if (((ULONGEST) header->sect_off + get_cu_length (header))
6796       > section->size)
6797     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6798            "(offset 0x%x + 0) [in module %s]"),
6799            header->length, to_underlying (header->sect_off),
6800            filename);
6801 }
6802
6803 /* Read in a CU/TU header and perform some basic error checking.
6804    The contents of the header are stored in HEADER.
6805    The result is a pointer to the start of the first DIE.  */
6806
6807 static const gdb_byte *
6808 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6809                                struct comp_unit_head *header,
6810                                struct dwarf2_section_info *section,
6811                                struct dwarf2_section_info *abbrev_section,
6812                                const gdb_byte *info_ptr,
6813                                rcuh_kind section_kind)
6814 {
6815   const gdb_byte *beg_of_comp_unit = info_ptr;
6816
6817   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6818
6819   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6820
6821   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6822
6823   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6824                               abbrev_section);
6825
6826   return info_ptr;
6827 }
6828
6829 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6830
6831 static sect_offset
6832 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6833                     struct dwarf2_section_info *section,
6834                     sect_offset sect_off)
6835 {
6836   bfd *abfd = get_section_bfd_owner (section);
6837   const gdb_byte *info_ptr;
6838   unsigned int initial_length_size, offset_size;
6839   uint16_t version;
6840
6841   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6842   info_ptr = section->buffer + to_underlying (sect_off);
6843   read_initial_length (abfd, info_ptr, &initial_length_size);
6844   offset_size = initial_length_size == 4 ? 4 : 8;
6845   info_ptr += initial_length_size;
6846
6847   version = read_2_bytes (abfd, info_ptr);
6848   info_ptr += 2;
6849   if (version >= 5)
6850     {
6851       /* Skip unit type and address size.  */
6852       info_ptr += 2;
6853     }
6854
6855   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6856 }
6857
6858 /* Allocate a new partial symtab for file named NAME and mark this new
6859    partial symtab as being an include of PST.  */
6860
6861 static void
6862 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6863                                struct objfile *objfile)
6864 {
6865   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6866
6867   if (!IS_ABSOLUTE_PATH (subpst->filename))
6868     {
6869       /* It shares objfile->objfile_obstack.  */
6870       subpst->dirname = pst->dirname;
6871     }
6872
6873   subpst->textlow = 0;
6874   subpst->texthigh = 0;
6875
6876   subpst->dependencies
6877     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6878   subpst->dependencies[0] = pst;
6879   subpst->number_of_dependencies = 1;
6880
6881   subpst->globals_offset = 0;
6882   subpst->n_global_syms = 0;
6883   subpst->statics_offset = 0;
6884   subpst->n_static_syms = 0;
6885   subpst->compunit_symtab = NULL;
6886   subpst->read_symtab = pst->read_symtab;
6887   subpst->readin = 0;
6888
6889   /* No private part is necessary for include psymtabs.  This property
6890      can be used to differentiate between such include psymtabs and
6891      the regular ones.  */
6892   subpst->read_symtab_private = NULL;
6893 }
6894
6895 /* Read the Line Number Program data and extract the list of files
6896    included by the source file represented by PST.  Build an include
6897    partial symtab for each of these included files.  */
6898
6899 static void
6900 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6901                                struct die_info *die,
6902                                struct partial_symtab *pst)
6903 {
6904   line_header_up lh;
6905   struct attribute *attr;
6906
6907   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6908   if (attr)
6909     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6910   if (lh == NULL)
6911     return;  /* No linetable, so no includes.  */
6912
6913   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
6914   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst, pst->textlow, 1);
6915 }
6916
6917 static hashval_t
6918 hash_signatured_type (const void *item)
6919 {
6920   const struct signatured_type *sig_type
6921     = (const struct signatured_type *) item;
6922
6923   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6924   return sig_type->signature;
6925 }
6926
6927 static int
6928 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6929 {
6930   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6931   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6932
6933   return lhs->signature == rhs->signature;
6934 }
6935
6936 /* Allocate a hash table for signatured types.  */
6937
6938 static htab_t
6939 allocate_signatured_type_table (struct objfile *objfile)
6940 {
6941   return htab_create_alloc_ex (41,
6942                                hash_signatured_type,
6943                                eq_signatured_type,
6944                                NULL,
6945                                &objfile->objfile_obstack,
6946                                hashtab_obstack_allocate,
6947                                dummy_obstack_deallocate);
6948 }
6949
6950 /* A helper function to add a signatured type CU to a table.  */
6951
6952 static int
6953 add_signatured_type_cu_to_table (void **slot, void *datum)
6954 {
6955   struct signatured_type *sigt = (struct signatured_type *) *slot;
6956   struct signatured_type ***datap = (struct signatured_type ***) datum;
6957
6958   **datap = sigt;
6959   ++*datap;
6960
6961   return 1;
6962 }
6963
6964 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6965    and fill them into TYPES_HTAB.  It will process only type units,
6966    therefore DW_UT_type.  */
6967
6968 static void
6969 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6970                               struct dwo_file *dwo_file,
6971                               dwarf2_section_info *section, htab_t &types_htab,
6972                               rcuh_kind section_kind)
6973 {
6974   struct objfile *objfile = dwarf2_per_objfile->objfile;
6975   struct dwarf2_section_info *abbrev_section;
6976   bfd *abfd;
6977   const gdb_byte *info_ptr, *end_ptr;
6978
6979   abbrev_section = (dwo_file != NULL
6980                     ? &dwo_file->sections.abbrev
6981                     : &dwarf2_per_objfile->abbrev);
6982
6983   if (dwarf_read_debug)
6984     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6985                         get_section_name (section),
6986                         get_section_file_name (abbrev_section));
6987
6988   dwarf2_read_section (objfile, section);
6989   info_ptr = section->buffer;
6990
6991   if (info_ptr == NULL)
6992     return;
6993
6994   /* We can't set abfd until now because the section may be empty or
6995      not present, in which case the bfd is unknown.  */
6996   abfd = get_section_bfd_owner (section);
6997
6998   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6999      because we don't need to read any dies: the signature is in the
7000      header.  */
7001
7002   end_ptr = info_ptr + section->size;
7003   while (info_ptr < end_ptr)
7004     {
7005       struct signatured_type *sig_type;
7006       struct dwo_unit *dwo_tu;
7007       void **slot;
7008       const gdb_byte *ptr = info_ptr;
7009       struct comp_unit_head header;
7010       unsigned int length;
7011
7012       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
7013
7014       /* Initialize it due to a false compiler warning.  */
7015       header.signature = -1;
7016       header.type_cu_offset_in_tu = (cu_offset) -1;
7017
7018       /* We need to read the type's signature in order to build the hash
7019          table, but we don't need anything else just yet.  */
7020
7021       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
7022                                            abbrev_section, ptr, section_kind);
7023
7024       length = get_cu_length (&header);
7025
7026       /* Skip dummy type units.  */
7027       if (ptr >= info_ptr + length
7028           || peek_abbrev_code (abfd, ptr) == 0
7029           || header.unit_type != DW_UT_type)
7030         {
7031           info_ptr += length;
7032           continue;
7033         }
7034
7035       if (types_htab == NULL)
7036         {
7037           if (dwo_file)
7038             types_htab = allocate_dwo_unit_table (objfile);
7039           else
7040             types_htab = allocate_signatured_type_table (objfile);
7041         }
7042
7043       if (dwo_file)
7044         {
7045           sig_type = NULL;
7046           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7047                                    struct dwo_unit);
7048           dwo_tu->dwo_file = dwo_file;
7049           dwo_tu->signature = header.signature;
7050           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
7051           dwo_tu->section = section;
7052           dwo_tu->sect_off = sect_off;
7053           dwo_tu->length = length;
7054         }
7055       else
7056         {
7057           /* N.B.: type_offset is not usable if this type uses a DWO file.
7058              The real type_offset is in the DWO file.  */
7059           dwo_tu = NULL;
7060           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7061                                      struct signatured_type);
7062           sig_type->signature = header.signature;
7063           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
7064           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
7065           sig_type->per_cu.is_debug_types = 1;
7066           sig_type->per_cu.section = section;
7067           sig_type->per_cu.sect_off = sect_off;
7068           sig_type->per_cu.length = length;
7069         }
7070
7071       slot = htab_find_slot (types_htab,
7072                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
7073                              INSERT);
7074       gdb_assert (slot != NULL);
7075       if (*slot != NULL)
7076         {
7077           sect_offset dup_sect_off;
7078
7079           if (dwo_file)
7080             {
7081               const struct dwo_unit *dup_tu
7082                 = (const struct dwo_unit *) *slot;
7083
7084               dup_sect_off = dup_tu->sect_off;
7085             }
7086           else
7087             {
7088               const struct signatured_type *dup_tu
7089                 = (const struct signatured_type *) *slot;
7090
7091               dup_sect_off = dup_tu->per_cu.sect_off;
7092             }
7093
7094           complaint (&symfile_complaints,
7095                      _("debug type entry at offset 0x%x is duplicate to"
7096                        " the entry at offset 0x%x, signature %s"),
7097                      to_underlying (sect_off), to_underlying (dup_sect_off),
7098                      hex_string (header.signature));
7099         }
7100       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
7101
7102       if (dwarf_read_debug > 1)
7103         fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
7104                             to_underlying (sect_off),
7105                             hex_string (header.signature));
7106
7107       info_ptr += length;
7108     }
7109 }
7110
7111 /* Create the hash table of all entries in the .debug_types
7112    (or .debug_types.dwo) section(s).
7113    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
7114    otherwise it is NULL.
7115
7116    The result is a pointer to the hash table or NULL if there are no types.
7117
7118    Note: This function processes DWO files only, not DWP files.  */
7119
7120 static void
7121 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
7122                                struct dwo_file *dwo_file,
7123                                VEC (dwarf2_section_info_def) *types,
7124                                htab_t &types_htab)
7125 {
7126   int ix;
7127   struct dwarf2_section_info *section;
7128
7129   if (VEC_empty (dwarf2_section_info_def, types))
7130     return;
7131
7132   for (ix = 0;
7133        VEC_iterate (dwarf2_section_info_def, types, ix, section);
7134        ++ix)
7135     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
7136                                   types_htab, rcuh_kind::TYPE);
7137 }
7138
7139 /* Create the hash table of all entries in the .debug_types section,
7140    and initialize all_type_units.
7141    The result is zero if there is an error (e.g. missing .debug_types section),
7142    otherwise non-zero.  */
7143
7144 static int
7145 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
7146 {
7147   htab_t types_htab = NULL;
7148   struct signatured_type **iter;
7149
7150   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
7151                                 &dwarf2_per_objfile->info, types_htab,
7152                                 rcuh_kind::COMPILE);
7153   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
7154                                  dwarf2_per_objfile->types, types_htab);
7155   if (types_htab == NULL)
7156     {
7157       dwarf2_per_objfile->signatured_types = NULL;
7158       return 0;
7159     }
7160
7161   dwarf2_per_objfile->signatured_types = types_htab;
7162
7163   dwarf2_per_objfile->n_type_units
7164     = dwarf2_per_objfile->n_allocated_type_units
7165     = htab_elements (types_htab);
7166   dwarf2_per_objfile->all_type_units =
7167     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
7168   iter = &dwarf2_per_objfile->all_type_units[0];
7169   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
7170   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
7171               == dwarf2_per_objfile->n_type_units);
7172
7173   return 1;
7174 }
7175
7176 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
7177    If SLOT is non-NULL, it is the entry to use in the hash table.
7178    Otherwise we find one.  */
7179
7180 static struct signatured_type *
7181 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
7182                void **slot)
7183 {
7184   struct objfile *objfile = dwarf2_per_objfile->objfile;
7185   int n_type_units = dwarf2_per_objfile->n_type_units;
7186   struct signatured_type *sig_type;
7187
7188   gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
7189   ++n_type_units;
7190   if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
7191     {
7192       if (dwarf2_per_objfile->n_allocated_type_units == 0)
7193         dwarf2_per_objfile->n_allocated_type_units = 1;
7194       dwarf2_per_objfile->n_allocated_type_units *= 2;
7195       dwarf2_per_objfile->all_type_units
7196         = XRESIZEVEC (struct signatured_type *,
7197                       dwarf2_per_objfile->all_type_units,
7198                       dwarf2_per_objfile->n_allocated_type_units);
7199       ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
7200     }
7201   dwarf2_per_objfile->n_type_units = n_type_units;
7202
7203   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7204                              struct signatured_type);
7205   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
7206   sig_type->signature = sig;
7207   sig_type->per_cu.is_debug_types = 1;
7208   if (dwarf2_per_objfile->using_index)
7209     {
7210       sig_type->per_cu.v.quick =
7211         OBSTACK_ZALLOC (&objfile->objfile_obstack,
7212                         struct dwarf2_per_cu_quick_data);
7213     }
7214
7215   if (slot == NULL)
7216     {
7217       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7218                              sig_type, INSERT);
7219     }
7220   gdb_assert (*slot == NULL);
7221   *slot = sig_type;
7222   /* The rest of sig_type must be filled in by the caller.  */
7223   return sig_type;
7224 }
7225
7226 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
7227    Fill in SIG_ENTRY with DWO_ENTRY.  */
7228
7229 static void
7230 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
7231                                   struct signatured_type *sig_entry,
7232                                   struct dwo_unit *dwo_entry)
7233 {
7234   /* Make sure we're not clobbering something we don't expect to.  */
7235   gdb_assert (! sig_entry->per_cu.queued);
7236   gdb_assert (sig_entry->per_cu.cu == NULL);
7237   if (dwarf2_per_objfile->using_index)
7238     {
7239       gdb_assert (sig_entry->per_cu.v.quick != NULL);
7240       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
7241     }
7242   else
7243       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
7244   gdb_assert (sig_entry->signature == dwo_entry->signature);
7245   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
7246   gdb_assert (sig_entry->type_unit_group == NULL);
7247   gdb_assert (sig_entry->dwo_unit == NULL);
7248
7249   sig_entry->per_cu.section = dwo_entry->section;
7250   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
7251   sig_entry->per_cu.length = dwo_entry->length;
7252   sig_entry->per_cu.reading_dwo_directly = 1;
7253   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
7254   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
7255   sig_entry->dwo_unit = dwo_entry;
7256 }
7257
7258 /* Subroutine of lookup_signatured_type.
7259    If we haven't read the TU yet, create the signatured_type data structure
7260    for a TU to be read in directly from a DWO file, bypassing the stub.
7261    This is the "Stay in DWO Optimization": When there is no DWP file and we're
7262    using .gdb_index, then when reading a CU we want to stay in the DWO file
7263    containing that CU.  Otherwise we could end up reading several other DWO
7264    files (due to comdat folding) to process the transitive closure of all the
7265    mentioned TUs, and that can be slow.  The current DWO file will have every
7266    type signature that it needs.
7267    We only do this for .gdb_index because in the psymtab case we already have
7268    to read all the DWOs to build the type unit groups.  */
7269
7270 static struct signatured_type *
7271 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7272 {
7273   struct dwarf2_per_objfile *dwarf2_per_objfile
7274     = cu->per_cu->dwarf2_per_objfile;
7275   struct objfile *objfile = dwarf2_per_objfile->objfile;
7276   struct dwo_file *dwo_file;
7277   struct dwo_unit find_dwo_entry, *dwo_entry;
7278   struct signatured_type find_sig_entry, *sig_entry;
7279   void **slot;
7280
7281   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7282
7283   /* If TU skeletons have been removed then we may not have read in any
7284      TUs yet.  */
7285   if (dwarf2_per_objfile->signatured_types == NULL)
7286     {
7287       dwarf2_per_objfile->signatured_types
7288         = allocate_signatured_type_table (objfile);
7289     }
7290
7291   /* We only ever need to read in one copy of a signatured type.
7292      Use the global signatured_types array to do our own comdat-folding
7293      of types.  If this is the first time we're reading this TU, and
7294      the TU has an entry in .gdb_index, replace the recorded data from
7295      .gdb_index with this TU.  */
7296
7297   find_sig_entry.signature = sig;
7298   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7299                          &find_sig_entry, INSERT);
7300   sig_entry = (struct signatured_type *) *slot;
7301
7302   /* We can get here with the TU already read, *or* in the process of being
7303      read.  Don't reassign the global entry to point to this DWO if that's
7304      the case.  Also note that if the TU is already being read, it may not
7305      have come from a DWO, the program may be a mix of Fission-compiled
7306      code and non-Fission-compiled code.  */
7307
7308   /* Have we already tried to read this TU?
7309      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7310      needn't exist in the global table yet).  */
7311   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7312     return sig_entry;
7313
7314   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7315      dwo_unit of the TU itself.  */
7316   dwo_file = cu->dwo_unit->dwo_file;
7317
7318   /* Ok, this is the first time we're reading this TU.  */
7319   if (dwo_file->tus == NULL)
7320     return NULL;
7321   find_dwo_entry.signature = sig;
7322   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7323   if (dwo_entry == NULL)
7324     return NULL;
7325
7326   /* If the global table doesn't have an entry for this TU, add one.  */
7327   if (sig_entry == NULL)
7328     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7329
7330   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7331   sig_entry->per_cu.tu_read = 1;
7332   return sig_entry;
7333 }
7334
7335 /* Subroutine of lookup_signatured_type.
7336    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7337    then try the DWP file.  If the TU stub (skeleton) has been removed then
7338    it won't be in .gdb_index.  */
7339
7340 static struct signatured_type *
7341 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7342 {
7343   struct dwarf2_per_objfile *dwarf2_per_objfile
7344     = cu->per_cu->dwarf2_per_objfile;
7345   struct objfile *objfile = dwarf2_per_objfile->objfile;
7346   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7347   struct dwo_unit *dwo_entry;
7348   struct signatured_type find_sig_entry, *sig_entry;
7349   void **slot;
7350
7351   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7352   gdb_assert (dwp_file != NULL);
7353
7354   /* If TU skeletons have been removed then we may not have read in any
7355      TUs yet.  */
7356   if (dwarf2_per_objfile->signatured_types == NULL)
7357     {
7358       dwarf2_per_objfile->signatured_types
7359         = allocate_signatured_type_table (objfile);
7360     }
7361
7362   find_sig_entry.signature = sig;
7363   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7364                          &find_sig_entry, INSERT);
7365   sig_entry = (struct signatured_type *) *slot;
7366
7367   /* Have we already tried to read this TU?
7368      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7369      needn't exist in the global table yet).  */
7370   if (sig_entry != NULL)
7371     return sig_entry;
7372
7373   if (dwp_file->tus == NULL)
7374     return NULL;
7375   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7376                                       sig, 1 /* is_debug_types */);
7377   if (dwo_entry == NULL)
7378     return NULL;
7379
7380   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7381   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7382
7383   return sig_entry;
7384 }
7385
7386 /* Lookup a signature based type for DW_FORM_ref_sig8.
7387    Returns NULL if signature SIG is not present in the table.
7388    It is up to the caller to complain about this.  */
7389
7390 static struct signatured_type *
7391 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7392 {
7393   struct dwarf2_per_objfile *dwarf2_per_objfile
7394     = cu->per_cu->dwarf2_per_objfile;
7395
7396   if (cu->dwo_unit
7397       && dwarf2_per_objfile->using_index)
7398     {
7399       /* We're in a DWO/DWP file, and we're using .gdb_index.
7400          These cases require special processing.  */
7401       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7402         return lookup_dwo_signatured_type (cu, sig);
7403       else
7404         return lookup_dwp_signatured_type (cu, sig);
7405     }
7406   else
7407     {
7408       struct signatured_type find_entry, *entry;
7409
7410       if (dwarf2_per_objfile->signatured_types == NULL)
7411         return NULL;
7412       find_entry.signature = sig;
7413       entry = ((struct signatured_type *)
7414                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7415       return entry;
7416     }
7417 }
7418 \f
7419 /* Low level DIE reading support.  */
7420
7421 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7422
7423 static void
7424 init_cu_die_reader (struct die_reader_specs *reader,
7425                     struct dwarf2_cu *cu,
7426                     struct dwarf2_section_info *section,
7427                     struct dwo_file *dwo_file)
7428 {
7429   gdb_assert (section->readin && section->buffer != NULL);
7430   reader->abfd = get_section_bfd_owner (section);
7431   reader->cu = cu;
7432   reader->dwo_file = dwo_file;
7433   reader->die_section = section;
7434   reader->buffer = section->buffer;
7435   reader->buffer_end = section->buffer + section->size;
7436   reader->comp_dir = NULL;
7437 }
7438
7439 /* Subroutine of init_cutu_and_read_dies to simplify it.
7440    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7441    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7442    already.
7443
7444    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7445    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7446    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7447    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7448    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7449    STUB_COMP_DIR may be non-NULL.
7450    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7451    are filled in with the info of the DIE from the DWO file.
7452    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
7453    provided an abbrev table to use.
7454    The result is non-zero if a valid (non-dummy) DIE was found.  */
7455
7456 static int
7457 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7458                         struct dwo_unit *dwo_unit,
7459                         int abbrev_table_provided,
7460                         struct die_info *stub_comp_unit_die,
7461                         const char *stub_comp_dir,
7462                         struct die_reader_specs *result_reader,
7463                         const gdb_byte **result_info_ptr,
7464                         struct die_info **result_comp_unit_die,
7465                         int *result_has_children)
7466 {
7467   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7468   struct objfile *objfile = dwarf2_per_objfile->objfile;
7469   struct dwarf2_cu *cu = this_cu->cu;
7470   struct dwarf2_section_info *section;
7471   bfd *abfd;
7472   const gdb_byte *begin_info_ptr, *info_ptr;
7473   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7474   int i,num_extra_attrs;
7475   struct dwarf2_section_info *dwo_abbrev_section;
7476   struct attribute *attr;
7477   struct die_info *comp_unit_die;
7478
7479   /* At most one of these may be provided.  */
7480   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7481
7482   /* These attributes aren't processed until later:
7483      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7484      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7485      referenced later.  However, these attributes are found in the stub
7486      which we won't have later.  In order to not impose this complication
7487      on the rest of the code, we read them here and copy them to the
7488      DWO CU/TU die.  */
7489
7490   stmt_list = NULL;
7491   low_pc = NULL;
7492   high_pc = NULL;
7493   ranges = NULL;
7494   comp_dir = NULL;
7495
7496   if (stub_comp_unit_die != NULL)
7497     {
7498       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7499          DWO file.  */
7500       if (! this_cu->is_debug_types)
7501         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7502       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7503       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7504       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7505       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7506
7507       /* There should be a DW_AT_addr_base attribute here (if needed).
7508          We need the value before we can process DW_FORM_GNU_addr_index.  */
7509       cu->addr_base = 0;
7510       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7511       if (attr)
7512         cu->addr_base = DW_UNSND (attr);
7513
7514       /* There should be a DW_AT_ranges_base attribute here (if needed).
7515          We need the value before we can process DW_AT_ranges.  */
7516       cu->ranges_base = 0;
7517       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7518       if (attr)
7519         cu->ranges_base = DW_UNSND (attr);
7520     }
7521   else if (stub_comp_dir != NULL)
7522     {
7523       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7524       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7525       comp_dir->name = DW_AT_comp_dir;
7526       comp_dir->form = DW_FORM_string;
7527       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7528       DW_STRING (comp_dir) = stub_comp_dir;
7529     }
7530
7531   /* Set up for reading the DWO CU/TU.  */
7532   cu->dwo_unit = dwo_unit;
7533   section = dwo_unit->section;
7534   dwarf2_read_section (objfile, section);
7535   abfd = get_section_bfd_owner (section);
7536   begin_info_ptr = info_ptr = (section->buffer
7537                                + to_underlying (dwo_unit->sect_off));
7538   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7539   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
7540
7541   if (this_cu->is_debug_types)
7542     {
7543       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7544
7545       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7546                                                 &cu->header, section,
7547                                                 dwo_abbrev_section,
7548                                                 info_ptr, rcuh_kind::TYPE);
7549       /* This is not an assert because it can be caused by bad debug info.  */
7550       if (sig_type->signature != cu->header.signature)
7551         {
7552           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7553                    " TU at offset 0x%x [in module %s]"),
7554                  hex_string (sig_type->signature),
7555                  hex_string (cu->header.signature),
7556                  to_underlying (dwo_unit->sect_off),
7557                  bfd_get_filename (abfd));
7558         }
7559       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7560       /* For DWOs coming from DWP files, we don't know the CU length
7561          nor the type's offset in the TU until now.  */
7562       dwo_unit->length = get_cu_length (&cu->header);
7563       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7564
7565       /* Establish the type offset that can be used to lookup the type.
7566          For DWO files, we don't know it until now.  */
7567       sig_type->type_offset_in_section
7568         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7569     }
7570   else
7571     {
7572       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7573                                                 &cu->header, section,
7574                                                 dwo_abbrev_section,
7575                                                 info_ptr, rcuh_kind::COMPILE);
7576       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7577       /* For DWOs coming from DWP files, we don't know the CU length
7578          until now.  */
7579       dwo_unit->length = get_cu_length (&cu->header);
7580     }
7581
7582   /* Replace the CU's original abbrev table with the DWO's.
7583      Reminder: We can't read the abbrev table until we've read the header.  */
7584   if (abbrev_table_provided)
7585     {
7586       /* Don't free the provided abbrev table, the caller of
7587          init_cutu_and_read_dies owns it.  */
7588       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
7589       /* Ensure the DWO abbrev table gets freed.  */
7590       make_cleanup (dwarf2_free_abbrev_table, cu);
7591     }
7592   else
7593     {
7594       dwarf2_free_abbrev_table (cu);
7595       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
7596       /* Leave any existing abbrev table cleanup as is.  */
7597     }
7598
7599   /* Read in the die, but leave space to copy over the attributes
7600      from the stub.  This has the benefit of simplifying the rest of
7601      the code - all the work to maintain the illusion of a single
7602      DW_TAG_{compile,type}_unit DIE is done here.  */
7603   num_extra_attrs = ((stmt_list != NULL)
7604                      + (low_pc != NULL)
7605                      + (high_pc != NULL)
7606                      + (ranges != NULL)
7607                      + (comp_dir != NULL));
7608   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7609                               result_has_children, num_extra_attrs);
7610
7611   /* Copy over the attributes from the stub to the DIE we just read in.  */
7612   comp_unit_die = *result_comp_unit_die;
7613   i = comp_unit_die->num_attrs;
7614   if (stmt_list != NULL)
7615     comp_unit_die->attrs[i++] = *stmt_list;
7616   if (low_pc != NULL)
7617     comp_unit_die->attrs[i++] = *low_pc;
7618   if (high_pc != NULL)
7619     comp_unit_die->attrs[i++] = *high_pc;
7620   if (ranges != NULL)
7621     comp_unit_die->attrs[i++] = *ranges;
7622   if (comp_dir != NULL)
7623     comp_unit_die->attrs[i++] = *comp_dir;
7624   comp_unit_die->num_attrs += num_extra_attrs;
7625
7626   if (dwarf_die_debug)
7627     {
7628       fprintf_unfiltered (gdb_stdlog,
7629                           "Read die from %s@0x%x of %s:\n",
7630                           get_section_name (section),
7631                           (unsigned) (begin_info_ptr - section->buffer),
7632                           bfd_get_filename (abfd));
7633       dump_die (comp_unit_die, dwarf_die_debug);
7634     }
7635
7636   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7637      TUs by skipping the stub and going directly to the entry in the DWO file.
7638      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7639      to get it via circuitous means.  Blech.  */
7640   if (comp_dir != NULL)
7641     result_reader->comp_dir = DW_STRING (comp_dir);
7642
7643   /* Skip dummy compilation units.  */
7644   if (info_ptr >= begin_info_ptr + dwo_unit->length
7645       || peek_abbrev_code (abfd, info_ptr) == 0)
7646     return 0;
7647
7648   *result_info_ptr = info_ptr;
7649   return 1;
7650 }
7651
7652 /* Subroutine of init_cutu_and_read_dies to simplify it.
7653    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7654    Returns NULL if the specified DWO unit cannot be found.  */
7655
7656 static struct dwo_unit *
7657 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7658                  struct die_info *comp_unit_die)
7659 {
7660   struct dwarf2_cu *cu = this_cu->cu;
7661   ULONGEST signature;
7662   struct dwo_unit *dwo_unit;
7663   const char *comp_dir, *dwo_name;
7664
7665   gdb_assert (cu != NULL);
7666
7667   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7668   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7669   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7670
7671   if (this_cu->is_debug_types)
7672     {
7673       struct signatured_type *sig_type;
7674
7675       /* Since this_cu is the first member of struct signatured_type,
7676          we can go from a pointer to one to a pointer to the other.  */
7677       sig_type = (struct signatured_type *) this_cu;
7678       signature = sig_type->signature;
7679       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7680     }
7681   else
7682     {
7683       struct attribute *attr;
7684
7685       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7686       if (! attr)
7687         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7688                  " [in module %s]"),
7689                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7690       signature = DW_UNSND (attr);
7691       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7692                                        signature);
7693     }
7694
7695   return dwo_unit;
7696 }
7697
7698 /* Subroutine of init_cutu_and_read_dies to simplify it.
7699    See it for a description of the parameters.
7700    Read a TU directly from a DWO file, bypassing the stub.
7701
7702    Note: This function could be a little bit simpler if we shared cleanups
7703    with our caller, init_cutu_and_read_dies.  That's generally a fragile thing
7704    to do, so we keep this function self-contained.  Or we could move this
7705    into our caller, but it's complex enough already.  */
7706
7707 static void
7708 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7709                            int use_existing_cu, int keep,
7710                            die_reader_func_ftype *die_reader_func,
7711                            void *data)
7712 {
7713   struct dwarf2_cu *cu;
7714   struct signatured_type *sig_type;
7715   struct cleanup *cleanups, *free_cu_cleanup = NULL;
7716   struct die_reader_specs reader;
7717   const gdb_byte *info_ptr;
7718   struct die_info *comp_unit_die;
7719   int has_children;
7720   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7721
7722   /* Verify we can do the following downcast, and that we have the
7723      data we need.  */
7724   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7725   sig_type = (struct signatured_type *) this_cu;
7726   gdb_assert (sig_type->dwo_unit != NULL);
7727
7728   cleanups = make_cleanup (null_cleanup, NULL);
7729
7730   if (use_existing_cu && this_cu->cu != NULL)
7731     {
7732       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7733       cu = this_cu->cu;
7734       /* There's no need to do the rereading_dwo_cu handling that
7735          init_cutu_and_read_dies does since we don't read the stub.  */
7736     }
7737   else
7738     {
7739       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7740       gdb_assert (this_cu->cu == NULL);
7741       cu = XNEW (struct dwarf2_cu);
7742       init_one_comp_unit (cu, this_cu);
7743       /* If an error occurs while loading, release our storage.  */
7744       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
7745     }
7746
7747   /* A future optimization, if needed, would be to use an existing
7748      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7749      could share abbrev tables.  */
7750
7751   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7752                               0 /* abbrev_table_provided */,
7753                               NULL /* stub_comp_unit_die */,
7754                               sig_type->dwo_unit->dwo_file->comp_dir,
7755                               &reader, &info_ptr,
7756                               &comp_unit_die, &has_children) == 0)
7757     {
7758       /* Dummy die.  */
7759       do_cleanups (cleanups);
7760       return;
7761     }
7762
7763   /* All the "real" work is done here.  */
7764   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7765
7766   /* This duplicates the code in init_cutu_and_read_dies,
7767      but the alternative is making the latter more complex.
7768      This function is only for the special case of using DWO files directly:
7769      no point in overly complicating the general case just to handle this.  */
7770   if (free_cu_cleanup != NULL)
7771     {
7772       if (keep)
7773         {
7774           /* We've successfully allocated this compilation unit.  Let our
7775              caller clean it up when finished with it.  */
7776           discard_cleanups (free_cu_cleanup);
7777
7778           /* We can only discard free_cu_cleanup and all subsequent cleanups.
7779              So we have to manually free the abbrev table.  */
7780           dwarf2_free_abbrev_table (cu);
7781
7782           /* Link this CU into read_in_chain.  */
7783           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7784           dwarf2_per_objfile->read_in_chain = this_cu;
7785         }
7786       else
7787         do_cleanups (free_cu_cleanup);
7788     }
7789
7790   do_cleanups (cleanups);
7791 }
7792
7793 /* Initialize a CU (or TU) and read its DIEs.
7794    If the CU defers to a DWO file, read the DWO file as well.
7795
7796    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7797    Otherwise the table specified in the comp unit header is read in and used.
7798    This is an optimization for when we already have the abbrev table.
7799
7800    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7801    Otherwise, a new CU is allocated with xmalloc.
7802
7803    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7804    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7805
7806    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7807    linker) then DIE_READER_FUNC will not get called.  */
7808
7809 static void
7810 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7811                          struct abbrev_table *abbrev_table,
7812                          int use_existing_cu, int keep,
7813                          die_reader_func_ftype *die_reader_func,
7814                          void *data)
7815 {
7816   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7817   struct objfile *objfile = dwarf2_per_objfile->objfile;
7818   struct dwarf2_section_info *section = this_cu->section;
7819   bfd *abfd = get_section_bfd_owner (section);
7820   struct dwarf2_cu *cu;
7821   const gdb_byte *begin_info_ptr, *info_ptr;
7822   struct die_reader_specs reader;
7823   struct die_info *comp_unit_die;
7824   int has_children;
7825   struct attribute *attr;
7826   struct cleanup *cleanups, *free_cu_cleanup = NULL;
7827   struct signatured_type *sig_type = NULL;
7828   struct dwarf2_section_info *abbrev_section;
7829   /* Non-zero if CU currently points to a DWO file and we need to
7830      reread it.  When this happens we need to reread the skeleton die
7831      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7832   int rereading_dwo_cu = 0;
7833
7834   if (dwarf_die_debug)
7835     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
7836                         this_cu->is_debug_types ? "type" : "comp",
7837                         to_underlying (this_cu->sect_off));
7838
7839   if (use_existing_cu)
7840     gdb_assert (keep);
7841
7842   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7843      file (instead of going through the stub), short-circuit all of this.  */
7844   if (this_cu->reading_dwo_directly)
7845     {
7846       /* Narrow down the scope of possibilities to have to understand.  */
7847       gdb_assert (this_cu->is_debug_types);
7848       gdb_assert (abbrev_table == NULL);
7849       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7850                                  die_reader_func, data);
7851       return;
7852     }
7853
7854   cleanups = make_cleanup (null_cleanup, NULL);
7855
7856   /* This is cheap if the section is already read in.  */
7857   dwarf2_read_section (objfile, section);
7858
7859   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7860
7861   abbrev_section = get_abbrev_section_for_cu (this_cu);
7862
7863   if (use_existing_cu && this_cu->cu != NULL)
7864     {
7865       cu = this_cu->cu;
7866       /* If this CU is from a DWO file we need to start over, we need to
7867          refetch the attributes from the skeleton CU.
7868          This could be optimized by retrieving those attributes from when we
7869          were here the first time: the previous comp_unit_die was stored in
7870          comp_unit_obstack.  But there's no data yet that we need this
7871          optimization.  */
7872       if (cu->dwo_unit != NULL)
7873         rereading_dwo_cu = 1;
7874     }
7875   else
7876     {
7877       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7878       gdb_assert (this_cu->cu == NULL);
7879       cu = XNEW (struct dwarf2_cu);
7880       init_one_comp_unit (cu, this_cu);
7881       /* If an error occurs while loading, release our storage.  */
7882       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
7883     }
7884
7885   /* Get the header.  */
7886   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7887     {
7888       /* We already have the header, there's no need to read it in again.  */
7889       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7890     }
7891   else
7892     {
7893       if (this_cu->is_debug_types)
7894         {
7895           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7896                                                     &cu->header, section,
7897                                                     abbrev_section, info_ptr,
7898                                                     rcuh_kind::TYPE);
7899
7900           /* Since per_cu is the first member of struct signatured_type,
7901              we can go from a pointer to one to a pointer to the other.  */
7902           sig_type = (struct signatured_type *) this_cu;
7903           gdb_assert (sig_type->signature == cu->header.signature);
7904           gdb_assert (sig_type->type_offset_in_tu
7905                       == cu->header.type_cu_offset_in_tu);
7906           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7907
7908           /* LENGTH has not been set yet for type units if we're
7909              using .gdb_index.  */
7910           this_cu->length = get_cu_length (&cu->header);
7911
7912           /* Establish the type offset that can be used to lookup the type.  */
7913           sig_type->type_offset_in_section =
7914             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7915
7916           this_cu->dwarf_version = cu->header.version;
7917         }
7918       else
7919         {
7920           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7921                                                     &cu->header, section,
7922                                                     abbrev_section,
7923                                                     info_ptr,
7924                                                     rcuh_kind::COMPILE);
7925
7926           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7927           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7928           this_cu->dwarf_version = cu->header.version;
7929         }
7930     }
7931
7932   /* Skip dummy compilation units.  */
7933   if (info_ptr >= begin_info_ptr + this_cu->length
7934       || peek_abbrev_code (abfd, info_ptr) == 0)
7935     {
7936       do_cleanups (cleanups);
7937       return;
7938     }
7939
7940   /* If we don't have them yet, read the abbrevs for this compilation unit.
7941      And if we need to read them now, make sure they're freed when we're
7942      done.  Note that it's important that if the CU had an abbrev table
7943      on entry we don't free it when we're done: Somewhere up the call stack
7944      it may be in use.  */
7945   if (abbrev_table != NULL)
7946     {
7947       gdb_assert (cu->abbrev_table == NULL);
7948       gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7949       cu->abbrev_table = abbrev_table;
7950     }
7951   else if (cu->abbrev_table == NULL)
7952     {
7953       dwarf2_read_abbrevs (cu, abbrev_section);
7954       make_cleanup (dwarf2_free_abbrev_table, cu);
7955     }
7956   else if (rereading_dwo_cu)
7957     {
7958       dwarf2_free_abbrev_table (cu);
7959       dwarf2_read_abbrevs (cu, abbrev_section);
7960     }
7961
7962   /* Read the top level CU/TU die.  */
7963   init_cu_die_reader (&reader, cu, section, NULL);
7964   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7965
7966   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7967      from the DWO file.
7968      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7969      DWO CU, that this test will fail (the attribute will not be present).  */
7970   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7971   if (attr)
7972     {
7973       struct dwo_unit *dwo_unit;
7974       struct die_info *dwo_comp_unit_die;
7975
7976       if (has_children)
7977         {
7978           complaint (&symfile_complaints,
7979                      _("compilation unit with DW_AT_GNU_dwo_name"
7980                        " has children (offset 0x%x) [in module %s]"),
7981                      to_underlying (this_cu->sect_off), bfd_get_filename (abfd));
7982         }
7983       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7984       if (dwo_unit != NULL)
7985         {
7986           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7987                                       abbrev_table != NULL,
7988                                       comp_unit_die, NULL,
7989                                       &reader, &info_ptr,
7990                                       &dwo_comp_unit_die, &has_children) == 0)
7991             {
7992               /* Dummy die.  */
7993               do_cleanups (cleanups);
7994               return;
7995             }
7996           comp_unit_die = dwo_comp_unit_die;
7997         }
7998       else
7999         {
8000           /* Yikes, we couldn't find the rest of the DIE, we only have
8001              the stub.  A complaint has already been logged.  There's
8002              not much more we can do except pass on the stub DIE to
8003              die_reader_func.  We don't want to throw an error on bad
8004              debug info.  */
8005         }
8006     }
8007
8008   /* All of the above is setup for this call.  Yikes.  */
8009   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
8010
8011   /* Done, clean up.  */
8012   if (free_cu_cleanup != NULL)
8013     {
8014       if (keep)
8015         {
8016           /* We've successfully allocated this compilation unit.  Let our
8017              caller clean it up when finished with it.  */
8018           discard_cleanups (free_cu_cleanup);
8019
8020           /* We can only discard free_cu_cleanup and all subsequent cleanups.
8021              So we have to manually free the abbrev table.  */
8022           dwarf2_free_abbrev_table (cu);
8023
8024           /* Link this CU into read_in_chain.  */
8025           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
8026           dwarf2_per_objfile->read_in_chain = this_cu;
8027         }
8028       else
8029         do_cleanups (free_cu_cleanup);
8030     }
8031
8032   do_cleanups (cleanups);
8033 }
8034
8035 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
8036    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
8037    to have already done the lookup to find the DWO file).
8038
8039    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
8040    THIS_CU->is_debug_types, but nothing else.
8041
8042    We fill in THIS_CU->length.
8043
8044    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
8045    linker) then DIE_READER_FUNC will not get called.
8046
8047    THIS_CU->cu is always freed when done.
8048    This is done in order to not leave THIS_CU->cu in a state where we have
8049    to care whether it refers to the "main" CU or the DWO CU.  */
8050
8051 static void
8052 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
8053                                    struct dwo_file *dwo_file,
8054                                    die_reader_func_ftype *die_reader_func,
8055                                    void *data)
8056 {
8057   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
8058   struct objfile *objfile = dwarf2_per_objfile->objfile;
8059   struct dwarf2_section_info *section = this_cu->section;
8060   bfd *abfd = get_section_bfd_owner (section);
8061   struct dwarf2_section_info *abbrev_section;
8062   struct dwarf2_cu cu;
8063   const gdb_byte *begin_info_ptr, *info_ptr;
8064   struct die_reader_specs reader;
8065   struct cleanup *cleanups;
8066   struct die_info *comp_unit_die;
8067   int has_children;
8068
8069   if (dwarf_die_debug)
8070     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
8071                         this_cu->is_debug_types ? "type" : "comp",
8072                         to_underlying (this_cu->sect_off));
8073
8074   gdb_assert (this_cu->cu == NULL);
8075
8076   abbrev_section = (dwo_file != NULL
8077                     ? &dwo_file->sections.abbrev
8078                     : get_abbrev_section_for_cu (this_cu));
8079
8080   /* This is cheap if the section is already read in.  */
8081   dwarf2_read_section (objfile, section);
8082
8083   init_one_comp_unit (&cu, this_cu);
8084
8085   cleanups = make_cleanup (free_stack_comp_unit, &cu);
8086
8087   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
8088   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
8089                                             &cu.header, section,
8090                                             abbrev_section, info_ptr,
8091                                             (this_cu->is_debug_types
8092                                              ? rcuh_kind::TYPE
8093                                              : rcuh_kind::COMPILE));
8094
8095   this_cu->length = get_cu_length (&cu.header);
8096
8097   /* Skip dummy compilation units.  */
8098   if (info_ptr >= begin_info_ptr + this_cu->length
8099       || peek_abbrev_code (abfd, info_ptr) == 0)
8100     {
8101       do_cleanups (cleanups);
8102       return;
8103     }
8104
8105   dwarf2_read_abbrevs (&cu, abbrev_section);
8106   make_cleanup (dwarf2_free_abbrev_table, &cu);
8107
8108   init_cu_die_reader (&reader, &cu, section, dwo_file);
8109   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
8110
8111   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
8112
8113   do_cleanups (cleanups);
8114 }
8115
8116 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
8117    does not lookup the specified DWO file.
8118    This cannot be used to read DWO files.
8119
8120    THIS_CU->cu is always freed when done.
8121    This is done in order to not leave THIS_CU->cu in a state where we have
8122    to care whether it refers to the "main" CU or the DWO CU.
8123    We can revisit this if the data shows there's a performance issue.  */
8124
8125 static void
8126 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
8127                                 die_reader_func_ftype *die_reader_func,
8128                                 void *data)
8129 {
8130   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
8131 }
8132 \f
8133 /* Type Unit Groups.
8134
8135    Type Unit Groups are a way to collapse the set of all TUs (type units) into
8136    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
8137    so that all types coming from the same compilation (.o file) are grouped
8138    together.  A future step could be to put the types in the same symtab as
8139    the CU the types ultimately came from.  */
8140
8141 static hashval_t
8142 hash_type_unit_group (const void *item)
8143 {
8144   const struct type_unit_group *tu_group
8145     = (const struct type_unit_group *) item;
8146
8147   return hash_stmt_list_entry (&tu_group->hash);
8148 }
8149
8150 static int
8151 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
8152 {
8153   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
8154   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
8155
8156   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
8157 }
8158
8159 /* Allocate a hash table for type unit groups.  */
8160
8161 static htab_t
8162 allocate_type_unit_groups_table (struct objfile *objfile)
8163 {
8164   return htab_create_alloc_ex (3,
8165                                hash_type_unit_group,
8166                                eq_type_unit_group,
8167                                NULL,
8168                                &objfile->objfile_obstack,
8169                                hashtab_obstack_allocate,
8170                                dummy_obstack_deallocate);
8171 }
8172
8173 /* Type units that don't have DW_AT_stmt_list are grouped into their own
8174    partial symtabs.  We combine several TUs per psymtab to not let the size
8175    of any one psymtab grow too big.  */
8176 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
8177 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
8178
8179 /* Helper routine for get_type_unit_group.
8180    Create the type_unit_group object used to hold one or more TUs.  */
8181
8182 static struct type_unit_group *
8183 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
8184 {
8185   struct dwarf2_per_objfile *dwarf2_per_objfile
8186     = cu->per_cu->dwarf2_per_objfile;
8187   struct objfile *objfile = dwarf2_per_objfile->objfile;
8188   struct dwarf2_per_cu_data *per_cu;
8189   struct type_unit_group *tu_group;
8190
8191   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
8192                              struct type_unit_group);
8193   per_cu = &tu_group->per_cu;
8194   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8195
8196   if (dwarf2_per_objfile->using_index)
8197     {
8198       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
8199                                         struct dwarf2_per_cu_quick_data);
8200     }
8201   else
8202     {
8203       unsigned int line_offset = to_underlying (line_offset_struct);
8204       struct partial_symtab *pst;
8205       char *name;
8206
8207       /* Give the symtab a useful name for debug purposes.  */
8208       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
8209         name = xstrprintf ("<type_units_%d>",
8210                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
8211       else
8212         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
8213
8214       pst = create_partial_symtab (per_cu, name);
8215       pst->anonymous = 1;
8216
8217       xfree (name);
8218     }
8219
8220   tu_group->hash.dwo_unit = cu->dwo_unit;
8221   tu_group->hash.line_sect_off = line_offset_struct;
8222
8223   return tu_group;
8224 }
8225
8226 /* Look up the type_unit_group for type unit CU, and create it if necessary.
8227    STMT_LIST is a DW_AT_stmt_list attribute.  */
8228
8229 static struct type_unit_group *
8230 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
8231 {
8232   struct dwarf2_per_objfile *dwarf2_per_objfile
8233     = cu->per_cu->dwarf2_per_objfile;
8234   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8235   struct type_unit_group *tu_group;
8236   void **slot;
8237   unsigned int line_offset;
8238   struct type_unit_group type_unit_group_for_lookup;
8239
8240   if (dwarf2_per_objfile->type_unit_groups == NULL)
8241     {
8242       dwarf2_per_objfile->type_unit_groups =
8243         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
8244     }
8245
8246   /* Do we need to create a new group, or can we use an existing one?  */
8247
8248   if (stmt_list)
8249     {
8250       line_offset = DW_UNSND (stmt_list);
8251       ++tu_stats->nr_symtab_sharers;
8252     }
8253   else
8254     {
8255       /* Ugh, no stmt_list.  Rare, but we have to handle it.
8256          We can do various things here like create one group per TU or
8257          spread them over multiple groups to split up the expansion work.
8258          To avoid worst case scenarios (too many groups or too large groups)
8259          we, umm, group them in bunches.  */
8260       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
8261                      | (tu_stats->nr_stmt_less_type_units
8262                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
8263       ++tu_stats->nr_stmt_less_type_units;
8264     }
8265
8266   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
8267   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
8268   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
8269                          &type_unit_group_for_lookup, INSERT);
8270   if (*slot != NULL)
8271     {
8272       tu_group = (struct type_unit_group *) *slot;
8273       gdb_assert (tu_group != NULL);
8274     }
8275   else
8276     {
8277       sect_offset line_offset_struct = (sect_offset) line_offset;
8278       tu_group = create_type_unit_group (cu, line_offset_struct);
8279       *slot = tu_group;
8280       ++tu_stats->nr_symtabs;
8281     }
8282
8283   return tu_group;
8284 }
8285 \f
8286 /* Partial symbol tables.  */
8287
8288 /* Create a psymtab named NAME and assign it to PER_CU.
8289
8290    The caller must fill in the following details:
8291    dirname, textlow, texthigh.  */
8292
8293 static struct partial_symtab *
8294 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
8295 {
8296   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
8297   struct partial_symtab *pst;
8298
8299   pst = start_psymtab_common (objfile, name, 0,
8300                               objfile->global_psymbols,
8301                               objfile->static_psymbols);
8302
8303   pst->psymtabs_addrmap_supported = 1;
8304
8305   /* This is the glue that links PST into GDB's symbol API.  */
8306   pst->read_symtab_private = per_cu;
8307   pst->read_symtab = dwarf2_read_symtab;
8308   per_cu->v.psymtab = pst;
8309
8310   return pst;
8311 }
8312
8313 /* The DATA object passed to process_psymtab_comp_unit_reader has this
8314    type.  */
8315
8316 struct process_psymtab_comp_unit_data
8317 {
8318   /* True if we are reading a DW_TAG_partial_unit.  */
8319
8320   int want_partial_unit;
8321
8322   /* The "pretend" language that is used if the CU doesn't declare a
8323      language.  */
8324
8325   enum language pretend_language;
8326 };
8327
8328 /* die_reader_func for process_psymtab_comp_unit.  */
8329
8330 static void
8331 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
8332                                   const gdb_byte *info_ptr,
8333                                   struct die_info *comp_unit_die,
8334                                   int has_children,
8335                                   void *data)
8336 {
8337   struct dwarf2_cu *cu = reader->cu;
8338   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
8339   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8340   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8341   CORE_ADDR baseaddr;
8342   CORE_ADDR best_lowpc = 0, best_highpc = 0;
8343   struct partial_symtab *pst;
8344   enum pc_bounds_kind cu_bounds_kind;
8345   const char *filename;
8346   struct process_psymtab_comp_unit_data *info
8347     = (struct process_psymtab_comp_unit_data *) data;
8348
8349   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
8350     return;
8351
8352   gdb_assert (! per_cu->is_debug_types);
8353
8354   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
8355
8356   cu->list_in_scope = &file_symbols;
8357
8358   /* Allocate a new partial symbol table structure.  */
8359   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
8360   if (filename == NULL)
8361     filename = "";
8362
8363   pst = create_partial_symtab (per_cu, filename);
8364
8365   /* This must be done before calling dwarf2_build_include_psymtabs.  */
8366   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
8367
8368   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8369
8370   dwarf2_find_base_address (comp_unit_die, cu);
8371
8372   /* Possibly set the default values of LOWPC and HIGHPC from
8373      `DW_AT_ranges'.  */
8374   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8375                                          &best_highpc, cu, pst);
8376   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8377     /* Store the contiguous range if it is not empty; it can be empty for
8378        CUs with no code.  */
8379     addrmap_set_empty (objfile->psymtabs_addrmap,
8380                        gdbarch_adjust_dwarf2_addr (gdbarch,
8381                                                    best_lowpc + baseaddr),
8382                        gdbarch_adjust_dwarf2_addr (gdbarch,
8383                                                    best_highpc + baseaddr) - 1,
8384                        pst);
8385
8386   /* Check if comp unit has_children.
8387      If so, read the rest of the partial symbols from this comp unit.
8388      If not, there's no more debug_info for this comp unit.  */
8389   if (has_children)
8390     {
8391       struct partial_die_info *first_die;
8392       CORE_ADDR lowpc, highpc;
8393
8394       lowpc = ((CORE_ADDR) -1);
8395       highpc = ((CORE_ADDR) 0);
8396
8397       first_die = load_partial_dies (reader, info_ptr, 1);
8398
8399       scan_partial_symbols (first_die, &lowpc, &highpc,
8400                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8401
8402       /* If we didn't find a lowpc, set it to highpc to avoid
8403          complaints from `maint check'.  */
8404       if (lowpc == ((CORE_ADDR) -1))
8405         lowpc = highpc;
8406
8407       /* If the compilation unit didn't have an explicit address range,
8408          then use the information extracted from its child dies.  */
8409       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8410         {
8411           best_lowpc = lowpc;
8412           best_highpc = highpc;
8413         }
8414     }
8415   pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
8416   pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
8417
8418   end_psymtab_common (objfile, pst);
8419
8420   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8421     {
8422       int i;
8423       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8424       struct dwarf2_per_cu_data *iter;
8425
8426       /* Fill in 'dependencies' here; we fill in 'users' in a
8427          post-pass.  */
8428       pst->number_of_dependencies = len;
8429       pst->dependencies =
8430         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8431       for (i = 0;
8432            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8433                         i, iter);
8434            ++i)
8435         pst->dependencies[i] = iter->v.psymtab;
8436
8437       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8438     }
8439
8440   /* Get the list of files included in the current compilation unit,
8441      and build a psymtab for each of them.  */
8442   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8443
8444   if (dwarf_read_debug)
8445     {
8446       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8447
8448       fprintf_unfiltered (gdb_stdlog,
8449                           "Psymtab for %s unit @0x%x: %s - %s"
8450                           ", %d global, %d static syms\n",
8451                           per_cu->is_debug_types ? "type" : "comp",
8452                           to_underlying (per_cu->sect_off),
8453                           paddress (gdbarch, pst->textlow),
8454                           paddress (gdbarch, pst->texthigh),
8455                           pst->n_global_syms, pst->n_static_syms);
8456     }
8457 }
8458
8459 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8460    Process compilation unit THIS_CU for a psymtab.  */
8461
8462 static void
8463 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8464                            int want_partial_unit,
8465                            enum language pretend_language)
8466 {
8467   /* If this compilation unit was already read in, free the
8468      cached copy in order to read it in again.  This is
8469      necessary because we skipped some symbols when we first
8470      read in the compilation unit (see load_partial_dies).
8471      This problem could be avoided, but the benefit is unclear.  */
8472   if (this_cu->cu != NULL)
8473     free_one_cached_comp_unit (this_cu);
8474
8475   if (this_cu->is_debug_types)
8476     init_cutu_and_read_dies (this_cu, NULL, 0, 0, build_type_psymtabs_reader,
8477                              NULL);
8478   else
8479     {
8480       process_psymtab_comp_unit_data info;
8481       info.want_partial_unit = want_partial_unit;
8482       info.pretend_language = pretend_language;
8483       init_cutu_and_read_dies (this_cu, NULL, 0, 0,
8484                                process_psymtab_comp_unit_reader, &info);
8485     }
8486
8487   /* Age out any secondary CUs.  */
8488   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8489 }
8490
8491 /* Reader function for build_type_psymtabs.  */
8492
8493 static void
8494 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8495                             const gdb_byte *info_ptr,
8496                             struct die_info *type_unit_die,
8497                             int has_children,
8498                             void *data)
8499 {
8500   struct dwarf2_per_objfile *dwarf2_per_objfile
8501     = reader->cu->per_cu->dwarf2_per_objfile;
8502   struct objfile *objfile = dwarf2_per_objfile->objfile;
8503   struct dwarf2_cu *cu = reader->cu;
8504   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8505   struct signatured_type *sig_type;
8506   struct type_unit_group *tu_group;
8507   struct attribute *attr;
8508   struct partial_die_info *first_die;
8509   CORE_ADDR lowpc, highpc;
8510   struct partial_symtab *pst;
8511
8512   gdb_assert (data == NULL);
8513   gdb_assert (per_cu->is_debug_types);
8514   sig_type = (struct signatured_type *) per_cu;
8515
8516   if (! has_children)
8517     return;
8518
8519   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8520   tu_group = get_type_unit_group (cu, attr);
8521
8522   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8523
8524   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8525   cu->list_in_scope = &file_symbols;
8526   pst = create_partial_symtab (per_cu, "");
8527   pst->anonymous = 1;
8528
8529   first_die = load_partial_dies (reader, info_ptr, 1);
8530
8531   lowpc = (CORE_ADDR) -1;
8532   highpc = (CORE_ADDR) 0;
8533   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8534
8535   end_psymtab_common (objfile, pst);
8536 }
8537
8538 /* Struct used to sort TUs by their abbreviation table offset.  */
8539
8540 struct tu_abbrev_offset
8541 {
8542   struct signatured_type *sig_type;
8543   sect_offset abbrev_offset;
8544 };
8545
8546 /* Helper routine for build_type_psymtabs_1, passed to qsort.  */
8547
8548 static int
8549 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
8550 {
8551   const struct tu_abbrev_offset * const *a
8552     = (const struct tu_abbrev_offset * const*) ap;
8553   const struct tu_abbrev_offset * const *b
8554     = (const struct tu_abbrev_offset * const*) bp;
8555   sect_offset aoff = (*a)->abbrev_offset;
8556   sect_offset boff = (*b)->abbrev_offset;
8557
8558   return (aoff > boff) - (aoff < boff);
8559 }
8560
8561 /* Efficiently read all the type units.
8562    This does the bulk of the work for build_type_psymtabs.
8563
8564    The efficiency is because we sort TUs by the abbrev table they use and
8565    only read each abbrev table once.  In one program there are 200K TUs
8566    sharing 8K abbrev tables.
8567
8568    The main purpose of this function is to support building the
8569    dwarf2_per_objfile->type_unit_groups table.
8570    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8571    can collapse the search space by grouping them by stmt_list.
8572    The savings can be significant, in the same program from above the 200K TUs
8573    share 8K stmt_list tables.
8574
8575    FUNC is expected to call get_type_unit_group, which will create the
8576    struct type_unit_group if necessary and add it to
8577    dwarf2_per_objfile->type_unit_groups.  */
8578
8579 static void
8580 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8581 {
8582   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8583   struct cleanup *cleanups;
8584   struct abbrev_table *abbrev_table;
8585   sect_offset abbrev_offset;
8586   struct tu_abbrev_offset *sorted_by_abbrev;
8587   int i;
8588
8589   /* It's up to the caller to not call us multiple times.  */
8590   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8591
8592   if (dwarf2_per_objfile->n_type_units == 0)
8593     return;
8594
8595   /* TUs typically share abbrev tables, and there can be way more TUs than
8596      abbrev tables.  Sort by abbrev table to reduce the number of times we
8597      read each abbrev table in.
8598      Alternatives are to punt or to maintain a cache of abbrev tables.
8599      This is simpler and efficient enough for now.
8600
8601      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8602      symtab to use).  Typically TUs with the same abbrev offset have the same
8603      stmt_list value too so in practice this should work well.
8604
8605      The basic algorithm here is:
8606
8607       sort TUs by abbrev table
8608       for each TU with same abbrev table:
8609         read abbrev table if first user
8610         read TU top level DIE
8611           [IWBN if DWO skeletons had DW_AT_stmt_list]
8612         call FUNC  */
8613
8614   if (dwarf_read_debug)
8615     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8616
8617   /* Sort in a separate table to maintain the order of all_type_units
8618      for .gdb_index: TU indices directly index all_type_units.  */
8619   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
8620                               dwarf2_per_objfile->n_type_units);
8621   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
8622     {
8623       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
8624
8625       sorted_by_abbrev[i].sig_type = sig_type;
8626       sorted_by_abbrev[i].abbrev_offset =
8627         read_abbrev_offset (dwarf2_per_objfile,
8628                             sig_type->per_cu.section,
8629                             sig_type->per_cu.sect_off);
8630     }
8631   cleanups = make_cleanup (xfree, sorted_by_abbrev);
8632   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
8633          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
8634
8635   abbrev_offset = (sect_offset) ~(unsigned) 0;
8636   abbrev_table = NULL;
8637   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
8638
8639   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
8640     {
8641       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
8642
8643       /* Switch to the next abbrev table if necessary.  */
8644       if (abbrev_table == NULL
8645           || tu->abbrev_offset != abbrev_offset)
8646         {
8647           if (abbrev_table != NULL)
8648             {
8649               abbrev_table_free (abbrev_table);
8650               /* Reset to NULL in case abbrev_table_read_table throws
8651                  an error: abbrev_table_free_cleanup will get called.  */
8652               abbrev_table = NULL;
8653             }
8654           abbrev_offset = tu->abbrev_offset;
8655           abbrev_table =
8656             abbrev_table_read_table (dwarf2_per_objfile,
8657                                      &dwarf2_per_objfile->abbrev,
8658                                      abbrev_offset);
8659           ++tu_stats->nr_uniq_abbrev_tables;
8660         }
8661
8662       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
8663                                build_type_psymtabs_reader, NULL);
8664     }
8665
8666   do_cleanups (cleanups);
8667 }
8668
8669 /* Print collected type unit statistics.  */
8670
8671 static void
8672 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8673 {
8674   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8675
8676   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8677   fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
8678                       dwarf2_per_objfile->n_type_units);
8679   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8680                       tu_stats->nr_uniq_abbrev_tables);
8681   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8682                       tu_stats->nr_symtabs);
8683   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8684                       tu_stats->nr_symtab_sharers);
8685   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8686                       tu_stats->nr_stmt_less_type_units);
8687   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8688                       tu_stats->nr_all_type_units_reallocs);
8689 }
8690
8691 /* Traversal function for build_type_psymtabs.  */
8692
8693 static int
8694 build_type_psymtab_dependencies (void **slot, void *info)
8695 {
8696   struct dwarf2_per_objfile *dwarf2_per_objfile
8697     = (struct dwarf2_per_objfile *) info;
8698   struct objfile *objfile = dwarf2_per_objfile->objfile;
8699   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8700   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8701   struct partial_symtab *pst = per_cu->v.psymtab;
8702   int len = VEC_length (sig_type_ptr, tu_group->tus);
8703   struct signatured_type *iter;
8704   int i;
8705
8706   gdb_assert (len > 0);
8707   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8708
8709   pst->number_of_dependencies = len;
8710   pst->dependencies =
8711     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8712   for (i = 0;
8713        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8714        ++i)
8715     {
8716       gdb_assert (iter->per_cu.is_debug_types);
8717       pst->dependencies[i] = iter->per_cu.v.psymtab;
8718       iter->type_unit_group = tu_group;
8719     }
8720
8721   VEC_free (sig_type_ptr, tu_group->tus);
8722
8723   return 1;
8724 }
8725
8726 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8727    Build partial symbol tables for the .debug_types comp-units.  */
8728
8729 static void
8730 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8731 {
8732   if (! create_all_type_units (dwarf2_per_objfile))
8733     return;
8734
8735   build_type_psymtabs_1 (dwarf2_per_objfile);
8736 }
8737
8738 /* Traversal function for process_skeletonless_type_unit.
8739    Read a TU in a DWO file and build partial symbols for it.  */
8740
8741 static int
8742 process_skeletonless_type_unit (void **slot, void *info)
8743 {
8744   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8745   struct dwarf2_per_objfile *dwarf2_per_objfile
8746     = (struct dwarf2_per_objfile *) info;
8747   struct signatured_type find_entry, *entry;
8748
8749   /* If this TU doesn't exist in the global table, add it and read it in.  */
8750
8751   if (dwarf2_per_objfile->signatured_types == NULL)
8752     {
8753       dwarf2_per_objfile->signatured_types
8754         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8755     }
8756
8757   find_entry.signature = dwo_unit->signature;
8758   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8759                          INSERT);
8760   /* If we've already seen this type there's nothing to do.  What's happening
8761      is we're doing our own version of comdat-folding here.  */
8762   if (*slot != NULL)
8763     return 1;
8764
8765   /* This does the job that create_all_type_units would have done for
8766      this TU.  */
8767   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8768   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8769   *slot = entry;
8770
8771   /* This does the job that build_type_psymtabs_1 would have done.  */
8772   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
8773                            build_type_psymtabs_reader, NULL);
8774
8775   return 1;
8776 }
8777
8778 /* Traversal function for process_skeletonless_type_units.  */
8779
8780 static int
8781 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8782 {
8783   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8784
8785   if (dwo_file->tus != NULL)
8786     {
8787       htab_traverse_noresize (dwo_file->tus,
8788                               process_skeletonless_type_unit, info);
8789     }
8790
8791   return 1;
8792 }
8793
8794 /* Scan all TUs of DWO files, verifying we've processed them.
8795    This is needed in case a TU was emitted without its skeleton.
8796    Note: This can't be done until we know what all the DWO files are.  */
8797
8798 static void
8799 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8800 {
8801   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8802   if (get_dwp_file (dwarf2_per_objfile) == NULL
8803       && dwarf2_per_objfile->dwo_files != NULL)
8804     {
8805       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8806                               process_dwo_file_for_skeletonless_type_units,
8807                               dwarf2_per_objfile);
8808     }
8809 }
8810
8811 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8812
8813 static void
8814 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8815 {
8816   int i;
8817
8818   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
8819     {
8820       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, i);
8821       struct partial_symtab *pst = per_cu->v.psymtab;
8822       int j;
8823
8824       if (pst == NULL)
8825         continue;
8826
8827       for (j = 0; j < pst->number_of_dependencies; ++j)
8828         {
8829           /* Set the 'user' field only if it is not already set.  */
8830           if (pst->dependencies[j]->user == NULL)
8831             pst->dependencies[j]->user = pst;
8832         }
8833     }
8834 }
8835
8836 /* Build the partial symbol table by doing a quick pass through the
8837    .debug_info and .debug_abbrev sections.  */
8838
8839 static void
8840 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8841 {
8842   struct cleanup *back_to;
8843   int i;
8844   struct objfile *objfile = dwarf2_per_objfile->objfile;
8845
8846   if (dwarf_read_debug)
8847     {
8848       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8849                           objfile_name (objfile));
8850     }
8851
8852   dwarf2_per_objfile->reading_partial_symbols = 1;
8853
8854   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8855
8856   /* Any cached compilation units will be linked by the per-objfile
8857      read_in_chain.  Make sure to free them when we're done.  */
8858   back_to = make_cleanup (free_cached_comp_units, dwarf2_per_objfile);
8859
8860   build_type_psymtabs (dwarf2_per_objfile);
8861
8862   create_all_comp_units (dwarf2_per_objfile);
8863
8864   /* Create a temporary address map on a temporary obstack.  We later
8865      copy this to the final obstack.  */
8866   auto_obstack temp_obstack;
8867
8868   scoped_restore save_psymtabs_addrmap
8869     = make_scoped_restore (&objfile->psymtabs_addrmap,
8870                            addrmap_create_mutable (&temp_obstack));
8871
8872   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
8873     {
8874       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (dwarf2_per_objfile, i);
8875
8876       process_psymtab_comp_unit (per_cu, 0, language_minimal);
8877     }
8878
8879   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8880   process_skeletonless_type_units (dwarf2_per_objfile);
8881
8882   /* Now that all TUs have been processed we can fill in the dependencies.  */
8883   if (dwarf2_per_objfile->type_unit_groups != NULL)
8884     {
8885       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8886                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8887     }
8888
8889   if (dwarf_read_debug)
8890     print_tu_stats (dwarf2_per_objfile);
8891
8892   set_partial_user (dwarf2_per_objfile);
8893
8894   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8895                                                     &objfile->objfile_obstack);
8896   /* At this point we want to keep the address map.  */
8897   save_psymtabs_addrmap.release ();
8898
8899   do_cleanups (back_to);
8900
8901   if (dwarf_read_debug)
8902     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8903                         objfile_name (objfile));
8904 }
8905
8906 /* die_reader_func for load_partial_comp_unit.  */
8907
8908 static void
8909 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8910                                const gdb_byte *info_ptr,
8911                                struct die_info *comp_unit_die,
8912                                int has_children,
8913                                void *data)
8914 {
8915   struct dwarf2_cu *cu = reader->cu;
8916
8917   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8918
8919   /* Check if comp unit has_children.
8920      If so, read the rest of the partial symbols from this comp unit.
8921      If not, there's no more debug_info for this comp unit.  */
8922   if (has_children)
8923     load_partial_dies (reader, info_ptr, 0);
8924 }
8925
8926 /* Load the partial DIEs for a secondary CU into memory.
8927    This is also used when rereading a primary CU with load_all_dies.  */
8928
8929 static void
8930 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8931 {
8932   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
8933                            load_partial_comp_unit_reader, NULL);
8934 }
8935
8936 static void
8937 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8938                               struct dwarf2_section_info *section,
8939                               struct dwarf2_section_info *abbrev_section,
8940                               unsigned int is_dwz,
8941                               int *n_allocated,
8942                               int *n_comp_units,
8943                               struct dwarf2_per_cu_data ***all_comp_units)
8944 {
8945   const gdb_byte *info_ptr;
8946   struct objfile *objfile = dwarf2_per_objfile->objfile;
8947
8948   if (dwarf_read_debug)
8949     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8950                         get_section_name (section),
8951                         get_section_file_name (section));
8952
8953   dwarf2_read_section (objfile, section);
8954
8955   info_ptr = section->buffer;
8956
8957   while (info_ptr < section->buffer + section->size)
8958     {
8959       struct dwarf2_per_cu_data *this_cu;
8960
8961       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8962
8963       comp_unit_head cu_header;
8964       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8965                                      abbrev_section, info_ptr,
8966                                      rcuh_kind::COMPILE);
8967
8968       /* Save the compilation unit for later lookup.  */
8969       if (cu_header.unit_type != DW_UT_type)
8970         {
8971           this_cu = XOBNEW (&objfile->objfile_obstack,
8972                             struct dwarf2_per_cu_data);
8973           memset (this_cu, 0, sizeof (*this_cu));
8974         }
8975       else
8976         {
8977           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8978                                   struct signatured_type);
8979           memset (sig_type, 0, sizeof (*sig_type));
8980           sig_type->signature = cu_header.signature;
8981           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8982           this_cu = &sig_type->per_cu;
8983         }
8984       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8985       this_cu->sect_off = sect_off;
8986       this_cu->length = cu_header.length + cu_header.initial_length_size;
8987       this_cu->is_dwz = is_dwz;
8988       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8989       this_cu->section = section;
8990
8991       if (*n_comp_units == *n_allocated)
8992         {
8993           *n_allocated *= 2;
8994           *all_comp_units = XRESIZEVEC (struct dwarf2_per_cu_data *,
8995                                         *all_comp_units, *n_allocated);
8996         }
8997       (*all_comp_units)[*n_comp_units] = this_cu;
8998       ++*n_comp_units;
8999
9000       info_ptr = info_ptr + this_cu->length;
9001     }
9002 }
9003
9004 /* Create a list of all compilation units in OBJFILE.
9005    This is only done for -readnow and building partial symtabs.  */
9006
9007 static void
9008 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
9009 {
9010   int n_allocated;
9011   int n_comp_units;
9012   struct dwarf2_per_cu_data **all_comp_units;
9013   struct dwz_file *dwz;
9014   struct objfile *objfile = dwarf2_per_objfile->objfile;
9015
9016   n_comp_units = 0;
9017   n_allocated = 10;
9018   all_comp_units = XNEWVEC (struct dwarf2_per_cu_data *, n_allocated);
9019
9020   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
9021                                 &dwarf2_per_objfile->abbrev, 0,
9022                                 &n_allocated, &n_comp_units, &all_comp_units);
9023
9024   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
9025   if (dwz != NULL)
9026     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
9027                                   1, &n_allocated, &n_comp_units,
9028                                   &all_comp_units);
9029
9030   dwarf2_per_objfile->all_comp_units = XOBNEWVEC (&objfile->objfile_obstack,
9031                                                   struct dwarf2_per_cu_data *,
9032                                                   n_comp_units);
9033   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
9034           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
9035   xfree (all_comp_units);
9036   dwarf2_per_objfile->n_comp_units = n_comp_units;
9037 }
9038
9039 /* Process all loaded DIEs for compilation unit CU, starting at
9040    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
9041    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
9042    DW_AT_ranges).  See the comments of add_partial_subprogram on how
9043    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
9044
9045 static void
9046 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
9047                       CORE_ADDR *highpc, int set_addrmap,
9048                       struct dwarf2_cu *cu)
9049 {
9050   struct partial_die_info *pdi;
9051
9052   /* Now, march along the PDI's, descending into ones which have
9053      interesting children but skipping the children of the other ones,
9054      until we reach the end of the compilation unit.  */
9055
9056   pdi = first_die;
9057
9058   while (pdi != NULL)
9059     {
9060       fixup_partial_die (pdi, cu);
9061
9062       /* Anonymous namespaces or modules have no name but have interesting
9063          children, so we need to look at them.  Ditto for anonymous
9064          enums.  */
9065
9066       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
9067           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
9068           || pdi->tag == DW_TAG_imported_unit)
9069         {
9070           switch (pdi->tag)
9071             {
9072             case DW_TAG_subprogram:
9073               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9074               break;
9075             case DW_TAG_constant:
9076             case DW_TAG_variable:
9077             case DW_TAG_typedef:
9078             case DW_TAG_union_type:
9079               if (!pdi->is_declaration)
9080                 {
9081                   add_partial_symbol (pdi, cu);
9082                 }
9083               break;
9084             case DW_TAG_class_type:
9085             case DW_TAG_interface_type:
9086             case DW_TAG_structure_type:
9087               if (!pdi->is_declaration)
9088                 {
9089                   add_partial_symbol (pdi, cu);
9090                 }
9091               if (cu->language == language_rust && pdi->has_children)
9092                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
9093                                       set_addrmap, cu);
9094               break;
9095             case DW_TAG_enumeration_type:
9096               if (!pdi->is_declaration)
9097                 add_partial_enumeration (pdi, cu);
9098               break;
9099             case DW_TAG_base_type:
9100             case DW_TAG_subrange_type:
9101               /* File scope base type definitions are added to the partial
9102                  symbol table.  */
9103               add_partial_symbol (pdi, cu);
9104               break;
9105             case DW_TAG_namespace:
9106               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
9107               break;
9108             case DW_TAG_module:
9109               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
9110               break;
9111             case DW_TAG_imported_unit:
9112               {
9113                 struct dwarf2_per_cu_data *per_cu;
9114
9115                 /* For now we don't handle imported units in type units.  */
9116                 if (cu->per_cu->is_debug_types)
9117                   {
9118                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
9119                              " supported in type units [in module %s]"),
9120                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
9121                   }
9122
9123                 per_cu = dwarf2_find_containing_comp_unit
9124                            (pdi->d.sect_off, pdi->is_dwz,
9125                             cu->per_cu->dwarf2_per_objfile);
9126
9127                 /* Go read the partial unit, if needed.  */
9128                 if (per_cu->v.psymtab == NULL)
9129                   process_psymtab_comp_unit (per_cu, 1, cu->language);
9130
9131                 VEC_safe_push (dwarf2_per_cu_ptr,
9132                                cu->per_cu->imported_symtabs, per_cu);
9133               }
9134               break;
9135             case DW_TAG_imported_declaration:
9136               add_partial_symbol (pdi, cu);
9137               break;
9138             default:
9139               break;
9140             }
9141         }
9142
9143       /* If the die has a sibling, skip to the sibling.  */
9144
9145       pdi = pdi->die_sibling;
9146     }
9147 }
9148
9149 /* Functions used to compute the fully scoped name of a partial DIE.
9150
9151    Normally, this is simple.  For C++, the parent DIE's fully scoped
9152    name is concatenated with "::" and the partial DIE's name.
9153    Enumerators are an exception; they use the scope of their parent
9154    enumeration type, i.e. the name of the enumeration type is not
9155    prepended to the enumerator.
9156
9157    There are two complexities.  One is DW_AT_specification; in this
9158    case "parent" means the parent of the target of the specification,
9159    instead of the direct parent of the DIE.  The other is compilers
9160    which do not emit DW_TAG_namespace; in this case we try to guess
9161    the fully qualified name of structure types from their members'
9162    linkage names.  This must be done using the DIE's children rather
9163    than the children of any DW_AT_specification target.  We only need
9164    to do this for structures at the top level, i.e. if the target of
9165    any DW_AT_specification (if any; otherwise the DIE itself) does not
9166    have a parent.  */
9167
9168 /* Compute the scope prefix associated with PDI's parent, in
9169    compilation unit CU.  The result will be allocated on CU's
9170    comp_unit_obstack, or a copy of the already allocated PDI->NAME
9171    field.  NULL is returned if no prefix is necessary.  */
9172 static const char *
9173 partial_die_parent_scope (struct partial_die_info *pdi,
9174                           struct dwarf2_cu *cu)
9175 {
9176   const char *grandparent_scope;
9177   struct partial_die_info *parent, *real_pdi;
9178
9179   /* We need to look at our parent DIE; if we have a DW_AT_specification,
9180      then this means the parent of the specification DIE.  */
9181
9182   real_pdi = pdi;
9183   while (real_pdi->has_specification)
9184     real_pdi = find_partial_die (real_pdi->spec_offset,
9185                                  real_pdi->spec_is_dwz, cu);
9186
9187   parent = real_pdi->die_parent;
9188   if (parent == NULL)
9189     return NULL;
9190
9191   if (parent->scope_set)
9192     return parent->scope;
9193
9194   fixup_partial_die (parent, cu);
9195
9196   grandparent_scope = partial_die_parent_scope (parent, cu);
9197
9198   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
9199      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
9200      Work around this problem here.  */
9201   if (cu->language == language_cplus
9202       && parent->tag == DW_TAG_namespace
9203       && strcmp (parent->name, "::") == 0
9204       && grandparent_scope == NULL)
9205     {
9206       parent->scope = NULL;
9207       parent->scope_set = 1;
9208       return NULL;
9209     }
9210
9211   if (pdi->tag == DW_TAG_enumerator)
9212     /* Enumerators should not get the name of the enumeration as a prefix.  */
9213     parent->scope = grandparent_scope;
9214   else if (parent->tag == DW_TAG_namespace
9215       || parent->tag == DW_TAG_module
9216       || parent->tag == DW_TAG_structure_type
9217       || parent->tag == DW_TAG_class_type
9218       || parent->tag == DW_TAG_interface_type
9219       || parent->tag == DW_TAG_union_type
9220       || parent->tag == DW_TAG_enumeration_type)
9221     {
9222       if (grandparent_scope == NULL)
9223         parent->scope = parent->name;
9224       else
9225         parent->scope = typename_concat (&cu->comp_unit_obstack,
9226                                          grandparent_scope,
9227                                          parent->name, 0, cu);
9228     }
9229   else
9230     {
9231       /* FIXME drow/2004-04-01: What should we be doing with
9232          function-local names?  For partial symbols, we should probably be
9233          ignoring them.  */
9234       complaint (&symfile_complaints,
9235                  _("unhandled containing DIE tag %d for DIE at %d"),
9236                  parent->tag, to_underlying (pdi->sect_off));
9237       parent->scope = grandparent_scope;
9238     }
9239
9240   parent->scope_set = 1;
9241   return parent->scope;
9242 }
9243
9244 /* Return the fully scoped name associated with PDI, from compilation unit
9245    CU.  The result will be allocated with malloc.  */
9246
9247 static char *
9248 partial_die_full_name (struct partial_die_info *pdi,
9249                        struct dwarf2_cu *cu)
9250 {
9251   const char *parent_scope;
9252
9253   /* If this is a template instantiation, we can not work out the
9254      template arguments from partial DIEs.  So, unfortunately, we have
9255      to go through the full DIEs.  At least any work we do building
9256      types here will be reused if full symbols are loaded later.  */
9257   if (pdi->has_template_arguments)
9258     {
9259       fixup_partial_die (pdi, cu);
9260
9261       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
9262         {
9263           struct die_info *die;
9264           struct attribute attr;
9265           struct dwarf2_cu *ref_cu = cu;
9266
9267           /* DW_FORM_ref_addr is using section offset.  */
9268           attr.name = (enum dwarf_attribute) 0;
9269           attr.form = DW_FORM_ref_addr;
9270           attr.u.unsnd = to_underlying (pdi->sect_off);
9271           die = follow_die_ref (NULL, &attr, &ref_cu);
9272
9273           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
9274         }
9275     }
9276
9277   parent_scope = partial_die_parent_scope (pdi, cu);
9278   if (parent_scope == NULL)
9279     return NULL;
9280   else
9281     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
9282 }
9283
9284 static void
9285 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
9286 {
9287   struct dwarf2_per_objfile *dwarf2_per_objfile
9288     = cu->per_cu->dwarf2_per_objfile;
9289   struct objfile *objfile = dwarf2_per_objfile->objfile;
9290   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291   CORE_ADDR addr = 0;
9292   const char *actual_name = NULL;
9293   CORE_ADDR baseaddr;
9294   char *built_actual_name;
9295
9296   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9297
9298   built_actual_name = partial_die_full_name (pdi, cu);
9299   if (built_actual_name != NULL)
9300     actual_name = built_actual_name;
9301
9302   if (actual_name == NULL)
9303     actual_name = pdi->name;
9304
9305   switch (pdi->tag)
9306     {
9307     case DW_TAG_subprogram:
9308       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
9309       if (pdi->is_external || cu->language == language_ada)
9310         {
9311           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
9312              of the global scope.  But in Ada, we want to be able to access
9313              nested procedures globally.  So all Ada subprograms are stored
9314              in the global scope.  */
9315           add_psymbol_to_list (actual_name, strlen (actual_name),
9316                                built_actual_name != NULL,
9317                                VAR_DOMAIN, LOC_BLOCK,
9318                                &objfile->global_psymbols,
9319                                addr, cu->language, objfile);
9320         }
9321       else
9322         {
9323           add_psymbol_to_list (actual_name, strlen (actual_name),
9324                                built_actual_name != NULL,
9325                                VAR_DOMAIN, LOC_BLOCK,
9326                                &objfile->static_psymbols,
9327                                addr, cu->language, objfile);
9328         }
9329
9330       if (pdi->main_subprogram && actual_name != NULL)
9331         set_objfile_main_name (objfile, actual_name, cu->language);
9332       break;
9333     case DW_TAG_constant:
9334       {
9335         std::vector<partial_symbol *> *list;
9336
9337         if (pdi->is_external)
9338           list = &objfile->global_psymbols;
9339         else
9340           list = &objfile->static_psymbols;
9341         add_psymbol_to_list (actual_name, strlen (actual_name),
9342                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
9343                              list, 0, cu->language, objfile);
9344       }
9345       break;
9346     case DW_TAG_variable:
9347       if (pdi->d.locdesc)
9348         addr = decode_locdesc (pdi->d.locdesc, cu);
9349
9350       if (pdi->d.locdesc
9351           && addr == 0
9352           && !dwarf2_per_objfile->has_section_at_zero)
9353         {
9354           /* A global or static variable may also have been stripped
9355              out by the linker if unused, in which case its address
9356              will be nullified; do not add such variables into partial
9357              symbol table then.  */
9358         }
9359       else if (pdi->is_external)
9360         {
9361           /* Global Variable.
9362              Don't enter into the minimal symbol tables as there is
9363              a minimal symbol table entry from the ELF symbols already.
9364              Enter into partial symbol table if it has a location
9365              descriptor or a type.
9366              If the location descriptor is missing, new_symbol will create
9367              a LOC_UNRESOLVED symbol, the address of the variable will then
9368              be determined from the minimal symbol table whenever the variable
9369              is referenced.
9370              The address for the partial symbol table entry is not
9371              used by GDB, but it comes in handy for debugging partial symbol
9372              table building.  */
9373
9374           if (pdi->d.locdesc || pdi->has_type)
9375             add_psymbol_to_list (actual_name, strlen (actual_name),
9376                                  built_actual_name != NULL,
9377                                  VAR_DOMAIN, LOC_STATIC,
9378                                  &objfile->global_psymbols,
9379                                  addr + baseaddr,
9380                                  cu->language, objfile);
9381         }
9382       else
9383         {
9384           int has_loc = pdi->d.locdesc != NULL;
9385
9386           /* Static Variable.  Skip symbols whose value we cannot know (those
9387              without location descriptors or constant values).  */
9388           if (!has_loc && !pdi->has_const_value)
9389             {
9390               xfree (built_actual_name);
9391               return;
9392             }
9393
9394           add_psymbol_to_list (actual_name, strlen (actual_name),
9395                                built_actual_name != NULL,
9396                                VAR_DOMAIN, LOC_STATIC,
9397                                &objfile->static_psymbols,
9398                                has_loc ? addr + baseaddr : (CORE_ADDR) 0,
9399                                cu->language, objfile);
9400         }
9401       break;
9402     case DW_TAG_typedef:
9403     case DW_TAG_base_type:
9404     case DW_TAG_subrange_type:
9405       add_psymbol_to_list (actual_name, strlen (actual_name),
9406                            built_actual_name != NULL,
9407                            VAR_DOMAIN, LOC_TYPEDEF,
9408                            &objfile->static_psymbols,
9409                            0, cu->language, objfile);
9410       break;
9411     case DW_TAG_imported_declaration:
9412     case DW_TAG_namespace:
9413       add_psymbol_to_list (actual_name, strlen (actual_name),
9414                            built_actual_name != NULL,
9415                            VAR_DOMAIN, LOC_TYPEDEF,
9416                            &objfile->global_psymbols,
9417                            0, cu->language, objfile);
9418       break;
9419     case DW_TAG_module:
9420       add_psymbol_to_list (actual_name, strlen (actual_name),
9421                            built_actual_name != NULL,
9422                            MODULE_DOMAIN, LOC_TYPEDEF,
9423                            &objfile->global_psymbols,
9424                            0, cu->language, objfile);
9425       break;
9426     case DW_TAG_class_type:
9427     case DW_TAG_interface_type:
9428     case DW_TAG_structure_type:
9429     case DW_TAG_union_type:
9430     case DW_TAG_enumeration_type:
9431       /* Skip external references.  The DWARF standard says in the section
9432          about "Structure, Union, and Class Type Entries": "An incomplete
9433          structure, union or class type is represented by a structure,
9434          union or class entry that does not have a byte size attribute
9435          and that has a DW_AT_declaration attribute."  */
9436       if (!pdi->has_byte_size && pdi->is_declaration)
9437         {
9438           xfree (built_actual_name);
9439           return;
9440         }
9441
9442       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9443          static vs. global.  */
9444       add_psymbol_to_list (actual_name, strlen (actual_name),
9445                            built_actual_name != NULL,
9446                            STRUCT_DOMAIN, LOC_TYPEDEF,
9447                            cu->language == language_cplus
9448                            ? &objfile->global_psymbols
9449                            : &objfile->static_psymbols,
9450                            0, cu->language, objfile);
9451
9452       break;
9453     case DW_TAG_enumerator:
9454       add_psymbol_to_list (actual_name, strlen (actual_name),
9455                            built_actual_name != NULL,
9456                            VAR_DOMAIN, LOC_CONST,
9457                            cu->language == language_cplus
9458                            ? &objfile->global_psymbols
9459                            : &objfile->static_psymbols,
9460                            0, cu->language, objfile);
9461       break;
9462     default:
9463       break;
9464     }
9465
9466   xfree (built_actual_name);
9467 }
9468
9469 /* Read a partial die corresponding to a namespace; also, add a symbol
9470    corresponding to that namespace to the symbol table.  NAMESPACE is
9471    the name of the enclosing namespace.  */
9472
9473 static void
9474 add_partial_namespace (struct partial_die_info *pdi,
9475                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9476                        int set_addrmap, struct dwarf2_cu *cu)
9477 {
9478   /* Add a symbol for the namespace.  */
9479
9480   add_partial_symbol (pdi, cu);
9481
9482   /* Now scan partial symbols in that namespace.  */
9483
9484   if (pdi->has_children)
9485     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9486 }
9487
9488 /* Read a partial die corresponding to a Fortran module.  */
9489
9490 static void
9491 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9492                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9493 {
9494   /* Add a symbol for the namespace.  */
9495
9496   add_partial_symbol (pdi, cu);
9497
9498   /* Now scan partial symbols in that module.  */
9499
9500   if (pdi->has_children)
9501     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9502 }
9503
9504 /* Read a partial die corresponding to a subprogram and create a partial
9505    symbol for that subprogram.  When the CU language allows it, this
9506    routine also defines a partial symbol for each nested subprogram
9507    that this subprogram contains.  If SET_ADDRMAP is true, record the
9508    covered ranges in the addrmap.  Set *LOWPC and *HIGHPC to the lowest
9509    and highest PC values found in PDI.
9510
9511    PDI may also be a lexical block, in which case we simply search
9512    recursively for subprograms defined inside that lexical block.
9513    Again, this is only performed when the CU language allows this
9514    type of definitions.  */
9515
9516 static void
9517 add_partial_subprogram (struct partial_die_info *pdi,
9518                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9519                         int set_addrmap, struct dwarf2_cu *cu)
9520 {
9521   if (pdi->tag == DW_TAG_subprogram)
9522     {
9523       if (pdi->has_pc_info)
9524         {
9525           if (pdi->lowpc < *lowpc)
9526             *lowpc = pdi->lowpc;
9527           if (pdi->highpc > *highpc)
9528             *highpc = pdi->highpc;
9529           if (set_addrmap)
9530             {
9531               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9532               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9533               CORE_ADDR baseaddr;
9534               CORE_ADDR highpc;
9535               CORE_ADDR lowpc;
9536
9537               baseaddr = ANOFFSET (objfile->section_offsets,
9538                                    SECT_OFF_TEXT (objfile));
9539               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9540                                                   pdi->lowpc + baseaddr);
9541               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9542                                                    pdi->highpc + baseaddr);
9543               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9544                                  cu->per_cu->v.psymtab);
9545             }
9546         }
9547
9548       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9549         {
9550           if (!pdi->is_declaration)
9551             /* Ignore subprogram DIEs that do not have a name, they are
9552                illegal.  Do not emit a complaint at this point, we will
9553                do so when we convert this psymtab into a symtab.  */
9554             if (pdi->name)
9555               add_partial_symbol (pdi, cu);
9556         }
9557     }
9558
9559   if (! pdi->has_children)
9560     return;
9561
9562   if (cu->language == language_ada)
9563     {
9564       pdi = pdi->die_child;
9565       while (pdi != NULL)
9566         {
9567           fixup_partial_die (pdi, cu);
9568           if (pdi->tag == DW_TAG_subprogram
9569               || pdi->tag == DW_TAG_lexical_block)
9570             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9571           pdi = pdi->die_sibling;
9572         }
9573     }
9574 }
9575
9576 /* Read a partial die corresponding to an enumeration type.  */
9577
9578 static void
9579 add_partial_enumeration (struct partial_die_info *enum_pdi,
9580                          struct dwarf2_cu *cu)
9581 {
9582   struct partial_die_info *pdi;
9583
9584   if (enum_pdi->name != NULL)
9585     add_partial_symbol (enum_pdi, cu);
9586
9587   pdi = enum_pdi->die_child;
9588   while (pdi)
9589     {
9590       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9591         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
9592       else
9593         add_partial_symbol (pdi, cu);
9594       pdi = pdi->die_sibling;
9595     }
9596 }
9597
9598 /* Return the initial uleb128 in the die at INFO_PTR.  */
9599
9600 static unsigned int
9601 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9602 {
9603   unsigned int bytes_read;
9604
9605   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9606 }
9607
9608 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
9609    Return the corresponding abbrev, or NULL if the number is zero (indicating
9610    an empty DIE).  In either case *BYTES_READ will be set to the length of
9611    the initial number.  */
9612
9613 static struct abbrev_info *
9614 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
9615                  struct dwarf2_cu *cu)
9616 {
9617   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9618   unsigned int abbrev_number;
9619   struct abbrev_info *abbrev;
9620
9621   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9622
9623   if (abbrev_number == 0)
9624     return NULL;
9625
9626   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
9627   if (!abbrev)
9628     {
9629       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9630                " at offset 0x%x [in module %s]"),
9631              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9632              to_underlying (cu->header.sect_off), bfd_get_filename (abfd));
9633     }
9634
9635   return abbrev;
9636 }
9637
9638 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9639    Returns a pointer to the end of a series of DIEs, terminated by an empty
9640    DIE.  Any children of the skipped DIEs will also be skipped.  */
9641
9642 static const gdb_byte *
9643 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9644 {
9645   struct dwarf2_cu *cu = reader->cu;
9646   struct abbrev_info *abbrev;
9647   unsigned int bytes_read;
9648
9649   while (1)
9650     {
9651       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
9652       if (abbrev == NULL)
9653         return info_ptr + bytes_read;
9654       else
9655         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9656     }
9657 }
9658
9659 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9660    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9661    abbrev corresponding to that skipped uleb128 should be passed in
9662    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9663    children.  */
9664
9665 static const gdb_byte *
9666 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9667               struct abbrev_info *abbrev)
9668 {
9669   unsigned int bytes_read;
9670   struct attribute attr;
9671   bfd *abfd = reader->abfd;
9672   struct dwarf2_cu *cu = reader->cu;
9673   const gdb_byte *buffer = reader->buffer;
9674   const gdb_byte *buffer_end = reader->buffer_end;
9675   unsigned int form, i;
9676
9677   for (i = 0; i < abbrev->num_attrs; i++)
9678     {
9679       /* The only abbrev we care about is DW_AT_sibling.  */
9680       if (abbrev->attrs[i].name == DW_AT_sibling)
9681         {
9682           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9683           if (attr.form == DW_FORM_ref_addr)
9684             complaint (&symfile_complaints,
9685                        _("ignoring absolute DW_AT_sibling"));
9686           else
9687             {
9688               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9689               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9690
9691               if (sibling_ptr < info_ptr)
9692                 complaint (&symfile_complaints,
9693                            _("DW_AT_sibling points backwards"));
9694               else if (sibling_ptr > reader->buffer_end)
9695                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9696               else
9697                 return sibling_ptr;
9698             }
9699         }
9700
9701       /* If it isn't DW_AT_sibling, skip this attribute.  */
9702       form = abbrev->attrs[i].form;
9703     skip_attribute:
9704       switch (form)
9705         {
9706         case DW_FORM_ref_addr:
9707           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9708              and later it is offset sized.  */
9709           if (cu->header.version == 2)
9710             info_ptr += cu->header.addr_size;
9711           else
9712             info_ptr += cu->header.offset_size;
9713           break;
9714         case DW_FORM_GNU_ref_alt:
9715           info_ptr += cu->header.offset_size;
9716           break;
9717         case DW_FORM_addr:
9718           info_ptr += cu->header.addr_size;
9719           break;
9720         case DW_FORM_data1:
9721         case DW_FORM_ref1:
9722         case DW_FORM_flag:
9723           info_ptr += 1;
9724           break;
9725         case DW_FORM_flag_present:
9726         case DW_FORM_implicit_const:
9727           break;
9728         case DW_FORM_data2:
9729         case DW_FORM_ref2:
9730           info_ptr += 2;
9731           break;
9732         case DW_FORM_data4:
9733         case DW_FORM_ref4:
9734           info_ptr += 4;
9735           break;
9736         case DW_FORM_data8:
9737         case DW_FORM_ref8:
9738         case DW_FORM_ref_sig8:
9739           info_ptr += 8;
9740           break;
9741         case DW_FORM_data16:
9742           info_ptr += 16;
9743           break;
9744         case DW_FORM_string:
9745           read_direct_string (abfd, info_ptr, &bytes_read);
9746           info_ptr += bytes_read;
9747           break;
9748         case DW_FORM_sec_offset:
9749         case DW_FORM_strp:
9750         case DW_FORM_GNU_strp_alt:
9751           info_ptr += cu->header.offset_size;
9752           break;
9753         case DW_FORM_exprloc:
9754         case DW_FORM_block:
9755           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9756           info_ptr += bytes_read;
9757           break;
9758         case DW_FORM_block1:
9759           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9760           break;
9761         case DW_FORM_block2:
9762           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9763           break;
9764         case DW_FORM_block4:
9765           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9766           break;
9767         case DW_FORM_sdata:
9768         case DW_FORM_udata:
9769         case DW_FORM_ref_udata:
9770         case DW_FORM_GNU_addr_index:
9771         case DW_FORM_GNU_str_index:
9772           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9773           break;
9774         case DW_FORM_indirect:
9775           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9776           info_ptr += bytes_read;
9777           /* We need to continue parsing from here, so just go back to
9778              the top.  */
9779           goto skip_attribute;
9780
9781         default:
9782           error (_("Dwarf Error: Cannot handle %s "
9783                    "in DWARF reader [in module %s]"),
9784                  dwarf_form_name (form),
9785                  bfd_get_filename (abfd));
9786         }
9787     }
9788
9789   if (abbrev->has_children)
9790     return skip_children (reader, info_ptr);
9791   else
9792     return info_ptr;
9793 }
9794
9795 /* Locate ORIG_PDI's sibling.
9796    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9797
9798 static const gdb_byte *
9799 locate_pdi_sibling (const struct die_reader_specs *reader,
9800                     struct partial_die_info *orig_pdi,
9801                     const gdb_byte *info_ptr)
9802 {
9803   /* Do we know the sibling already?  */
9804
9805   if (orig_pdi->sibling)
9806     return orig_pdi->sibling;
9807
9808   /* Are there any children to deal with?  */
9809
9810   if (!orig_pdi->has_children)
9811     return info_ptr;
9812
9813   /* Skip the children the long way.  */
9814
9815   return skip_children (reader, info_ptr);
9816 }
9817
9818 /* Expand this partial symbol table into a full symbol table.  SELF is
9819    not NULL.  */
9820
9821 static void
9822 dwarf2_read_symtab (struct partial_symtab *self,
9823                     struct objfile *objfile)
9824 {
9825   struct dwarf2_per_objfile *dwarf2_per_objfile
9826     = get_dwarf2_per_objfile (objfile);
9827
9828   if (self->readin)
9829     {
9830       warning (_("bug: psymtab for %s is already read in."),
9831                self->filename);
9832     }
9833   else
9834     {
9835       if (info_verbose)
9836         {
9837           printf_filtered (_("Reading in symbols for %s..."),
9838                            self->filename);
9839           gdb_flush (gdb_stdout);
9840         }
9841
9842       /* If this psymtab is constructed from a debug-only objfile, the
9843          has_section_at_zero flag will not necessarily be correct.  We
9844          can get the correct value for this flag by looking at the data
9845          associated with the (presumably stripped) associated objfile.  */
9846       if (objfile->separate_debug_objfile_backlink)
9847         {
9848           struct dwarf2_per_objfile *dpo_backlink
9849             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9850
9851           dwarf2_per_objfile->has_section_at_zero
9852             = dpo_backlink->has_section_at_zero;
9853         }
9854
9855       dwarf2_per_objfile->reading_partial_symbols = 0;
9856
9857       psymtab_to_symtab_1 (self);
9858
9859       /* Finish up the debug error message.  */
9860       if (info_verbose)
9861         printf_filtered (_("done.\n"));
9862     }
9863
9864   process_cu_includes (dwarf2_per_objfile);
9865 }
9866 \f
9867 /* Reading in full CUs.  */
9868
9869 /* Add PER_CU to the queue.  */
9870
9871 static void
9872 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9873                  enum language pretend_language)
9874 {
9875   struct dwarf2_queue_item *item;
9876
9877   per_cu->queued = 1;
9878   item = XNEW (struct dwarf2_queue_item);
9879   item->per_cu = per_cu;
9880   item->pretend_language = pretend_language;
9881   item->next = NULL;
9882
9883   if (dwarf2_queue == NULL)
9884     dwarf2_queue = item;
9885   else
9886     dwarf2_queue_tail->next = item;
9887
9888   dwarf2_queue_tail = item;
9889 }
9890
9891 /* If PER_CU is not yet queued, add it to the queue.
9892    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9893    dependency.
9894    The result is non-zero if PER_CU was queued, otherwise the result is zero
9895    meaning either PER_CU is already queued or it is already loaded.
9896
9897    N.B. There is an invariant here that if a CU is queued then it is loaded.
9898    The caller is required to load PER_CU if we return non-zero.  */
9899
9900 static int
9901 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9902                        struct dwarf2_per_cu_data *per_cu,
9903                        enum language pretend_language)
9904 {
9905   /* We may arrive here during partial symbol reading, if we need full
9906      DIEs to process an unusual case (e.g. template arguments).  Do
9907      not queue PER_CU, just tell our caller to load its DIEs.  */
9908   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9909     {
9910       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9911         return 1;
9912       return 0;
9913     }
9914
9915   /* Mark the dependence relation so that we don't flush PER_CU
9916      too early.  */
9917   if (dependent_cu != NULL)
9918     dwarf2_add_dependence (dependent_cu, per_cu);
9919
9920   /* If it's already on the queue, we have nothing to do.  */
9921   if (per_cu->queued)
9922     return 0;
9923
9924   /* If the compilation unit is already loaded, just mark it as
9925      used.  */
9926   if (per_cu->cu != NULL)
9927     {
9928       per_cu->cu->last_used = 0;
9929       return 0;
9930     }
9931
9932   /* Add it to the queue.  */
9933   queue_comp_unit (per_cu, pretend_language);
9934
9935   return 1;
9936 }
9937
9938 /* Process the queue.  */
9939
9940 static void
9941 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9942 {
9943   struct dwarf2_queue_item *item, *next_item;
9944
9945   if (dwarf_read_debug)
9946     {
9947       fprintf_unfiltered (gdb_stdlog,
9948                           "Expanding one or more symtabs of objfile %s ...\n",
9949                           objfile_name (dwarf2_per_objfile->objfile));
9950     }
9951
9952   /* The queue starts out with one item, but following a DIE reference
9953      may load a new CU, adding it to the end of the queue.  */
9954   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9955     {
9956       if ((dwarf2_per_objfile->using_index
9957            ? !item->per_cu->v.quick->compunit_symtab
9958            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9959           /* Skip dummy CUs.  */
9960           && item->per_cu->cu != NULL)
9961         {
9962           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9963           unsigned int debug_print_threshold;
9964           char buf[100];
9965
9966           if (per_cu->is_debug_types)
9967             {
9968               struct signatured_type *sig_type =
9969                 (struct signatured_type *) per_cu;
9970
9971               sprintf (buf, "TU %s at offset 0x%x",
9972                        hex_string (sig_type->signature),
9973                        to_underlying (per_cu->sect_off));
9974               /* There can be 100s of TUs.
9975                  Only print them in verbose mode.  */
9976               debug_print_threshold = 2;
9977             }
9978           else
9979             {
9980               sprintf (buf, "CU at offset 0x%x",
9981                        to_underlying (per_cu->sect_off));
9982               debug_print_threshold = 1;
9983             }
9984
9985           if (dwarf_read_debug >= debug_print_threshold)
9986             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9987
9988           if (per_cu->is_debug_types)
9989             process_full_type_unit (per_cu, item->pretend_language);
9990           else
9991             process_full_comp_unit (per_cu, item->pretend_language);
9992
9993           if (dwarf_read_debug >= debug_print_threshold)
9994             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9995         }
9996
9997       item->per_cu->queued = 0;
9998       next_item = item->next;
9999       xfree (item);
10000     }
10001
10002   dwarf2_queue_tail = NULL;
10003
10004   if (dwarf_read_debug)
10005     {
10006       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
10007                           objfile_name (dwarf2_per_objfile->objfile));
10008     }
10009 }
10010
10011 /* Free all allocated queue entries.  This function only releases anything if
10012    an error was thrown; if the queue was processed then it would have been
10013    freed as we went along.  */
10014
10015 static void
10016 dwarf2_release_queue (void *dummy)
10017 {
10018   struct dwarf2_queue_item *item, *last;
10019
10020   item = dwarf2_queue;
10021   while (item)
10022     {
10023       /* Anything still marked queued is likely to be in an
10024          inconsistent state, so discard it.  */
10025       if (item->per_cu->queued)
10026         {
10027           if (item->per_cu->cu != NULL)
10028             free_one_cached_comp_unit (item->per_cu);
10029           item->per_cu->queued = 0;
10030         }
10031
10032       last = item;
10033       item = item->next;
10034       xfree (last);
10035     }
10036
10037   dwarf2_queue = dwarf2_queue_tail = NULL;
10038 }
10039
10040 /* Read in full symbols for PST, and anything it depends on.  */
10041
10042 static void
10043 psymtab_to_symtab_1 (struct partial_symtab *pst)
10044 {
10045   struct dwarf2_per_cu_data *per_cu;
10046   int i;
10047
10048   if (pst->readin)
10049     return;
10050
10051   for (i = 0; i < pst->number_of_dependencies; i++)
10052     if (!pst->dependencies[i]->readin
10053         && pst->dependencies[i]->user == NULL)
10054       {
10055         /* Inform about additional files that need to be read in.  */
10056         if (info_verbose)
10057           {
10058             /* FIXME: i18n: Need to make this a single string.  */
10059             fputs_filtered (" ", gdb_stdout);
10060             wrap_here ("");
10061             fputs_filtered ("and ", gdb_stdout);
10062             wrap_here ("");
10063             printf_filtered ("%s...", pst->dependencies[i]->filename);
10064             wrap_here ("");     /* Flush output.  */
10065             gdb_flush (gdb_stdout);
10066           }
10067         psymtab_to_symtab_1 (pst->dependencies[i]);
10068       }
10069
10070   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
10071
10072   if (per_cu == NULL)
10073     {
10074       /* It's an include file, no symbols to read for it.
10075          Everything is in the parent symtab.  */
10076       pst->readin = 1;
10077       return;
10078     }
10079
10080   dw2_do_instantiate_symtab (per_cu);
10081 }
10082
10083 /* Trivial hash function for die_info: the hash value of a DIE
10084    is its offset in .debug_info for this objfile.  */
10085
10086 static hashval_t
10087 die_hash (const void *item)
10088 {
10089   const struct die_info *die = (const struct die_info *) item;
10090
10091   return to_underlying (die->sect_off);
10092 }
10093
10094 /* Trivial comparison function for die_info structures: two DIEs
10095    are equal if they have the same offset.  */
10096
10097 static int
10098 die_eq (const void *item_lhs, const void *item_rhs)
10099 {
10100   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
10101   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
10102
10103   return die_lhs->sect_off == die_rhs->sect_off;
10104 }
10105
10106 /* die_reader_func for load_full_comp_unit.
10107    This is identical to read_signatured_type_reader,
10108    but is kept separate for now.  */
10109
10110 static void
10111 load_full_comp_unit_reader (const struct die_reader_specs *reader,
10112                             const gdb_byte *info_ptr,
10113                             struct die_info *comp_unit_die,
10114                             int has_children,
10115                             void *data)
10116 {
10117   struct dwarf2_cu *cu = reader->cu;
10118   enum language *language_ptr = (enum language *) data;
10119
10120   gdb_assert (cu->die_hash == NULL);
10121   cu->die_hash =
10122     htab_create_alloc_ex (cu->header.length / 12,
10123                           die_hash,
10124                           die_eq,
10125                           NULL,
10126                           &cu->comp_unit_obstack,
10127                           hashtab_obstack_allocate,
10128                           dummy_obstack_deallocate);
10129
10130   if (has_children)
10131     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
10132                                                   &info_ptr, comp_unit_die);
10133   cu->dies = comp_unit_die;
10134   /* comp_unit_die is not stored in die_hash, no need.  */
10135
10136   /* We try not to read any attributes in this function, because not
10137      all CUs needed for references have been loaded yet, and symbol
10138      table processing isn't initialized.  But we have to set the CU language,
10139      or we won't be able to build types correctly.
10140      Similarly, if we do not read the producer, we can not apply
10141      producer-specific interpretation.  */
10142   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
10143 }
10144
10145 /* Load the DIEs associated with PER_CU into memory.  */
10146
10147 static void
10148 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
10149                      enum language pretend_language)
10150 {
10151   gdb_assert (! this_cu->is_debug_types);
10152
10153   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
10154                            load_full_comp_unit_reader, &pretend_language);
10155 }
10156
10157 /* Add a DIE to the delayed physname list.  */
10158
10159 static void
10160 add_to_method_list (struct type *type, int fnfield_index, int index,
10161                     const char *name, struct die_info *die,
10162                     struct dwarf2_cu *cu)
10163 {
10164   struct delayed_method_info mi;
10165   mi.type = type;
10166   mi.fnfield_index = fnfield_index;
10167   mi.index = index;
10168   mi.name = name;
10169   mi.die = die;
10170   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
10171 }
10172
10173 /* A cleanup for freeing the delayed method list.  */
10174
10175 static void
10176 free_delayed_list (void *ptr)
10177 {
10178   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
10179   if (cu->method_list != NULL)
10180     {
10181       VEC_free (delayed_method_info, cu->method_list);
10182       cu->method_list = NULL;
10183     }
10184 }
10185
10186 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
10187    "const" / "volatile".  If so, decrements LEN by the length of the
10188    modifier and return true.  Otherwise return false.  */
10189
10190 template<size_t N>
10191 static bool
10192 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
10193 {
10194   size_t mod_len = sizeof (mod) - 1;
10195   if (len > mod_len && startswith (physname + (len - mod_len), mod))
10196     {
10197       len -= mod_len;
10198       return true;
10199     }
10200   return false;
10201 }
10202
10203 /* Compute the physnames of any methods on the CU's method list.
10204
10205    The computation of method physnames is delayed in order to avoid the
10206    (bad) condition that one of the method's formal parameters is of an as yet
10207    incomplete type.  */
10208
10209 static void
10210 compute_delayed_physnames (struct dwarf2_cu *cu)
10211 {
10212   int i;
10213   struct delayed_method_info *mi;
10214
10215   /* Only C++ delays computing physnames.  */
10216   if (VEC_empty (delayed_method_info, cu->method_list))
10217     return;
10218   gdb_assert (cu->language == language_cplus);
10219
10220   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
10221     {
10222       const char *physname;
10223       struct fn_fieldlist *fn_flp
10224         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
10225       physname = dwarf2_physname (mi->name, mi->die, cu);
10226       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
10227         = physname ? physname : "";
10228
10229       /* Since there's no tag to indicate whether a method is a
10230          const/volatile overload, extract that information out of the
10231          demangled name.  */
10232       if (physname != NULL)
10233         {
10234           size_t len = strlen (physname);
10235
10236           while (1)
10237             {
10238               if (physname[len] == ')') /* shortcut */
10239                 break;
10240               else if (check_modifier (physname, len, " const"))
10241                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi->index) = 1;
10242               else if (check_modifier (physname, len, " volatile"))
10243                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi->index) = 1;
10244               else
10245                 break;
10246             }
10247         }
10248     }
10249 }
10250
10251 /* Go objects should be embedded in a DW_TAG_module DIE,
10252    and it's not clear if/how imported objects will appear.
10253    To keep Go support simple until that's worked out,
10254    go back through what we've read and create something usable.
10255    We could do this while processing each DIE, and feels kinda cleaner,
10256    but that way is more invasive.
10257    This is to, for example, allow the user to type "p var" or "b main"
10258    without having to specify the package name, and allow lookups
10259    of module.object to work in contexts that use the expression
10260    parser.  */
10261
10262 static void
10263 fixup_go_packaging (struct dwarf2_cu *cu)
10264 {
10265   char *package_name = NULL;
10266   struct pending *list;
10267   int i;
10268
10269   for (list = global_symbols; list != NULL; list = list->next)
10270     {
10271       for (i = 0; i < list->nsyms; ++i)
10272         {
10273           struct symbol *sym = list->symbol[i];
10274
10275           if (SYMBOL_LANGUAGE (sym) == language_go
10276               && SYMBOL_CLASS (sym) == LOC_BLOCK)
10277             {
10278               char *this_package_name = go_symbol_package_name (sym);
10279
10280               if (this_package_name == NULL)
10281                 continue;
10282               if (package_name == NULL)
10283                 package_name = this_package_name;
10284               else
10285                 {
10286                   struct objfile *objfile
10287                     = cu->per_cu->dwarf2_per_objfile->objfile;
10288                   if (strcmp (package_name, this_package_name) != 0)
10289                     complaint (&symfile_complaints,
10290                                _("Symtab %s has objects from two different Go packages: %s and %s"),
10291                                (symbol_symtab (sym) != NULL
10292                                 ? symtab_to_filename_for_display
10293                                     (symbol_symtab (sym))
10294                                 : objfile_name (objfile)),
10295                                this_package_name, package_name);
10296                   xfree (this_package_name);
10297                 }
10298             }
10299         }
10300     }
10301
10302   if (package_name != NULL)
10303     {
10304       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10305       const char *saved_package_name
10306         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
10307                                         package_name,
10308                                         strlen (package_name));
10309       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
10310                                      saved_package_name);
10311       struct symbol *sym;
10312
10313       TYPE_TAG_NAME (type) = TYPE_NAME (type);
10314
10315       sym = allocate_symbol (objfile);
10316       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
10317       SYMBOL_SET_NAMES (sym, saved_package_name,
10318                         strlen (saved_package_name), 0, objfile);
10319       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
10320          e.g., "main" finds the "main" module and not C's main().  */
10321       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
10322       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
10323       SYMBOL_TYPE (sym) = type;
10324
10325       add_symbol_to_list (sym, &global_symbols);
10326
10327       xfree (package_name);
10328     }
10329 }
10330
10331 /* Return the symtab for PER_CU.  This works properly regardless of
10332    whether we're using the index or psymtabs.  */
10333
10334 static struct compunit_symtab *
10335 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10336 {
10337   return (per_cu->dwarf2_per_objfile->using_index
10338           ? per_cu->v.quick->compunit_symtab
10339           : per_cu->v.psymtab->compunit_symtab);
10340 }
10341
10342 /* A helper function for computing the list of all symbol tables
10343    included by PER_CU.  */
10344
10345 static void
10346 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10347                                 htab_t all_children, htab_t all_type_symtabs,
10348                                 struct dwarf2_per_cu_data *per_cu,
10349                                 struct compunit_symtab *immediate_parent)
10350 {
10351   void **slot;
10352   int ix;
10353   struct compunit_symtab *cust;
10354   struct dwarf2_per_cu_data *iter;
10355
10356   slot = htab_find_slot (all_children, per_cu, INSERT);
10357   if (*slot != NULL)
10358     {
10359       /* This inclusion and its children have been processed.  */
10360       return;
10361     }
10362
10363   *slot = per_cu;
10364   /* Only add a CU if it has a symbol table.  */
10365   cust = get_compunit_symtab (per_cu);
10366   if (cust != NULL)
10367     {
10368       /* If this is a type unit only add its symbol table if we haven't
10369          seen it yet (type unit per_cu's can share symtabs).  */
10370       if (per_cu->is_debug_types)
10371         {
10372           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10373           if (*slot == NULL)
10374             {
10375               *slot = cust;
10376               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10377               if (cust->user == NULL)
10378                 cust->user = immediate_parent;
10379             }
10380         }
10381       else
10382         {
10383           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10384           if (cust->user == NULL)
10385             cust->user = immediate_parent;
10386         }
10387     }
10388
10389   for (ix = 0;
10390        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10391        ++ix)
10392     {
10393       recursively_compute_inclusions (result, all_children,
10394                                       all_type_symtabs, iter, cust);
10395     }
10396 }
10397
10398 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10399    PER_CU.  */
10400
10401 static void
10402 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10403 {
10404   gdb_assert (! per_cu->is_debug_types);
10405
10406   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10407     {
10408       int ix, len;
10409       struct dwarf2_per_cu_data *per_cu_iter;
10410       struct compunit_symtab *compunit_symtab_iter;
10411       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10412       htab_t all_children, all_type_symtabs;
10413       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10414
10415       /* If we don't have a symtab, we can just skip this case.  */
10416       if (cust == NULL)
10417         return;
10418
10419       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10420                                         NULL, xcalloc, xfree);
10421       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10422                                             NULL, xcalloc, xfree);
10423
10424       for (ix = 0;
10425            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10426                         ix, per_cu_iter);
10427            ++ix)
10428         {
10429           recursively_compute_inclusions (&result_symtabs, all_children,
10430                                           all_type_symtabs, per_cu_iter,
10431                                           cust);
10432         }
10433
10434       /* Now we have a transitive closure of all the included symtabs.  */
10435       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10436       cust->includes
10437         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10438                      struct compunit_symtab *, len + 1);
10439       for (ix = 0;
10440            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10441                         compunit_symtab_iter);
10442            ++ix)
10443         cust->includes[ix] = compunit_symtab_iter;
10444       cust->includes[len] = NULL;
10445
10446       VEC_free (compunit_symtab_ptr, result_symtabs);
10447       htab_delete (all_children);
10448       htab_delete (all_type_symtabs);
10449     }
10450 }
10451
10452 /* Compute the 'includes' field for the symtabs of all the CUs we just
10453    read.  */
10454
10455 static void
10456 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10457 {
10458   int ix;
10459   struct dwarf2_per_cu_data *iter;
10460
10461   for (ix = 0;
10462        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
10463                     ix, iter);
10464        ++ix)
10465     {
10466       if (! iter->is_debug_types)
10467         compute_compunit_symtab_includes (iter);
10468     }
10469
10470   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
10471 }
10472
10473 /* Generate full symbol information for PER_CU, whose DIEs have
10474    already been loaded into memory.  */
10475
10476 static void
10477 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10478                         enum language pretend_language)
10479 {
10480   struct dwarf2_cu *cu = per_cu->cu;
10481   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10482   struct objfile *objfile = dwarf2_per_objfile->objfile;
10483   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10484   CORE_ADDR lowpc, highpc;
10485   struct compunit_symtab *cust;
10486   struct cleanup *delayed_list_cleanup;
10487   CORE_ADDR baseaddr;
10488   struct block *static_block;
10489   CORE_ADDR addr;
10490
10491   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10492
10493   buildsym_init ();
10494   scoped_free_pendings free_pending;
10495   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10496
10497   cu->list_in_scope = &file_symbols;
10498
10499   cu->language = pretend_language;
10500   cu->language_defn = language_def (cu->language);
10501
10502   /* Do line number decoding in read_file_scope () */
10503   process_die (cu->dies, cu);
10504
10505   /* For now fudge the Go package.  */
10506   if (cu->language == language_go)
10507     fixup_go_packaging (cu);
10508
10509   /* Now that we have processed all the DIEs in the CU, all the types 
10510      should be complete, and it should now be safe to compute all of the
10511      physnames.  */
10512   compute_delayed_physnames (cu);
10513   do_cleanups (delayed_list_cleanup);
10514
10515   /* Some compilers don't define a DW_AT_high_pc attribute for the
10516      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10517      it, by scanning the DIE's below the compilation unit.  */
10518   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10519
10520   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10521   static_block = end_symtab_get_static_block (addr, 0, 1);
10522
10523   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10524      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10525      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10526      addrmap to help ensure it has an accurate map of pc values belonging to
10527      this comp unit.  */
10528   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10529
10530   cust = end_symtab_from_static_block (static_block,
10531                                        SECT_OFF_TEXT (objfile), 0);
10532
10533   if (cust != NULL)
10534     {
10535       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10536
10537       /* Set symtab language to language from DW_AT_language.  If the
10538          compilation is from a C file generated by language preprocessors, do
10539          not set the language if it was already deduced by start_subfile.  */
10540       if (!(cu->language == language_c
10541             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10542         COMPUNIT_FILETABS (cust)->language = cu->language;
10543
10544       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10545          produce DW_AT_location with location lists but it can be possibly
10546          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10547          there were bugs in prologue debug info, fixed later in GCC-4.5
10548          by "unwind info for epilogues" patch (which is not directly related).
10549
10550          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10551          needed, it would be wrong due to missing DW_AT_producer there.
10552
10553          Still one can confuse GDB by using non-standard GCC compilation
10554          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10555          */ 
10556       if (cu->has_loclist && gcc_4_minor >= 5)
10557         cust->locations_valid = 1;
10558
10559       if (gcc_4_minor >= 5)
10560         cust->epilogue_unwind_valid = 1;
10561
10562       cust->call_site_htab = cu->call_site_htab;
10563     }
10564
10565   if (dwarf2_per_objfile->using_index)
10566     per_cu->v.quick->compunit_symtab = cust;
10567   else
10568     {
10569       struct partial_symtab *pst = per_cu->v.psymtab;
10570       pst->compunit_symtab = cust;
10571       pst->readin = 1;
10572     }
10573
10574   /* Push it for inclusion processing later.  */
10575   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
10576 }
10577
10578 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10579    already been loaded into memory.  */
10580
10581 static void
10582 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10583                         enum language pretend_language)
10584 {
10585   struct dwarf2_cu *cu = per_cu->cu;
10586   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10587   struct objfile *objfile = dwarf2_per_objfile->objfile;
10588   struct compunit_symtab *cust;
10589   struct cleanup *delayed_list_cleanup;
10590   struct signatured_type *sig_type;
10591
10592   gdb_assert (per_cu->is_debug_types);
10593   sig_type = (struct signatured_type *) per_cu;
10594
10595   buildsym_init ();
10596   scoped_free_pendings free_pending;
10597   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10598
10599   cu->list_in_scope = &file_symbols;
10600
10601   cu->language = pretend_language;
10602   cu->language_defn = language_def (cu->language);
10603
10604   /* The symbol tables are set up in read_type_unit_scope.  */
10605   process_die (cu->dies, cu);
10606
10607   /* For now fudge the Go package.  */
10608   if (cu->language == language_go)
10609     fixup_go_packaging (cu);
10610
10611   /* Now that we have processed all the DIEs in the CU, all the types 
10612      should be complete, and it should now be safe to compute all of the
10613      physnames.  */
10614   compute_delayed_physnames (cu);
10615   do_cleanups (delayed_list_cleanup);
10616
10617   /* TUs share symbol tables.
10618      If this is the first TU to use this symtab, complete the construction
10619      of it with end_expandable_symtab.  Otherwise, complete the addition of
10620      this TU's symbols to the existing symtab.  */
10621   if (sig_type->type_unit_group->compunit_symtab == NULL)
10622     {
10623       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10624       sig_type->type_unit_group->compunit_symtab = cust;
10625
10626       if (cust != NULL)
10627         {
10628           /* Set symtab language to language from DW_AT_language.  If the
10629              compilation is from a C file generated by language preprocessors,
10630              do not set the language if it was already deduced by
10631              start_subfile.  */
10632           if (!(cu->language == language_c
10633                 && COMPUNIT_FILETABS (cust)->language != language_c))
10634             COMPUNIT_FILETABS (cust)->language = cu->language;
10635         }
10636     }
10637   else
10638     {
10639       augment_type_symtab ();
10640       cust = sig_type->type_unit_group->compunit_symtab;
10641     }
10642
10643   if (dwarf2_per_objfile->using_index)
10644     per_cu->v.quick->compunit_symtab = cust;
10645   else
10646     {
10647       struct partial_symtab *pst = per_cu->v.psymtab;
10648       pst->compunit_symtab = cust;
10649       pst->readin = 1;
10650     }
10651 }
10652
10653 /* Process an imported unit DIE.  */
10654
10655 static void
10656 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10657 {
10658   struct attribute *attr;
10659
10660   /* For now we don't handle imported units in type units.  */
10661   if (cu->per_cu->is_debug_types)
10662     {
10663       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10664                " supported in type units [in module %s]"),
10665              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10666     }
10667
10668   attr = dwarf2_attr (die, DW_AT_import, cu);
10669   if (attr != NULL)
10670     {
10671       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10672       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10673       dwarf2_per_cu_data *per_cu
10674         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10675                                             cu->per_cu->dwarf2_per_objfile);
10676
10677       /* If necessary, add it to the queue and load its DIEs.  */
10678       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10679         load_full_comp_unit (per_cu, cu->language);
10680
10681       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10682                      per_cu);
10683     }
10684 }
10685
10686 /* RAII object that represents a process_die scope: i.e.,
10687    starts/finishes processing a DIE.  */
10688 class process_die_scope
10689 {
10690 public:
10691   process_die_scope (die_info *die, dwarf2_cu *cu)
10692     : m_die (die), m_cu (cu)
10693   {
10694     /* We should only be processing DIEs not already in process.  */
10695     gdb_assert (!m_die->in_process);
10696     m_die->in_process = true;
10697   }
10698
10699   ~process_die_scope ()
10700   {
10701     m_die->in_process = false;
10702
10703     /* If we're done processing the DIE for the CU that owns the line
10704        header, we don't need the line header anymore.  */
10705     if (m_cu->line_header_die_owner == m_die)
10706       {
10707         delete m_cu->line_header;
10708         m_cu->line_header = NULL;
10709         m_cu->line_header_die_owner = NULL;
10710       }
10711   }
10712
10713 private:
10714   die_info *m_die;
10715   dwarf2_cu *m_cu;
10716 };
10717
10718 /* Process a die and its children.  */
10719
10720 static void
10721 process_die (struct die_info *die, struct dwarf2_cu *cu)
10722 {
10723   process_die_scope scope (die, cu);
10724
10725   switch (die->tag)
10726     {
10727     case DW_TAG_padding:
10728       break;
10729     case DW_TAG_compile_unit:
10730     case DW_TAG_partial_unit:
10731       read_file_scope (die, cu);
10732       break;
10733     case DW_TAG_type_unit:
10734       read_type_unit_scope (die, cu);
10735       break;
10736     case DW_TAG_subprogram:
10737     case DW_TAG_inlined_subroutine:
10738       read_func_scope (die, cu);
10739       break;
10740     case DW_TAG_lexical_block:
10741     case DW_TAG_try_block:
10742     case DW_TAG_catch_block:
10743       read_lexical_block_scope (die, cu);
10744       break;
10745     case DW_TAG_call_site:
10746     case DW_TAG_GNU_call_site:
10747       read_call_site_scope (die, cu);
10748       break;
10749     case DW_TAG_class_type:
10750     case DW_TAG_interface_type:
10751     case DW_TAG_structure_type:
10752     case DW_TAG_union_type:
10753       process_structure_scope (die, cu);
10754       break;
10755     case DW_TAG_enumeration_type:
10756       process_enumeration_scope (die, cu);
10757       break;
10758
10759     /* These dies have a type, but processing them does not create
10760        a symbol or recurse to process the children.  Therefore we can
10761        read them on-demand through read_type_die.  */
10762     case DW_TAG_subroutine_type:
10763     case DW_TAG_set_type:
10764     case DW_TAG_array_type:
10765     case DW_TAG_pointer_type:
10766     case DW_TAG_ptr_to_member_type:
10767     case DW_TAG_reference_type:
10768     case DW_TAG_rvalue_reference_type:
10769     case DW_TAG_string_type:
10770       break;
10771
10772     case DW_TAG_base_type:
10773     case DW_TAG_subrange_type:
10774     case DW_TAG_typedef:
10775       /* Add a typedef symbol for the type definition, if it has a
10776          DW_AT_name.  */
10777       new_symbol (die, read_type_die (die, cu), cu);
10778       break;
10779     case DW_TAG_common_block:
10780       read_common_block (die, cu);
10781       break;
10782     case DW_TAG_common_inclusion:
10783       break;
10784     case DW_TAG_namespace:
10785       cu->processing_has_namespace_info = 1;
10786       read_namespace (die, cu);
10787       break;
10788     case DW_TAG_module:
10789       cu->processing_has_namespace_info = 1;
10790       read_module (die, cu);
10791       break;
10792     case DW_TAG_imported_declaration:
10793       cu->processing_has_namespace_info = 1;
10794       if (read_namespace_alias (die, cu))
10795         break;
10796       /* The declaration is not a global namespace alias: fall through.  */
10797     case DW_TAG_imported_module:
10798       cu->processing_has_namespace_info = 1;
10799       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10800                                  || cu->language != language_fortran))
10801         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
10802                    dwarf_tag_name (die->tag));
10803       read_import_statement (die, cu);
10804       break;
10805
10806     case DW_TAG_imported_unit:
10807       process_imported_unit_die (die, cu);
10808       break;
10809
10810     case DW_TAG_variable:
10811       read_variable (die, cu);
10812       break;
10813
10814     default:
10815       new_symbol (die, NULL, cu);
10816       break;
10817     }
10818 }
10819 \f
10820 /* DWARF name computation.  */
10821
10822 /* A helper function for dwarf2_compute_name which determines whether DIE
10823    needs to have the name of the scope prepended to the name listed in the
10824    die.  */
10825
10826 static int
10827 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10828 {
10829   struct attribute *attr;
10830
10831   switch (die->tag)
10832     {
10833     case DW_TAG_namespace:
10834     case DW_TAG_typedef:
10835     case DW_TAG_class_type:
10836     case DW_TAG_interface_type:
10837     case DW_TAG_structure_type:
10838     case DW_TAG_union_type:
10839     case DW_TAG_enumeration_type:
10840     case DW_TAG_enumerator:
10841     case DW_TAG_subprogram:
10842     case DW_TAG_inlined_subroutine:
10843     case DW_TAG_member:
10844     case DW_TAG_imported_declaration:
10845       return 1;
10846
10847     case DW_TAG_variable:
10848     case DW_TAG_constant:
10849       /* We only need to prefix "globally" visible variables.  These include
10850          any variable marked with DW_AT_external or any variable that
10851          lives in a namespace.  [Variables in anonymous namespaces
10852          require prefixing, but they are not DW_AT_external.]  */
10853
10854       if (dwarf2_attr (die, DW_AT_specification, cu))
10855         {
10856           struct dwarf2_cu *spec_cu = cu;
10857
10858           return die_needs_namespace (die_specification (die, &spec_cu),
10859                                       spec_cu);
10860         }
10861
10862       attr = dwarf2_attr (die, DW_AT_external, cu);
10863       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10864           && die->parent->tag != DW_TAG_module)
10865         return 0;
10866       /* A variable in a lexical block of some kind does not need a
10867          namespace, even though in C++ such variables may be external
10868          and have a mangled name.  */
10869       if (die->parent->tag ==  DW_TAG_lexical_block
10870           || die->parent->tag ==  DW_TAG_try_block
10871           || die->parent->tag ==  DW_TAG_catch_block
10872           || die->parent->tag == DW_TAG_subprogram)
10873         return 0;
10874       return 1;
10875
10876     default:
10877       return 0;
10878     }
10879 }
10880
10881 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10882    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10883    defined for the given DIE.  */
10884
10885 static struct attribute *
10886 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10887 {
10888   struct attribute *attr;
10889
10890   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10891   if (attr == NULL)
10892     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10893
10894   return attr;
10895 }
10896
10897 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10898    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10899    defined for the given DIE.  */
10900
10901 static const char *
10902 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10903 {
10904   const char *linkage_name;
10905
10906   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10907   if (linkage_name == NULL)
10908     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10909
10910   return linkage_name;
10911 }
10912
10913 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10914    compute the physname for the object, which include a method's:
10915    - formal parameters (C++),
10916    - receiver type (Go),
10917
10918    The term "physname" is a bit confusing.
10919    For C++, for example, it is the demangled name.
10920    For Go, for example, it's the mangled name.
10921
10922    For Ada, return the DIE's linkage name rather than the fully qualified
10923    name.  PHYSNAME is ignored..
10924
10925    The result is allocated on the objfile_obstack and canonicalized.  */
10926
10927 static const char *
10928 dwarf2_compute_name (const char *name,
10929                      struct die_info *die, struct dwarf2_cu *cu,
10930                      int physname)
10931 {
10932   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10933
10934   if (name == NULL)
10935     name = dwarf2_name (die, cu);
10936
10937   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10938      but otherwise compute it by typename_concat inside GDB.
10939      FIXME: Actually this is not really true, or at least not always true.
10940      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10941      Fortran names because there is no mangling standard.  So new_symbol_full
10942      will set the demangled name to the result of dwarf2_full_name, and it is
10943      the demangled name that GDB uses if it exists.  */
10944   if (cu->language == language_ada
10945       || (cu->language == language_fortran && physname))
10946     {
10947       /* For Ada unit, we prefer the linkage name over the name, as
10948          the former contains the exported name, which the user expects
10949          to be able to reference.  Ideally, we want the user to be able
10950          to reference this entity using either natural or linkage name,
10951          but we haven't started looking at this enhancement yet.  */
10952       const char *linkage_name = dw2_linkage_name (die, cu);
10953
10954       if (linkage_name != NULL)
10955         return linkage_name;
10956     }
10957
10958   /* These are the only languages we know how to qualify names in.  */
10959   if (name != NULL
10960       && (cu->language == language_cplus
10961           || cu->language == language_fortran || cu->language == language_d
10962           || cu->language == language_rust))
10963     {
10964       if (die_needs_namespace (die, cu))
10965         {
10966           const char *prefix;
10967           const char *canonical_name = NULL;
10968
10969           string_file buf;
10970
10971           prefix = determine_prefix (die, cu);
10972           if (*prefix != '\0')
10973             {
10974               char *prefixed_name = typename_concat (NULL, prefix, name,
10975                                                      physname, cu);
10976
10977               buf.puts (prefixed_name);
10978               xfree (prefixed_name);
10979             }
10980           else
10981             buf.puts (name);
10982
10983           /* Template parameters may be specified in the DIE's DW_AT_name, or
10984              as children with DW_TAG_template_type_param or
10985              DW_TAG_value_type_param.  If the latter, add them to the name
10986              here.  If the name already has template parameters, then
10987              skip this step; some versions of GCC emit both, and
10988              it is more efficient to use the pre-computed name.
10989
10990              Something to keep in mind about this process: it is very
10991              unlikely, or in some cases downright impossible, to produce
10992              something that will match the mangled name of a function.
10993              If the definition of the function has the same debug info,
10994              we should be able to match up with it anyway.  But fallbacks
10995              using the minimal symbol, for instance to find a method
10996              implemented in a stripped copy of libstdc++, will not work.
10997              If we do not have debug info for the definition, we will have to
10998              match them up some other way.
10999
11000              When we do name matching there is a related problem with function
11001              templates; two instantiated function templates are allowed to
11002              differ only by their return types, which we do not add here.  */
11003
11004           if (cu->language == language_cplus && strchr (name, '<') == NULL)
11005             {
11006               struct attribute *attr;
11007               struct die_info *child;
11008               int first = 1;
11009
11010               die->building_fullname = 1;
11011
11012               for (child = die->child; child != NULL; child = child->sibling)
11013                 {
11014                   struct type *type;
11015                   LONGEST value;
11016                   const gdb_byte *bytes;
11017                   struct dwarf2_locexpr_baton *baton;
11018                   struct value *v;
11019
11020                   if (child->tag != DW_TAG_template_type_param
11021                       && child->tag != DW_TAG_template_value_param)
11022                     continue;
11023
11024                   if (first)
11025                     {
11026                       buf.puts ("<");
11027                       first = 0;
11028                     }
11029                   else
11030                     buf.puts (", ");
11031
11032                   attr = dwarf2_attr (child, DW_AT_type, cu);
11033                   if (attr == NULL)
11034                     {
11035                       complaint (&symfile_complaints,
11036                                  _("template parameter missing DW_AT_type"));
11037                       buf.puts ("UNKNOWN_TYPE");
11038                       continue;
11039                     }
11040                   type = die_type (child, cu);
11041
11042                   if (child->tag == DW_TAG_template_type_param)
11043                     {
11044                       c_print_type (type, "", &buf, -1, 0, &type_print_raw_options);
11045                       continue;
11046                     }
11047
11048                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
11049                   if (attr == NULL)
11050                     {
11051                       complaint (&symfile_complaints,
11052                                  _("template parameter missing "
11053                                    "DW_AT_const_value"));
11054                       buf.puts ("UNKNOWN_VALUE");
11055                       continue;
11056                     }
11057
11058                   dwarf2_const_value_attr (attr, type, name,
11059                                            &cu->comp_unit_obstack, cu,
11060                                            &value, &bytes, &baton);
11061
11062                   if (TYPE_NOSIGN (type))
11063                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
11064                        changed, this can use value_print instead.  */
11065                     c_printchar (value, type, &buf);
11066                   else
11067                     {
11068                       struct value_print_options opts;
11069
11070                       if (baton != NULL)
11071                         v = dwarf2_evaluate_loc_desc (type, NULL,
11072                                                       baton->data,
11073                                                       baton->size,
11074                                                       baton->per_cu);
11075                       else if (bytes != NULL)
11076                         {
11077                           v = allocate_value (type);
11078                           memcpy (value_contents_writeable (v), bytes,
11079                                   TYPE_LENGTH (type));
11080                         }
11081                       else
11082                         v = value_from_longest (type, value);
11083
11084                       /* Specify decimal so that we do not depend on
11085                          the radix.  */
11086                       get_formatted_print_options (&opts, 'd');
11087                       opts.raw = 1;
11088                       value_print (v, &buf, &opts);
11089                       release_value (v);
11090                       value_free (v);
11091                     }
11092                 }
11093
11094               die->building_fullname = 0;
11095
11096               if (!first)
11097                 {
11098                   /* Close the argument list, with a space if necessary
11099                      (nested templates).  */
11100                   if (!buf.empty () && buf.string ().back () == '>')
11101                     buf.puts (" >");
11102                   else
11103                     buf.puts (">");
11104                 }
11105             }
11106
11107           /* For C++ methods, append formal parameter type
11108              information, if PHYSNAME.  */
11109
11110           if (physname && die->tag == DW_TAG_subprogram
11111               && cu->language == language_cplus)
11112             {
11113               struct type *type = read_type_die (die, cu);
11114
11115               c_type_print_args (type, &buf, 1, cu->language,
11116                                  &type_print_raw_options);
11117
11118               if (cu->language == language_cplus)
11119                 {
11120                   /* Assume that an artificial first parameter is
11121                      "this", but do not crash if it is not.  RealView
11122                      marks unnamed (and thus unused) parameters as
11123                      artificial; there is no way to differentiate
11124                      the two cases.  */
11125                   if (TYPE_NFIELDS (type) > 0
11126                       && TYPE_FIELD_ARTIFICIAL (type, 0)
11127                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
11128                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
11129                                                                         0))))
11130                     buf.puts (" const");
11131                 }
11132             }
11133
11134           const std::string &intermediate_name = buf.string ();
11135
11136           if (cu->language == language_cplus)
11137             canonical_name
11138               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11139                                           &objfile->per_bfd->storage_obstack);
11140
11141           /* If we only computed INTERMEDIATE_NAME, or if
11142              INTERMEDIATE_NAME is already canonical, then we need to
11143              copy it to the appropriate obstack.  */
11144           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11145             name = ((const char *)
11146                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11147                                    intermediate_name.c_str (),
11148                                    intermediate_name.length ()));
11149           else
11150             name = canonical_name;
11151         }
11152     }
11153
11154   return name;
11155 }
11156
11157 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11158    If scope qualifiers are appropriate they will be added.  The result
11159    will be allocated on the storage_obstack, or NULL if the DIE does
11160    not have a name.  NAME may either be from a previous call to
11161    dwarf2_name or NULL.
11162
11163    The output string will be canonicalized (if C++).  */
11164
11165 static const char *
11166 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11167 {
11168   return dwarf2_compute_name (name, die, cu, 0);
11169 }
11170
11171 /* Construct a physname for the given DIE in CU.  NAME may either be
11172    from a previous call to dwarf2_name or NULL.  The result will be
11173    allocated on the objfile_objstack or NULL if the DIE does not have a
11174    name.
11175
11176    The output string will be canonicalized (if C++).  */
11177
11178 static const char *
11179 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11180 {
11181   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11182   const char *retval, *mangled = NULL, *canon = NULL;
11183   int need_copy = 1;
11184
11185   /* In this case dwarf2_compute_name is just a shortcut not building anything
11186      on its own.  */
11187   if (!die_needs_namespace (die, cu))
11188     return dwarf2_compute_name (name, die, cu, 1);
11189
11190   mangled = dw2_linkage_name (die, cu);
11191
11192   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11193      See https://github.com/rust-lang/rust/issues/32925.  */
11194   if (cu->language == language_rust && mangled != NULL
11195       && strchr (mangled, '{') != NULL)
11196     mangled = NULL;
11197
11198   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11199      has computed.  */
11200   gdb::unique_xmalloc_ptr<char> demangled;
11201   if (mangled != NULL)
11202     {
11203       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
11204          type.  It is easier for GDB users to search for such functions as
11205          `name(params)' than `long name(params)'.  In such case the minimal
11206          symbol names do not match the full symbol names but for template
11207          functions there is never a need to look up their definition from their
11208          declaration so the only disadvantage remains the minimal symbol
11209          variant `long name(params)' does not have the proper inferior type.
11210          */
11211
11212       if (cu->language == language_go)
11213         {
11214           /* This is a lie, but we already lie to the caller new_symbol_full.
11215              new_symbol_full assumes we return the mangled name.
11216              This just undoes that lie until things are cleaned up.  */
11217         }
11218       else
11219         {
11220           demangled.reset (gdb_demangle (mangled,
11221                                          (DMGL_PARAMS | DMGL_ANSI
11222                                           | DMGL_RET_DROP)));
11223         }
11224       if (demangled)
11225         canon = demangled.get ();
11226       else
11227         {
11228           canon = mangled;
11229           need_copy = 0;
11230         }
11231     }
11232
11233   if (canon == NULL || check_physname)
11234     {
11235       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11236
11237       if (canon != NULL && strcmp (physname, canon) != 0)
11238         {
11239           /* It may not mean a bug in GDB.  The compiler could also
11240              compute DW_AT_linkage_name incorrectly.  But in such case
11241              GDB would need to be bug-to-bug compatible.  */
11242
11243           complaint (&symfile_complaints,
11244                      _("Computed physname <%s> does not match demangled <%s> "
11245                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
11246                      physname, canon, mangled, to_underlying (die->sect_off),
11247                      objfile_name (objfile));
11248
11249           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11250              is available here - over computed PHYSNAME.  It is safer
11251              against both buggy GDB and buggy compilers.  */
11252
11253           retval = canon;
11254         }
11255       else
11256         {
11257           retval = physname;
11258           need_copy = 0;
11259         }
11260     }
11261   else
11262     retval = canon;
11263
11264   if (need_copy)
11265     retval = ((const char *)
11266               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11267                              retval, strlen (retval)));
11268
11269   return retval;
11270 }
11271
11272 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11273    a new symbol for it.
11274
11275    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11276
11277 static int
11278 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11279 {
11280   struct attribute *attr;
11281
11282   /* If the die does not have a name, this is not a namespace
11283      alias.  */
11284   attr = dwarf2_attr (die, DW_AT_name, cu);
11285   if (attr != NULL)
11286     {
11287       int num;
11288       struct die_info *d = die;
11289       struct dwarf2_cu *imported_cu = cu;
11290
11291       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11292          keep inspecting DIEs until we hit the underlying import.  */
11293 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11294       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11295         {
11296           attr = dwarf2_attr (d, DW_AT_import, cu);
11297           if (attr == NULL)
11298             break;
11299
11300           d = follow_die_ref (d, attr, &imported_cu);
11301           if (d->tag != DW_TAG_imported_declaration)
11302             break;
11303         }
11304
11305       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11306         {
11307           complaint (&symfile_complaints,
11308                      _("DIE at 0x%x has too many recursively imported "
11309                        "declarations"), to_underlying (d->sect_off));
11310           return 0;
11311         }
11312
11313       if (attr != NULL)
11314         {
11315           struct type *type;
11316           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11317
11318           type = get_die_type_at_offset (sect_off, cu->per_cu);
11319           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11320             {
11321               /* This declaration is a global namespace alias.  Add
11322                  a symbol for it whose type is the aliased namespace.  */
11323               new_symbol (die, type, cu);
11324               return 1;
11325             }
11326         }
11327     }
11328
11329   return 0;
11330 }
11331
11332 /* Return the using directives repository (global or local?) to use in the
11333    current context for LANGUAGE.
11334
11335    For Ada, imported declarations can materialize renamings, which *may* be
11336    global.  However it is impossible (for now?) in DWARF to distinguish
11337    "external" imported declarations and "static" ones.  As all imported
11338    declarations seem to be static in all other languages, make them all CU-wide
11339    global only in Ada.  */
11340
11341 static struct using_direct **
11342 using_directives (enum language language)
11343 {
11344   if (language == language_ada && context_stack_depth == 0)
11345     return &global_using_directives;
11346   else
11347     return &local_using_directives;
11348 }
11349
11350 /* Read the import statement specified by the given die and record it.  */
11351
11352 static void
11353 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11354 {
11355   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11356   struct attribute *import_attr;
11357   struct die_info *imported_die, *child_die;
11358   struct dwarf2_cu *imported_cu;
11359   const char *imported_name;
11360   const char *imported_name_prefix;
11361   const char *canonical_name;
11362   const char *import_alias;
11363   const char *imported_declaration = NULL;
11364   const char *import_prefix;
11365   std::vector<const char *> excludes;
11366
11367   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11368   if (import_attr == NULL)
11369     {
11370       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11371                  dwarf_tag_name (die->tag));
11372       return;
11373     }
11374
11375   imported_cu = cu;
11376   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11377   imported_name = dwarf2_name (imported_die, imported_cu);
11378   if (imported_name == NULL)
11379     {
11380       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11381
11382         The import in the following code:
11383         namespace A
11384           {
11385             typedef int B;
11386           }
11387
11388         int main ()
11389           {
11390             using A::B;
11391             B b;
11392             return b;
11393           }
11394
11395         ...
11396          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11397             <52>   DW_AT_decl_file   : 1
11398             <53>   DW_AT_decl_line   : 6
11399             <54>   DW_AT_import      : <0x75>
11400          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11401             <59>   DW_AT_name        : B
11402             <5b>   DW_AT_decl_file   : 1
11403             <5c>   DW_AT_decl_line   : 2
11404             <5d>   DW_AT_type        : <0x6e>
11405         ...
11406          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11407             <76>   DW_AT_byte_size   : 4
11408             <77>   DW_AT_encoding    : 5        (signed)
11409
11410         imports the wrong die ( 0x75 instead of 0x58 ).
11411         This case will be ignored until the gcc bug is fixed.  */
11412       return;
11413     }
11414
11415   /* Figure out the local name after import.  */
11416   import_alias = dwarf2_name (die, cu);
11417
11418   /* Figure out where the statement is being imported to.  */
11419   import_prefix = determine_prefix (die, cu);
11420
11421   /* Figure out what the scope of the imported die is and prepend it
11422      to the name of the imported die.  */
11423   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11424
11425   if (imported_die->tag != DW_TAG_namespace
11426       && imported_die->tag != DW_TAG_module)
11427     {
11428       imported_declaration = imported_name;
11429       canonical_name = imported_name_prefix;
11430     }
11431   else if (strlen (imported_name_prefix) > 0)
11432     canonical_name = obconcat (&objfile->objfile_obstack,
11433                                imported_name_prefix,
11434                                (cu->language == language_d ? "." : "::"),
11435                                imported_name, (char *) NULL);
11436   else
11437     canonical_name = imported_name;
11438
11439   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11440     for (child_die = die->child; child_die && child_die->tag;
11441          child_die = sibling_die (child_die))
11442       {
11443         /* DWARF-4: A Fortran use statement with a “rename list” may be
11444            represented by an imported module entry with an import attribute
11445            referring to the module and owned entries corresponding to those
11446            entities that are renamed as part of being imported.  */
11447
11448         if (child_die->tag != DW_TAG_imported_declaration)
11449           {
11450             complaint (&symfile_complaints,
11451                        _("child DW_TAG_imported_declaration expected "
11452                          "- DIE at 0x%x [in module %s]"),
11453                        to_underlying (child_die->sect_off), objfile_name (objfile));
11454             continue;
11455           }
11456
11457         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11458         if (import_attr == NULL)
11459           {
11460             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11461                        dwarf_tag_name (child_die->tag));
11462             continue;
11463           }
11464
11465         imported_cu = cu;
11466         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11467                                               &imported_cu);
11468         imported_name = dwarf2_name (imported_die, imported_cu);
11469         if (imported_name == NULL)
11470           {
11471             complaint (&symfile_complaints,
11472                        _("child DW_TAG_imported_declaration has unknown "
11473                          "imported name - DIE at 0x%x [in module %s]"),
11474                        to_underlying (child_die->sect_off), objfile_name (objfile));
11475             continue;
11476           }
11477
11478         excludes.push_back (imported_name);
11479
11480         process_die (child_die, cu);
11481       }
11482
11483   add_using_directive (using_directives (cu->language),
11484                        import_prefix,
11485                        canonical_name,
11486                        import_alias,
11487                        imported_declaration,
11488                        excludes,
11489                        0,
11490                        &objfile->objfile_obstack);
11491 }
11492
11493 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11494    types, but gives them a size of zero.  Starting with version 14,
11495    ICC is compatible with GCC.  */
11496
11497 static int
11498 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11499 {
11500   if (!cu->checked_producer)
11501     check_producer (cu);
11502
11503   return cu->producer_is_icc_lt_14;
11504 }
11505
11506 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11507    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11508    this, it was first present in GCC release 4.3.0.  */
11509
11510 static int
11511 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11512 {
11513   if (!cu->checked_producer)
11514     check_producer (cu);
11515
11516   return cu->producer_is_gcc_lt_4_3;
11517 }
11518
11519 static file_and_directory
11520 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11521 {
11522   file_and_directory res;
11523
11524   /* Find the filename.  Do not use dwarf2_name here, since the filename
11525      is not a source language identifier.  */
11526   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11527   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11528
11529   if (res.comp_dir == NULL
11530       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11531       && IS_ABSOLUTE_PATH (res.name))
11532     {
11533       res.comp_dir_storage = ldirname (res.name);
11534       if (!res.comp_dir_storage.empty ())
11535         res.comp_dir = res.comp_dir_storage.c_str ();
11536     }
11537   if (res.comp_dir != NULL)
11538     {
11539       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11540          directory, get rid of it.  */
11541       const char *cp = strchr (res.comp_dir, ':');
11542
11543       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11544         res.comp_dir = cp + 1;
11545     }
11546
11547   if (res.name == NULL)
11548     res.name = "<unknown>";
11549
11550   return res;
11551 }
11552
11553 /* Handle DW_AT_stmt_list for a compilation unit.
11554    DIE is the DW_TAG_compile_unit die for CU.
11555    COMP_DIR is the compilation directory.  LOWPC is passed to
11556    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11557
11558 static void
11559 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11560                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11561 {
11562   struct dwarf2_per_objfile *dwarf2_per_objfile
11563     = cu->per_cu->dwarf2_per_objfile;
11564   struct objfile *objfile = dwarf2_per_objfile->objfile;
11565   struct attribute *attr;
11566   struct line_header line_header_local;
11567   hashval_t line_header_local_hash;
11568   void **slot;
11569   int decode_mapping;
11570
11571   gdb_assert (! cu->per_cu->is_debug_types);
11572
11573   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11574   if (attr == NULL)
11575     return;
11576
11577   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11578
11579   /* The line header hash table is only created if needed (it exists to
11580      prevent redundant reading of the line table for partial_units).
11581      If we're given a partial_unit, we'll need it.  If we're given a
11582      compile_unit, then use the line header hash table if it's already
11583      created, but don't create one just yet.  */
11584
11585   if (dwarf2_per_objfile->line_header_hash == NULL
11586       && die->tag == DW_TAG_partial_unit)
11587     {
11588       dwarf2_per_objfile->line_header_hash
11589         = htab_create_alloc_ex (127, line_header_hash_voidp,
11590                                 line_header_eq_voidp,
11591                                 free_line_header_voidp,
11592                                 &objfile->objfile_obstack,
11593                                 hashtab_obstack_allocate,
11594                                 dummy_obstack_deallocate);
11595     }
11596
11597   line_header_local.sect_off = line_offset;
11598   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11599   line_header_local_hash = line_header_hash (&line_header_local);
11600   if (dwarf2_per_objfile->line_header_hash != NULL)
11601     {
11602       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11603                                        &line_header_local,
11604                                        line_header_local_hash, NO_INSERT);
11605
11606       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11607          is not present in *SLOT (since if there is something in *SLOT then
11608          it will be for a partial_unit).  */
11609       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11610         {
11611           gdb_assert (*slot != NULL);
11612           cu->line_header = (struct line_header *) *slot;
11613           return;
11614         }
11615     }
11616
11617   /* dwarf_decode_line_header does not yet provide sufficient information.
11618      We always have to call also dwarf_decode_lines for it.  */
11619   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11620   if (lh == NULL)
11621     return;
11622
11623   cu->line_header = lh.release ();
11624   cu->line_header_die_owner = die;
11625
11626   if (dwarf2_per_objfile->line_header_hash == NULL)
11627     slot = NULL;
11628   else
11629     {
11630       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11631                                        &line_header_local,
11632                                        line_header_local_hash, INSERT);
11633       gdb_assert (slot != NULL);
11634     }
11635   if (slot != NULL && *slot == NULL)
11636     {
11637       /* This newly decoded line number information unit will be owned
11638          by line_header_hash hash table.  */
11639       *slot = cu->line_header;
11640       cu->line_header_die_owner = NULL;
11641     }
11642   else
11643     {
11644       /* We cannot free any current entry in (*slot) as that struct line_header
11645          may be already used by multiple CUs.  Create only temporary decoded
11646          line_header for this CU - it may happen at most once for each line
11647          number information unit.  And if we're not using line_header_hash
11648          then this is what we want as well.  */
11649       gdb_assert (die->tag != DW_TAG_partial_unit);
11650     }
11651   decode_mapping = (die->tag != DW_TAG_partial_unit);
11652   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11653                       decode_mapping);
11654
11655 }
11656
11657 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11658
11659 static void
11660 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11661 {
11662   struct dwarf2_per_objfile *dwarf2_per_objfile
11663     = cu->per_cu->dwarf2_per_objfile;
11664   struct objfile *objfile = dwarf2_per_objfile->objfile;
11665   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11666   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11667   CORE_ADDR highpc = ((CORE_ADDR) 0);
11668   struct attribute *attr;
11669   struct die_info *child_die;
11670   CORE_ADDR baseaddr;
11671
11672   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11673
11674   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11675
11676   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11677      from finish_block.  */
11678   if (lowpc == ((CORE_ADDR) -1))
11679     lowpc = highpc;
11680   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11681
11682   file_and_directory fnd = find_file_and_directory (die, cu);
11683
11684   prepare_one_comp_unit (cu, die, cu->language);
11685
11686   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11687      standardised yet.  As a workaround for the language detection we fall
11688      back to the DW_AT_producer string.  */
11689   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11690     cu->language = language_opencl;
11691
11692   /* Similar hack for Go.  */
11693   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11694     set_cu_language (DW_LANG_Go, cu);
11695
11696   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11697
11698   /* Decode line number information if present.  We do this before
11699      processing child DIEs, so that the line header table is available
11700      for DW_AT_decl_file.  */
11701   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11702
11703   /* Process all dies in compilation unit.  */
11704   if (die->child != NULL)
11705     {
11706       child_die = die->child;
11707       while (child_die && child_die->tag)
11708         {
11709           process_die (child_die, cu);
11710           child_die = sibling_die (child_die);
11711         }
11712     }
11713
11714   /* Decode macro information, if present.  Dwarf 2 macro information
11715      refers to information in the line number info statement program
11716      header, so we can only read it if we've read the header
11717      successfully.  */
11718   attr = dwarf2_attr (die, DW_AT_macros, cu);
11719   if (attr == NULL)
11720     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11721   if (attr && cu->line_header)
11722     {
11723       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11724         complaint (&symfile_complaints,
11725                    _("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11726
11727       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11728     }
11729   else
11730     {
11731       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11732       if (attr && cu->line_header)
11733         {
11734           unsigned int macro_offset = DW_UNSND (attr);
11735
11736           dwarf_decode_macros (cu, macro_offset, 0);
11737         }
11738     }
11739 }
11740
11741 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11742    Create the set of symtabs used by this TU, or if this TU is sharing
11743    symtabs with another TU and the symtabs have already been created
11744    then restore those symtabs in the line header.
11745    We don't need the pc/line-number mapping for type units.  */
11746
11747 static void
11748 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11749 {
11750   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11751   struct type_unit_group *tu_group;
11752   int first_time;
11753   struct attribute *attr;
11754   unsigned int i;
11755   struct signatured_type *sig_type;
11756
11757   gdb_assert (per_cu->is_debug_types);
11758   sig_type = (struct signatured_type *) per_cu;
11759
11760   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11761
11762   /* If we're using .gdb_index (includes -readnow) then
11763      per_cu->type_unit_group may not have been set up yet.  */
11764   if (sig_type->type_unit_group == NULL)
11765     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11766   tu_group = sig_type->type_unit_group;
11767
11768   /* If we've already processed this stmt_list there's no real need to
11769      do it again, we could fake it and just recreate the part we need
11770      (file name,index -> symtab mapping).  If data shows this optimization
11771      is useful we can do it then.  */
11772   first_time = tu_group->compunit_symtab == NULL;
11773
11774   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11775      debug info.  */
11776   line_header_up lh;
11777   if (attr != NULL)
11778     {
11779       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11780       lh = dwarf_decode_line_header (line_offset, cu);
11781     }
11782   if (lh == NULL)
11783     {
11784       if (first_time)
11785         dwarf2_start_symtab (cu, "", NULL, 0);
11786       else
11787         {
11788           gdb_assert (tu_group->symtabs == NULL);
11789           restart_symtab (tu_group->compunit_symtab, "", 0);
11790         }
11791       return;
11792     }
11793
11794   cu->line_header = lh.release ();
11795   cu->line_header_die_owner = die;
11796
11797   if (first_time)
11798     {
11799       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11800
11801       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11802          still initializing it, and our caller (a few levels up)
11803          process_full_type_unit still needs to know if this is the first
11804          time.  */
11805
11806       tu_group->num_symtabs = cu->line_header->file_names.size ();
11807       tu_group->symtabs = XNEWVEC (struct symtab *,
11808                                    cu->line_header->file_names.size ());
11809
11810       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11811         {
11812           file_entry &fe = cu->line_header->file_names[i];
11813
11814           dwarf2_start_subfile (fe.name, fe.include_dir (cu->line_header));
11815
11816           if (current_subfile->symtab == NULL)
11817             {
11818               /* NOTE: start_subfile will recognize when it's been
11819                  passed a file it has already seen.  So we can't
11820                  assume there's a simple mapping from
11821                  cu->line_header->file_names to subfiles, plus
11822                  cu->line_header->file_names may contain dups.  */
11823               current_subfile->symtab
11824                 = allocate_symtab (cust, current_subfile->name);
11825             }
11826
11827           fe.symtab = current_subfile->symtab;
11828           tu_group->symtabs[i] = fe.symtab;
11829         }
11830     }
11831   else
11832     {
11833       restart_symtab (tu_group->compunit_symtab, "", 0);
11834
11835       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11836         {
11837           file_entry &fe = cu->line_header->file_names[i];
11838
11839           fe.symtab = tu_group->symtabs[i];
11840         }
11841     }
11842
11843   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11844      so they don't have a "real" (so to speak) symtab anyway.
11845      There is later code that will assign the main symtab to all symbols
11846      that don't have one.  We need to handle the case of a symbol with a
11847      missing symtab (DW_AT_decl_file) anyway.  */
11848 }
11849
11850 /* Process DW_TAG_type_unit.
11851    For TUs we want to skip the first top level sibling if it's not the
11852    actual type being defined by this TU.  In this case the first top
11853    level sibling is there to provide context only.  */
11854
11855 static void
11856 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11857 {
11858   struct die_info *child_die;
11859
11860   prepare_one_comp_unit (cu, die, language_minimal);
11861
11862   /* Initialize (or reinitialize) the machinery for building symtabs.
11863      We do this before processing child DIEs, so that the line header table
11864      is available for DW_AT_decl_file.  */
11865   setup_type_unit_groups (die, cu);
11866
11867   if (die->child != NULL)
11868     {
11869       child_die = die->child;
11870       while (child_die && child_die->tag)
11871         {
11872           process_die (child_die, cu);
11873           child_die = sibling_die (child_die);
11874         }
11875     }
11876 }
11877 \f
11878 /* DWO/DWP files.
11879
11880    http://gcc.gnu.org/wiki/DebugFission
11881    http://gcc.gnu.org/wiki/DebugFissionDWP
11882
11883    To simplify handling of both DWO files ("object" files with the DWARF info)
11884    and DWP files (a file with the DWOs packaged up into one file), we treat
11885    DWP files as having a collection of virtual DWO files.  */
11886
11887 static hashval_t
11888 hash_dwo_file (const void *item)
11889 {
11890   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11891   hashval_t hash;
11892
11893   hash = htab_hash_string (dwo_file->dwo_name);
11894   if (dwo_file->comp_dir != NULL)
11895     hash += htab_hash_string (dwo_file->comp_dir);
11896   return hash;
11897 }
11898
11899 static int
11900 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11901 {
11902   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11903   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11904
11905   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11906     return 0;
11907   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11908     return lhs->comp_dir == rhs->comp_dir;
11909   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11910 }
11911
11912 /* Allocate a hash table for DWO files.  */
11913
11914 static htab_t
11915 allocate_dwo_file_hash_table (struct objfile *objfile)
11916 {
11917   return htab_create_alloc_ex (41,
11918                                hash_dwo_file,
11919                                eq_dwo_file,
11920                                NULL,
11921                                &objfile->objfile_obstack,
11922                                hashtab_obstack_allocate,
11923                                dummy_obstack_deallocate);
11924 }
11925
11926 /* Lookup DWO file DWO_NAME.  */
11927
11928 static void **
11929 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11930                       const char *dwo_name,
11931                       const char *comp_dir)
11932 {
11933   struct dwo_file find_entry;
11934   void **slot;
11935
11936   if (dwarf2_per_objfile->dwo_files == NULL)
11937     dwarf2_per_objfile->dwo_files
11938       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11939
11940   memset (&find_entry, 0, sizeof (find_entry));
11941   find_entry.dwo_name = dwo_name;
11942   find_entry.comp_dir = comp_dir;
11943   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11944
11945   return slot;
11946 }
11947
11948 static hashval_t
11949 hash_dwo_unit (const void *item)
11950 {
11951   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11952
11953   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11954   return dwo_unit->signature;
11955 }
11956
11957 static int
11958 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11959 {
11960   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11961   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11962
11963   /* The signature is assumed to be unique within the DWO file.
11964      So while object file CU dwo_id's always have the value zero,
11965      that's OK, assuming each object file DWO file has only one CU,
11966      and that's the rule for now.  */
11967   return lhs->signature == rhs->signature;
11968 }
11969
11970 /* Allocate a hash table for DWO CUs,TUs.
11971    There is one of these tables for each of CUs,TUs for each DWO file.  */
11972
11973 static htab_t
11974 allocate_dwo_unit_table (struct objfile *objfile)
11975 {
11976   /* Start out with a pretty small number.
11977      Generally DWO files contain only one CU and maybe some TUs.  */
11978   return htab_create_alloc_ex (3,
11979                                hash_dwo_unit,
11980                                eq_dwo_unit,
11981                                NULL,
11982                                &objfile->objfile_obstack,
11983                                hashtab_obstack_allocate,
11984                                dummy_obstack_deallocate);
11985 }
11986
11987 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11988
11989 struct create_dwo_cu_data
11990 {
11991   struct dwo_file *dwo_file;
11992   struct dwo_unit dwo_unit;
11993 };
11994
11995 /* die_reader_func for create_dwo_cu.  */
11996
11997 static void
11998 create_dwo_cu_reader (const struct die_reader_specs *reader,
11999                       const gdb_byte *info_ptr,
12000                       struct die_info *comp_unit_die,
12001                       int has_children,
12002                       void *datap)
12003 {
12004   struct dwarf2_cu *cu = reader->cu;
12005   sect_offset sect_off = cu->per_cu->sect_off;
12006   struct dwarf2_section_info *section = cu->per_cu->section;
12007   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
12008   struct dwo_file *dwo_file = data->dwo_file;
12009   struct dwo_unit *dwo_unit = &data->dwo_unit;
12010   struct attribute *attr;
12011
12012   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
12013   if (attr == NULL)
12014     {
12015       complaint (&symfile_complaints,
12016                  _("Dwarf Error: debug entry at offset 0x%x is missing"
12017                    " its dwo_id [in module %s]"),
12018                  to_underlying (sect_off), dwo_file->dwo_name);
12019       return;
12020     }
12021
12022   dwo_unit->dwo_file = dwo_file;
12023   dwo_unit->signature = DW_UNSND (attr);
12024   dwo_unit->section = section;
12025   dwo_unit->sect_off = sect_off;
12026   dwo_unit->length = cu->per_cu->length;
12027
12028   if (dwarf_read_debug)
12029     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
12030                         to_underlying (sect_off),
12031                         hex_string (dwo_unit->signature));
12032 }
12033
12034 /* Create the dwo_units for the CUs in a DWO_FILE.
12035    Note: This function processes DWO files only, not DWP files.  */
12036
12037 static void
12038 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12039                        struct dwo_file &dwo_file, dwarf2_section_info &section,
12040                        htab_t &cus_htab)
12041 {
12042   struct objfile *objfile = dwarf2_per_objfile->objfile;
12043   const gdb_byte *info_ptr, *end_ptr;
12044
12045   dwarf2_read_section (objfile, &section);
12046   info_ptr = section.buffer;
12047
12048   if (info_ptr == NULL)
12049     return;
12050
12051   if (dwarf_read_debug)
12052     {
12053       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
12054                           get_section_name (&section),
12055                           get_section_file_name (&section));
12056     }
12057
12058   end_ptr = info_ptr + section.size;
12059   while (info_ptr < end_ptr)
12060     {
12061       struct dwarf2_per_cu_data per_cu;
12062       struct create_dwo_cu_data create_dwo_cu_data;
12063       struct dwo_unit *dwo_unit;
12064       void **slot;
12065       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
12066
12067       memset (&create_dwo_cu_data.dwo_unit, 0,
12068               sizeof (create_dwo_cu_data.dwo_unit));
12069       memset (&per_cu, 0, sizeof (per_cu));
12070       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
12071       per_cu.is_debug_types = 0;
12072       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
12073       per_cu.section = &section;
12074       create_dwo_cu_data.dwo_file = &dwo_file;
12075
12076       init_cutu_and_read_dies_no_follow (
12077           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
12078       info_ptr += per_cu.length;
12079
12080       // If the unit could not be parsed, skip it.
12081       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
12082         continue;
12083
12084       if (cus_htab == NULL)
12085         cus_htab = allocate_dwo_unit_table (objfile);
12086
12087       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12088       *dwo_unit = create_dwo_cu_data.dwo_unit;
12089       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
12090       gdb_assert (slot != NULL);
12091       if (*slot != NULL)
12092         {
12093           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
12094           sect_offset dup_sect_off = dup_cu->sect_off;
12095
12096           complaint (&symfile_complaints,
12097                      _("debug cu entry at offset 0x%x is duplicate to"
12098                        " the entry at offset 0x%x, signature %s"),
12099                      to_underlying (sect_off), to_underlying (dup_sect_off),
12100                      hex_string (dwo_unit->signature));
12101         }
12102       *slot = (void *)dwo_unit;
12103     }
12104 }
12105
12106 /* DWP file .debug_{cu,tu}_index section format:
12107    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
12108
12109    DWP Version 1:
12110
12111    Both index sections have the same format, and serve to map a 64-bit
12112    signature to a set of section numbers.  Each section begins with a header,
12113    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
12114    indexes, and a pool of 32-bit section numbers.  The index sections will be
12115    aligned at 8-byte boundaries in the file.
12116
12117    The index section header consists of:
12118
12119     V, 32 bit version number
12120     -, 32 bits unused
12121     N, 32 bit number of compilation units or type units in the index
12122     M, 32 bit number of slots in the hash table
12123
12124    Numbers are recorded using the byte order of the application binary.
12125
12126    The hash table begins at offset 16 in the section, and consists of an array
12127    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12128    order of the application binary).  Unused slots in the hash table are 0.
12129    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12130
12131    The parallel table begins immediately after the hash table
12132    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12133    array of 32-bit indexes (using the byte order of the application binary),
12134    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12135    table contains a 32-bit index into the pool of section numbers.  For unused
12136    hash table slots, the corresponding entry in the parallel table will be 0.
12137
12138    The pool of section numbers begins immediately following the hash table
12139    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12140    section numbers consists of an array of 32-bit words (using the byte order
12141    of the application binary).  Each item in the array is indexed starting
12142    from 0.  The hash table entry provides the index of the first section
12143    number in the set.  Additional section numbers in the set follow, and the
12144    set is terminated by a 0 entry (section number 0 is not used in ELF).
12145
12146    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12147    section must be the first entry in the set, and the .debug_abbrev.dwo must
12148    be the second entry. Other members of the set may follow in any order.
12149
12150    ---
12151
12152    DWP Version 2:
12153
12154    DWP Version 2 combines all the .debug_info, etc. sections into one,
12155    and the entries in the index tables are now offsets into these sections.
12156    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12157    section.
12158
12159    Index Section Contents:
12160     Header
12161     Hash Table of Signatures   dwp_hash_table.hash_table
12162     Parallel Table of Indices  dwp_hash_table.unit_table
12163     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12164     Table of Section Sizes     dwp_hash_table.v2.sizes
12165
12166    The index section header consists of:
12167
12168     V, 32 bit version number
12169     L, 32 bit number of columns in the table of section offsets
12170     N, 32 bit number of compilation units or type units in the index
12171     M, 32 bit number of slots in the hash table
12172
12173    Numbers are recorded using the byte order of the application binary.
12174
12175    The hash table has the same format as version 1.
12176    The parallel table of indices has the same format as version 1,
12177    except that the entries are origin-1 indices into the table of sections
12178    offsets and the table of section sizes.
12179
12180    The table of offsets begins immediately following the parallel table
12181    (at offset 16 + 12 * M from the beginning of the section).  The table is
12182    a two-dimensional array of 32-bit words (using the byte order of the
12183    application binary), with L columns and N+1 rows, in row-major order.
12184    Each row in the array is indexed starting from 0.  The first row provides
12185    a key to the remaining rows: each column in this row provides an identifier
12186    for a debug section, and the offsets in the same column of subsequent rows
12187    refer to that section.  The section identifiers are:
12188
12189     DW_SECT_INFO         1  .debug_info.dwo
12190     DW_SECT_TYPES        2  .debug_types.dwo
12191     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12192     DW_SECT_LINE         4  .debug_line.dwo
12193     DW_SECT_LOC          5  .debug_loc.dwo
12194     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12195     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12196     DW_SECT_MACRO        8  .debug_macro.dwo
12197
12198    The offsets provided by the CU and TU index sections are the base offsets
12199    for the contributions made by each CU or TU to the corresponding section
12200    in the package file.  Each CU and TU header contains an abbrev_offset
12201    field, used to find the abbreviations table for that CU or TU within the
12202    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12203    be interpreted as relative to the base offset given in the index section.
12204    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12205    should be interpreted as relative to the base offset for .debug_line.dwo,
12206    and offsets into other debug sections obtained from DWARF attributes should
12207    also be interpreted as relative to the corresponding base offset.
12208
12209    The table of sizes begins immediately following the table of offsets.
12210    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12211    with L columns and N rows, in row-major order.  Each row in the array is
12212    indexed starting from 1 (row 0 is shared by the two tables).
12213
12214    ---
12215
12216    Hash table lookup is handled the same in version 1 and 2:
12217
12218    We assume that N and M will not exceed 2^32 - 1.
12219    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12220
12221    Given a 64-bit compilation unit signature or a type signature S, an entry
12222    in the hash table is located as follows:
12223
12224    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12225       the low-order k bits all set to 1.
12226
12227    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12228
12229    3) If the hash table entry at index H matches the signature, use that
12230       entry.  If the hash table entry at index H is unused (all zeroes),
12231       terminate the search: the signature is not present in the table.
12232
12233    4) Let H = (H + H') modulo M. Repeat at Step 3.
12234
12235    Because M > N and H' and M are relatively prime, the search is guaranteed
12236    to stop at an unused slot or find the match.  */
12237
12238 /* Create a hash table to map DWO IDs to their CU/TU entry in
12239    .debug_{info,types}.dwo in DWP_FILE.
12240    Returns NULL if there isn't one.
12241    Note: This function processes DWP files only, not DWO files.  */
12242
12243 static struct dwp_hash_table *
12244 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12245                        struct dwp_file *dwp_file, int is_debug_types)
12246 {
12247   struct objfile *objfile = dwarf2_per_objfile->objfile;
12248   bfd *dbfd = dwp_file->dbfd;
12249   const gdb_byte *index_ptr, *index_end;
12250   struct dwarf2_section_info *index;
12251   uint32_t version, nr_columns, nr_units, nr_slots;
12252   struct dwp_hash_table *htab;
12253
12254   if (is_debug_types)
12255     index = &dwp_file->sections.tu_index;
12256   else
12257     index = &dwp_file->sections.cu_index;
12258
12259   if (dwarf2_section_empty_p (index))
12260     return NULL;
12261   dwarf2_read_section (objfile, index);
12262
12263   index_ptr = index->buffer;
12264   index_end = index_ptr + index->size;
12265
12266   version = read_4_bytes (dbfd, index_ptr);
12267   index_ptr += 4;
12268   if (version == 2)
12269     nr_columns = read_4_bytes (dbfd, index_ptr);
12270   else
12271     nr_columns = 0;
12272   index_ptr += 4;
12273   nr_units = read_4_bytes (dbfd, index_ptr);
12274   index_ptr += 4;
12275   nr_slots = read_4_bytes (dbfd, index_ptr);
12276   index_ptr += 4;
12277
12278   if (version != 1 && version != 2)
12279     {
12280       error (_("Dwarf Error: unsupported DWP file version (%s)"
12281                " [in module %s]"),
12282              pulongest (version), dwp_file->name);
12283     }
12284   if (nr_slots != (nr_slots & -nr_slots))
12285     {
12286       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12287                " is not power of 2 [in module %s]"),
12288              pulongest (nr_slots), dwp_file->name);
12289     }
12290
12291   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12292   htab->version = version;
12293   htab->nr_columns = nr_columns;
12294   htab->nr_units = nr_units;
12295   htab->nr_slots = nr_slots;
12296   htab->hash_table = index_ptr;
12297   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12298
12299   /* Exit early if the table is empty.  */
12300   if (nr_slots == 0 || nr_units == 0
12301       || (version == 2 && nr_columns == 0))
12302     {
12303       /* All must be zero.  */
12304       if (nr_slots != 0 || nr_units != 0
12305           || (version == 2 && nr_columns != 0))
12306         {
12307           complaint (&symfile_complaints,
12308                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
12309                        " all zero [in modules %s]"),
12310                      dwp_file->name);
12311         }
12312       return htab;
12313     }
12314
12315   if (version == 1)
12316     {
12317       htab->section_pool.v1.indices =
12318         htab->unit_table + sizeof (uint32_t) * nr_slots;
12319       /* It's harder to decide whether the section is too small in v1.
12320          V1 is deprecated anyway so we punt.  */
12321     }
12322   else
12323     {
12324       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12325       int *ids = htab->section_pool.v2.section_ids;
12326       /* Reverse map for error checking.  */
12327       int ids_seen[DW_SECT_MAX + 1];
12328       int i;
12329
12330       if (nr_columns < 2)
12331         {
12332           error (_("Dwarf Error: bad DWP hash table, too few columns"
12333                    " in section table [in module %s]"),
12334                  dwp_file->name);
12335         }
12336       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12337         {
12338           error (_("Dwarf Error: bad DWP hash table, too many columns"
12339                    " in section table [in module %s]"),
12340                  dwp_file->name);
12341         }
12342       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12343       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12344       for (i = 0; i < nr_columns; ++i)
12345         {
12346           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12347
12348           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12349             {
12350               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12351                        " in section table [in module %s]"),
12352                      id, dwp_file->name);
12353             }
12354           if (ids_seen[id] != -1)
12355             {
12356               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12357                        " id %d in section table [in module %s]"),
12358                      id, dwp_file->name);
12359             }
12360           ids_seen[id] = i;
12361           ids[i] = id;
12362         }
12363       /* Must have exactly one info or types section.  */
12364       if (((ids_seen[DW_SECT_INFO] != -1)
12365            + (ids_seen[DW_SECT_TYPES] != -1))
12366           != 1)
12367         {
12368           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12369                    " DWO info/types section [in module %s]"),
12370                  dwp_file->name);
12371         }
12372       /* Must have an abbrev section.  */
12373       if (ids_seen[DW_SECT_ABBREV] == -1)
12374         {
12375           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12376                    " section [in module %s]"),
12377                  dwp_file->name);
12378         }
12379       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12380       htab->section_pool.v2.sizes =
12381         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12382                                          * nr_units * nr_columns);
12383       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12384                                           * nr_units * nr_columns))
12385           > index_end)
12386         {
12387           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12388                    " [in module %s]"),
12389                  dwp_file->name);
12390         }
12391     }
12392
12393   return htab;
12394 }
12395
12396 /* Update SECTIONS with the data from SECTP.
12397
12398    This function is like the other "locate" section routines that are
12399    passed to bfd_map_over_sections, but in this context the sections to
12400    read comes from the DWP V1 hash table, not the full ELF section table.
12401
12402    The result is non-zero for success, or zero if an error was found.  */
12403
12404 static int
12405 locate_v1_virtual_dwo_sections (asection *sectp,
12406                                 struct virtual_v1_dwo_sections *sections)
12407 {
12408   const struct dwop_section_names *names = &dwop_section_names;
12409
12410   if (section_is_p (sectp->name, &names->abbrev_dwo))
12411     {
12412       /* There can be only one.  */
12413       if (sections->abbrev.s.section != NULL)
12414         return 0;
12415       sections->abbrev.s.section = sectp;
12416       sections->abbrev.size = bfd_get_section_size (sectp);
12417     }
12418   else if (section_is_p (sectp->name, &names->info_dwo)
12419            || section_is_p (sectp->name, &names->types_dwo))
12420     {
12421       /* There can be only one.  */
12422       if (sections->info_or_types.s.section != NULL)
12423         return 0;
12424       sections->info_or_types.s.section = sectp;
12425       sections->info_or_types.size = bfd_get_section_size (sectp);
12426     }
12427   else if (section_is_p (sectp->name, &names->line_dwo))
12428     {
12429       /* There can be only one.  */
12430       if (sections->line.s.section != NULL)
12431         return 0;
12432       sections->line.s.section = sectp;
12433       sections->line.size = bfd_get_section_size (sectp);
12434     }
12435   else if (section_is_p (sectp->name, &names->loc_dwo))
12436     {
12437       /* There can be only one.  */
12438       if (sections->loc.s.section != NULL)
12439         return 0;
12440       sections->loc.s.section = sectp;
12441       sections->loc.size = bfd_get_section_size (sectp);
12442     }
12443   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12444     {
12445       /* There can be only one.  */
12446       if (sections->macinfo.s.section != NULL)
12447         return 0;
12448       sections->macinfo.s.section = sectp;
12449       sections->macinfo.size = bfd_get_section_size (sectp);
12450     }
12451   else if (section_is_p (sectp->name, &names->macro_dwo))
12452     {
12453       /* There can be only one.  */
12454       if (sections->macro.s.section != NULL)
12455         return 0;
12456       sections->macro.s.section = sectp;
12457       sections->macro.size = bfd_get_section_size (sectp);
12458     }
12459   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12460     {
12461       /* There can be only one.  */
12462       if (sections->str_offsets.s.section != NULL)
12463         return 0;
12464       sections->str_offsets.s.section = sectp;
12465       sections->str_offsets.size = bfd_get_section_size (sectp);
12466     }
12467   else
12468     {
12469       /* No other kind of section is valid.  */
12470       return 0;
12471     }
12472
12473   return 1;
12474 }
12475
12476 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12477    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12478    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12479    This is for DWP version 1 files.  */
12480
12481 static struct dwo_unit *
12482 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12483                            struct dwp_file *dwp_file,
12484                            uint32_t unit_index,
12485                            const char *comp_dir,
12486                            ULONGEST signature, int is_debug_types)
12487 {
12488   struct objfile *objfile = dwarf2_per_objfile->objfile;
12489   const struct dwp_hash_table *dwp_htab =
12490     is_debug_types ? dwp_file->tus : dwp_file->cus;
12491   bfd *dbfd = dwp_file->dbfd;
12492   const char *kind = is_debug_types ? "TU" : "CU";
12493   struct dwo_file *dwo_file;
12494   struct dwo_unit *dwo_unit;
12495   struct virtual_v1_dwo_sections sections;
12496   void **dwo_file_slot;
12497   int i;
12498
12499   gdb_assert (dwp_file->version == 1);
12500
12501   if (dwarf_read_debug)
12502     {
12503       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12504                           kind,
12505                           pulongest (unit_index), hex_string (signature),
12506                           dwp_file->name);
12507     }
12508
12509   /* Fetch the sections of this DWO unit.
12510      Put a limit on the number of sections we look for so that bad data
12511      doesn't cause us to loop forever.  */
12512
12513 #define MAX_NR_V1_DWO_SECTIONS \
12514   (1 /* .debug_info or .debug_types */ \
12515    + 1 /* .debug_abbrev */ \
12516    + 1 /* .debug_line */ \
12517    + 1 /* .debug_loc */ \
12518    + 1 /* .debug_str_offsets */ \
12519    + 1 /* .debug_macro or .debug_macinfo */ \
12520    + 1 /* trailing zero */)
12521
12522   memset (&sections, 0, sizeof (sections));
12523
12524   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12525     {
12526       asection *sectp;
12527       uint32_t section_nr =
12528         read_4_bytes (dbfd,
12529                       dwp_htab->section_pool.v1.indices
12530                       + (unit_index + i) * sizeof (uint32_t));
12531
12532       if (section_nr == 0)
12533         break;
12534       if (section_nr >= dwp_file->num_sections)
12535         {
12536           error (_("Dwarf Error: bad DWP hash table, section number too large"
12537                    " [in module %s]"),
12538                  dwp_file->name);
12539         }
12540
12541       sectp = dwp_file->elf_sections[section_nr];
12542       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12543         {
12544           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12545                    " [in module %s]"),
12546                  dwp_file->name);
12547         }
12548     }
12549
12550   if (i < 2
12551       || dwarf2_section_empty_p (&sections.info_or_types)
12552       || dwarf2_section_empty_p (&sections.abbrev))
12553     {
12554       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12555                " [in module %s]"),
12556              dwp_file->name);
12557     }
12558   if (i == MAX_NR_V1_DWO_SECTIONS)
12559     {
12560       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12561                " [in module %s]"),
12562              dwp_file->name);
12563     }
12564
12565   /* It's easier for the rest of the code if we fake a struct dwo_file and
12566      have dwo_unit "live" in that.  At least for now.
12567
12568      The DWP file can be made up of a random collection of CUs and TUs.
12569      However, for each CU + set of TUs that came from the same original DWO
12570      file, we can combine them back into a virtual DWO file to save space
12571      (fewer struct dwo_file objects to allocate).  Remember that for really
12572      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12573
12574   std::string virtual_dwo_name =
12575     string_printf ("virtual-dwo/%d-%d-%d-%d",
12576                    get_section_id (&sections.abbrev),
12577                    get_section_id (&sections.line),
12578                    get_section_id (&sections.loc),
12579                    get_section_id (&sections.str_offsets));
12580   /* Can we use an existing virtual DWO file?  */
12581   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12582                                         virtual_dwo_name.c_str (),
12583                                         comp_dir);
12584   /* Create one if necessary.  */
12585   if (*dwo_file_slot == NULL)
12586     {
12587       if (dwarf_read_debug)
12588         {
12589           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12590                               virtual_dwo_name.c_str ());
12591         }
12592       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12593       dwo_file->dwo_name
12594         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12595                                         virtual_dwo_name.c_str (),
12596                                         virtual_dwo_name.size ());
12597       dwo_file->comp_dir = comp_dir;
12598       dwo_file->sections.abbrev = sections.abbrev;
12599       dwo_file->sections.line = sections.line;
12600       dwo_file->sections.loc = sections.loc;
12601       dwo_file->sections.macinfo = sections.macinfo;
12602       dwo_file->sections.macro = sections.macro;
12603       dwo_file->sections.str_offsets = sections.str_offsets;
12604       /* The "str" section is global to the entire DWP file.  */
12605       dwo_file->sections.str = dwp_file->sections.str;
12606       /* The info or types section is assigned below to dwo_unit,
12607          there's no need to record it in dwo_file.
12608          Also, we can't simply record type sections in dwo_file because
12609          we record a pointer into the vector in dwo_unit.  As we collect more
12610          types we'll grow the vector and eventually have to reallocate space
12611          for it, invalidating all copies of pointers into the previous
12612          contents.  */
12613       *dwo_file_slot = dwo_file;
12614     }
12615   else
12616     {
12617       if (dwarf_read_debug)
12618         {
12619           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12620                               virtual_dwo_name.c_str ());
12621         }
12622       dwo_file = (struct dwo_file *) *dwo_file_slot;
12623     }
12624
12625   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12626   dwo_unit->dwo_file = dwo_file;
12627   dwo_unit->signature = signature;
12628   dwo_unit->section =
12629     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12630   *dwo_unit->section = sections.info_or_types;
12631   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12632
12633   return dwo_unit;
12634 }
12635
12636 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12637    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12638    piece within that section used by a TU/CU, return a virtual section
12639    of just that piece.  */
12640
12641 static struct dwarf2_section_info
12642 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12643                        struct dwarf2_section_info *section,
12644                        bfd_size_type offset, bfd_size_type size)
12645 {
12646   struct dwarf2_section_info result;
12647   asection *sectp;
12648
12649   gdb_assert (section != NULL);
12650   gdb_assert (!section->is_virtual);
12651
12652   memset (&result, 0, sizeof (result));
12653   result.s.containing_section = section;
12654   result.is_virtual = 1;
12655
12656   if (size == 0)
12657     return result;
12658
12659   sectp = get_section_bfd_section (section);
12660
12661   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12662      bounds of the real section.  This is a pretty-rare event, so just
12663      flag an error (easier) instead of a warning and trying to cope.  */
12664   if (sectp == NULL
12665       || offset + size > bfd_get_section_size (sectp))
12666     {
12667       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12668                " in section %s [in module %s]"),
12669              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12670              objfile_name (dwarf2_per_objfile->objfile));
12671     }
12672
12673   result.virtual_offset = offset;
12674   result.size = size;
12675   return result;
12676 }
12677
12678 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12679    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12680    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12681    This is for DWP version 2 files.  */
12682
12683 static struct dwo_unit *
12684 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12685                            struct dwp_file *dwp_file,
12686                            uint32_t unit_index,
12687                            const char *comp_dir,
12688                            ULONGEST signature, int is_debug_types)
12689 {
12690   struct objfile *objfile = dwarf2_per_objfile->objfile;
12691   const struct dwp_hash_table *dwp_htab =
12692     is_debug_types ? dwp_file->tus : dwp_file->cus;
12693   bfd *dbfd = dwp_file->dbfd;
12694   const char *kind = is_debug_types ? "TU" : "CU";
12695   struct dwo_file *dwo_file;
12696   struct dwo_unit *dwo_unit;
12697   struct virtual_v2_dwo_sections sections;
12698   void **dwo_file_slot;
12699   int i;
12700
12701   gdb_assert (dwp_file->version == 2);
12702
12703   if (dwarf_read_debug)
12704     {
12705       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12706                           kind,
12707                           pulongest (unit_index), hex_string (signature),
12708                           dwp_file->name);
12709     }
12710
12711   /* Fetch the section offsets of this DWO unit.  */
12712
12713   memset (&sections, 0, sizeof (sections));
12714
12715   for (i = 0; i < dwp_htab->nr_columns; ++i)
12716     {
12717       uint32_t offset = read_4_bytes (dbfd,
12718                                       dwp_htab->section_pool.v2.offsets
12719                                       + (((unit_index - 1) * dwp_htab->nr_columns
12720                                           + i)
12721                                          * sizeof (uint32_t)));
12722       uint32_t size = read_4_bytes (dbfd,
12723                                     dwp_htab->section_pool.v2.sizes
12724                                     + (((unit_index - 1) * dwp_htab->nr_columns
12725                                         + i)
12726                                        * sizeof (uint32_t)));
12727
12728       switch (dwp_htab->section_pool.v2.section_ids[i])
12729         {
12730         case DW_SECT_INFO:
12731         case DW_SECT_TYPES:
12732           sections.info_or_types_offset = offset;
12733           sections.info_or_types_size = size;
12734           break;
12735         case DW_SECT_ABBREV:
12736           sections.abbrev_offset = offset;
12737           sections.abbrev_size = size;
12738           break;
12739         case DW_SECT_LINE:
12740           sections.line_offset = offset;
12741           sections.line_size = size;
12742           break;
12743         case DW_SECT_LOC:
12744           sections.loc_offset = offset;
12745           sections.loc_size = size;
12746           break;
12747         case DW_SECT_STR_OFFSETS:
12748           sections.str_offsets_offset = offset;
12749           sections.str_offsets_size = size;
12750           break;
12751         case DW_SECT_MACINFO:
12752           sections.macinfo_offset = offset;
12753           sections.macinfo_size = size;
12754           break;
12755         case DW_SECT_MACRO:
12756           sections.macro_offset = offset;
12757           sections.macro_size = size;
12758           break;
12759         }
12760     }
12761
12762   /* It's easier for the rest of the code if we fake a struct dwo_file and
12763      have dwo_unit "live" in that.  At least for now.
12764
12765      The DWP file can be made up of a random collection of CUs and TUs.
12766      However, for each CU + set of TUs that came from the same original DWO
12767      file, we can combine them back into a virtual DWO file to save space
12768      (fewer struct dwo_file objects to allocate).  Remember that for really
12769      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12770
12771   std::string virtual_dwo_name =
12772     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12773                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12774                    (long) (sections.line_size ? sections.line_offset : 0),
12775                    (long) (sections.loc_size ? sections.loc_offset : 0),
12776                    (long) (sections.str_offsets_size
12777                            ? sections.str_offsets_offset : 0));
12778   /* Can we use an existing virtual DWO file?  */
12779   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12780                                         virtual_dwo_name.c_str (),
12781                                         comp_dir);
12782   /* Create one if necessary.  */
12783   if (*dwo_file_slot == NULL)
12784     {
12785       if (dwarf_read_debug)
12786         {
12787           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12788                               virtual_dwo_name.c_str ());
12789         }
12790       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12791       dwo_file->dwo_name
12792         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12793                                         virtual_dwo_name.c_str (),
12794                                         virtual_dwo_name.size ());
12795       dwo_file->comp_dir = comp_dir;
12796       dwo_file->sections.abbrev =
12797         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12798                                sections.abbrev_offset, sections.abbrev_size);
12799       dwo_file->sections.line =
12800         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12801                                sections.line_offset, sections.line_size);
12802       dwo_file->sections.loc =
12803         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12804                                sections.loc_offset, sections.loc_size);
12805       dwo_file->sections.macinfo =
12806         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12807                                sections.macinfo_offset, sections.macinfo_size);
12808       dwo_file->sections.macro =
12809         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12810                                sections.macro_offset, sections.macro_size);
12811       dwo_file->sections.str_offsets =
12812         create_dwp_v2_section (dwarf2_per_objfile,
12813                                &dwp_file->sections.str_offsets,
12814                                sections.str_offsets_offset,
12815                                sections.str_offsets_size);
12816       /* The "str" section is global to the entire DWP file.  */
12817       dwo_file->sections.str = dwp_file->sections.str;
12818       /* The info or types section is assigned below to dwo_unit,
12819          there's no need to record it in dwo_file.
12820          Also, we can't simply record type sections in dwo_file because
12821          we record a pointer into the vector in dwo_unit.  As we collect more
12822          types we'll grow the vector and eventually have to reallocate space
12823          for it, invalidating all copies of pointers into the previous
12824          contents.  */
12825       *dwo_file_slot = dwo_file;
12826     }
12827   else
12828     {
12829       if (dwarf_read_debug)
12830         {
12831           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12832                               virtual_dwo_name.c_str ());
12833         }
12834       dwo_file = (struct dwo_file *) *dwo_file_slot;
12835     }
12836
12837   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12838   dwo_unit->dwo_file = dwo_file;
12839   dwo_unit->signature = signature;
12840   dwo_unit->section =
12841     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12842   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12843                                               is_debug_types
12844                                               ? &dwp_file->sections.types
12845                                               : &dwp_file->sections.info,
12846                                               sections.info_or_types_offset,
12847                                               sections.info_or_types_size);
12848   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12849
12850   return dwo_unit;
12851 }
12852
12853 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12854    Returns NULL if the signature isn't found.  */
12855
12856 static struct dwo_unit *
12857 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12858                         struct dwp_file *dwp_file, const char *comp_dir,
12859                         ULONGEST signature, int is_debug_types)
12860 {
12861   const struct dwp_hash_table *dwp_htab =
12862     is_debug_types ? dwp_file->tus : dwp_file->cus;
12863   bfd *dbfd = dwp_file->dbfd;
12864   uint32_t mask = dwp_htab->nr_slots - 1;
12865   uint32_t hash = signature & mask;
12866   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12867   unsigned int i;
12868   void **slot;
12869   struct dwo_unit find_dwo_cu;
12870
12871   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12872   find_dwo_cu.signature = signature;
12873   slot = htab_find_slot (is_debug_types
12874                          ? dwp_file->loaded_tus
12875                          : dwp_file->loaded_cus,
12876                          &find_dwo_cu, INSERT);
12877
12878   if (*slot != NULL)
12879     return (struct dwo_unit *) *slot;
12880
12881   /* Use a for loop so that we don't loop forever on bad debug info.  */
12882   for (i = 0; i < dwp_htab->nr_slots; ++i)
12883     {
12884       ULONGEST signature_in_table;
12885
12886       signature_in_table =
12887         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12888       if (signature_in_table == signature)
12889         {
12890           uint32_t unit_index =
12891             read_4_bytes (dbfd,
12892                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12893
12894           if (dwp_file->version == 1)
12895             {
12896               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12897                                                  dwp_file, unit_index,
12898                                                  comp_dir, signature,
12899                                                  is_debug_types);
12900             }
12901           else
12902             {
12903               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12904                                                  dwp_file, unit_index,
12905                                                  comp_dir, signature,
12906                                                  is_debug_types);
12907             }
12908           return (struct dwo_unit *) *slot;
12909         }
12910       if (signature_in_table == 0)
12911         return NULL;
12912       hash = (hash + hash2) & mask;
12913     }
12914
12915   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12916            " [in module %s]"),
12917          dwp_file->name);
12918 }
12919
12920 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12921    Open the file specified by FILE_NAME and hand it off to BFD for
12922    preliminary analysis.  Return a newly initialized bfd *, which
12923    includes a canonicalized copy of FILE_NAME.
12924    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12925    SEARCH_CWD is true if the current directory is to be searched.
12926    It will be searched before debug-file-directory.
12927    If successful, the file is added to the bfd include table of the
12928    objfile's bfd (see gdb_bfd_record_inclusion).
12929    If unable to find/open the file, return NULL.
12930    NOTE: This function is derived from symfile_bfd_open.  */
12931
12932 static gdb_bfd_ref_ptr
12933 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12934                     const char *file_name, int is_dwp, int search_cwd)
12935 {
12936   int desc, flags;
12937   char *absolute_name;
12938   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12939      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12940      to debug_file_directory.  */
12941   char *search_path;
12942   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12943
12944   if (search_cwd)
12945     {
12946       if (*debug_file_directory != '\0')
12947         search_path = concat (".", dirname_separator_string,
12948                               debug_file_directory, (char *) NULL);
12949       else
12950         search_path = xstrdup (".");
12951     }
12952   else
12953     search_path = xstrdup (debug_file_directory);
12954
12955   flags = OPF_RETURN_REALPATH;
12956   if (is_dwp)
12957     flags |= OPF_SEARCH_IN_PATH;
12958   desc = openp (search_path, flags, file_name,
12959                 O_RDONLY | O_BINARY, &absolute_name);
12960   xfree (search_path);
12961   if (desc < 0)
12962     return NULL;
12963
12964   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name, gnutarget, desc));
12965   xfree (absolute_name);
12966   if (sym_bfd == NULL)
12967     return NULL;
12968   bfd_set_cacheable (sym_bfd.get (), 1);
12969
12970   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12971     return NULL;
12972
12973   /* Success.  Record the bfd as having been included by the objfile's bfd.
12974      This is important because things like demangled_names_hash lives in the
12975      objfile's per_bfd space and may have references to things like symbol
12976      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12977   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12978
12979   return sym_bfd;
12980 }
12981
12982 /* Try to open DWO file FILE_NAME.
12983    COMP_DIR is the DW_AT_comp_dir attribute.
12984    The result is the bfd handle of the file.
12985    If there is a problem finding or opening the file, return NULL.
12986    Upon success, the canonicalized path of the file is stored in the bfd,
12987    same as symfile_bfd_open.  */
12988
12989 static gdb_bfd_ref_ptr
12990 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12991                const char *file_name, const char *comp_dir)
12992 {
12993   if (IS_ABSOLUTE_PATH (file_name))
12994     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12995                                0 /*is_dwp*/, 0 /*search_cwd*/);
12996
12997   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12998
12999   if (comp_dir != NULL)
13000     {
13001       char *path_to_try = concat (comp_dir, SLASH_STRING,
13002                                   file_name, (char *) NULL);
13003
13004       /* NOTE: If comp_dir is a relative path, this will also try the
13005          search path, which seems useful.  */
13006       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
13007                                                 path_to_try,
13008                                                 0 /*is_dwp*/,
13009                                                 1 /*search_cwd*/));
13010       xfree (path_to_try);
13011       if (abfd != NULL)
13012         return abfd;
13013     }
13014
13015   /* That didn't work, try debug-file-directory, which, despite its name,
13016      is a list of paths.  */
13017
13018   if (*debug_file_directory == '\0')
13019     return NULL;
13020
13021   return try_open_dwop_file (dwarf2_per_objfile, file_name,
13022                              0 /*is_dwp*/, 1 /*search_cwd*/);
13023 }
13024
13025 /* This function is mapped across the sections and remembers the offset and
13026    size of each of the DWO debugging sections we are interested in.  */
13027
13028 static void
13029 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
13030 {
13031   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
13032   const struct dwop_section_names *names = &dwop_section_names;
13033
13034   if (section_is_p (sectp->name, &names->abbrev_dwo))
13035     {
13036       dwo_sections->abbrev.s.section = sectp;
13037       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
13038     }
13039   else if (section_is_p (sectp->name, &names->info_dwo))
13040     {
13041       dwo_sections->info.s.section = sectp;
13042       dwo_sections->info.size = bfd_get_section_size (sectp);
13043     }
13044   else if (section_is_p (sectp->name, &names->line_dwo))
13045     {
13046       dwo_sections->line.s.section = sectp;
13047       dwo_sections->line.size = bfd_get_section_size (sectp);
13048     }
13049   else if (section_is_p (sectp->name, &names->loc_dwo))
13050     {
13051       dwo_sections->loc.s.section = sectp;
13052       dwo_sections->loc.size = bfd_get_section_size (sectp);
13053     }
13054   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13055     {
13056       dwo_sections->macinfo.s.section = sectp;
13057       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
13058     }
13059   else if (section_is_p (sectp->name, &names->macro_dwo))
13060     {
13061       dwo_sections->macro.s.section = sectp;
13062       dwo_sections->macro.size = bfd_get_section_size (sectp);
13063     }
13064   else if (section_is_p (sectp->name, &names->str_dwo))
13065     {
13066       dwo_sections->str.s.section = sectp;
13067       dwo_sections->str.size = bfd_get_section_size (sectp);
13068     }
13069   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13070     {
13071       dwo_sections->str_offsets.s.section = sectp;
13072       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
13073     }
13074   else if (section_is_p (sectp->name, &names->types_dwo))
13075     {
13076       struct dwarf2_section_info type_section;
13077
13078       memset (&type_section, 0, sizeof (type_section));
13079       type_section.s.section = sectp;
13080       type_section.size = bfd_get_section_size (sectp);
13081       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
13082                      &type_section);
13083     }
13084 }
13085
13086 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
13087    by PER_CU.  This is for the non-DWP case.
13088    The result is NULL if DWO_NAME can't be found.  */
13089
13090 static struct dwo_file *
13091 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
13092                         const char *dwo_name, const char *comp_dir)
13093 {
13094   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
13095   struct objfile *objfile = dwarf2_per_objfile->objfile;
13096   struct dwo_file *dwo_file;
13097   struct cleanup *cleanups;
13098
13099   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
13100   if (dbfd == NULL)
13101     {
13102       if (dwarf_read_debug)
13103         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
13104       return NULL;
13105     }
13106   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
13107   dwo_file->dwo_name = dwo_name;
13108   dwo_file->comp_dir = comp_dir;
13109   dwo_file->dbfd = dbfd.release ();
13110
13111   free_dwo_file_cleanup_data *cleanup_data = XNEW (free_dwo_file_cleanup_data);
13112   cleanup_data->dwo_file = dwo_file;
13113   cleanup_data->dwarf2_per_objfile = dwarf2_per_objfile;
13114
13115   cleanups = make_cleanup (free_dwo_file_cleanup, cleanup_data);
13116
13117   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
13118                          &dwo_file->sections);
13119
13120   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13121                          dwo_file->cus);
13122
13123   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file,
13124                                  dwo_file->sections.types, dwo_file->tus);
13125
13126   discard_cleanups (cleanups);
13127
13128   if (dwarf_read_debug)
13129     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13130
13131   return dwo_file;
13132 }
13133
13134 /* This function is mapped across the sections and remembers the offset and
13135    size of each of the DWP debugging sections common to version 1 and 2 that
13136    we are interested in.  */
13137
13138 static void
13139 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13140                                    void *dwp_file_ptr)
13141 {
13142   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13143   const struct dwop_section_names *names = &dwop_section_names;
13144   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13145
13146   /* Record the ELF section number for later lookup: this is what the
13147      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13148   gdb_assert (elf_section_nr < dwp_file->num_sections);
13149   dwp_file->elf_sections[elf_section_nr] = sectp;
13150
13151   /* Look for specific sections that we need.  */
13152   if (section_is_p (sectp->name, &names->str_dwo))
13153     {
13154       dwp_file->sections.str.s.section = sectp;
13155       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13156     }
13157   else if (section_is_p (sectp->name, &names->cu_index))
13158     {
13159       dwp_file->sections.cu_index.s.section = sectp;
13160       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13161     }
13162   else if (section_is_p (sectp->name, &names->tu_index))
13163     {
13164       dwp_file->sections.tu_index.s.section = sectp;
13165       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13166     }
13167 }
13168
13169 /* This function is mapped across the sections and remembers the offset and
13170    size of each of the DWP version 2 debugging sections that we are interested
13171    in.  This is split into a separate function because we don't know if we
13172    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13173
13174 static void
13175 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13176 {
13177   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13178   const struct dwop_section_names *names = &dwop_section_names;
13179   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13180
13181   /* Record the ELF section number for later lookup: this is what the
13182      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13183   gdb_assert (elf_section_nr < dwp_file->num_sections);
13184   dwp_file->elf_sections[elf_section_nr] = sectp;
13185
13186   /* Look for specific sections that we need.  */
13187   if (section_is_p (sectp->name, &names->abbrev_dwo))
13188     {
13189       dwp_file->sections.abbrev.s.section = sectp;
13190       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13191     }
13192   else if (section_is_p (sectp->name, &names->info_dwo))
13193     {
13194       dwp_file->sections.info.s.section = sectp;
13195       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13196     }
13197   else if (section_is_p (sectp->name, &names->line_dwo))
13198     {
13199       dwp_file->sections.line.s.section = sectp;
13200       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13201     }
13202   else if (section_is_p (sectp->name, &names->loc_dwo))
13203     {
13204       dwp_file->sections.loc.s.section = sectp;
13205       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13206     }
13207   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13208     {
13209       dwp_file->sections.macinfo.s.section = sectp;
13210       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13211     }
13212   else if (section_is_p (sectp->name, &names->macro_dwo))
13213     {
13214       dwp_file->sections.macro.s.section = sectp;
13215       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13216     }
13217   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13218     {
13219       dwp_file->sections.str_offsets.s.section = sectp;
13220       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13221     }
13222   else if (section_is_p (sectp->name, &names->types_dwo))
13223     {
13224       dwp_file->sections.types.s.section = sectp;
13225       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13226     }
13227 }
13228
13229 /* Hash function for dwp_file loaded CUs/TUs.  */
13230
13231 static hashval_t
13232 hash_dwp_loaded_cutus (const void *item)
13233 {
13234   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13235
13236   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13237   return dwo_unit->signature;
13238 }
13239
13240 /* Equality function for dwp_file loaded CUs/TUs.  */
13241
13242 static int
13243 eq_dwp_loaded_cutus (const void *a, const void *b)
13244 {
13245   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13246   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13247
13248   return dua->signature == dub->signature;
13249 }
13250
13251 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13252
13253 static htab_t
13254 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13255 {
13256   return htab_create_alloc_ex (3,
13257                                hash_dwp_loaded_cutus,
13258                                eq_dwp_loaded_cutus,
13259                                NULL,
13260                                &objfile->objfile_obstack,
13261                                hashtab_obstack_allocate,
13262                                dummy_obstack_deallocate);
13263 }
13264
13265 /* Try to open DWP file FILE_NAME.
13266    The result is the bfd handle of the file.
13267    If there is a problem finding or opening the file, return NULL.
13268    Upon success, the canonicalized path of the file is stored in the bfd,
13269    same as symfile_bfd_open.  */
13270
13271 static gdb_bfd_ref_ptr
13272 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13273                const char *file_name)
13274 {
13275   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13276                                             1 /*is_dwp*/,
13277                                             1 /*search_cwd*/));
13278   if (abfd != NULL)
13279     return abfd;
13280
13281   /* Work around upstream bug 15652.
13282      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13283      [Whether that's a "bug" is debatable, but it is getting in our way.]
13284      We have no real idea where the dwp file is, because gdb's realpath-ing
13285      of the executable's path may have discarded the needed info.
13286      [IWBN if the dwp file name was recorded in the executable, akin to
13287      .gnu_debuglink, but that doesn't exist yet.]
13288      Strip the directory from FILE_NAME and search again.  */
13289   if (*debug_file_directory != '\0')
13290     {
13291       /* Don't implicitly search the current directory here.
13292          If the user wants to search "." to handle this case,
13293          it must be added to debug-file-directory.  */
13294       return try_open_dwop_file (dwarf2_per_objfile,
13295                                  lbasename (file_name), 1 /*is_dwp*/,
13296                                  0 /*search_cwd*/);
13297     }
13298
13299   return NULL;
13300 }
13301
13302 /* Initialize the use of the DWP file for the current objfile.
13303    By convention the name of the DWP file is ${objfile}.dwp.
13304    The result is NULL if it can't be found.  */
13305
13306 static struct dwp_file *
13307 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13308 {
13309   struct objfile *objfile = dwarf2_per_objfile->objfile;
13310   struct dwp_file *dwp_file;
13311
13312   /* Try to find first .dwp for the binary file before any symbolic links
13313      resolving.  */
13314
13315   /* If the objfile is a debug file, find the name of the real binary
13316      file and get the name of dwp file from there.  */
13317   std::string dwp_name;
13318   if (objfile->separate_debug_objfile_backlink != NULL)
13319     {
13320       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13321       const char *backlink_basename = lbasename (backlink->original_name);
13322
13323       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13324     }
13325   else
13326     dwp_name = objfile->original_name;
13327
13328   dwp_name += ".dwp";
13329
13330   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13331   if (dbfd == NULL
13332       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13333     {
13334       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13335       dwp_name = objfile_name (objfile);
13336       dwp_name += ".dwp";
13337       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13338     }
13339
13340   if (dbfd == NULL)
13341     {
13342       if (dwarf_read_debug)
13343         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13344       return NULL;
13345     }
13346   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
13347   dwp_file->name = bfd_get_filename (dbfd.get ());
13348   dwp_file->dbfd = dbfd.release ();
13349
13350   /* +1: section 0 is unused */
13351   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13352   dwp_file->elf_sections =
13353     OBSTACK_CALLOC (&objfile->objfile_obstack,
13354                     dwp_file->num_sections, asection *);
13355
13356   bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_common_dwp_sections,
13357                          dwp_file);
13358
13359   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file, 0);
13360
13361   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file, 1);
13362
13363   /* The DWP file version is stored in the hash table.  Oh well.  */
13364   if (dwp_file->cus && dwp_file->tus
13365       && dwp_file->cus->version != dwp_file->tus->version)
13366     {
13367       /* Technically speaking, we should try to limp along, but this is
13368          pretty bizarre.  We use pulongest here because that's the established
13369          portability solution (e.g, we cannot use %u for uint32_t).  */
13370       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13371                " TU version %s [in DWP file %s]"),
13372              pulongest (dwp_file->cus->version),
13373              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13374     }
13375
13376   if (dwp_file->cus)
13377     dwp_file->version = dwp_file->cus->version;
13378   else if (dwp_file->tus)
13379     dwp_file->version = dwp_file->tus->version;
13380   else
13381     dwp_file->version = 2;
13382
13383   if (dwp_file->version == 2)
13384     bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,
13385                            dwp_file);
13386
13387   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13388   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13389
13390   if (dwarf_read_debug)
13391     {
13392       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13393       fprintf_unfiltered (gdb_stdlog,
13394                           "    %s CUs, %s TUs\n",
13395                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13396                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13397     }
13398
13399   return dwp_file;
13400 }
13401
13402 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13403
13404 static struct dwp_file *
13405 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13406 {
13407   if (! dwarf2_per_objfile->dwp_checked)
13408     {
13409       dwarf2_per_objfile->dwp_file
13410         = open_and_init_dwp_file (dwarf2_per_objfile);
13411       dwarf2_per_objfile->dwp_checked = 1;
13412     }
13413   return dwarf2_per_objfile->dwp_file;
13414 }
13415
13416 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13417    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13418    or in the DWP file for the objfile, referenced by THIS_UNIT.
13419    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13420    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13421
13422    This is called, for example, when wanting to read a variable with a
13423    complex location.  Therefore we don't want to do file i/o for every call.
13424    Therefore we don't want to look for a DWO file on every call.
13425    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13426    then we check if we've already seen DWO_NAME, and only THEN do we check
13427    for a DWO file.
13428
13429    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13430    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13431
13432 static struct dwo_unit *
13433 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13434                  const char *dwo_name, const char *comp_dir,
13435                  ULONGEST signature, int is_debug_types)
13436 {
13437   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13438   struct objfile *objfile = dwarf2_per_objfile->objfile;
13439   const char *kind = is_debug_types ? "TU" : "CU";
13440   void **dwo_file_slot;
13441   struct dwo_file *dwo_file;
13442   struct dwp_file *dwp_file;
13443
13444   /* First see if there's a DWP file.
13445      If we have a DWP file but didn't find the DWO inside it, don't
13446      look for the original DWO file.  It makes gdb behave differently
13447      depending on whether one is debugging in the build tree.  */
13448
13449   dwp_file = get_dwp_file (dwarf2_per_objfile);
13450   if (dwp_file != NULL)
13451     {
13452       const struct dwp_hash_table *dwp_htab =
13453         is_debug_types ? dwp_file->tus : dwp_file->cus;
13454
13455       if (dwp_htab != NULL)
13456         {
13457           struct dwo_unit *dwo_cutu =
13458             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13459                                     signature, is_debug_types);
13460
13461           if (dwo_cutu != NULL)
13462             {
13463               if (dwarf_read_debug)
13464                 {
13465                   fprintf_unfiltered (gdb_stdlog,
13466                                       "Virtual DWO %s %s found: @%s\n",
13467                                       kind, hex_string (signature),
13468                                       host_address_to_string (dwo_cutu));
13469                 }
13470               return dwo_cutu;
13471             }
13472         }
13473     }
13474   else
13475     {
13476       /* No DWP file, look for the DWO file.  */
13477
13478       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13479                                             dwo_name, comp_dir);
13480       if (*dwo_file_slot == NULL)
13481         {
13482           /* Read in the file and build a table of the CUs/TUs it contains.  */
13483           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13484         }
13485       /* NOTE: This will be NULL if unable to open the file.  */
13486       dwo_file = (struct dwo_file *) *dwo_file_slot;
13487
13488       if (dwo_file != NULL)
13489         {
13490           struct dwo_unit *dwo_cutu = NULL;
13491
13492           if (is_debug_types && dwo_file->tus)
13493             {
13494               struct dwo_unit find_dwo_cutu;
13495
13496               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13497               find_dwo_cutu.signature = signature;
13498               dwo_cutu
13499                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13500             }
13501           else if (!is_debug_types && dwo_file->cus)
13502             {
13503               struct dwo_unit find_dwo_cutu;
13504
13505               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13506               find_dwo_cutu.signature = signature;
13507               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13508                                                        &find_dwo_cutu);
13509             }
13510
13511           if (dwo_cutu != NULL)
13512             {
13513               if (dwarf_read_debug)
13514                 {
13515                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13516                                       kind, dwo_name, hex_string (signature),
13517                                       host_address_to_string (dwo_cutu));
13518                 }
13519               return dwo_cutu;
13520             }
13521         }
13522     }
13523
13524   /* We didn't find it.  This could mean a dwo_id mismatch, or
13525      someone deleted the DWO/DWP file, or the search path isn't set up
13526      correctly to find the file.  */
13527
13528   if (dwarf_read_debug)
13529     {
13530       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13531                           kind, dwo_name, hex_string (signature));
13532     }
13533
13534   /* This is a warning and not a complaint because it can be caused by
13535      pilot error (e.g., user accidentally deleting the DWO).  */
13536   {
13537     /* Print the name of the DWP file if we looked there, helps the user
13538        better diagnose the problem.  */
13539     std::string dwp_text;
13540
13541     if (dwp_file != NULL)
13542       dwp_text = string_printf (" [in DWP file %s]",
13543                                 lbasename (dwp_file->name));
13544
13545     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
13546                " [in module %s]"),
13547              kind, dwo_name, hex_string (signature),
13548              dwp_text.c_str (),
13549              this_unit->is_debug_types ? "TU" : "CU",
13550              to_underlying (this_unit->sect_off), objfile_name (objfile));
13551   }
13552   return NULL;
13553 }
13554
13555 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13556    See lookup_dwo_cutu_unit for details.  */
13557
13558 static struct dwo_unit *
13559 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13560                       const char *dwo_name, const char *comp_dir,
13561                       ULONGEST signature)
13562 {
13563   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13564 }
13565
13566 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13567    See lookup_dwo_cutu_unit for details.  */
13568
13569 static struct dwo_unit *
13570 lookup_dwo_type_unit (struct signatured_type *this_tu,
13571                       const char *dwo_name, const char *comp_dir)
13572 {
13573   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13574 }
13575
13576 /* Traversal function for queue_and_load_all_dwo_tus.  */
13577
13578 static int
13579 queue_and_load_dwo_tu (void **slot, void *info)
13580 {
13581   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13582   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13583   ULONGEST signature = dwo_unit->signature;
13584   struct signatured_type *sig_type =
13585     lookup_dwo_signatured_type (per_cu->cu, signature);
13586
13587   if (sig_type != NULL)
13588     {
13589       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13590
13591       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13592          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13593          while processing PER_CU.  */
13594       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13595         load_full_type_unit (sig_cu);
13596       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13597     }
13598
13599   return 1;
13600 }
13601
13602 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13603    The DWO may have the only definition of the type, though it may not be
13604    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13605    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13606
13607 static void
13608 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13609 {
13610   struct dwo_unit *dwo_unit;
13611   struct dwo_file *dwo_file;
13612
13613   gdb_assert (!per_cu->is_debug_types);
13614   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13615   gdb_assert (per_cu->cu != NULL);
13616
13617   dwo_unit = per_cu->cu->dwo_unit;
13618   gdb_assert (dwo_unit != NULL);
13619
13620   dwo_file = dwo_unit->dwo_file;
13621   if (dwo_file->tus != NULL)
13622     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13623 }
13624
13625 /* Free all resources associated with DWO_FILE.
13626    Close the DWO file and munmap the sections.
13627    All memory should be on the objfile obstack.  */
13628
13629 static void
13630 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
13631 {
13632
13633   /* Note: dbfd is NULL for virtual DWO files.  */
13634   gdb_bfd_unref (dwo_file->dbfd);
13635
13636   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13637 }
13638
13639 /* Wrapper for free_dwo_file for use in cleanups.  */
13640
13641 static void
13642 free_dwo_file_cleanup (void *arg)
13643 {
13644   struct free_dwo_file_cleanup_data *data
13645     = (struct free_dwo_file_cleanup_data *) arg;
13646   struct objfile *objfile = data->dwarf2_per_objfile->objfile;
13647
13648   free_dwo_file (data->dwo_file, objfile);
13649
13650   xfree (data);
13651 }
13652
13653 /* Traversal function for free_dwo_files.  */
13654
13655 static int
13656 free_dwo_file_from_slot (void **slot, void *info)
13657 {
13658   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13659   struct objfile *objfile = (struct objfile *) info;
13660
13661   free_dwo_file (dwo_file, objfile);
13662
13663   return 1;
13664 }
13665
13666 /* Free all resources associated with DWO_FILES.  */
13667
13668 static void
13669 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13670 {
13671   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13672 }
13673 \f
13674 /* Read in various DIEs.  */
13675
13676 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13677    Inherit only the children of the DW_AT_abstract_origin DIE not being
13678    already referenced by DW_AT_abstract_origin from the children of the
13679    current DIE.  */
13680
13681 static void
13682 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13683 {
13684   struct die_info *child_die;
13685   sect_offset *offsetp;
13686   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13687   struct die_info *origin_die;
13688   /* Iterator of the ORIGIN_DIE children.  */
13689   struct die_info *origin_child_die;
13690   struct attribute *attr;
13691   struct dwarf2_cu *origin_cu;
13692   struct pending **origin_previous_list_in_scope;
13693
13694   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13695   if (!attr)
13696     return;
13697
13698   /* Note that following die references may follow to a die in a
13699      different cu.  */
13700
13701   origin_cu = cu;
13702   origin_die = follow_die_ref (die, attr, &origin_cu);
13703
13704   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13705      symbols in.  */
13706   origin_previous_list_in_scope = origin_cu->list_in_scope;
13707   origin_cu->list_in_scope = cu->list_in_scope;
13708
13709   if (die->tag != origin_die->tag
13710       && !(die->tag == DW_TAG_inlined_subroutine
13711            && origin_die->tag == DW_TAG_subprogram))
13712     complaint (&symfile_complaints,
13713                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
13714                to_underlying (die->sect_off),
13715                to_underlying (origin_die->sect_off));
13716
13717   std::vector<sect_offset> offsets;
13718
13719   for (child_die = die->child;
13720        child_die && child_die->tag;
13721        child_die = sibling_die (child_die))
13722     {
13723       struct die_info *child_origin_die;
13724       struct dwarf2_cu *child_origin_cu;
13725
13726       /* We are trying to process concrete instance entries:
13727          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13728          it's not relevant to our analysis here. i.e. detecting DIEs that are
13729          present in the abstract instance but not referenced in the concrete
13730          one.  */
13731       if (child_die->tag == DW_TAG_call_site
13732           || child_die->tag == DW_TAG_GNU_call_site)
13733         continue;
13734
13735       /* For each CHILD_DIE, find the corresponding child of
13736          ORIGIN_DIE.  If there is more than one layer of
13737          DW_AT_abstract_origin, follow them all; there shouldn't be,
13738          but GCC versions at least through 4.4 generate this (GCC PR
13739          40573).  */
13740       child_origin_die = child_die;
13741       child_origin_cu = cu;
13742       while (1)
13743         {
13744           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13745                               child_origin_cu);
13746           if (attr == NULL)
13747             break;
13748           child_origin_die = follow_die_ref (child_origin_die, attr,
13749                                              &child_origin_cu);
13750         }
13751
13752       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13753          counterpart may exist.  */
13754       if (child_origin_die != child_die)
13755         {
13756           if (child_die->tag != child_origin_die->tag
13757               && !(child_die->tag == DW_TAG_inlined_subroutine
13758                    && child_origin_die->tag == DW_TAG_subprogram))
13759             complaint (&symfile_complaints,
13760                        _("Child DIE 0x%x and its abstract origin 0x%x have "
13761                          "different tags"),
13762                        to_underlying (child_die->sect_off),
13763                        to_underlying (child_origin_die->sect_off));
13764           if (child_origin_die->parent != origin_die)
13765             complaint (&symfile_complaints,
13766                        _("Child DIE 0x%x and its abstract origin 0x%x have "
13767                          "different parents"),
13768                        to_underlying (child_die->sect_off),
13769                        to_underlying (child_origin_die->sect_off));
13770           else
13771             offsets.push_back (child_origin_die->sect_off);
13772         }
13773     }
13774   std::sort (offsets.begin (), offsets.end ());
13775   sect_offset *offsets_end = offsets.data () + offsets.size ();
13776   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13777     if (offsetp[-1] == *offsetp)
13778       complaint (&symfile_complaints,
13779                  _("Multiple children of DIE 0x%x refer "
13780                    "to DIE 0x%x as their abstract origin"),
13781                  to_underlying (die->sect_off), to_underlying (*offsetp));
13782
13783   offsetp = offsets.data ();
13784   origin_child_die = origin_die->child;
13785   while (origin_child_die && origin_child_die->tag)
13786     {
13787       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13788       while (offsetp < offsets_end
13789              && *offsetp < origin_child_die->sect_off)
13790         offsetp++;
13791       if (offsetp >= offsets_end
13792           || *offsetp > origin_child_die->sect_off)
13793         {
13794           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13795              Check whether we're already processing ORIGIN_CHILD_DIE.
13796              This can happen with mutually referenced abstract_origins.
13797              PR 16581.  */
13798           if (!origin_child_die->in_process)
13799             process_die (origin_child_die, origin_cu);
13800         }
13801       origin_child_die = sibling_die (origin_child_die);
13802     }
13803   origin_cu->list_in_scope = origin_previous_list_in_scope;
13804 }
13805
13806 static void
13807 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13808 {
13809   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13810   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13811   struct context_stack *newobj;
13812   CORE_ADDR lowpc;
13813   CORE_ADDR highpc;
13814   struct die_info *child_die;
13815   struct attribute *attr, *call_line, *call_file;
13816   const char *name;
13817   CORE_ADDR baseaddr;
13818   struct block *block;
13819   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13820   std::vector<struct symbol *> template_args;
13821   struct template_symbol *templ_func = NULL;
13822
13823   if (inlined_func)
13824     {
13825       /* If we do not have call site information, we can't show the
13826          caller of this inlined function.  That's too confusing, so
13827          only use the scope for local variables.  */
13828       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13829       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13830       if (call_line == NULL || call_file == NULL)
13831         {
13832           read_lexical_block_scope (die, cu);
13833           return;
13834         }
13835     }
13836
13837   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13838
13839   name = dwarf2_name (die, cu);
13840
13841   /* Ignore functions with missing or empty names.  These are actually
13842      illegal according to the DWARF standard.  */
13843   if (name == NULL)
13844     {
13845       complaint (&symfile_complaints,
13846                  _("missing name for subprogram DIE at %d"),
13847                  to_underlying (die->sect_off));
13848       return;
13849     }
13850
13851   /* Ignore functions with missing or invalid low and high pc attributes.  */
13852   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13853       <= PC_BOUNDS_INVALID)
13854     {
13855       attr = dwarf2_attr (die, DW_AT_external, cu);
13856       if (!attr || !DW_UNSND (attr))
13857         complaint (&symfile_complaints,
13858                    _("cannot get low and high bounds "
13859                      "for subprogram DIE at %d"),
13860                    to_underlying (die->sect_off));
13861       return;
13862     }
13863
13864   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13865   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13866
13867   /* If we have any template arguments, then we must allocate a
13868      different sort of symbol.  */
13869   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13870     {
13871       if (child_die->tag == DW_TAG_template_type_param
13872           || child_die->tag == DW_TAG_template_value_param)
13873         {
13874           templ_func = allocate_template_symbol (objfile);
13875           templ_func->subclass = SYMBOL_TEMPLATE;
13876           break;
13877         }
13878     }
13879
13880   newobj = push_context (0, lowpc);
13881   newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
13882                                (struct symbol *) templ_func);
13883
13884   /* If there is a location expression for DW_AT_frame_base, record
13885      it.  */
13886   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13887   if (attr)
13888     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13889
13890   /* If there is a location for the static link, record it.  */
13891   newobj->static_link = NULL;
13892   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13893   if (attr)
13894     {
13895       newobj->static_link
13896         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13897       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13898     }
13899
13900   cu->list_in_scope = &local_symbols;
13901
13902   if (die->child != NULL)
13903     {
13904       child_die = die->child;
13905       while (child_die && child_die->tag)
13906         {
13907           if (child_die->tag == DW_TAG_template_type_param
13908               || child_die->tag == DW_TAG_template_value_param)
13909             {
13910               struct symbol *arg = new_symbol (child_die, NULL, cu);
13911
13912               if (arg != NULL)
13913                 template_args.push_back (arg);
13914             }
13915           else
13916             process_die (child_die, cu);
13917           child_die = sibling_die (child_die);
13918         }
13919     }
13920
13921   inherit_abstract_dies (die, cu);
13922
13923   /* If we have a DW_AT_specification, we might need to import using
13924      directives from the context of the specification DIE.  See the
13925      comment in determine_prefix.  */
13926   if (cu->language == language_cplus
13927       && dwarf2_attr (die, DW_AT_specification, cu))
13928     {
13929       struct dwarf2_cu *spec_cu = cu;
13930       struct die_info *spec_die = die_specification (die, &spec_cu);
13931
13932       while (spec_die)
13933         {
13934           child_die = spec_die->child;
13935           while (child_die && child_die->tag)
13936             {
13937               if (child_die->tag == DW_TAG_imported_module)
13938                 process_die (child_die, spec_cu);
13939               child_die = sibling_die (child_die);
13940             }
13941
13942           /* In some cases, GCC generates specification DIEs that
13943              themselves contain DW_AT_specification attributes.  */
13944           spec_die = die_specification (spec_die, &spec_cu);
13945         }
13946     }
13947
13948   newobj = pop_context ();
13949   /* Make a block for the local symbols within.  */
13950   block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
13951                         newobj->static_link, lowpc, highpc);
13952
13953   /* For C++, set the block's scope.  */
13954   if ((cu->language == language_cplus
13955        || cu->language == language_fortran
13956        || cu->language == language_d
13957        || cu->language == language_rust)
13958       && cu->processing_has_namespace_info)
13959     block_set_scope (block, determine_prefix (die, cu),
13960                      &objfile->objfile_obstack);
13961
13962   /* If we have address ranges, record them.  */
13963   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13964
13965   gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
13966
13967   /* Attach template arguments to function.  */
13968   if (!template_args.empty ())
13969     {
13970       gdb_assert (templ_func != NULL);
13971
13972       templ_func->n_template_arguments = template_args.size ();
13973       templ_func->template_arguments
13974         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13975                      templ_func->n_template_arguments);
13976       memcpy (templ_func->template_arguments,
13977               template_args.data (),
13978               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13979     }
13980
13981   /* In C++, we can have functions nested inside functions (e.g., when
13982      a function declares a class that has methods).  This means that
13983      when we finish processing a function scope, we may need to go
13984      back to building a containing block's symbol lists.  */
13985   local_symbols = newobj->locals;
13986   local_using_directives = newobj->local_using_directives;
13987
13988   /* If we've finished processing a top-level function, subsequent
13989      symbols go in the file symbol list.  */
13990   if (outermost_context_p ())
13991     cu->list_in_scope = &file_symbols;
13992 }
13993
13994 /* Process all the DIES contained within a lexical block scope.  Start
13995    a new scope, process the dies, and then close the scope.  */
13996
13997 static void
13998 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13999 {
14000   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14001   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14002   struct context_stack *newobj;
14003   CORE_ADDR lowpc, highpc;
14004   struct die_info *child_die;
14005   CORE_ADDR baseaddr;
14006
14007   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14008
14009   /* Ignore blocks with missing or invalid low and high pc attributes.  */
14010   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
14011      as multiple lexical blocks?  Handling children in a sane way would
14012      be nasty.  Might be easier to properly extend generic blocks to
14013      describe ranges.  */
14014   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
14015     {
14016     case PC_BOUNDS_NOT_PRESENT:
14017       /* DW_TAG_lexical_block has no attributes, process its children as if
14018          there was no wrapping by that DW_TAG_lexical_block.
14019          GCC does no longer produces such DWARF since GCC r224161.  */
14020       for (child_die = die->child;
14021            child_die != NULL && child_die->tag;
14022            child_die = sibling_die (child_die))
14023         process_die (child_die, cu);
14024       return;
14025     case PC_BOUNDS_INVALID:
14026       return;
14027     }
14028   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14029   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
14030
14031   push_context (0, lowpc);
14032   if (die->child != NULL)
14033     {
14034       child_die = die->child;
14035       while (child_die && child_die->tag)
14036         {
14037           process_die (child_die, cu);
14038           child_die = sibling_die (child_die);
14039         }
14040     }
14041   inherit_abstract_dies (die, cu);
14042   newobj = pop_context ();
14043
14044   if (local_symbols != NULL || local_using_directives != NULL)
14045     {
14046       struct block *block
14047         = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
14048                         newobj->start_addr, highpc);
14049
14050       /* Note that recording ranges after traversing children, as we
14051          do here, means that recording a parent's ranges entails
14052          walking across all its children's ranges as they appear in
14053          the address map, which is quadratic behavior.
14054
14055          It would be nicer to record the parent's ranges before
14056          traversing its children, simply overriding whatever you find
14057          there.  But since we don't even decide whether to create a
14058          block until after we've traversed its children, that's hard
14059          to do.  */
14060       dwarf2_record_block_ranges (die, block, baseaddr, cu);
14061     }
14062   local_symbols = newobj->locals;
14063   local_using_directives = newobj->local_using_directives;
14064 }
14065
14066 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
14067
14068 static void
14069 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
14070 {
14071   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14072   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14073   CORE_ADDR pc, baseaddr;
14074   struct attribute *attr;
14075   struct call_site *call_site, call_site_local;
14076   void **slot;
14077   int nparams;
14078   struct die_info *child_die;
14079
14080   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14081
14082   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
14083   if (attr == NULL)
14084     {
14085       /* This was a pre-DWARF-5 GNU extension alias
14086          for DW_AT_call_return_pc.  */
14087       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14088     }
14089   if (!attr)
14090     {
14091       complaint (&symfile_complaints,
14092                  _("missing DW_AT_call_return_pc for DW_TAG_call_site "
14093                    "DIE 0x%x [in module %s]"),
14094                  to_underlying (die->sect_off), objfile_name (objfile));
14095       return;
14096     }
14097   pc = attr_value_as_address (attr) + baseaddr;
14098   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
14099
14100   if (cu->call_site_htab == NULL)
14101     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
14102                                                NULL, &objfile->objfile_obstack,
14103                                                hashtab_obstack_allocate, NULL);
14104   call_site_local.pc = pc;
14105   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
14106   if (*slot != NULL)
14107     {
14108       complaint (&symfile_complaints,
14109                  _("Duplicate PC %s for DW_TAG_call_site "
14110                    "DIE 0x%x [in module %s]"),
14111                  paddress (gdbarch, pc), to_underlying (die->sect_off),
14112                  objfile_name (objfile));
14113       return;
14114     }
14115
14116   /* Count parameters at the caller.  */
14117
14118   nparams = 0;
14119   for (child_die = die->child; child_die && child_die->tag;
14120        child_die = sibling_die (child_die))
14121     {
14122       if (child_die->tag != DW_TAG_call_site_parameter
14123           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14124         {
14125           complaint (&symfile_complaints,
14126                      _("Tag %d is not DW_TAG_call_site_parameter in "
14127                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14128                      child_die->tag, to_underlying (child_die->sect_off),
14129                      objfile_name (objfile));
14130           continue;
14131         }
14132
14133       nparams++;
14134     }
14135
14136   call_site
14137     = ((struct call_site *)
14138        obstack_alloc (&objfile->objfile_obstack,
14139                       sizeof (*call_site)
14140                       + (sizeof (*call_site->parameter) * (nparams - 1))));
14141   *slot = call_site;
14142   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14143   call_site->pc = pc;
14144
14145   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14146       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14147     {
14148       struct die_info *func_die;
14149
14150       /* Skip also over DW_TAG_inlined_subroutine.  */
14151       for (func_die = die->parent;
14152            func_die && func_die->tag != DW_TAG_subprogram
14153            && func_die->tag != DW_TAG_subroutine_type;
14154            func_die = func_die->parent);
14155
14156       /* DW_AT_call_all_calls is a superset
14157          of DW_AT_call_all_tail_calls.  */
14158       if (func_die
14159           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14160           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14161           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14162           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14163         {
14164           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14165              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14166              both the initial caller containing the real return address PC and
14167              the final callee containing the current PC of a chain of tail
14168              calls do not need to have the tail call list complete.  But any
14169              function candidate for a virtual tail call frame searched via
14170              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14171              determined unambiguously.  */
14172         }
14173       else
14174         {
14175           struct type *func_type = NULL;
14176
14177           if (func_die)
14178             func_type = get_die_type (func_die, cu);
14179           if (func_type != NULL)
14180             {
14181               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14182
14183               /* Enlist this call site to the function.  */
14184               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14185               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14186             }
14187           else
14188             complaint (&symfile_complaints,
14189                        _("Cannot find function owning DW_TAG_call_site "
14190                          "DIE 0x%x [in module %s]"),
14191                        to_underlying (die->sect_off), objfile_name (objfile));
14192         }
14193     }
14194
14195   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14196   if (attr == NULL)
14197     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14198   if (attr == NULL)
14199     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14200   if (attr == NULL)
14201     {
14202       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14203       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14204     }
14205   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14206   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14207     /* Keep NULL DWARF_BLOCK.  */;
14208   else if (attr_form_is_block (attr))
14209     {
14210       struct dwarf2_locexpr_baton *dlbaton;
14211
14212       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14213       dlbaton->data = DW_BLOCK (attr)->data;
14214       dlbaton->size = DW_BLOCK (attr)->size;
14215       dlbaton->per_cu = cu->per_cu;
14216
14217       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14218     }
14219   else if (attr_form_is_ref (attr))
14220     {
14221       struct dwarf2_cu *target_cu = cu;
14222       struct die_info *target_die;
14223
14224       target_die = follow_die_ref (die, attr, &target_cu);
14225       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14226       if (die_is_declaration (target_die, target_cu))
14227         {
14228           const char *target_physname;
14229
14230           /* Prefer the mangled name; otherwise compute the demangled one.  */
14231           target_physname = dw2_linkage_name (target_die, target_cu);
14232           if (target_physname == NULL)
14233             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14234           if (target_physname == NULL)
14235             complaint (&symfile_complaints,
14236                        _("DW_AT_call_target target DIE has invalid "
14237                          "physname, for referencing DIE 0x%x [in module %s]"),
14238                        to_underlying (die->sect_off), objfile_name (objfile));
14239           else
14240             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14241         }
14242       else
14243         {
14244           CORE_ADDR lowpc;
14245
14246           /* DW_AT_entry_pc should be preferred.  */
14247           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14248               <= PC_BOUNDS_INVALID)
14249             complaint (&symfile_complaints,
14250                        _("DW_AT_call_target target DIE has invalid "
14251                          "low pc, for referencing DIE 0x%x [in module %s]"),
14252                        to_underlying (die->sect_off), objfile_name (objfile));
14253           else
14254             {
14255               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14256               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14257             }
14258         }
14259     }
14260   else
14261     complaint (&symfile_complaints,
14262                _("DW_TAG_call_site DW_AT_call_target is neither "
14263                  "block nor reference, for DIE 0x%x [in module %s]"),
14264                to_underlying (die->sect_off), objfile_name (objfile));
14265
14266   call_site->per_cu = cu->per_cu;
14267
14268   for (child_die = die->child;
14269        child_die && child_die->tag;
14270        child_die = sibling_die (child_die))
14271     {
14272       struct call_site_parameter *parameter;
14273       struct attribute *loc, *origin;
14274
14275       if (child_die->tag != DW_TAG_call_site_parameter
14276           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14277         {
14278           /* Already printed the complaint above.  */
14279           continue;
14280         }
14281
14282       gdb_assert (call_site->parameter_count < nparams);
14283       parameter = &call_site->parameter[call_site->parameter_count];
14284
14285       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14286          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14287          register is contained in DW_AT_call_value.  */
14288
14289       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14290       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14291       if (origin == NULL)
14292         {
14293           /* This was a pre-DWARF-5 GNU extension alias
14294              for DW_AT_call_parameter.  */
14295           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14296         }
14297       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14298         {
14299           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14300
14301           sect_offset sect_off
14302             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14303           if (!offset_in_cu_p (&cu->header, sect_off))
14304             {
14305               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14306                  binding can be done only inside one CU.  Such referenced DIE
14307                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14308               complaint (&symfile_complaints,
14309                          _("DW_AT_call_parameter offset is not in CU for "
14310                            "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14311                          to_underlying (child_die->sect_off),
14312                          objfile_name (objfile));
14313               continue;
14314             }
14315           parameter->u.param_cu_off
14316             = (cu_offset) (sect_off - cu->header.sect_off);
14317         }
14318       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14319         {
14320           complaint (&symfile_complaints,
14321                      _("No DW_FORM_block* DW_AT_location for "
14322                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14323                      to_underlying (child_die->sect_off), objfile_name (objfile));
14324           continue;
14325         }
14326       else
14327         {
14328           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14329             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14330           if (parameter->u.dwarf_reg != -1)
14331             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14332           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14333                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14334                                              &parameter->u.fb_offset))
14335             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14336           else
14337             {
14338               complaint (&symfile_complaints,
14339                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
14340                            "for DW_FORM_block* DW_AT_location is supported for "
14341                            "DW_TAG_call_site child DIE 0x%x "
14342                            "[in module %s]"),
14343                          to_underlying (child_die->sect_off),
14344                          objfile_name (objfile));
14345               continue;
14346             }
14347         }
14348
14349       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14350       if (attr == NULL)
14351         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14352       if (!attr_form_is_block (attr))
14353         {
14354           complaint (&symfile_complaints,
14355                      _("No DW_FORM_block* DW_AT_call_value for "
14356                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14357                      to_underlying (child_die->sect_off),
14358                      objfile_name (objfile));
14359           continue;
14360         }
14361       parameter->value = DW_BLOCK (attr)->data;
14362       parameter->value_size = DW_BLOCK (attr)->size;
14363
14364       /* Parameters are not pre-cleared by memset above.  */
14365       parameter->data_value = NULL;
14366       parameter->data_value_size = 0;
14367       call_site->parameter_count++;
14368
14369       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14370       if (attr == NULL)
14371         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14372       if (attr)
14373         {
14374           if (!attr_form_is_block (attr))
14375             complaint (&symfile_complaints,
14376                        _("No DW_FORM_block* DW_AT_call_data_value for "
14377                          "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14378                        to_underlying (child_die->sect_off),
14379                        objfile_name (objfile));
14380           else
14381             {
14382               parameter->data_value = DW_BLOCK (attr)->data;
14383               parameter->data_value_size = DW_BLOCK (attr)->size;
14384             }
14385         }
14386     }
14387 }
14388
14389 /* Helper function for read_variable.  If DIE represents a virtual
14390    table, then return the type of the concrete object that is
14391    associated with the virtual table.  Otherwise, return NULL.  */
14392
14393 static struct type *
14394 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14395 {
14396   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14397   if (attr == NULL)
14398     return NULL;
14399
14400   /* Find the type DIE.  */
14401   struct die_info *type_die = NULL;
14402   struct dwarf2_cu *type_cu = cu;
14403
14404   if (attr_form_is_ref (attr))
14405     type_die = follow_die_ref (die, attr, &type_cu);
14406   if (type_die == NULL)
14407     return NULL;
14408
14409   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14410     return NULL;
14411   return die_containing_type (type_die, type_cu);
14412 }
14413
14414 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14415
14416 static void
14417 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14418 {
14419   struct rust_vtable_symbol *storage = NULL;
14420
14421   if (cu->language == language_rust)
14422     {
14423       struct type *containing_type = rust_containing_type (die, cu);
14424
14425       if (containing_type != NULL)
14426         {
14427           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14428
14429           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14430                                     struct rust_vtable_symbol);
14431           initialize_objfile_symbol (storage);
14432           storage->concrete_type = containing_type;
14433           storage->subclass = SYMBOL_RUST_VTABLE;
14434         }
14435     }
14436
14437   new_symbol_full (die, NULL, cu, storage);
14438 }
14439
14440 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14441    reading .debug_rnglists.
14442    Callback's type should be:
14443     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14444    Return true if the attributes are present and valid, otherwise,
14445    return false.  */
14446
14447 template <typename Callback>
14448 static bool
14449 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14450                          Callback &&callback)
14451 {
14452   struct dwarf2_per_objfile *dwarf2_per_objfile
14453     = cu->per_cu->dwarf2_per_objfile;
14454   struct objfile *objfile = dwarf2_per_objfile->objfile;
14455   bfd *obfd = objfile->obfd;
14456   /* Base address selection entry.  */
14457   CORE_ADDR base;
14458   int found_base;
14459   const gdb_byte *buffer;
14460   CORE_ADDR baseaddr;
14461   bool overflow = false;
14462
14463   found_base = cu->base_known;
14464   base = cu->base_address;
14465
14466   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14467   if (offset >= dwarf2_per_objfile->rnglists.size)
14468     {
14469       complaint (&symfile_complaints,
14470                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14471                  offset);
14472       return false;
14473     }
14474   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14475
14476   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14477
14478   while (1)
14479     {
14480       /* Initialize it due to a false compiler warning.  */
14481       CORE_ADDR range_beginning = 0, range_end = 0;
14482       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14483                                  + dwarf2_per_objfile->rnglists.size);
14484       unsigned int bytes_read;
14485
14486       if (buffer == buf_end)
14487         {
14488           overflow = true;
14489           break;
14490         }
14491       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14492       switch (rlet)
14493         {
14494         case DW_RLE_end_of_list:
14495           break;
14496         case DW_RLE_base_address:
14497           if (buffer + cu->header.addr_size > buf_end)
14498             {
14499               overflow = true;
14500               break;
14501             }
14502           base = read_address (obfd, buffer, cu, &bytes_read);
14503           found_base = 1;
14504           buffer += bytes_read;
14505           break;
14506         case DW_RLE_start_length:
14507           if (buffer + cu->header.addr_size > buf_end)
14508             {
14509               overflow = true;
14510               break;
14511             }
14512           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14513           buffer += bytes_read;
14514           range_end = (range_beginning
14515                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14516           buffer += bytes_read;
14517           if (buffer > buf_end)
14518             {
14519               overflow = true;
14520               break;
14521             }
14522           break;
14523         case DW_RLE_offset_pair:
14524           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14525           buffer += bytes_read;
14526           if (buffer > buf_end)
14527             {
14528               overflow = true;
14529               break;
14530             }
14531           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14532           buffer += bytes_read;
14533           if (buffer > buf_end)
14534             {
14535               overflow = true;
14536               break;
14537             }
14538           break;
14539         case DW_RLE_start_end:
14540           if (buffer + 2 * cu->header.addr_size > buf_end)
14541             {
14542               overflow = true;
14543               break;
14544             }
14545           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14546           buffer += bytes_read;
14547           range_end = read_address (obfd, buffer, cu, &bytes_read);
14548           buffer += bytes_read;
14549           break;
14550         default:
14551           complaint (&symfile_complaints,
14552                      _("Invalid .debug_rnglists data (no base address)"));
14553           return false;
14554         }
14555       if (rlet == DW_RLE_end_of_list || overflow)
14556         break;
14557       if (rlet == DW_RLE_base_address)
14558         continue;
14559
14560       if (!found_base)
14561         {
14562           /* We have no valid base address for the ranges
14563              data.  */
14564           complaint (&symfile_complaints,
14565                      _("Invalid .debug_rnglists data (no base address)"));
14566           return false;
14567         }
14568
14569       if (range_beginning > range_end)
14570         {
14571           /* Inverted range entries are invalid.  */
14572           complaint (&symfile_complaints,
14573                      _("Invalid .debug_rnglists data (inverted range)"));
14574           return false;
14575         }
14576
14577       /* Empty range entries have no effect.  */
14578       if (range_beginning == range_end)
14579         continue;
14580
14581       range_beginning += base;
14582       range_end += base;
14583
14584       /* A not-uncommon case of bad debug info.
14585          Don't pollute the addrmap with bad data.  */
14586       if (range_beginning + baseaddr == 0
14587           && !dwarf2_per_objfile->has_section_at_zero)
14588         {
14589           complaint (&symfile_complaints,
14590                      _(".debug_rnglists entry has start address of zero"
14591                        " [in module %s]"), objfile_name (objfile));
14592           continue;
14593         }
14594
14595       callback (range_beginning, range_end);
14596     }
14597
14598   if (overflow)
14599     {
14600       complaint (&symfile_complaints,
14601                  _("Offset %d is not terminated "
14602                    "for DW_AT_ranges attribute"),
14603                  offset);
14604       return false;
14605     }
14606
14607   return true;
14608 }
14609
14610 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14611    Callback's type should be:
14612     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14613    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14614
14615 template <typename Callback>
14616 static int
14617 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14618                        Callback &&callback)
14619 {
14620   struct dwarf2_per_objfile *dwarf2_per_objfile
14621       = cu->per_cu->dwarf2_per_objfile;
14622   struct objfile *objfile = dwarf2_per_objfile->objfile;
14623   struct comp_unit_head *cu_header = &cu->header;
14624   bfd *obfd = objfile->obfd;
14625   unsigned int addr_size = cu_header->addr_size;
14626   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14627   /* Base address selection entry.  */
14628   CORE_ADDR base;
14629   int found_base;
14630   unsigned int dummy;
14631   const gdb_byte *buffer;
14632   CORE_ADDR baseaddr;
14633
14634   if (cu_header->version >= 5)
14635     return dwarf2_rnglists_process (offset, cu, callback);
14636
14637   found_base = cu->base_known;
14638   base = cu->base_address;
14639
14640   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14641   if (offset >= dwarf2_per_objfile->ranges.size)
14642     {
14643       complaint (&symfile_complaints,
14644                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14645                  offset);
14646       return 0;
14647     }
14648   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14649
14650   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14651
14652   while (1)
14653     {
14654       CORE_ADDR range_beginning, range_end;
14655
14656       range_beginning = read_address (obfd, buffer, cu, &dummy);
14657       buffer += addr_size;
14658       range_end = read_address (obfd, buffer, cu, &dummy);
14659       buffer += addr_size;
14660       offset += 2 * addr_size;
14661
14662       /* An end of list marker is a pair of zero addresses.  */
14663       if (range_beginning == 0 && range_end == 0)
14664         /* Found the end of list entry.  */
14665         break;
14666
14667       /* Each base address selection entry is a pair of 2 values.
14668          The first is the largest possible address, the second is
14669          the base address.  Check for a base address here.  */
14670       if ((range_beginning & mask) == mask)
14671         {
14672           /* If we found the largest possible address, then we already
14673              have the base address in range_end.  */
14674           base = range_end;
14675           found_base = 1;
14676           continue;
14677         }
14678
14679       if (!found_base)
14680         {
14681           /* We have no valid base address for the ranges
14682              data.  */
14683           complaint (&symfile_complaints,
14684                      _("Invalid .debug_ranges data (no base address)"));
14685           return 0;
14686         }
14687
14688       if (range_beginning > range_end)
14689         {
14690           /* Inverted range entries are invalid.  */
14691           complaint (&symfile_complaints,
14692                      _("Invalid .debug_ranges data (inverted range)"));
14693           return 0;
14694         }
14695
14696       /* Empty range entries have no effect.  */
14697       if (range_beginning == range_end)
14698         continue;
14699
14700       range_beginning += base;
14701       range_end += base;
14702
14703       /* A not-uncommon case of bad debug info.
14704          Don't pollute the addrmap with bad data.  */
14705       if (range_beginning + baseaddr == 0
14706           && !dwarf2_per_objfile->has_section_at_zero)
14707         {
14708           complaint (&symfile_complaints,
14709                      _(".debug_ranges entry has start address of zero"
14710                        " [in module %s]"), objfile_name (objfile));
14711           continue;
14712         }
14713
14714       callback (range_beginning, range_end);
14715     }
14716
14717   return 1;
14718 }
14719
14720 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14721    Return 1 if the attributes are present and valid, otherwise, return 0.
14722    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14723
14724 static int
14725 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14726                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14727                     struct partial_symtab *ranges_pst)
14728 {
14729   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14730   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14731   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14732                                        SECT_OFF_TEXT (objfile));
14733   int low_set = 0;
14734   CORE_ADDR low = 0;
14735   CORE_ADDR high = 0;
14736   int retval;
14737
14738   retval = dwarf2_ranges_process (offset, cu,
14739     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14740     {
14741       if (ranges_pst != NULL)
14742         {
14743           CORE_ADDR lowpc;
14744           CORE_ADDR highpc;
14745
14746           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14747                                               range_beginning + baseaddr);
14748           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14749                                                range_end + baseaddr);
14750           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14751                              ranges_pst);
14752         }
14753
14754       /* FIXME: This is recording everything as a low-high
14755          segment of consecutive addresses.  We should have a
14756          data structure for discontiguous block ranges
14757          instead.  */
14758       if (! low_set)
14759         {
14760           low = range_beginning;
14761           high = range_end;
14762           low_set = 1;
14763         }
14764       else
14765         {
14766           if (range_beginning < low)
14767             low = range_beginning;
14768           if (range_end > high)
14769             high = range_end;
14770         }
14771     });
14772   if (!retval)
14773     return 0;
14774
14775   if (! low_set)
14776     /* If the first entry is an end-of-list marker, the range
14777        describes an empty scope, i.e. no instructions.  */
14778     return 0;
14779
14780   if (low_return)
14781     *low_return = low;
14782   if (high_return)
14783     *high_return = high;
14784   return 1;
14785 }
14786
14787 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14788    definition for the return value.  *LOWPC and *HIGHPC are set iff
14789    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14790
14791 static enum pc_bounds_kind
14792 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14793                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14794                       struct partial_symtab *pst)
14795 {
14796   struct dwarf2_per_objfile *dwarf2_per_objfile
14797     = cu->per_cu->dwarf2_per_objfile;
14798   struct attribute *attr;
14799   struct attribute *attr_high;
14800   CORE_ADDR low = 0;
14801   CORE_ADDR high = 0;
14802   enum pc_bounds_kind ret;
14803
14804   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14805   if (attr_high)
14806     {
14807       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14808       if (attr)
14809         {
14810           low = attr_value_as_address (attr);
14811           high = attr_value_as_address (attr_high);
14812           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14813             high += low;
14814         }
14815       else
14816         /* Found high w/o low attribute.  */
14817         return PC_BOUNDS_INVALID;
14818
14819       /* Found consecutive range of addresses.  */
14820       ret = PC_BOUNDS_HIGH_LOW;
14821     }
14822   else
14823     {
14824       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14825       if (attr != NULL)
14826         {
14827           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14828              We take advantage of the fact that DW_AT_ranges does not appear
14829              in DW_TAG_compile_unit of DWO files.  */
14830           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14831           unsigned int ranges_offset = (DW_UNSND (attr)
14832                                         + (need_ranges_base
14833                                            ? cu->ranges_base
14834                                            : 0));
14835
14836           /* Value of the DW_AT_ranges attribute is the offset in the
14837              .debug_ranges section.  */
14838           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14839             return PC_BOUNDS_INVALID;
14840           /* Found discontinuous range of addresses.  */
14841           ret = PC_BOUNDS_RANGES;
14842         }
14843       else
14844         return PC_BOUNDS_NOT_PRESENT;
14845     }
14846
14847   /* read_partial_die has also the strict LOW < HIGH requirement.  */
14848   if (high <= low)
14849     return PC_BOUNDS_INVALID;
14850
14851   /* When using the GNU linker, .gnu.linkonce. sections are used to
14852      eliminate duplicate copies of functions and vtables and such.
14853      The linker will arbitrarily choose one and discard the others.
14854      The AT_*_pc values for such functions refer to local labels in
14855      these sections.  If the section from that file was discarded, the
14856      labels are not in the output, so the relocs get a value of 0.
14857      If this is a discarded function, mark the pc bounds as invalid,
14858      so that GDB will ignore it.  */
14859   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14860     return PC_BOUNDS_INVALID;
14861
14862   *lowpc = low;
14863   if (highpc)
14864     *highpc = high;
14865   return ret;
14866 }
14867
14868 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14869    its low and high PC addresses.  Do nothing if these addresses could not
14870    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14871    and HIGHPC to the high address if greater than HIGHPC.  */
14872
14873 static void
14874 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14875                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14876                                  struct dwarf2_cu *cu)
14877 {
14878   CORE_ADDR low, high;
14879   struct die_info *child = die->child;
14880
14881   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14882     {
14883       *lowpc = std::min (*lowpc, low);
14884       *highpc = std::max (*highpc, high);
14885     }
14886
14887   /* If the language does not allow nested subprograms (either inside
14888      subprograms or lexical blocks), we're done.  */
14889   if (cu->language != language_ada)
14890     return;
14891
14892   /* Check all the children of the given DIE.  If it contains nested
14893      subprograms, then check their pc bounds.  Likewise, we need to
14894      check lexical blocks as well, as they may also contain subprogram
14895      definitions.  */
14896   while (child && child->tag)
14897     {
14898       if (child->tag == DW_TAG_subprogram
14899           || child->tag == DW_TAG_lexical_block)
14900         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14901       child = sibling_die (child);
14902     }
14903 }
14904
14905 /* Get the low and high pc's represented by the scope DIE, and store
14906    them in *LOWPC and *HIGHPC.  If the correct values can't be
14907    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14908
14909 static void
14910 get_scope_pc_bounds (struct die_info *die,
14911                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14912                      struct dwarf2_cu *cu)
14913 {
14914   CORE_ADDR best_low = (CORE_ADDR) -1;
14915   CORE_ADDR best_high = (CORE_ADDR) 0;
14916   CORE_ADDR current_low, current_high;
14917
14918   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14919       >= PC_BOUNDS_RANGES)
14920     {
14921       best_low = current_low;
14922       best_high = current_high;
14923     }
14924   else
14925     {
14926       struct die_info *child = die->child;
14927
14928       while (child && child->tag)
14929         {
14930           switch (child->tag) {
14931           case DW_TAG_subprogram:
14932             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14933             break;
14934           case DW_TAG_namespace:
14935           case DW_TAG_module:
14936             /* FIXME: carlton/2004-01-16: Should we do this for
14937                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14938                that current GCC's always emit the DIEs corresponding
14939                to definitions of methods of classes as children of a
14940                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14941                the DIEs giving the declarations, which could be
14942                anywhere).  But I don't see any reason why the
14943                standards says that they have to be there.  */
14944             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14945
14946             if (current_low != ((CORE_ADDR) -1))
14947               {
14948                 best_low = std::min (best_low, current_low);
14949                 best_high = std::max (best_high, current_high);
14950               }
14951             break;
14952           default:
14953             /* Ignore.  */
14954             break;
14955           }
14956
14957           child = sibling_die (child);
14958         }
14959     }
14960
14961   *lowpc = best_low;
14962   *highpc = best_high;
14963 }
14964
14965 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14966    in DIE.  */
14967
14968 static void
14969 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14970                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14971 {
14972   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14973   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14974   struct attribute *attr;
14975   struct attribute *attr_high;
14976
14977   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14978   if (attr_high)
14979     {
14980       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14981       if (attr)
14982         {
14983           CORE_ADDR low = attr_value_as_address (attr);
14984           CORE_ADDR high = attr_value_as_address (attr_high);
14985
14986           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14987             high += low;
14988
14989           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14990           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14991           record_block_range (block, low, high - 1);
14992         }
14993     }
14994
14995   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14996   if (attr)
14997     {
14998       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14999          We take advantage of the fact that DW_AT_ranges does not appear
15000          in DW_TAG_compile_unit of DWO files.  */
15001       int need_ranges_base = die->tag != DW_TAG_compile_unit;
15002
15003       /* The value of the DW_AT_ranges attribute is the offset of the
15004          address range list in the .debug_ranges section.  */
15005       unsigned long offset = (DW_UNSND (attr)
15006                               + (need_ranges_base ? cu->ranges_base : 0));
15007       const gdb_byte *buffer;
15008
15009       /* For some target architectures, but not others, the
15010          read_address function sign-extends the addresses it returns.
15011          To recognize base address selection entries, we need a
15012          mask.  */
15013       unsigned int addr_size = cu->header.addr_size;
15014       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
15015
15016       /* The base address, to which the next pair is relative.  Note
15017          that this 'base' is a DWARF concept: most entries in a range
15018          list are relative, to reduce the number of relocs against the
15019          debugging information.  This is separate from this function's
15020          'baseaddr' argument, which GDB uses to relocate debugging
15021          information from a shared library based on the address at
15022          which the library was loaded.  */
15023       CORE_ADDR base = cu->base_address;
15024       int base_known = cu->base_known;
15025
15026       dwarf2_ranges_process (offset, cu,
15027         [&] (CORE_ADDR start, CORE_ADDR end)
15028         {
15029           start += baseaddr;
15030           end += baseaddr;
15031           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
15032           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
15033           record_block_range (block, start, end - 1);
15034         });
15035     }
15036 }
15037
15038 /* Check whether the producer field indicates either of GCC < 4.6, or the
15039    Intel C/C++ compiler, and cache the result in CU.  */
15040
15041 static void
15042 check_producer (struct dwarf2_cu *cu)
15043 {
15044   int major, minor;
15045
15046   if (cu->producer == NULL)
15047     {
15048       /* For unknown compilers expect their behavior is DWARF version
15049          compliant.
15050
15051          GCC started to support .debug_types sections by -gdwarf-4 since
15052          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
15053          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
15054          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
15055          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
15056     }
15057   else if (producer_is_gcc (cu->producer, &major, &minor))
15058     {
15059       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
15060       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
15061     }
15062   else if (producer_is_icc (cu->producer, &major, &minor))
15063     cu->producer_is_icc_lt_14 = major < 14;
15064   else
15065     {
15066       /* For other non-GCC compilers, expect their behavior is DWARF version
15067          compliant.  */
15068     }
15069
15070   cu->checked_producer = 1;
15071 }
15072
15073 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
15074    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
15075    during 4.6.0 experimental.  */
15076
15077 static int
15078 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
15079 {
15080   if (!cu->checked_producer)
15081     check_producer (cu);
15082
15083   return cu->producer_is_gxx_lt_4_6;
15084 }
15085
15086 /* Return the default accessibility type if it is not overriden by
15087    DW_AT_accessibility.  */
15088
15089 static enum dwarf_access_attribute
15090 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
15091 {
15092   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
15093     {
15094       /* The default DWARF 2 accessibility for members is public, the default
15095          accessibility for inheritance is private.  */
15096
15097       if (die->tag != DW_TAG_inheritance)
15098         return DW_ACCESS_public;
15099       else
15100         return DW_ACCESS_private;
15101     }
15102   else
15103     {
15104       /* DWARF 3+ defines the default accessibility a different way.  The same
15105          rules apply now for DW_TAG_inheritance as for the members and it only
15106          depends on the container kind.  */
15107
15108       if (die->parent->tag == DW_TAG_class_type)
15109         return DW_ACCESS_private;
15110       else
15111         return DW_ACCESS_public;
15112     }
15113 }
15114
15115 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
15116    offset.  If the attribute was not found return 0, otherwise return
15117    1.  If it was found but could not properly be handled, set *OFFSET
15118    to 0.  */
15119
15120 static int
15121 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
15122                              LONGEST *offset)
15123 {
15124   struct attribute *attr;
15125
15126   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
15127   if (attr != NULL)
15128     {
15129       *offset = 0;
15130
15131       /* Note that we do not check for a section offset first here.
15132          This is because DW_AT_data_member_location is new in DWARF 4,
15133          so if we see it, we can assume that a constant form is really
15134          a constant and not a section offset.  */
15135       if (attr_form_is_constant (attr))
15136         *offset = dwarf2_get_attr_constant_value (attr, 0);
15137       else if (attr_form_is_section_offset (attr))
15138         dwarf2_complex_location_expr_complaint ();
15139       else if (attr_form_is_block (attr))
15140         *offset = decode_locdesc (DW_BLOCK (attr), cu);
15141       else
15142         dwarf2_complex_location_expr_complaint ();
15143
15144       return 1;
15145     }
15146
15147   return 0;
15148 }
15149
15150 /* Add an aggregate field to the field list.  */
15151
15152 static void
15153 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15154                   struct dwarf2_cu *cu)
15155 {
15156   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15157   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15158   struct nextfield *new_field;
15159   struct attribute *attr;
15160   struct field *fp;
15161   const char *fieldname = "";
15162
15163   /* Allocate a new field list entry and link it in.  */
15164   new_field = XNEW (struct nextfield);
15165   make_cleanup (xfree, new_field);
15166   memset (new_field, 0, sizeof (struct nextfield));
15167
15168   if (die->tag == DW_TAG_inheritance)
15169     {
15170       new_field->next = fip->baseclasses;
15171       fip->baseclasses = new_field;
15172     }
15173   else
15174     {
15175       new_field->next = fip->fields;
15176       fip->fields = new_field;
15177     }
15178   fip->nfields++;
15179
15180   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15181   if (attr)
15182     new_field->accessibility = DW_UNSND (attr);
15183   else
15184     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15185   if (new_field->accessibility != DW_ACCESS_public)
15186     fip->non_public_fields = 1;
15187
15188   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15189   if (attr)
15190     new_field->virtuality = DW_UNSND (attr);
15191   else
15192     new_field->virtuality = DW_VIRTUALITY_none;
15193
15194   fp = &new_field->field;
15195
15196   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15197     {
15198       LONGEST offset;
15199
15200       /* Data member other than a C++ static data member.  */
15201
15202       /* Get type of field.  */
15203       fp->type = die_type (die, cu);
15204
15205       SET_FIELD_BITPOS (*fp, 0);
15206
15207       /* Get bit size of field (zero if none).  */
15208       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15209       if (attr)
15210         {
15211           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15212         }
15213       else
15214         {
15215           FIELD_BITSIZE (*fp) = 0;
15216         }
15217
15218       /* Get bit offset of field.  */
15219       if (handle_data_member_location (die, cu, &offset))
15220         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15221       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15222       if (attr)
15223         {
15224           if (gdbarch_bits_big_endian (gdbarch))
15225             {
15226               /* For big endian bits, the DW_AT_bit_offset gives the
15227                  additional bit offset from the MSB of the containing
15228                  anonymous object to the MSB of the field.  We don't
15229                  have to do anything special since we don't need to
15230                  know the size of the anonymous object.  */
15231               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15232             }
15233           else
15234             {
15235               /* For little endian bits, compute the bit offset to the
15236                  MSB of the anonymous object, subtract off the number of
15237                  bits from the MSB of the field to the MSB of the
15238                  object, and then subtract off the number of bits of
15239                  the field itself.  The result is the bit offset of
15240                  the LSB of the field.  */
15241               int anonymous_size;
15242               int bit_offset = DW_UNSND (attr);
15243
15244               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15245               if (attr)
15246                 {
15247                   /* The size of the anonymous object containing
15248                      the bit field is explicit, so use the
15249                      indicated size (in bytes).  */
15250                   anonymous_size = DW_UNSND (attr);
15251                 }
15252               else
15253                 {
15254                   /* The size of the anonymous object containing
15255                      the bit field must be inferred from the type
15256                      attribute of the data member containing the
15257                      bit field.  */
15258                   anonymous_size = TYPE_LENGTH (fp->type);
15259                 }
15260               SET_FIELD_BITPOS (*fp,
15261                                 (FIELD_BITPOS (*fp)
15262                                  + anonymous_size * bits_per_byte
15263                                  - bit_offset - FIELD_BITSIZE (*fp)));
15264             }
15265         }
15266       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15267       if (attr != NULL)
15268         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15269                                 + dwarf2_get_attr_constant_value (attr, 0)));
15270
15271       /* Get name of field.  */
15272       fieldname = dwarf2_name (die, cu);
15273       if (fieldname == NULL)
15274         fieldname = "";
15275
15276       /* The name is already allocated along with this objfile, so we don't
15277          need to duplicate it for the type.  */
15278       fp->name = fieldname;
15279
15280       /* Change accessibility for artificial fields (e.g. virtual table
15281          pointer or virtual base class pointer) to private.  */
15282       if (dwarf2_attr (die, DW_AT_artificial, cu))
15283         {
15284           FIELD_ARTIFICIAL (*fp) = 1;
15285           new_field->accessibility = DW_ACCESS_private;
15286           fip->non_public_fields = 1;
15287         }
15288     }
15289   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15290     {
15291       /* C++ static member.  */
15292
15293       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15294          is a declaration, but all versions of G++ as of this writing
15295          (so through at least 3.2.1) incorrectly generate
15296          DW_TAG_variable tags.  */
15297
15298       const char *physname;
15299
15300       /* Get name of field.  */
15301       fieldname = dwarf2_name (die, cu);
15302       if (fieldname == NULL)
15303         return;
15304
15305       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15306       if (attr
15307           /* Only create a symbol if this is an external value.
15308              new_symbol checks this and puts the value in the global symbol
15309              table, which we want.  If it is not external, new_symbol
15310              will try to put the value in cu->list_in_scope which is wrong.  */
15311           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15312         {
15313           /* A static const member, not much different than an enum as far as
15314              we're concerned, except that we can support more types.  */
15315           new_symbol (die, NULL, cu);
15316         }
15317
15318       /* Get physical name.  */
15319       physname = dwarf2_physname (fieldname, die, cu);
15320
15321       /* The name is already allocated along with this objfile, so we don't
15322          need to duplicate it for the type.  */
15323       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15324       FIELD_TYPE (*fp) = die_type (die, cu);
15325       FIELD_NAME (*fp) = fieldname;
15326     }
15327   else if (die->tag == DW_TAG_inheritance)
15328     {
15329       LONGEST offset;
15330
15331       /* C++ base class field.  */
15332       if (handle_data_member_location (die, cu, &offset))
15333         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15334       FIELD_BITSIZE (*fp) = 0;
15335       FIELD_TYPE (*fp) = die_type (die, cu);
15336       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
15337       fip->nbaseclasses++;
15338     }
15339 }
15340
15341 /* Can the type given by DIE define another type?  */
15342
15343 static bool
15344 type_can_define_types (const struct die_info *die)
15345 {
15346   switch (die->tag)
15347     {
15348     case DW_TAG_typedef:
15349     case DW_TAG_class_type:
15350     case DW_TAG_structure_type:
15351     case DW_TAG_union_type:
15352     case DW_TAG_enumeration_type:
15353       return true;
15354
15355     default:
15356       return false;
15357     }
15358 }
15359
15360 /* Add a type definition defined in the scope of the FIP's class.  */
15361
15362 static void
15363 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15364                       struct dwarf2_cu *cu)
15365 {
15366   struct decl_field_list *new_field;
15367   struct decl_field *fp;
15368
15369   /* Allocate a new field list entry and link it in.  */
15370   new_field = XCNEW (struct decl_field_list);
15371   make_cleanup (xfree, new_field);
15372
15373   gdb_assert (type_can_define_types (die));
15374
15375   fp = &new_field->field;
15376
15377   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15378   fp->name = dwarf2_name (die, cu);
15379   fp->type = read_type_die (die, cu);
15380
15381   /* Save accessibility.  */
15382   enum dwarf_access_attribute accessibility;
15383   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15384   if (attr != NULL)
15385     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15386   else
15387     accessibility = dwarf2_default_access_attribute (die, cu);
15388   switch (accessibility)
15389     {
15390     case DW_ACCESS_public:
15391       /* The assumed value if neither private nor protected.  */
15392       break;
15393     case DW_ACCESS_private:
15394       fp->is_private = 1;
15395       break;
15396     case DW_ACCESS_protected:
15397       fp->is_protected = 1;
15398       break;
15399     default:
15400       complaint (&symfile_complaints,
15401                  _("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15402     }
15403
15404   if (die->tag == DW_TAG_typedef)
15405     {
15406       new_field->next = fip->typedef_field_list;
15407       fip->typedef_field_list = new_field;
15408       fip->typedef_field_list_count++;
15409     }
15410   else
15411     {
15412       new_field->next = fip->nested_types_list;
15413       fip->nested_types_list = new_field;
15414       fip->nested_types_list_count++;
15415     }
15416 }
15417
15418 /* Create the vector of fields, and attach it to the type.  */
15419
15420 static void
15421 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15422                               struct dwarf2_cu *cu)
15423 {
15424   int nfields = fip->nfields;
15425
15426   /* Record the field count, allocate space for the array of fields,
15427      and create blank accessibility bitfields if necessary.  */
15428   TYPE_NFIELDS (type) = nfields;
15429   TYPE_FIELDS (type) = (struct field *)
15430     TYPE_ALLOC (type, sizeof (struct field) * nfields);
15431   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
15432
15433   if (fip->non_public_fields && cu->language != language_ada)
15434     {
15435       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15436
15437       TYPE_FIELD_PRIVATE_BITS (type) =
15438         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15439       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15440
15441       TYPE_FIELD_PROTECTED_BITS (type) =
15442         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15443       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15444
15445       TYPE_FIELD_IGNORE_BITS (type) =
15446         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15447       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15448     }
15449
15450   /* If the type has baseclasses, allocate and clear a bit vector for
15451      TYPE_FIELD_VIRTUAL_BITS.  */
15452   if (fip->nbaseclasses && cu->language != language_ada)
15453     {
15454       int num_bytes = B_BYTES (fip->nbaseclasses);
15455       unsigned char *pointer;
15456
15457       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15458       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15459       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15460       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
15461       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
15462     }
15463
15464   /* Copy the saved-up fields into the field vector.  Start from the head of
15465      the list, adding to the tail of the field array, so that they end up in
15466      the same order in the array in which they were added to the list.  */
15467   while (nfields-- > 0)
15468     {
15469       struct nextfield *fieldp;
15470
15471       if (fip->fields)
15472         {
15473           fieldp = fip->fields;
15474           fip->fields = fieldp->next;
15475         }
15476       else
15477         {
15478           fieldp = fip->baseclasses;
15479           fip->baseclasses = fieldp->next;
15480         }
15481
15482       TYPE_FIELD (type, nfields) = fieldp->field;
15483       switch (fieldp->accessibility)
15484         {
15485         case DW_ACCESS_private:
15486           if (cu->language != language_ada)
15487             SET_TYPE_FIELD_PRIVATE (type, nfields);
15488           break;
15489
15490         case DW_ACCESS_protected:
15491           if (cu->language != language_ada)
15492             SET_TYPE_FIELD_PROTECTED (type, nfields);
15493           break;
15494
15495         case DW_ACCESS_public:
15496           break;
15497
15498         default:
15499           /* Unknown accessibility.  Complain and treat it as public.  */
15500           {
15501             complaint (&symfile_complaints, _("unsupported accessibility %d"),
15502                        fieldp->accessibility);
15503           }
15504           break;
15505         }
15506       if (nfields < fip->nbaseclasses)
15507         {
15508           switch (fieldp->virtuality)
15509             {
15510             case DW_VIRTUALITY_virtual:
15511             case DW_VIRTUALITY_pure_virtual:
15512               if (cu->language == language_ada)
15513                 error (_("unexpected virtuality in component of Ada type"));
15514               SET_TYPE_FIELD_VIRTUAL (type, nfields);
15515               break;
15516             }
15517         }
15518     }
15519 }
15520
15521 /* Return true if this member function is a constructor, false
15522    otherwise.  */
15523
15524 static int
15525 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15526 {
15527   const char *fieldname;
15528   const char *type_name;
15529   int len;
15530
15531   if (die->parent == NULL)
15532     return 0;
15533
15534   if (die->parent->tag != DW_TAG_structure_type
15535       && die->parent->tag != DW_TAG_union_type
15536       && die->parent->tag != DW_TAG_class_type)
15537     return 0;
15538
15539   fieldname = dwarf2_name (die, cu);
15540   type_name = dwarf2_name (die->parent, cu);
15541   if (fieldname == NULL || type_name == NULL)
15542     return 0;
15543
15544   len = strlen (fieldname);
15545   return (strncmp (fieldname, type_name, len) == 0
15546           && (type_name[len] == '\0' || type_name[len] == '<'));
15547 }
15548
15549 /* Add a member function to the proper fieldlist.  */
15550
15551 static void
15552 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15553                       struct type *type, struct dwarf2_cu *cu)
15554 {
15555   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15556   struct attribute *attr;
15557   struct fnfieldlist *flp;
15558   int i;
15559   struct fn_field *fnp;
15560   const char *fieldname;
15561   struct nextfnfield *new_fnfield;
15562   struct type *this_type;
15563   enum dwarf_access_attribute accessibility;
15564
15565   if (cu->language == language_ada)
15566     error (_("unexpected member function in Ada type"));
15567
15568   /* Get name of member function.  */
15569   fieldname = dwarf2_name (die, cu);
15570   if (fieldname == NULL)
15571     return;
15572
15573   /* Look up member function name in fieldlist.  */
15574   for (i = 0; i < fip->nfnfields; i++)
15575     {
15576       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15577         break;
15578     }
15579
15580   /* Create new list element if necessary.  */
15581   if (i < fip->nfnfields)
15582     flp = &fip->fnfieldlists[i];
15583   else
15584     {
15585       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
15586         {
15587           fip->fnfieldlists = (struct fnfieldlist *)
15588             xrealloc (fip->fnfieldlists,
15589                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
15590                       * sizeof (struct fnfieldlist));
15591           if (fip->nfnfields == 0)
15592             make_cleanup (free_current_contents, &fip->fnfieldlists);
15593         }
15594       flp = &fip->fnfieldlists[fip->nfnfields];
15595       flp->name = fieldname;
15596       flp->length = 0;
15597       flp->head = NULL;
15598       i = fip->nfnfields++;
15599     }
15600
15601   /* Create a new member function field and chain it to the field list
15602      entry.  */
15603   new_fnfield = XNEW (struct nextfnfield);
15604   make_cleanup (xfree, new_fnfield);
15605   memset (new_fnfield, 0, sizeof (struct nextfnfield));
15606   new_fnfield->next = flp->head;
15607   flp->head = new_fnfield;
15608   flp->length++;
15609
15610   /* Fill in the member function field info.  */
15611   fnp = &new_fnfield->fnfield;
15612
15613   /* Delay processing of the physname until later.  */
15614   if (cu->language == language_cplus)
15615     {
15616       add_to_method_list (type, i, flp->length - 1, fieldname,
15617                           die, cu);
15618     }
15619   else
15620     {
15621       const char *physname = dwarf2_physname (fieldname, die, cu);
15622       fnp->physname = physname ? physname : "";
15623     }
15624
15625   fnp->type = alloc_type (objfile);
15626   this_type = read_type_die (die, cu);
15627   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15628     {
15629       int nparams = TYPE_NFIELDS (this_type);
15630
15631       /* TYPE is the domain of this method, and THIS_TYPE is the type
15632            of the method itself (TYPE_CODE_METHOD).  */
15633       smash_to_method_type (fnp->type, type,
15634                             TYPE_TARGET_TYPE (this_type),
15635                             TYPE_FIELDS (this_type),
15636                             TYPE_NFIELDS (this_type),
15637                             TYPE_VARARGS (this_type));
15638
15639       /* Handle static member functions.
15640          Dwarf2 has no clean way to discern C++ static and non-static
15641          member functions.  G++ helps GDB by marking the first
15642          parameter for non-static member functions (which is the this
15643          pointer) as artificial.  We obtain this information from
15644          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15645       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15646         fnp->voffset = VOFFSET_STATIC;
15647     }
15648   else
15649     complaint (&symfile_complaints, _("member function type missing for '%s'"),
15650                dwarf2_full_name (fieldname, die, cu));
15651
15652   /* Get fcontext from DW_AT_containing_type if present.  */
15653   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15654     fnp->fcontext = die_containing_type (die, cu);
15655
15656   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15657      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15658
15659   /* Get accessibility.  */
15660   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15661   if (attr)
15662     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15663   else
15664     accessibility = dwarf2_default_access_attribute (die, cu);
15665   switch (accessibility)
15666     {
15667     case DW_ACCESS_private:
15668       fnp->is_private = 1;
15669       break;
15670     case DW_ACCESS_protected:
15671       fnp->is_protected = 1;
15672       break;
15673     }
15674
15675   /* Check for artificial methods.  */
15676   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15677   if (attr && DW_UNSND (attr) != 0)
15678     fnp->is_artificial = 1;
15679
15680   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15681
15682   /* Get index in virtual function table if it is a virtual member
15683      function.  For older versions of GCC, this is an offset in the
15684      appropriate virtual table, as specified by DW_AT_containing_type.
15685      For everyone else, it is an expression to be evaluated relative
15686      to the object address.  */
15687
15688   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15689   if (attr)
15690     {
15691       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15692         {
15693           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15694             {
15695               /* Old-style GCC.  */
15696               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15697             }
15698           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15699                    || (DW_BLOCK (attr)->size > 1
15700                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15701                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15702             {
15703               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15704               if ((fnp->voffset % cu->header.addr_size) != 0)
15705                 dwarf2_complex_location_expr_complaint ();
15706               else
15707                 fnp->voffset /= cu->header.addr_size;
15708               fnp->voffset += 2;
15709             }
15710           else
15711             dwarf2_complex_location_expr_complaint ();
15712
15713           if (!fnp->fcontext)
15714             {
15715               /* If there is no `this' field and no DW_AT_containing_type,
15716                  we cannot actually find a base class context for the
15717                  vtable!  */
15718               if (TYPE_NFIELDS (this_type) == 0
15719                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15720                 {
15721                   complaint (&symfile_complaints,
15722                              _("cannot determine context for virtual member "
15723                                "function \"%s\" (offset %d)"),
15724                              fieldname, to_underlying (die->sect_off));
15725                 }
15726               else
15727                 {
15728                   fnp->fcontext
15729                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15730                 }
15731             }
15732         }
15733       else if (attr_form_is_section_offset (attr))
15734         {
15735           dwarf2_complex_location_expr_complaint ();
15736         }
15737       else
15738         {
15739           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15740                                                  fieldname);
15741         }
15742     }
15743   else
15744     {
15745       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15746       if (attr && DW_UNSND (attr))
15747         {
15748           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15749           complaint (&symfile_complaints,
15750                      _("Member function \"%s\" (offset %d) is virtual "
15751                        "but the vtable offset is not specified"),
15752                      fieldname, to_underlying (die->sect_off));
15753           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15754           TYPE_CPLUS_DYNAMIC (type) = 1;
15755         }
15756     }
15757 }
15758
15759 /* Create the vector of member function fields, and attach it to the type.  */
15760
15761 static void
15762 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15763                                  struct dwarf2_cu *cu)
15764 {
15765   struct fnfieldlist *flp;
15766   int i;
15767
15768   if (cu->language == language_ada)
15769     error (_("unexpected member functions in Ada type"));
15770
15771   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15772   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15773     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
15774
15775   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
15776     {
15777       struct nextfnfield *nfp = flp->head;
15778       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15779       int k;
15780
15781       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
15782       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
15783       fn_flp->fn_fields = (struct fn_field *)
15784         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
15785       for (k = flp->length; (k--, nfp); nfp = nfp->next)
15786         fn_flp->fn_fields[k] = nfp->fnfield;
15787     }
15788
15789   TYPE_NFN_FIELDS (type) = fip->nfnfields;
15790 }
15791
15792 /* Returns non-zero if NAME is the name of a vtable member in CU's
15793    language, zero otherwise.  */
15794 static int
15795 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15796 {
15797   static const char vptr[] = "_vptr";
15798
15799   /* Look for the C++ form of the vtable.  */
15800   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15801     return 1;
15802
15803   return 0;
15804 }
15805
15806 /* GCC outputs unnamed structures that are really pointers to member
15807    functions, with the ABI-specified layout.  If TYPE describes
15808    such a structure, smash it into a member function type.
15809
15810    GCC shouldn't do this; it should just output pointer to member DIEs.
15811    This is GCC PR debug/28767.  */
15812
15813 static void
15814 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15815 {
15816   struct type *pfn_type, *self_type, *new_type;
15817
15818   /* Check for a structure with no name and two children.  */
15819   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15820     return;
15821
15822   /* Check for __pfn and __delta members.  */
15823   if (TYPE_FIELD_NAME (type, 0) == NULL
15824       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15825       || TYPE_FIELD_NAME (type, 1) == NULL
15826       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15827     return;
15828
15829   /* Find the type of the method.  */
15830   pfn_type = TYPE_FIELD_TYPE (type, 0);
15831   if (pfn_type == NULL
15832       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15833       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15834     return;
15835
15836   /* Look for the "this" argument.  */
15837   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15838   if (TYPE_NFIELDS (pfn_type) == 0
15839       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15840       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15841     return;
15842
15843   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15844   new_type = alloc_type (objfile);
15845   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15846                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15847                         TYPE_VARARGS (pfn_type));
15848   smash_to_methodptr_type (type, new_type);
15849 }
15850
15851
15852 /* Called when we find the DIE that starts a structure or union scope
15853    (definition) to create a type for the structure or union.  Fill in
15854    the type's name and general properties; the members will not be
15855    processed until process_structure_scope.  A symbol table entry for
15856    the type will also not be done until process_structure_scope (assuming
15857    the type has a name).
15858
15859    NOTE: we need to call these functions regardless of whether or not the
15860    DIE has a DW_AT_name attribute, since it might be an anonymous
15861    structure or union.  This gets the type entered into our set of
15862    user defined types.  */
15863
15864 static struct type *
15865 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15866 {
15867   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15868   struct type *type;
15869   struct attribute *attr;
15870   const char *name;
15871
15872   /* If the definition of this type lives in .debug_types, read that type.
15873      Don't follow DW_AT_specification though, that will take us back up
15874      the chain and we want to go down.  */
15875   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15876   if (attr)
15877     {
15878       type = get_DW_AT_signature_type (die, attr, cu);
15879
15880       /* The type's CU may not be the same as CU.
15881          Ensure TYPE is recorded with CU in die_type_hash.  */
15882       return set_die_type (die, type, cu);
15883     }
15884
15885   type = alloc_type (objfile);
15886   INIT_CPLUS_SPECIFIC (type);
15887
15888   name = dwarf2_name (die, cu);
15889   if (name != NULL)
15890     {
15891       if (cu->language == language_cplus
15892           || cu->language == language_d
15893           || cu->language == language_rust)
15894         {
15895           const char *full_name = dwarf2_full_name (name, die, cu);
15896
15897           /* dwarf2_full_name might have already finished building the DIE's
15898              type.  If so, there is no need to continue.  */
15899           if (get_die_type (die, cu) != NULL)
15900             return get_die_type (die, cu);
15901
15902           TYPE_TAG_NAME (type) = full_name;
15903           if (die->tag == DW_TAG_structure_type
15904               || die->tag == DW_TAG_class_type)
15905             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15906         }
15907       else
15908         {
15909           /* The name is already allocated along with this objfile, so
15910              we don't need to duplicate it for the type.  */
15911           TYPE_TAG_NAME (type) = name;
15912           if (die->tag == DW_TAG_class_type)
15913             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15914         }
15915     }
15916
15917   if (die->tag == DW_TAG_structure_type)
15918     {
15919       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15920     }
15921   else if (die->tag == DW_TAG_union_type)
15922     {
15923       TYPE_CODE (type) = TYPE_CODE_UNION;
15924     }
15925   else
15926     {
15927       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15928     }
15929
15930   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15931     TYPE_DECLARED_CLASS (type) = 1;
15932
15933   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15934   if (attr)
15935     {
15936       if (attr_form_is_constant (attr))
15937         TYPE_LENGTH (type) = DW_UNSND (attr);
15938       else
15939         {
15940           /* For the moment, dynamic type sizes are not supported
15941              by GDB's struct type.  The actual size is determined
15942              on-demand when resolving the type of a given object,
15943              so set the type's length to zero for now.  Otherwise,
15944              we record an expression as the length, and that expression
15945              could lead to a very large value, which could eventually
15946              lead to us trying to allocate that much memory when creating
15947              a value of that type.  */
15948           TYPE_LENGTH (type) = 0;
15949         }
15950     }
15951   else
15952     {
15953       TYPE_LENGTH (type) = 0;
15954     }
15955
15956   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15957     {
15958       /* ICC<14 does not output the required DW_AT_declaration on
15959          incomplete types, but gives them a size of zero.  */
15960       TYPE_STUB (type) = 1;
15961     }
15962   else
15963     TYPE_STUB_SUPPORTED (type) = 1;
15964
15965   if (die_is_declaration (die, cu))
15966     TYPE_STUB (type) = 1;
15967   else if (attr == NULL && die->child == NULL
15968            && producer_is_realview (cu->producer))
15969     /* RealView does not output the required DW_AT_declaration
15970        on incomplete types.  */
15971     TYPE_STUB (type) = 1;
15972
15973   /* We need to add the type field to the die immediately so we don't
15974      infinitely recurse when dealing with pointers to the structure
15975      type within the structure itself.  */
15976   set_die_type (die, type, cu);
15977
15978   /* set_die_type should be already done.  */
15979   set_descriptive_type (type, die, cu);
15980
15981   return type;
15982 }
15983
15984 /* Finish creating a structure or union type, including filling in
15985    its members and creating a symbol for it.  */
15986
15987 static void
15988 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15989 {
15990   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15991   struct die_info *child_die;
15992   struct type *type;
15993
15994   type = get_die_type (die, cu);
15995   if (type == NULL)
15996     type = read_structure_type (die, cu);
15997
15998   if (die->child != NULL && ! die_is_declaration (die, cu))
15999     {
16000       struct field_info fi;
16001       std::vector<struct symbol *> template_args;
16002       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
16003
16004       memset (&fi, 0, sizeof (struct field_info));
16005
16006       child_die = die->child;
16007
16008       while (child_die && child_die->tag)
16009         {
16010           if (child_die->tag == DW_TAG_member
16011               || child_die->tag == DW_TAG_variable)
16012             {
16013               /* NOTE: carlton/2002-11-05: A C++ static data member
16014                  should be a DW_TAG_member that is a declaration, but
16015                  all versions of G++ as of this writing (so through at
16016                  least 3.2.1) incorrectly generate DW_TAG_variable
16017                  tags for them instead.  */
16018               dwarf2_add_field (&fi, child_die, cu);
16019             }
16020           else if (child_die->tag == DW_TAG_subprogram)
16021             {
16022               /* Rust doesn't have member functions in the C++ sense.
16023                  However, it does emit ordinary functions as children
16024                  of a struct DIE.  */
16025               if (cu->language == language_rust)
16026                 read_func_scope (child_die, cu);
16027               else
16028                 {
16029                   /* C++ member function.  */
16030                   dwarf2_add_member_fn (&fi, child_die, type, cu);
16031                 }
16032             }
16033           else if (child_die->tag == DW_TAG_inheritance)
16034             {
16035               /* C++ base class field.  */
16036               dwarf2_add_field (&fi, child_die, cu);
16037             }
16038           else if (type_can_define_types (child_die))
16039             dwarf2_add_type_defn (&fi, child_die, cu);
16040           else if (child_die->tag == DW_TAG_template_type_param
16041                    || child_die->tag == DW_TAG_template_value_param)
16042             {
16043               struct symbol *arg = new_symbol (child_die, NULL, cu);
16044
16045               if (arg != NULL)
16046                 template_args.push_back (arg);
16047             }
16048
16049           child_die = sibling_die (child_die);
16050         }
16051
16052       /* Attach template arguments to type.  */
16053       if (!template_args.empty ())
16054         {
16055           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16056           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16057           TYPE_TEMPLATE_ARGUMENTS (type)
16058             = XOBNEWVEC (&objfile->objfile_obstack,
16059                          struct symbol *,
16060                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16061           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16062                   template_args.data (),
16063                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16064                    * sizeof (struct symbol *)));
16065         }
16066
16067       /* Attach fields and member functions to the type.  */
16068       if (fi.nfields)
16069         dwarf2_attach_fields_to_type (&fi, type, cu);
16070       if (fi.nfnfields)
16071         {
16072           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16073
16074           /* Get the type which refers to the base class (possibly this
16075              class itself) which contains the vtable pointer for the current
16076              class from the DW_AT_containing_type attribute.  This use of
16077              DW_AT_containing_type is a GNU extension.  */
16078
16079           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16080             {
16081               struct type *t = die_containing_type (die, cu);
16082
16083               set_type_vptr_basetype (type, t);
16084               if (type == t)
16085                 {
16086                   int i;
16087
16088                   /* Our own class provides vtbl ptr.  */
16089                   for (i = TYPE_NFIELDS (t) - 1;
16090                        i >= TYPE_N_BASECLASSES (t);
16091                        --i)
16092                     {
16093                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16094
16095                       if (is_vtable_name (fieldname, cu))
16096                         {
16097                           set_type_vptr_fieldno (type, i);
16098                           break;
16099                         }
16100                     }
16101
16102                   /* Complain if virtual function table field not found.  */
16103                   if (i < TYPE_N_BASECLASSES (t))
16104                     complaint (&symfile_complaints,
16105                                _("virtual function table pointer "
16106                                  "not found when defining class '%s'"),
16107                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
16108                                "");
16109                 }
16110               else
16111                 {
16112                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16113                 }
16114             }
16115           else if (cu->producer
16116                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16117             {
16118               /* The IBM XLC compiler does not provide direct indication
16119                  of the containing type, but the vtable pointer is
16120                  always named __vfp.  */
16121
16122               int i;
16123
16124               for (i = TYPE_NFIELDS (type) - 1;
16125                    i >= TYPE_N_BASECLASSES (type);
16126                    --i)
16127                 {
16128                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16129                     {
16130                       set_type_vptr_fieldno (type, i);
16131                       set_type_vptr_basetype (type, type);
16132                       break;
16133                     }
16134                 }
16135             }
16136         }
16137
16138       /* Copy fi.typedef_field_list linked list elements content into the
16139          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16140       if (fi.typedef_field_list)
16141         {
16142           int i = fi.typedef_field_list_count;
16143
16144           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16145           TYPE_TYPEDEF_FIELD_ARRAY (type)
16146             = ((struct decl_field *)
16147                TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i));
16148           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
16149
16150           /* Reverse the list order to keep the debug info elements order.  */
16151           while (--i >= 0)
16152             {
16153               struct decl_field *dest, *src;
16154
16155               dest = &TYPE_TYPEDEF_FIELD (type, i);
16156               src = &fi.typedef_field_list->field;
16157               fi.typedef_field_list = fi.typedef_field_list->next;
16158               *dest = *src;
16159             }
16160         }
16161
16162       /* Copy fi.nested_types_list linked list elements content into the
16163          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16164       if (fi.nested_types_list != NULL && cu->language != language_ada)
16165         {
16166           int i = fi.nested_types_list_count;
16167
16168           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16169           TYPE_NESTED_TYPES_ARRAY (type)
16170             = ((struct decl_field *)
16171                TYPE_ALLOC (type, sizeof (struct decl_field) * i));
16172           TYPE_NESTED_TYPES_COUNT (type) = i;
16173
16174           /* Reverse the list order to keep the debug info elements order.  */
16175           while (--i >= 0)
16176             {
16177               struct decl_field *dest, *src;
16178
16179               dest = &TYPE_NESTED_TYPES_FIELD (type, i);
16180               src = &fi.nested_types_list->field;
16181               fi.nested_types_list = fi.nested_types_list->next;
16182               *dest = *src;
16183             }
16184         }
16185
16186       do_cleanups (back_to);
16187     }
16188
16189   quirk_gcc_member_function_pointer (type, objfile);
16190
16191   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16192      snapshots) has been known to create a die giving a declaration
16193      for a class that has, as a child, a die giving a definition for a
16194      nested class.  So we have to process our children even if the
16195      current die is a declaration.  Normally, of course, a declaration
16196      won't have any children at all.  */
16197
16198   child_die = die->child;
16199
16200   while (child_die != NULL && child_die->tag)
16201     {
16202       if (child_die->tag == DW_TAG_member
16203           || child_die->tag == DW_TAG_variable
16204           || child_die->tag == DW_TAG_inheritance
16205           || child_die->tag == DW_TAG_template_value_param
16206           || child_die->tag == DW_TAG_template_type_param)
16207         {
16208           /* Do nothing.  */
16209         }
16210       else
16211         process_die (child_die, cu);
16212
16213       child_die = sibling_die (child_die);
16214     }
16215
16216   /* Do not consider external references.  According to the DWARF standard,
16217      these DIEs are identified by the fact that they have no byte_size
16218      attribute, and a declaration attribute.  */
16219   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16220       || !die_is_declaration (die, cu))
16221     new_symbol (die, type, cu);
16222 }
16223
16224 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16225    update TYPE using some information only available in DIE's children.  */
16226
16227 static void
16228 update_enumeration_type_from_children (struct die_info *die,
16229                                        struct type *type,
16230                                        struct dwarf2_cu *cu)
16231 {
16232   struct die_info *child_die;
16233   int unsigned_enum = 1;
16234   int flag_enum = 1;
16235   ULONGEST mask = 0;
16236
16237   auto_obstack obstack;
16238
16239   for (child_die = die->child;
16240        child_die != NULL && child_die->tag;
16241        child_die = sibling_die (child_die))
16242     {
16243       struct attribute *attr;
16244       LONGEST value;
16245       const gdb_byte *bytes;
16246       struct dwarf2_locexpr_baton *baton;
16247       const char *name;
16248
16249       if (child_die->tag != DW_TAG_enumerator)
16250         continue;
16251
16252       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16253       if (attr == NULL)
16254         continue;
16255
16256       name = dwarf2_name (child_die, cu);
16257       if (name == NULL)
16258         name = "<anonymous enumerator>";
16259
16260       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16261                                &value, &bytes, &baton);
16262       if (value < 0)
16263         {
16264           unsigned_enum = 0;
16265           flag_enum = 0;
16266         }
16267       else if ((mask & value) != 0)
16268         flag_enum = 0;
16269       else
16270         mask |= value;
16271
16272       /* If we already know that the enum type is neither unsigned, nor
16273          a flag type, no need to look at the rest of the enumerates.  */
16274       if (!unsigned_enum && !flag_enum)
16275         break;
16276     }
16277
16278   if (unsigned_enum)
16279     TYPE_UNSIGNED (type) = 1;
16280   if (flag_enum)
16281     TYPE_FLAG_ENUM (type) = 1;
16282 }
16283
16284 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16285    complete the type's fields yet, or create any symbols.  */
16286
16287 static struct type *
16288 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16289 {
16290   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16291   struct type *type;
16292   struct attribute *attr;
16293   const char *name;
16294
16295   /* If the definition of this type lives in .debug_types, read that type.
16296      Don't follow DW_AT_specification though, that will take us back up
16297      the chain and we want to go down.  */
16298   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16299   if (attr)
16300     {
16301       type = get_DW_AT_signature_type (die, attr, cu);
16302
16303       /* The type's CU may not be the same as CU.
16304          Ensure TYPE is recorded with CU in die_type_hash.  */
16305       return set_die_type (die, type, cu);
16306     }
16307
16308   type = alloc_type (objfile);
16309
16310   TYPE_CODE (type) = TYPE_CODE_ENUM;
16311   name = dwarf2_full_name (NULL, die, cu);
16312   if (name != NULL)
16313     TYPE_TAG_NAME (type) = name;
16314
16315   attr = dwarf2_attr (die, DW_AT_type, cu);
16316   if (attr != NULL)
16317     {
16318       struct type *underlying_type = die_type (die, cu);
16319
16320       TYPE_TARGET_TYPE (type) = underlying_type;
16321     }
16322
16323   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16324   if (attr)
16325     {
16326       TYPE_LENGTH (type) = DW_UNSND (attr);
16327     }
16328   else
16329     {
16330       TYPE_LENGTH (type) = 0;
16331     }
16332
16333   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16334      declared as private in the package spec, and then defined only
16335      inside the package body.  Such types are known as Taft Amendment
16336      Types.  When another package uses such a type, an incomplete DIE
16337      may be generated by the compiler.  */
16338   if (die_is_declaration (die, cu))
16339     TYPE_STUB (type) = 1;
16340
16341   /* Finish the creation of this type by using the enum's children.
16342      We must call this even when the underlying type has been provided
16343      so that we can determine if we're looking at a "flag" enum.  */
16344   update_enumeration_type_from_children (die, type, cu);
16345
16346   /* If this type has an underlying type that is not a stub, then we
16347      may use its attributes.  We always use the "unsigned" attribute
16348      in this situation, because ordinarily we guess whether the type
16349      is unsigned -- but the guess can be wrong and the underlying type
16350      can tell us the reality.  However, we defer to a local size
16351      attribute if one exists, because this lets the compiler override
16352      the underlying type if needed.  */
16353   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16354     {
16355       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16356       if (TYPE_LENGTH (type) == 0)
16357         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16358     }
16359
16360   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16361
16362   return set_die_type (die, type, cu);
16363 }
16364
16365 /* Given a pointer to a die which begins an enumeration, process all
16366    the dies that define the members of the enumeration, and create the
16367    symbol for the enumeration type.
16368
16369    NOTE: We reverse the order of the element list.  */
16370
16371 static void
16372 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16373 {
16374   struct type *this_type;
16375
16376   this_type = get_die_type (die, cu);
16377   if (this_type == NULL)
16378     this_type = read_enumeration_type (die, cu);
16379
16380   if (die->child != NULL)
16381     {
16382       struct die_info *child_die;
16383       struct symbol *sym;
16384       struct field *fields = NULL;
16385       int num_fields = 0;
16386       const char *name;
16387
16388       child_die = die->child;
16389       while (child_die && child_die->tag)
16390         {
16391           if (child_die->tag != DW_TAG_enumerator)
16392             {
16393               process_die (child_die, cu);
16394             }
16395           else
16396             {
16397               name = dwarf2_name (child_die, cu);
16398               if (name)
16399                 {
16400                   sym = new_symbol (child_die, this_type, cu);
16401
16402                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16403                     {
16404                       fields = (struct field *)
16405                         xrealloc (fields,
16406                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16407                                   * sizeof (struct field));
16408                     }
16409
16410                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16411                   FIELD_TYPE (fields[num_fields]) = NULL;
16412                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16413                   FIELD_BITSIZE (fields[num_fields]) = 0;
16414
16415                   num_fields++;
16416                 }
16417             }
16418
16419           child_die = sibling_die (child_die);
16420         }
16421
16422       if (num_fields)
16423         {
16424           TYPE_NFIELDS (this_type) = num_fields;
16425           TYPE_FIELDS (this_type) = (struct field *)
16426             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16427           memcpy (TYPE_FIELDS (this_type), fields,
16428                   sizeof (struct field) * num_fields);
16429           xfree (fields);
16430         }
16431     }
16432
16433   /* If we are reading an enum from a .debug_types unit, and the enum
16434      is a declaration, and the enum is not the signatured type in the
16435      unit, then we do not want to add a symbol for it.  Adding a
16436      symbol would in some cases obscure the true definition of the
16437      enum, giving users an incomplete type when the definition is
16438      actually available.  Note that we do not want to do this for all
16439      enums which are just declarations, because C++0x allows forward
16440      enum declarations.  */
16441   if (cu->per_cu->is_debug_types
16442       && die_is_declaration (die, cu))
16443     {
16444       struct signatured_type *sig_type;
16445
16446       sig_type = (struct signatured_type *) cu->per_cu;
16447       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16448       if (sig_type->type_offset_in_section != die->sect_off)
16449         return;
16450     }
16451
16452   new_symbol (die, this_type, cu);
16453 }
16454
16455 /* Extract all information from a DW_TAG_array_type DIE and put it in
16456    the DIE's type field.  For now, this only handles one dimensional
16457    arrays.  */
16458
16459 static struct type *
16460 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16461 {
16462   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16463   struct die_info *child_die;
16464   struct type *type;
16465   struct type *element_type, *range_type, *index_type;
16466   struct attribute *attr;
16467   const char *name;
16468   struct dynamic_prop *byte_stride_prop = NULL;
16469   unsigned int bit_stride = 0;
16470
16471   element_type = die_type (die, cu);
16472
16473   /* The die_type call above may have already set the type for this DIE.  */
16474   type = get_die_type (die, cu);
16475   if (type)
16476     return type;
16477
16478   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16479   if (attr != NULL)
16480     {
16481       int stride_ok;
16482
16483       byte_stride_prop
16484         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16485       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16486       if (!stride_ok)
16487         {
16488           complaint (&symfile_complaints,
16489                      _("unable to read array DW_AT_byte_stride "
16490                        " - DIE at 0x%x [in module %s]"),
16491                      to_underlying (die->sect_off),
16492                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16493           /* Ignore this attribute.  We will likely not be able to print
16494              arrays of this type correctly, but there is little we can do
16495              to help if we cannot read the attribute's value.  */
16496           byte_stride_prop = NULL;
16497         }
16498     }
16499
16500   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16501   if (attr != NULL)
16502     bit_stride = DW_UNSND (attr);
16503
16504   /* Irix 6.2 native cc creates array types without children for
16505      arrays with unspecified length.  */
16506   if (die->child == NULL)
16507     {
16508       index_type = objfile_type (objfile)->builtin_int;
16509       range_type = create_static_range_type (NULL, index_type, 0, -1);
16510       type = create_array_type_with_stride (NULL, element_type, range_type,
16511                                             byte_stride_prop, bit_stride);
16512       return set_die_type (die, type, cu);
16513     }
16514
16515   std::vector<struct type *> range_types;
16516   child_die = die->child;
16517   while (child_die && child_die->tag)
16518     {
16519       if (child_die->tag == DW_TAG_subrange_type)
16520         {
16521           struct type *child_type = read_type_die (child_die, cu);
16522
16523           if (child_type != NULL)
16524             {
16525               /* The range type was succesfully read.  Save it for the
16526                  array type creation.  */
16527               range_types.push_back (child_type);
16528             }
16529         }
16530       child_die = sibling_die (child_die);
16531     }
16532
16533   /* Dwarf2 dimensions are output from left to right, create the
16534      necessary array types in backwards order.  */
16535
16536   type = element_type;
16537
16538   if (read_array_order (die, cu) == DW_ORD_col_major)
16539     {
16540       int i = 0;
16541
16542       while (i < range_types.size ())
16543         type = create_array_type_with_stride (NULL, type, range_types[i++],
16544                                               byte_stride_prop, bit_stride);
16545     }
16546   else
16547     {
16548       size_t ndim = range_types.size ();
16549       while (ndim-- > 0)
16550         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16551                                               byte_stride_prop, bit_stride);
16552     }
16553
16554   /* Understand Dwarf2 support for vector types (like they occur on
16555      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16556      array type.  This is not part of the Dwarf2/3 standard yet, but a
16557      custom vendor extension.  The main difference between a regular
16558      array and the vector variant is that vectors are passed by value
16559      to functions.  */
16560   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16561   if (attr)
16562     make_vector_type (type);
16563
16564   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16565      implementation may choose to implement triple vectors using this
16566      attribute.  */
16567   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16568   if (attr)
16569     {
16570       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16571         TYPE_LENGTH (type) = DW_UNSND (attr);
16572       else
16573         complaint (&symfile_complaints,
16574                    _("DW_AT_byte_size for array type smaller "
16575                      "than the total size of elements"));
16576     }
16577
16578   name = dwarf2_name (die, cu);
16579   if (name)
16580     TYPE_NAME (type) = name;
16581
16582   /* Install the type in the die.  */
16583   set_die_type (die, type, cu);
16584
16585   /* set_die_type should be already done.  */
16586   set_descriptive_type (type, die, cu);
16587
16588   return type;
16589 }
16590
16591 static enum dwarf_array_dim_ordering
16592 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16593 {
16594   struct attribute *attr;
16595
16596   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16597
16598   if (attr)
16599     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16600
16601   /* GNU F77 is a special case, as at 08/2004 array type info is the
16602      opposite order to the dwarf2 specification, but data is still
16603      laid out as per normal fortran.
16604
16605      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16606      version checking.  */
16607
16608   if (cu->language == language_fortran
16609       && cu->producer && strstr (cu->producer, "GNU F77"))
16610     {
16611       return DW_ORD_row_major;
16612     }
16613
16614   switch (cu->language_defn->la_array_ordering)
16615     {
16616     case array_column_major:
16617       return DW_ORD_col_major;
16618     case array_row_major:
16619     default:
16620       return DW_ORD_row_major;
16621     };
16622 }
16623
16624 /* Extract all information from a DW_TAG_set_type DIE and put it in
16625    the DIE's type field.  */
16626
16627 static struct type *
16628 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16629 {
16630   struct type *domain_type, *set_type;
16631   struct attribute *attr;
16632
16633   domain_type = die_type (die, cu);
16634
16635   /* The die_type call above may have already set the type for this DIE.  */
16636   set_type = get_die_type (die, cu);
16637   if (set_type)
16638     return set_type;
16639
16640   set_type = create_set_type (NULL, domain_type);
16641
16642   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16643   if (attr)
16644     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16645
16646   return set_die_type (die, set_type, cu);
16647 }
16648
16649 /* A helper for read_common_block that creates a locexpr baton.
16650    SYM is the symbol which we are marking as computed.
16651    COMMON_DIE is the DIE for the common block.
16652    COMMON_LOC is the location expression attribute for the common
16653    block itself.
16654    MEMBER_LOC is the location expression attribute for the particular
16655    member of the common block that we are processing.
16656    CU is the CU from which the above come.  */
16657
16658 static void
16659 mark_common_block_symbol_computed (struct symbol *sym,
16660                                    struct die_info *common_die,
16661                                    struct attribute *common_loc,
16662                                    struct attribute *member_loc,
16663                                    struct dwarf2_cu *cu)
16664 {
16665   struct dwarf2_per_objfile *dwarf2_per_objfile
16666     = cu->per_cu->dwarf2_per_objfile;
16667   struct objfile *objfile = dwarf2_per_objfile->objfile;
16668   struct dwarf2_locexpr_baton *baton;
16669   gdb_byte *ptr;
16670   unsigned int cu_off;
16671   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16672   LONGEST offset = 0;
16673
16674   gdb_assert (common_loc && member_loc);
16675   gdb_assert (attr_form_is_block (common_loc));
16676   gdb_assert (attr_form_is_block (member_loc)
16677               || attr_form_is_constant (member_loc));
16678
16679   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16680   baton->per_cu = cu->per_cu;
16681   gdb_assert (baton->per_cu);
16682
16683   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16684
16685   if (attr_form_is_constant (member_loc))
16686     {
16687       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16688       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16689     }
16690   else
16691     baton->size += DW_BLOCK (member_loc)->size;
16692
16693   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16694   baton->data = ptr;
16695
16696   *ptr++ = DW_OP_call4;
16697   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16698   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16699   ptr += 4;
16700
16701   if (attr_form_is_constant (member_loc))
16702     {
16703       *ptr++ = DW_OP_addr;
16704       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16705       ptr += cu->header.addr_size;
16706     }
16707   else
16708     {
16709       /* We have to copy the data here, because DW_OP_call4 will only
16710          use a DW_AT_location attribute.  */
16711       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16712       ptr += DW_BLOCK (member_loc)->size;
16713     }
16714
16715   *ptr++ = DW_OP_plus;
16716   gdb_assert (ptr - baton->data == baton->size);
16717
16718   SYMBOL_LOCATION_BATON (sym) = baton;
16719   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16720 }
16721
16722 /* Create appropriate locally-scoped variables for all the
16723    DW_TAG_common_block entries.  Also create a struct common_block
16724    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16725    is used to sepate the common blocks name namespace from regular
16726    variable names.  */
16727
16728 static void
16729 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16730 {
16731   struct attribute *attr;
16732
16733   attr = dwarf2_attr (die, DW_AT_location, cu);
16734   if (attr)
16735     {
16736       /* Support the .debug_loc offsets.  */
16737       if (attr_form_is_block (attr))
16738         {
16739           /* Ok.  */
16740         }
16741       else if (attr_form_is_section_offset (attr))
16742         {
16743           dwarf2_complex_location_expr_complaint ();
16744           attr = NULL;
16745         }
16746       else
16747         {
16748           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16749                                                  "common block member");
16750           attr = NULL;
16751         }
16752     }
16753
16754   if (die->child != NULL)
16755     {
16756       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16757       struct die_info *child_die;
16758       size_t n_entries = 0, size;
16759       struct common_block *common_block;
16760       struct symbol *sym;
16761
16762       for (child_die = die->child;
16763            child_die && child_die->tag;
16764            child_die = sibling_die (child_die))
16765         ++n_entries;
16766
16767       size = (sizeof (struct common_block)
16768               + (n_entries - 1) * sizeof (struct symbol *));
16769       common_block
16770         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16771                                                  size);
16772       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16773       common_block->n_entries = 0;
16774
16775       for (child_die = die->child;
16776            child_die && child_die->tag;
16777            child_die = sibling_die (child_die))
16778         {
16779           /* Create the symbol in the DW_TAG_common_block block in the current
16780              symbol scope.  */
16781           sym = new_symbol (child_die, NULL, cu);
16782           if (sym != NULL)
16783             {
16784               struct attribute *member_loc;
16785
16786               common_block->contents[common_block->n_entries++] = sym;
16787
16788               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16789                                         cu);
16790               if (member_loc)
16791                 {
16792                   /* GDB has handled this for a long time, but it is
16793                      not specified by DWARF.  It seems to have been
16794                      emitted by gfortran at least as recently as:
16795                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16796                   complaint (&symfile_complaints,
16797                              _("Variable in common block has "
16798                                "DW_AT_data_member_location "
16799                                "- DIE at 0x%x [in module %s]"),
16800                              to_underlying (child_die->sect_off),
16801                              objfile_name (objfile));
16802
16803                   if (attr_form_is_section_offset (member_loc))
16804                     dwarf2_complex_location_expr_complaint ();
16805                   else if (attr_form_is_constant (member_loc)
16806                            || attr_form_is_block (member_loc))
16807                     {
16808                       if (attr)
16809                         mark_common_block_symbol_computed (sym, die, attr,
16810                                                            member_loc, cu);
16811                     }
16812                   else
16813                     dwarf2_complex_location_expr_complaint ();
16814                 }
16815             }
16816         }
16817
16818       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16819       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16820     }
16821 }
16822
16823 /* Create a type for a C++ namespace.  */
16824
16825 static struct type *
16826 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16827 {
16828   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16829   const char *previous_prefix, *name;
16830   int is_anonymous;
16831   struct type *type;
16832
16833   /* For extensions, reuse the type of the original namespace.  */
16834   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16835     {
16836       struct die_info *ext_die;
16837       struct dwarf2_cu *ext_cu = cu;
16838
16839       ext_die = dwarf2_extension (die, &ext_cu);
16840       type = read_type_die (ext_die, ext_cu);
16841
16842       /* EXT_CU may not be the same as CU.
16843          Ensure TYPE is recorded with CU in die_type_hash.  */
16844       return set_die_type (die, type, cu);
16845     }
16846
16847   name = namespace_name (die, &is_anonymous, cu);
16848
16849   /* Now build the name of the current namespace.  */
16850
16851   previous_prefix = determine_prefix (die, cu);
16852   if (previous_prefix[0] != '\0')
16853     name = typename_concat (&objfile->objfile_obstack,
16854                             previous_prefix, name, 0, cu);
16855
16856   /* Create the type.  */
16857   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16858   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16859
16860   return set_die_type (die, type, cu);
16861 }
16862
16863 /* Read a namespace scope.  */
16864
16865 static void
16866 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16867 {
16868   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16869   int is_anonymous;
16870
16871   /* Add a symbol associated to this if we haven't seen the namespace
16872      before.  Also, add a using directive if it's an anonymous
16873      namespace.  */
16874
16875   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16876     {
16877       struct type *type;
16878
16879       type = read_type_die (die, cu);
16880       new_symbol (die, type, cu);
16881
16882       namespace_name (die, &is_anonymous, cu);
16883       if (is_anonymous)
16884         {
16885           const char *previous_prefix = determine_prefix (die, cu);
16886
16887           std::vector<const char *> excludes;
16888           add_using_directive (using_directives (cu->language),
16889                                previous_prefix, TYPE_NAME (type), NULL,
16890                                NULL, excludes, 0, &objfile->objfile_obstack);
16891         }
16892     }
16893
16894   if (die->child != NULL)
16895     {
16896       struct die_info *child_die = die->child;
16897
16898       while (child_die && child_die->tag)
16899         {
16900           process_die (child_die, cu);
16901           child_die = sibling_die (child_die);
16902         }
16903     }
16904 }
16905
16906 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16907    imported module.  Still we need that type as local Fortran "use ... only"
16908    declaration imports depend on the created type in determine_prefix.  */
16909
16910 static struct type *
16911 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16912 {
16913   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16914   const char *module_name;
16915   struct type *type;
16916
16917   module_name = dwarf2_name (die, cu);
16918   if (!module_name)
16919     complaint (&symfile_complaints,
16920                _("DW_TAG_module has no name, offset 0x%x"),
16921                to_underlying (die->sect_off));
16922   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16923
16924   /* determine_prefix uses TYPE_TAG_NAME.  */
16925   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16926
16927   return set_die_type (die, type, cu);
16928 }
16929
16930 /* Read a Fortran module.  */
16931
16932 static void
16933 read_module (struct die_info *die, struct dwarf2_cu *cu)
16934 {
16935   struct die_info *child_die = die->child;
16936   struct type *type;
16937
16938   type = read_type_die (die, cu);
16939   new_symbol (die, type, cu);
16940
16941   while (child_die && child_die->tag)
16942     {
16943       process_die (child_die, cu);
16944       child_die = sibling_die (child_die);
16945     }
16946 }
16947
16948 /* Return the name of the namespace represented by DIE.  Set
16949    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16950    namespace.  */
16951
16952 static const char *
16953 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16954 {
16955   struct die_info *current_die;
16956   const char *name = NULL;
16957
16958   /* Loop through the extensions until we find a name.  */
16959
16960   for (current_die = die;
16961        current_die != NULL;
16962        current_die = dwarf2_extension (die, &cu))
16963     {
16964       /* We don't use dwarf2_name here so that we can detect the absence
16965          of a name -> anonymous namespace.  */
16966       name = dwarf2_string_attr (die, DW_AT_name, cu);
16967
16968       if (name != NULL)
16969         break;
16970     }
16971
16972   /* Is it an anonymous namespace?  */
16973
16974   *is_anonymous = (name == NULL);
16975   if (*is_anonymous)
16976     name = CP_ANONYMOUS_NAMESPACE_STR;
16977
16978   return name;
16979 }
16980
16981 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16982    the user defined type vector.  */
16983
16984 static struct type *
16985 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16986 {
16987   struct gdbarch *gdbarch
16988     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16989   struct comp_unit_head *cu_header = &cu->header;
16990   struct type *type;
16991   struct attribute *attr_byte_size;
16992   struct attribute *attr_address_class;
16993   int byte_size, addr_class;
16994   struct type *target_type;
16995
16996   target_type = die_type (die, cu);
16997
16998   /* The die_type call above may have already set the type for this DIE.  */
16999   type = get_die_type (die, cu);
17000   if (type)
17001     return type;
17002
17003   type = lookup_pointer_type (target_type);
17004
17005   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17006   if (attr_byte_size)
17007     byte_size = DW_UNSND (attr_byte_size);
17008   else
17009     byte_size = cu_header->addr_size;
17010
17011   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17012   if (attr_address_class)
17013     addr_class = DW_UNSND (attr_address_class);
17014   else
17015     addr_class = DW_ADDR_none;
17016
17017   /* If the pointer size or address class is different than the
17018      default, create a type variant marked as such and set the
17019      length accordingly.  */
17020   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
17021     {
17022       if (gdbarch_address_class_type_flags_p (gdbarch))
17023         {
17024           int type_flags;
17025
17026           type_flags = gdbarch_address_class_type_flags
17027                          (gdbarch, byte_size, addr_class);
17028           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17029                       == 0);
17030           type = make_type_with_address_space (type, type_flags);
17031         }
17032       else if (TYPE_LENGTH (type) != byte_size)
17033         {
17034           complaint (&symfile_complaints,
17035                      _("invalid pointer size %d"), byte_size);
17036         }
17037       else
17038         {
17039           /* Should we also complain about unhandled address classes?  */
17040         }
17041     }
17042
17043   TYPE_LENGTH (type) = byte_size;
17044   return set_die_type (die, type, cu);
17045 }
17046
17047 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17048    the user defined type vector.  */
17049
17050 static struct type *
17051 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17052 {
17053   struct type *type;
17054   struct type *to_type;
17055   struct type *domain;
17056
17057   to_type = die_type (die, cu);
17058   domain = die_containing_type (die, cu);
17059
17060   /* The calls above may have already set the type for this DIE.  */
17061   type = get_die_type (die, cu);
17062   if (type)
17063     return type;
17064
17065   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17066     type = lookup_methodptr_type (to_type);
17067   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17068     {
17069       struct type *new_type
17070         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17071
17072       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17073                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17074                             TYPE_VARARGS (to_type));
17075       type = lookup_methodptr_type (new_type);
17076     }
17077   else
17078     type = lookup_memberptr_type (to_type, domain);
17079
17080   return set_die_type (die, type, cu);
17081 }
17082
17083 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17084    the user defined type vector.  */
17085
17086 static struct type *
17087 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17088                           enum type_code refcode)
17089 {
17090   struct comp_unit_head *cu_header = &cu->header;
17091   struct type *type, *target_type;
17092   struct attribute *attr;
17093
17094   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17095
17096   target_type = die_type (die, cu);
17097
17098   /* The die_type call above may have already set the type for this DIE.  */
17099   type = get_die_type (die, cu);
17100   if (type)
17101     return type;
17102
17103   type = lookup_reference_type (target_type, refcode);
17104   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17105   if (attr)
17106     {
17107       TYPE_LENGTH (type) = DW_UNSND (attr);
17108     }
17109   else
17110     {
17111       TYPE_LENGTH (type) = cu_header->addr_size;
17112     }
17113   return set_die_type (die, type, cu);
17114 }
17115
17116 /* Add the given cv-qualifiers to the element type of the array.  GCC
17117    outputs DWARF type qualifiers that apply to an array, not the
17118    element type.  But GDB relies on the array element type to carry
17119    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17120    specification.  */
17121
17122 static struct type *
17123 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17124                    struct type *base_type, int cnst, int voltl)
17125 {
17126   struct type *el_type, *inner_array;
17127
17128   base_type = copy_type (base_type);
17129   inner_array = base_type;
17130
17131   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17132     {
17133       TYPE_TARGET_TYPE (inner_array) =
17134         copy_type (TYPE_TARGET_TYPE (inner_array));
17135       inner_array = TYPE_TARGET_TYPE (inner_array);
17136     }
17137
17138   el_type = TYPE_TARGET_TYPE (inner_array);
17139   cnst |= TYPE_CONST (el_type);
17140   voltl |= TYPE_VOLATILE (el_type);
17141   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17142
17143   return set_die_type (die, base_type, cu);
17144 }
17145
17146 static struct type *
17147 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17148 {
17149   struct type *base_type, *cv_type;
17150
17151   base_type = die_type (die, cu);
17152
17153   /* The die_type call above may have already set the type for this DIE.  */
17154   cv_type = get_die_type (die, cu);
17155   if (cv_type)
17156     return cv_type;
17157
17158   /* In case the const qualifier is applied to an array type, the element type
17159      is so qualified, not the array type (section 6.7.3 of C99).  */
17160   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17161     return add_array_cv_type (die, cu, base_type, 1, 0);
17162
17163   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17164   return set_die_type (die, cv_type, cu);
17165 }
17166
17167 static struct type *
17168 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17169 {
17170   struct type *base_type, *cv_type;
17171
17172   base_type = die_type (die, cu);
17173
17174   /* The die_type call above may have already set the type for this DIE.  */
17175   cv_type = get_die_type (die, cu);
17176   if (cv_type)
17177     return cv_type;
17178
17179   /* In case the volatile qualifier is applied to an array type, the
17180      element type is so qualified, not the array type (section 6.7.3
17181      of C99).  */
17182   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17183     return add_array_cv_type (die, cu, base_type, 0, 1);
17184
17185   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17186   return set_die_type (die, cv_type, cu);
17187 }
17188
17189 /* Handle DW_TAG_restrict_type.  */
17190
17191 static struct type *
17192 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17193 {
17194   struct type *base_type, *cv_type;
17195
17196   base_type = die_type (die, cu);
17197
17198   /* The die_type call above may have already set the type for this DIE.  */
17199   cv_type = get_die_type (die, cu);
17200   if (cv_type)
17201     return cv_type;
17202
17203   cv_type = make_restrict_type (base_type);
17204   return set_die_type (die, cv_type, cu);
17205 }
17206
17207 /* Handle DW_TAG_atomic_type.  */
17208
17209 static struct type *
17210 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17211 {
17212   struct type *base_type, *cv_type;
17213
17214   base_type = die_type (die, cu);
17215
17216   /* The die_type call above may have already set the type for this DIE.  */
17217   cv_type = get_die_type (die, cu);
17218   if (cv_type)
17219     return cv_type;
17220
17221   cv_type = make_atomic_type (base_type);
17222   return set_die_type (die, cv_type, cu);
17223 }
17224
17225 /* Extract all information from a DW_TAG_string_type DIE and add to
17226    the user defined type vector.  It isn't really a user defined type,
17227    but it behaves like one, with other DIE's using an AT_user_def_type
17228    attribute to reference it.  */
17229
17230 static struct type *
17231 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17232 {
17233   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17234   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17235   struct type *type, *range_type, *index_type, *char_type;
17236   struct attribute *attr;
17237   unsigned int length;
17238
17239   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17240   if (attr)
17241     {
17242       length = DW_UNSND (attr);
17243     }
17244   else
17245     {
17246       /* Check for the DW_AT_byte_size attribute.  */
17247       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17248       if (attr)
17249         {
17250           length = DW_UNSND (attr);
17251         }
17252       else
17253         {
17254           length = 1;
17255         }
17256     }
17257
17258   index_type = objfile_type (objfile)->builtin_int;
17259   range_type = create_static_range_type (NULL, index_type, 1, length);
17260   char_type = language_string_char_type (cu->language_defn, gdbarch);
17261   type = create_string_type (NULL, char_type, range_type);
17262
17263   return set_die_type (die, type, cu);
17264 }
17265
17266 /* Assuming that DIE corresponds to a function, returns nonzero
17267    if the function is prototyped.  */
17268
17269 static int
17270 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17271 {
17272   struct attribute *attr;
17273
17274   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17275   if (attr && (DW_UNSND (attr) != 0))
17276     return 1;
17277
17278   /* The DWARF standard implies that the DW_AT_prototyped attribute
17279      is only meaninful for C, but the concept also extends to other
17280      languages that allow unprototyped functions (Eg: Objective C).
17281      For all other languages, assume that functions are always
17282      prototyped.  */
17283   if (cu->language != language_c
17284       && cu->language != language_objc
17285       && cu->language != language_opencl)
17286     return 1;
17287
17288   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17289      prototyped and unprototyped functions; default to prototyped,
17290      since that is more common in modern code (and RealView warns
17291      about unprototyped functions).  */
17292   if (producer_is_realview (cu->producer))
17293     return 1;
17294
17295   return 0;
17296 }
17297
17298 /* Handle DIES due to C code like:
17299
17300    struct foo
17301    {
17302    int (*funcp)(int a, long l);
17303    int b;
17304    };
17305
17306    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17307
17308 static struct type *
17309 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17310 {
17311   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17312   struct type *type;            /* Type that this function returns.  */
17313   struct type *ftype;           /* Function that returns above type.  */
17314   struct attribute *attr;
17315
17316   type = die_type (die, cu);
17317
17318   /* The die_type call above may have already set the type for this DIE.  */
17319   ftype = get_die_type (die, cu);
17320   if (ftype)
17321     return ftype;
17322
17323   ftype = lookup_function_type (type);
17324
17325   if (prototyped_function_p (die, cu))
17326     TYPE_PROTOTYPED (ftype) = 1;
17327
17328   /* Store the calling convention in the type if it's available in
17329      the subroutine die.  Otherwise set the calling convention to
17330      the default value DW_CC_normal.  */
17331   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17332   if (attr)
17333     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17334   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17335     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17336   else
17337     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17338
17339   /* Record whether the function returns normally to its caller or not
17340      if the DWARF producer set that information.  */
17341   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17342   if (attr && (DW_UNSND (attr) != 0))
17343     TYPE_NO_RETURN (ftype) = 1;
17344
17345   /* We need to add the subroutine type to the die immediately so
17346      we don't infinitely recurse when dealing with parameters
17347      declared as the same subroutine type.  */
17348   set_die_type (die, ftype, cu);
17349
17350   if (die->child != NULL)
17351     {
17352       struct type *void_type = objfile_type (objfile)->builtin_void;
17353       struct die_info *child_die;
17354       int nparams, iparams;
17355
17356       /* Count the number of parameters.
17357          FIXME: GDB currently ignores vararg functions, but knows about
17358          vararg member functions.  */
17359       nparams = 0;
17360       child_die = die->child;
17361       while (child_die && child_die->tag)
17362         {
17363           if (child_die->tag == DW_TAG_formal_parameter)
17364             nparams++;
17365           else if (child_die->tag == DW_TAG_unspecified_parameters)
17366             TYPE_VARARGS (ftype) = 1;
17367           child_die = sibling_die (child_die);
17368         }
17369
17370       /* Allocate storage for parameters and fill them in.  */
17371       TYPE_NFIELDS (ftype) = nparams;
17372       TYPE_FIELDS (ftype) = (struct field *)
17373         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17374
17375       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17376          even if we error out during the parameters reading below.  */
17377       for (iparams = 0; iparams < nparams; iparams++)
17378         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17379
17380       iparams = 0;
17381       child_die = die->child;
17382       while (child_die && child_die->tag)
17383         {
17384           if (child_die->tag == DW_TAG_formal_parameter)
17385             {
17386               struct type *arg_type;
17387
17388               /* DWARF version 2 has no clean way to discern C++
17389                  static and non-static member functions.  G++ helps
17390                  GDB by marking the first parameter for non-static
17391                  member functions (which is the this pointer) as
17392                  artificial.  We pass this information to
17393                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17394
17395                  DWARF version 3 added DW_AT_object_pointer, which GCC
17396                  4.5 does not yet generate.  */
17397               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17398               if (attr)
17399                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17400               else
17401                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17402               arg_type = die_type (child_die, cu);
17403
17404               /* RealView does not mark THIS as const, which the testsuite
17405                  expects.  GCC marks THIS as const in method definitions,
17406                  but not in the class specifications (GCC PR 43053).  */
17407               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17408                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17409                 {
17410                   int is_this = 0;
17411                   struct dwarf2_cu *arg_cu = cu;
17412                   const char *name = dwarf2_name (child_die, cu);
17413
17414                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17415                   if (attr)
17416                     {
17417                       /* If the compiler emits this, use it.  */
17418                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17419                         is_this = 1;
17420                     }
17421                   else if (name && strcmp (name, "this") == 0)
17422                     /* Function definitions will have the argument names.  */
17423                     is_this = 1;
17424                   else if (name == NULL && iparams == 0)
17425                     /* Declarations may not have the names, so like
17426                        elsewhere in GDB, assume an artificial first
17427                        argument is "this".  */
17428                     is_this = 1;
17429
17430                   if (is_this)
17431                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17432                                              arg_type, 0);
17433                 }
17434
17435               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17436               iparams++;
17437             }
17438           child_die = sibling_die (child_die);
17439         }
17440     }
17441
17442   return ftype;
17443 }
17444
17445 static struct type *
17446 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17447 {
17448   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17449   const char *name = NULL;
17450   struct type *this_type, *target_type;
17451
17452   name = dwarf2_full_name (NULL, die, cu);
17453   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17454   TYPE_TARGET_STUB (this_type) = 1;
17455   set_die_type (die, this_type, cu);
17456   target_type = die_type (die, cu);
17457   if (target_type != this_type)
17458     TYPE_TARGET_TYPE (this_type) = target_type;
17459   else
17460     {
17461       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17462          spec and cause infinite loops in GDB.  */
17463       complaint (&symfile_complaints,
17464                  _("Self-referential DW_TAG_typedef "
17465                    "- DIE at 0x%x [in module %s]"),
17466                  to_underlying (die->sect_off), objfile_name (objfile));
17467       TYPE_TARGET_TYPE (this_type) = NULL;
17468     }
17469   return this_type;
17470 }
17471
17472 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17473    (which may be different from NAME) to the architecture back-end to allow
17474    it to guess the correct format if necessary.  */
17475
17476 static struct type *
17477 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17478                         const char *name_hint)
17479 {
17480   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17481   const struct floatformat **format;
17482   struct type *type;
17483
17484   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17485   if (format)
17486     type = init_float_type (objfile, bits, name, format);
17487   else
17488     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17489
17490   return type;
17491 }
17492
17493 /* Find a representation of a given base type and install
17494    it in the TYPE field of the die.  */
17495
17496 static struct type *
17497 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17498 {
17499   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17500   struct type *type;
17501   struct attribute *attr;
17502   int encoding = 0, bits = 0;
17503   const char *name;
17504
17505   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17506   if (attr)
17507     {
17508       encoding = DW_UNSND (attr);
17509     }
17510   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17511   if (attr)
17512     {
17513       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17514     }
17515   name = dwarf2_name (die, cu);
17516   if (!name)
17517     {
17518       complaint (&symfile_complaints,
17519                  _("DW_AT_name missing from DW_TAG_base_type"));
17520     }
17521
17522   switch (encoding)
17523     {
17524       case DW_ATE_address:
17525         /* Turn DW_ATE_address into a void * pointer.  */
17526         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17527         type = init_pointer_type (objfile, bits, name, type);
17528         break;
17529       case DW_ATE_boolean:
17530         type = init_boolean_type (objfile, bits, 1, name);
17531         break;
17532       case DW_ATE_complex_float:
17533         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17534         type = init_complex_type (objfile, name, type);
17535         break;
17536       case DW_ATE_decimal_float:
17537         type = init_decfloat_type (objfile, bits, name);
17538         break;
17539       case DW_ATE_float:
17540         type = dwarf2_init_float_type (objfile, bits, name, name);
17541         break;
17542       case DW_ATE_signed:
17543         type = init_integer_type (objfile, bits, 0, name);
17544         break;
17545       case DW_ATE_unsigned:
17546         if (cu->language == language_fortran
17547             && name
17548             && startswith (name, "character("))
17549           type = init_character_type (objfile, bits, 1, name);
17550         else
17551           type = init_integer_type (objfile, bits, 1, name);
17552         break;
17553       case DW_ATE_signed_char:
17554         if (cu->language == language_ada || cu->language == language_m2
17555             || cu->language == language_pascal
17556             || cu->language == language_fortran)
17557           type = init_character_type (objfile, bits, 0, name);
17558         else
17559           type = init_integer_type (objfile, bits, 0, name);
17560         break;
17561       case DW_ATE_unsigned_char:
17562         if (cu->language == language_ada || cu->language == language_m2
17563             || cu->language == language_pascal
17564             || cu->language == language_fortran
17565             || cu->language == language_rust)
17566           type = init_character_type (objfile, bits, 1, name);
17567         else
17568           type = init_integer_type (objfile, bits, 1, name);
17569         break;
17570       case DW_ATE_UTF:
17571         {
17572           gdbarch *arch = get_objfile_arch (objfile);
17573
17574           if (bits == 16)
17575             type = builtin_type (arch)->builtin_char16;
17576           else if (bits == 32)
17577             type = builtin_type (arch)->builtin_char32;
17578           else
17579             {
17580               complaint (&symfile_complaints,
17581                          _("unsupported DW_ATE_UTF bit size: '%d'"),
17582                          bits);
17583               type = init_integer_type (objfile, bits, 1, name);
17584             }
17585           return set_die_type (die, type, cu);
17586         }
17587         break;
17588
17589       default:
17590         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
17591                    dwarf_type_encoding_name (encoding));
17592         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17593         break;
17594     }
17595
17596   if (name && strcmp (name, "char") == 0)
17597     TYPE_NOSIGN (type) = 1;
17598
17599   return set_die_type (die, type, cu);
17600 }
17601
17602 /* Parse dwarf attribute if it's a block, reference or constant and put the
17603    resulting value of the attribute into struct bound_prop.
17604    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17605
17606 static int
17607 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17608                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17609 {
17610   struct dwarf2_property_baton *baton;
17611   struct obstack *obstack
17612     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17613
17614   if (attr == NULL || prop == NULL)
17615     return 0;
17616
17617   if (attr_form_is_block (attr))
17618     {
17619       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17620       baton->referenced_type = NULL;
17621       baton->locexpr.per_cu = cu->per_cu;
17622       baton->locexpr.size = DW_BLOCK (attr)->size;
17623       baton->locexpr.data = DW_BLOCK (attr)->data;
17624       prop->data.baton = baton;
17625       prop->kind = PROP_LOCEXPR;
17626       gdb_assert (prop->data.baton != NULL);
17627     }
17628   else if (attr_form_is_ref (attr))
17629     {
17630       struct dwarf2_cu *target_cu = cu;
17631       struct die_info *target_die;
17632       struct attribute *target_attr;
17633
17634       target_die = follow_die_ref (die, attr, &target_cu);
17635       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17636       if (target_attr == NULL)
17637         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17638                                    target_cu);
17639       if (target_attr == NULL)
17640         return 0;
17641
17642       switch (target_attr->name)
17643         {
17644           case DW_AT_location:
17645             if (attr_form_is_section_offset (target_attr))
17646               {
17647                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17648                 baton->referenced_type = die_type (target_die, target_cu);
17649                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17650                 prop->data.baton = baton;
17651                 prop->kind = PROP_LOCLIST;
17652                 gdb_assert (prop->data.baton != NULL);
17653               }
17654             else if (attr_form_is_block (target_attr))
17655               {
17656                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17657                 baton->referenced_type = die_type (target_die, target_cu);
17658                 baton->locexpr.per_cu = cu->per_cu;
17659                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17660                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17661                 prop->data.baton = baton;
17662                 prop->kind = PROP_LOCEXPR;
17663                 gdb_assert (prop->data.baton != NULL);
17664               }
17665             else
17666               {
17667                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17668                                                        "dynamic property");
17669                 return 0;
17670               }
17671             break;
17672           case DW_AT_data_member_location:
17673             {
17674               LONGEST offset;
17675
17676               if (!handle_data_member_location (target_die, target_cu,
17677                                                 &offset))
17678                 return 0;
17679
17680               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17681               baton->referenced_type = read_type_die (target_die->parent,
17682                                                       target_cu);
17683               baton->offset_info.offset = offset;
17684               baton->offset_info.type = die_type (target_die, target_cu);
17685               prop->data.baton = baton;
17686               prop->kind = PROP_ADDR_OFFSET;
17687               break;
17688             }
17689         }
17690     }
17691   else if (attr_form_is_constant (attr))
17692     {
17693       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17694       prop->kind = PROP_CONST;
17695     }
17696   else
17697     {
17698       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17699                                              dwarf2_name (die, cu));
17700       return 0;
17701     }
17702
17703   return 1;
17704 }
17705
17706 /* Read the given DW_AT_subrange DIE.  */
17707
17708 static struct type *
17709 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17710 {
17711   struct type *base_type, *orig_base_type;
17712   struct type *range_type;
17713   struct attribute *attr;
17714   struct dynamic_prop low, high;
17715   int low_default_is_valid;
17716   int high_bound_is_count = 0;
17717   const char *name;
17718   LONGEST negative_mask;
17719
17720   orig_base_type = die_type (die, cu);
17721   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17722      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17723      creating the range type, but we use the result of check_typedef
17724      when examining properties of the type.  */
17725   base_type = check_typedef (orig_base_type);
17726
17727   /* The die_type call above may have already set the type for this DIE.  */
17728   range_type = get_die_type (die, cu);
17729   if (range_type)
17730     return range_type;
17731
17732   low.kind = PROP_CONST;
17733   high.kind = PROP_CONST;
17734   high.data.const_val = 0;
17735
17736   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17737      omitting DW_AT_lower_bound.  */
17738   switch (cu->language)
17739     {
17740     case language_c:
17741     case language_cplus:
17742       low.data.const_val = 0;
17743       low_default_is_valid = 1;
17744       break;
17745     case language_fortran:
17746       low.data.const_val = 1;
17747       low_default_is_valid = 1;
17748       break;
17749     case language_d:
17750     case language_objc:
17751     case language_rust:
17752       low.data.const_val = 0;
17753       low_default_is_valid = (cu->header.version >= 4);
17754       break;
17755     case language_ada:
17756     case language_m2:
17757     case language_pascal:
17758       low.data.const_val = 1;
17759       low_default_is_valid = (cu->header.version >= 4);
17760       break;
17761     default:
17762       low.data.const_val = 0;
17763       low_default_is_valid = 0;
17764       break;
17765     }
17766
17767   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17768   if (attr)
17769     attr_to_dynamic_prop (attr, die, cu, &low);
17770   else if (!low_default_is_valid)
17771     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
17772                                       "- DIE at 0x%x [in module %s]"),
17773                to_underlying (die->sect_off),
17774                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17775
17776   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
17777   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17778     {
17779       attr = dwarf2_attr (die, DW_AT_count, cu);
17780       if (attr_to_dynamic_prop (attr, die, cu, &high))
17781         {
17782           /* If bounds are constant do the final calculation here.  */
17783           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17784             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17785           else
17786             high_bound_is_count = 1;
17787         }
17788     }
17789
17790   /* Dwarf-2 specifications explicitly allows to create subrange types
17791      without specifying a base type.
17792      In that case, the base type must be set to the type of
17793      the lower bound, upper bound or count, in that order, if any of these
17794      three attributes references an object that has a type.
17795      If no base type is found, the Dwarf-2 specifications say that
17796      a signed integer type of size equal to the size of an address should
17797      be used.
17798      For the following C code: `extern char gdb_int [];'
17799      GCC produces an empty range DIE.
17800      FIXME: muller/2010-05-28: Possible references to object for low bound,
17801      high bound or count are not yet handled by this code.  */
17802   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17803     {
17804       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17805       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17806       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17807       struct type *int_type = objfile_type (objfile)->builtin_int;
17808
17809       /* Test "int", "long int", and "long long int" objfile types,
17810          and select the first one having a size above or equal to the
17811          architecture address size.  */
17812       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17813         base_type = int_type;
17814       else
17815         {
17816           int_type = objfile_type (objfile)->builtin_long;
17817           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17818             base_type = int_type;
17819           else
17820             {
17821               int_type = objfile_type (objfile)->builtin_long_long;
17822               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17823                 base_type = int_type;
17824             }
17825         }
17826     }
17827
17828   /* Normally, the DWARF producers are expected to use a signed
17829      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17830      But this is unfortunately not always the case, as witnessed
17831      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17832      is used instead.  To work around that ambiguity, we treat
17833      the bounds as signed, and thus sign-extend their values, when
17834      the base type is signed.  */
17835   negative_mask =
17836     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17837   if (low.kind == PROP_CONST
17838       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17839     low.data.const_val |= negative_mask;
17840   if (high.kind == PROP_CONST
17841       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17842     high.data.const_val |= negative_mask;
17843
17844   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17845
17846   if (high_bound_is_count)
17847     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17848
17849   /* Ada expects an empty array on no boundary attributes.  */
17850   if (attr == NULL && cu->language != language_ada)
17851     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17852
17853   name = dwarf2_name (die, cu);
17854   if (name)
17855     TYPE_NAME (range_type) = name;
17856
17857   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17858   if (attr)
17859     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17860
17861   set_die_type (die, range_type, cu);
17862
17863   /* set_die_type should be already done.  */
17864   set_descriptive_type (range_type, die, cu);
17865
17866   return range_type;
17867 }
17868
17869 static struct type *
17870 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17871 {
17872   struct type *type;
17873
17874   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17875                     NULL);
17876   TYPE_NAME (type) = dwarf2_name (die, cu);
17877
17878   /* In Ada, an unspecified type is typically used when the description
17879      of the type is defered to a different unit.  When encountering
17880      such a type, we treat it as a stub, and try to resolve it later on,
17881      when needed.  */
17882   if (cu->language == language_ada)
17883     TYPE_STUB (type) = 1;
17884
17885   return set_die_type (die, type, cu);
17886 }
17887
17888 /* Read a single die and all its descendents.  Set the die's sibling
17889    field to NULL; set other fields in the die correctly, and set all
17890    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17891    location of the info_ptr after reading all of those dies.  PARENT
17892    is the parent of the die in question.  */
17893
17894 static struct die_info *
17895 read_die_and_children (const struct die_reader_specs *reader,
17896                        const gdb_byte *info_ptr,
17897                        const gdb_byte **new_info_ptr,
17898                        struct die_info *parent)
17899 {
17900   struct die_info *die;
17901   const gdb_byte *cur_ptr;
17902   int has_children;
17903
17904   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17905   if (die == NULL)
17906     {
17907       *new_info_ptr = cur_ptr;
17908       return NULL;
17909     }
17910   store_in_ref_table (die, reader->cu);
17911
17912   if (has_children)
17913     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17914   else
17915     {
17916       die->child = NULL;
17917       *new_info_ptr = cur_ptr;
17918     }
17919
17920   die->sibling = NULL;
17921   die->parent = parent;
17922   return die;
17923 }
17924
17925 /* Read a die, all of its descendents, and all of its siblings; set
17926    all of the fields of all of the dies correctly.  Arguments are as
17927    in read_die_and_children.  */
17928
17929 static struct die_info *
17930 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17931                          const gdb_byte *info_ptr,
17932                          const gdb_byte **new_info_ptr,
17933                          struct die_info *parent)
17934 {
17935   struct die_info *first_die, *last_sibling;
17936   const gdb_byte *cur_ptr;
17937
17938   cur_ptr = info_ptr;
17939   first_die = last_sibling = NULL;
17940
17941   while (1)
17942     {
17943       struct die_info *die
17944         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17945
17946       if (die == NULL)
17947         {
17948           *new_info_ptr = cur_ptr;
17949           return first_die;
17950         }
17951
17952       if (!first_die)
17953         first_die = die;
17954       else
17955         last_sibling->sibling = die;
17956
17957       last_sibling = die;
17958     }
17959 }
17960
17961 /* Read a die, all of its descendents, and all of its siblings; set
17962    all of the fields of all of the dies correctly.  Arguments are as
17963    in read_die_and_children.
17964    This the main entry point for reading a DIE and all its children.  */
17965
17966 static struct die_info *
17967 read_die_and_siblings (const struct die_reader_specs *reader,
17968                        const gdb_byte *info_ptr,
17969                        const gdb_byte **new_info_ptr,
17970                        struct die_info *parent)
17971 {
17972   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17973                                                   new_info_ptr, parent);
17974
17975   if (dwarf_die_debug)
17976     {
17977       fprintf_unfiltered (gdb_stdlog,
17978                           "Read die from %s@0x%x of %s:\n",
17979                           get_section_name (reader->die_section),
17980                           (unsigned) (info_ptr - reader->die_section->buffer),
17981                           bfd_get_filename (reader->abfd));
17982       dump_die (die, dwarf_die_debug);
17983     }
17984
17985   return die;
17986 }
17987
17988 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17989    attributes.
17990    The caller is responsible for filling in the extra attributes
17991    and updating (*DIEP)->num_attrs.
17992    Set DIEP to point to a newly allocated die with its information,
17993    except for its child, sibling, and parent fields.
17994    Set HAS_CHILDREN to tell whether the die has children or not.  */
17995
17996 static const gdb_byte *
17997 read_full_die_1 (const struct die_reader_specs *reader,
17998                  struct die_info **diep, const gdb_byte *info_ptr,
17999                  int *has_children, int num_extra_attrs)
18000 {
18001   unsigned int abbrev_number, bytes_read, i;
18002   struct abbrev_info *abbrev;
18003   struct die_info *die;
18004   struct dwarf2_cu *cu = reader->cu;
18005   bfd *abfd = reader->abfd;
18006
18007   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18008   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18009   info_ptr += bytes_read;
18010   if (!abbrev_number)
18011     {
18012       *diep = NULL;
18013       *has_children = 0;
18014       return info_ptr;
18015     }
18016
18017   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
18018   if (!abbrev)
18019     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18020            abbrev_number,
18021            bfd_get_filename (abfd));
18022
18023   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18024   die->sect_off = sect_off;
18025   die->tag = abbrev->tag;
18026   die->abbrev = abbrev_number;
18027
18028   /* Make the result usable.
18029      The caller needs to update num_attrs after adding the extra
18030      attributes.  */
18031   die->num_attrs = abbrev->num_attrs;
18032
18033   for (i = 0; i < abbrev->num_attrs; ++i)
18034     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18035                                info_ptr);
18036
18037   *diep = die;
18038   *has_children = abbrev->has_children;
18039   return info_ptr;
18040 }
18041
18042 /* Read a die and all its attributes.
18043    Set DIEP to point to a newly allocated die with its information,
18044    except for its child, sibling, and parent fields.
18045    Set HAS_CHILDREN to tell whether the die has children or not.  */
18046
18047 static const gdb_byte *
18048 read_full_die (const struct die_reader_specs *reader,
18049                struct die_info **diep, const gdb_byte *info_ptr,
18050                int *has_children)
18051 {
18052   const gdb_byte *result;
18053
18054   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18055
18056   if (dwarf_die_debug)
18057     {
18058       fprintf_unfiltered (gdb_stdlog,
18059                           "Read die from %s@0x%x of %s:\n",
18060                           get_section_name (reader->die_section),
18061                           (unsigned) (info_ptr - reader->die_section->buffer),
18062                           bfd_get_filename (reader->abfd));
18063       dump_die (*diep, dwarf_die_debug);
18064     }
18065
18066   return result;
18067 }
18068 \f
18069 /* Abbreviation tables.
18070
18071    In DWARF version 2, the description of the debugging information is
18072    stored in a separate .debug_abbrev section.  Before we read any
18073    dies from a section we read in all abbreviations and install them
18074    in a hash table.  */
18075
18076 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18077
18078 static struct abbrev_info *
18079 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
18080 {
18081   struct abbrev_info *abbrev;
18082
18083   abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
18084   memset (abbrev, 0, sizeof (struct abbrev_info));
18085
18086   return abbrev;
18087 }
18088
18089 /* Add an abbreviation to the table.  */
18090
18091 static void
18092 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
18093                          unsigned int abbrev_number,
18094                          struct abbrev_info *abbrev)
18095 {
18096   unsigned int hash_number;
18097
18098   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18099   abbrev->next = abbrev_table->abbrevs[hash_number];
18100   abbrev_table->abbrevs[hash_number] = abbrev;
18101 }
18102
18103 /* Look up an abbrev in the table.
18104    Returns NULL if the abbrev is not found.  */
18105
18106 static struct abbrev_info *
18107 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
18108                             unsigned int abbrev_number)
18109 {
18110   unsigned int hash_number;
18111   struct abbrev_info *abbrev;
18112
18113   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18114   abbrev = abbrev_table->abbrevs[hash_number];
18115
18116   while (abbrev)
18117     {
18118       if (abbrev->number == abbrev_number)
18119         return abbrev;
18120       abbrev = abbrev->next;
18121     }
18122   return NULL;
18123 }
18124
18125 /* Read in an abbrev table.  */
18126
18127 static struct abbrev_table *
18128 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18129                          struct dwarf2_section_info *section,
18130                          sect_offset sect_off)
18131 {
18132   struct objfile *objfile = dwarf2_per_objfile->objfile;
18133   bfd *abfd = get_section_bfd_owner (section);
18134   struct abbrev_table *abbrev_table;
18135   const gdb_byte *abbrev_ptr;
18136   struct abbrev_info *cur_abbrev;
18137   unsigned int abbrev_number, bytes_read, abbrev_name;
18138   unsigned int abbrev_form;
18139   struct attr_abbrev *cur_attrs;
18140   unsigned int allocated_attrs;
18141
18142   abbrev_table = XNEW (struct abbrev_table);
18143   abbrev_table->sect_off = sect_off;
18144   obstack_init (&abbrev_table->abbrev_obstack);
18145   abbrev_table->abbrevs =
18146     XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
18147                ABBREV_HASH_SIZE);
18148   memset (abbrev_table->abbrevs, 0,
18149           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
18150
18151   dwarf2_read_section (objfile, section);
18152   abbrev_ptr = section->buffer + to_underlying (sect_off);
18153   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18154   abbrev_ptr += bytes_read;
18155
18156   allocated_attrs = ATTR_ALLOC_CHUNK;
18157   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18158
18159   /* Loop until we reach an abbrev number of 0.  */
18160   while (abbrev_number)
18161     {
18162       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
18163
18164       /* read in abbrev header */
18165       cur_abbrev->number = abbrev_number;
18166       cur_abbrev->tag
18167         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18168       abbrev_ptr += bytes_read;
18169       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18170       abbrev_ptr += 1;
18171
18172       /* now read in declarations */
18173       for (;;)
18174         {
18175           LONGEST implicit_const;
18176
18177           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18178           abbrev_ptr += bytes_read;
18179           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18180           abbrev_ptr += bytes_read;
18181           if (abbrev_form == DW_FORM_implicit_const)
18182             {
18183               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18184                                                    &bytes_read);
18185               abbrev_ptr += bytes_read;
18186             }
18187           else
18188             {
18189               /* Initialize it due to a false compiler warning.  */
18190               implicit_const = -1;
18191             }
18192
18193           if (abbrev_name == 0)
18194             break;
18195
18196           if (cur_abbrev->num_attrs == allocated_attrs)
18197             {
18198               allocated_attrs += ATTR_ALLOC_CHUNK;
18199               cur_attrs
18200                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18201             }
18202
18203           cur_attrs[cur_abbrev->num_attrs].name
18204             = (enum dwarf_attribute) abbrev_name;
18205           cur_attrs[cur_abbrev->num_attrs].form
18206             = (enum dwarf_form) abbrev_form;
18207           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18208           ++cur_abbrev->num_attrs;
18209         }
18210
18211       cur_abbrev->attrs =
18212         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18213                    cur_abbrev->num_attrs);
18214       memcpy (cur_abbrev->attrs, cur_attrs,
18215               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18216
18217       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
18218
18219       /* Get next abbreviation.
18220          Under Irix6 the abbreviations for a compilation unit are not
18221          always properly terminated with an abbrev number of 0.
18222          Exit loop if we encounter an abbreviation which we have
18223          already read (which means we are about to read the abbreviations
18224          for the next compile unit) or if the end of the abbreviation
18225          table is reached.  */
18226       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18227         break;
18228       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18229       abbrev_ptr += bytes_read;
18230       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
18231         break;
18232     }
18233
18234   xfree (cur_attrs);
18235   return abbrev_table;
18236 }
18237
18238 /* Free the resources held by ABBREV_TABLE.  */
18239
18240 static void
18241 abbrev_table_free (struct abbrev_table *abbrev_table)
18242 {
18243   obstack_free (&abbrev_table->abbrev_obstack, NULL);
18244   xfree (abbrev_table);
18245 }
18246
18247 /* Same as abbrev_table_free but as a cleanup.
18248    We pass in a pointer to the pointer to the table so that we can
18249    set the pointer to NULL when we're done.  It also simplifies
18250    build_type_psymtabs_1.  */
18251
18252 static void
18253 abbrev_table_free_cleanup (void *table_ptr)
18254 {
18255   struct abbrev_table **abbrev_table_ptr = (struct abbrev_table **) table_ptr;
18256
18257   if (*abbrev_table_ptr != NULL)
18258     abbrev_table_free (*abbrev_table_ptr);
18259   *abbrev_table_ptr = NULL;
18260 }
18261
18262 /* Read the abbrev table for CU from ABBREV_SECTION.  */
18263
18264 static void
18265 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
18266                      struct dwarf2_section_info *abbrev_section)
18267 {
18268   cu->abbrev_table =
18269     abbrev_table_read_table (cu->per_cu->dwarf2_per_objfile, abbrev_section,
18270                              cu->header.abbrev_sect_off);
18271 }
18272
18273 /* Release the memory used by the abbrev table for a compilation unit.  */
18274
18275 static void
18276 dwarf2_free_abbrev_table (void *ptr_to_cu)
18277 {
18278   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr_to_cu;
18279
18280   if (cu->abbrev_table != NULL)
18281     abbrev_table_free (cu->abbrev_table);
18282   /* Set this to NULL so that we SEGV if we try to read it later,
18283      and also because free_comp_unit verifies this is NULL.  */
18284   cu->abbrev_table = NULL;
18285 }
18286 \f
18287 /* Returns nonzero if TAG represents a type that we might generate a partial
18288    symbol for.  */
18289
18290 static int
18291 is_type_tag_for_partial (int tag)
18292 {
18293   switch (tag)
18294     {
18295 #if 0
18296     /* Some types that would be reasonable to generate partial symbols for,
18297        that we don't at present.  */
18298     case DW_TAG_array_type:
18299     case DW_TAG_file_type:
18300     case DW_TAG_ptr_to_member_type:
18301     case DW_TAG_set_type:
18302     case DW_TAG_string_type:
18303     case DW_TAG_subroutine_type:
18304 #endif
18305     case DW_TAG_base_type:
18306     case DW_TAG_class_type:
18307     case DW_TAG_interface_type:
18308     case DW_TAG_enumeration_type:
18309     case DW_TAG_structure_type:
18310     case DW_TAG_subrange_type:
18311     case DW_TAG_typedef:
18312     case DW_TAG_union_type:
18313       return 1;
18314     default:
18315       return 0;
18316     }
18317 }
18318
18319 /* Load all DIEs that are interesting for partial symbols into memory.  */
18320
18321 static struct partial_die_info *
18322 load_partial_dies (const struct die_reader_specs *reader,
18323                    const gdb_byte *info_ptr, int building_psymtab)
18324 {
18325   struct dwarf2_cu *cu = reader->cu;
18326   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18327   struct partial_die_info *part_die;
18328   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18329   struct abbrev_info *abbrev;
18330   unsigned int bytes_read;
18331   unsigned int load_all = 0;
18332   int nesting_level = 1;
18333
18334   parent_die = NULL;
18335   last_die = NULL;
18336
18337   gdb_assert (cu->per_cu != NULL);
18338   if (cu->per_cu->load_all_dies)
18339     load_all = 1;
18340
18341   cu->partial_dies
18342     = htab_create_alloc_ex (cu->header.length / 12,
18343                             partial_die_hash,
18344                             partial_die_eq,
18345                             NULL,
18346                             &cu->comp_unit_obstack,
18347                             hashtab_obstack_allocate,
18348                             dummy_obstack_deallocate);
18349
18350   part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
18351
18352   while (1)
18353     {
18354       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
18355
18356       /* A NULL abbrev means the end of a series of children.  */
18357       if (abbrev == NULL)
18358         {
18359           if (--nesting_level == 0)
18360             {
18361               /* PART_DIE was probably the last thing allocated on the
18362                  comp_unit_obstack, so we could call obstack_free
18363                  here.  We don't do that because the waste is small,
18364                  and will be cleaned up when we're done with this
18365                  compilation unit.  This way, we're also more robust
18366                  against other users of the comp_unit_obstack.  */
18367               return first_die;
18368             }
18369           info_ptr += bytes_read;
18370           last_die = parent_die;
18371           parent_die = parent_die->die_parent;
18372           continue;
18373         }
18374
18375       /* Check for template arguments.  We never save these; if
18376          they're seen, we just mark the parent, and go on our way.  */
18377       if (parent_die != NULL
18378           && cu->language == language_cplus
18379           && (abbrev->tag == DW_TAG_template_type_param
18380               || abbrev->tag == DW_TAG_template_value_param))
18381         {
18382           parent_die->has_template_arguments = 1;
18383
18384           if (!load_all)
18385             {
18386               /* We don't need a partial DIE for the template argument.  */
18387               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18388               continue;
18389             }
18390         }
18391
18392       /* We only recurse into c++ subprograms looking for template arguments.
18393          Skip their other children.  */
18394       if (!load_all
18395           && cu->language == language_cplus
18396           && parent_die != NULL
18397           && parent_die->tag == DW_TAG_subprogram)
18398         {
18399           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18400           continue;
18401         }
18402
18403       /* Check whether this DIE is interesting enough to save.  Normally
18404          we would not be interested in members here, but there may be
18405          later variables referencing them via DW_AT_specification (for
18406          static members).  */
18407       if (!load_all
18408           && !is_type_tag_for_partial (abbrev->tag)
18409           && abbrev->tag != DW_TAG_constant
18410           && abbrev->tag != DW_TAG_enumerator
18411           && abbrev->tag != DW_TAG_subprogram
18412           && abbrev->tag != DW_TAG_lexical_block
18413           && abbrev->tag != DW_TAG_variable
18414           && abbrev->tag != DW_TAG_namespace
18415           && abbrev->tag != DW_TAG_module
18416           && abbrev->tag != DW_TAG_member
18417           && abbrev->tag != DW_TAG_imported_unit
18418           && abbrev->tag != DW_TAG_imported_declaration)
18419         {
18420           /* Otherwise we skip to the next sibling, if any.  */
18421           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18422           continue;
18423         }
18424
18425       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
18426                                    info_ptr);
18427
18428       /* This two-pass algorithm for processing partial symbols has a
18429          high cost in cache pressure.  Thus, handle some simple cases
18430          here which cover the majority of C partial symbols.  DIEs
18431          which neither have specification tags in them, nor could have
18432          specification tags elsewhere pointing at them, can simply be
18433          processed and discarded.
18434
18435          This segment is also optional; scan_partial_symbols and
18436          add_partial_symbol will handle these DIEs if we chain
18437          them in normally.  When compilers which do not emit large
18438          quantities of duplicate debug information are more common,
18439          this code can probably be removed.  */
18440
18441       /* Any complete simple types at the top level (pretty much all
18442          of them, for a language without namespaces), can be processed
18443          directly.  */
18444       if (parent_die == NULL
18445           && part_die->has_specification == 0
18446           && part_die->is_declaration == 0
18447           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
18448               || part_die->tag == DW_TAG_base_type
18449               || part_die->tag == DW_TAG_subrange_type))
18450         {
18451           if (building_psymtab && part_die->name != NULL)
18452             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
18453                                  VAR_DOMAIN, LOC_TYPEDEF,
18454                                  &objfile->static_psymbols,
18455                                  0, cu->language, objfile);
18456           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
18457           continue;
18458         }
18459
18460       /* The exception for DW_TAG_typedef with has_children above is
18461          a workaround of GCC PR debug/47510.  In the case of this complaint
18462          type_name_no_tag_or_error will error on such types later.
18463
18464          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18465          it could not find the child DIEs referenced later, this is checked
18466          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18467
18468       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
18469         complaint (&symfile_complaints,
18470                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18471                      "- DIE at 0x%x [in module %s]"),
18472                    to_underlying (part_die->sect_off), objfile_name (objfile));
18473
18474       /* If we're at the second level, and we're an enumerator, and
18475          our parent has no specification (meaning possibly lives in a
18476          namespace elsewhere), then we can add the partial symbol now
18477          instead of queueing it.  */
18478       if (part_die->tag == DW_TAG_enumerator
18479           && parent_die != NULL
18480           && parent_die->die_parent == NULL
18481           && parent_die->tag == DW_TAG_enumeration_type
18482           && parent_die->has_specification == 0)
18483         {
18484           if (part_die->name == NULL)
18485             complaint (&symfile_complaints,
18486                        _("malformed enumerator DIE ignored"));
18487           else if (building_psymtab)
18488             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
18489                                  VAR_DOMAIN, LOC_CONST,
18490                                  cu->language == language_cplus
18491                                  ? &objfile->global_psymbols
18492                                  : &objfile->static_psymbols,
18493                                  0, cu->language, objfile);
18494
18495           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
18496           continue;
18497         }
18498
18499       /* We'll save this DIE so link it in.  */
18500       part_die->die_parent = parent_die;
18501       part_die->die_sibling = NULL;
18502       part_die->die_child = NULL;
18503
18504       if (last_die && last_die == parent_die)
18505         last_die->die_child = part_die;
18506       else if (last_die)
18507         last_die->die_sibling = part_die;
18508
18509       last_die = part_die;
18510
18511       if (first_die == NULL)
18512         first_die = part_die;
18513
18514       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18515          find interesting need to be in the hash table, because we
18516          also have the parent/sibling/child chains; only those that we
18517          might refer to by offset later during partial symbol reading.
18518
18519          For now this means things that might have be the target of a
18520          DW_AT_specification, DW_AT_abstract_origin, or
18521          DW_AT_extension.  DW_AT_extension will refer only to
18522          namespaces; DW_AT_abstract_origin refers to functions (and
18523          many things under the function DIE, but we do not recurse
18524          into function DIEs during partial symbol reading) and
18525          possibly variables as well; DW_AT_specification refers to
18526          declarations.  Declarations ought to have the DW_AT_declaration
18527          flag.  It happens that GCC forgets to put it in sometimes, but
18528          only for functions, not for types.
18529
18530          Adding more things than necessary to the hash table is harmless
18531          except for the performance cost.  Adding too few will result in
18532          wasted time in find_partial_die, when we reread the compilation
18533          unit with load_all_dies set.  */
18534
18535       if (load_all
18536           || abbrev->tag == DW_TAG_constant
18537           || abbrev->tag == DW_TAG_subprogram
18538           || abbrev->tag == DW_TAG_variable
18539           || abbrev->tag == DW_TAG_namespace
18540           || part_die->is_declaration)
18541         {
18542           void **slot;
18543
18544           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18545                                            to_underlying (part_die->sect_off),
18546                                            INSERT);
18547           *slot = part_die;
18548         }
18549
18550       part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
18551
18552       /* For some DIEs we want to follow their children (if any).  For C
18553          we have no reason to follow the children of structures; for other
18554          languages we have to, so that we can get at method physnames
18555          to infer fully qualified class names, for DW_AT_specification,
18556          and for C++ template arguments.  For C++, we also look one level
18557          inside functions to find template arguments (if the name of the
18558          function does not already contain the template arguments).
18559
18560          For Ada, we need to scan the children of subprograms and lexical
18561          blocks as well because Ada allows the definition of nested
18562          entities that could be interesting for the debugger, such as
18563          nested subprograms for instance.  */
18564       if (last_die->has_children
18565           && (load_all
18566               || last_die->tag == DW_TAG_namespace
18567               || last_die->tag == DW_TAG_module
18568               || last_die->tag == DW_TAG_enumeration_type
18569               || (cu->language == language_cplus
18570                   && last_die->tag == DW_TAG_subprogram
18571                   && (last_die->name == NULL
18572                       || strchr (last_die->name, '<') == NULL))
18573               || (cu->language != language_c
18574                   && (last_die->tag == DW_TAG_class_type
18575                       || last_die->tag == DW_TAG_interface_type
18576                       || last_die->tag == DW_TAG_structure_type
18577                       || last_die->tag == DW_TAG_union_type))
18578               || (cu->language == language_ada
18579                   && (last_die->tag == DW_TAG_subprogram
18580                       || last_die->tag == DW_TAG_lexical_block))))
18581         {
18582           nesting_level++;
18583           parent_die = last_die;
18584           continue;
18585         }
18586
18587       /* Otherwise we skip to the next sibling, if any.  */
18588       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18589
18590       /* Back to the top, do it again.  */
18591     }
18592 }
18593
18594 /* Read a minimal amount of information into the minimal die structure.  */
18595
18596 static const gdb_byte *
18597 read_partial_die (const struct die_reader_specs *reader,
18598                   struct partial_die_info *part_die,
18599                   struct abbrev_info *abbrev, unsigned int abbrev_len,
18600                   const gdb_byte *info_ptr)
18601 {
18602   struct dwarf2_cu *cu = reader->cu;
18603   struct dwarf2_per_objfile *dwarf2_per_objfile
18604     = cu->per_cu->dwarf2_per_objfile;
18605   struct objfile *objfile = dwarf2_per_objfile->objfile;
18606   const gdb_byte *buffer = reader->buffer;
18607   unsigned int i;
18608   struct attribute attr;
18609   int has_low_pc_attr = 0;
18610   int has_high_pc_attr = 0;
18611   int high_pc_relative = 0;
18612
18613   memset (part_die, 0, sizeof (struct partial_die_info));
18614
18615   part_die->sect_off = (sect_offset) (info_ptr - buffer);
18616
18617   info_ptr += abbrev_len;
18618
18619   if (abbrev == NULL)
18620     return info_ptr;
18621
18622   part_die->tag = abbrev->tag;
18623   part_die->has_children = abbrev->has_children;
18624
18625   for (i = 0; i < abbrev->num_attrs; ++i)
18626     {
18627       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
18628
18629       /* Store the data if it is of an attribute we want to keep in a
18630          partial symbol table.  */
18631       switch (attr.name)
18632         {
18633         case DW_AT_name:
18634           switch (part_die->tag)
18635             {
18636             case DW_TAG_compile_unit:
18637             case DW_TAG_partial_unit:
18638             case DW_TAG_type_unit:
18639               /* Compilation units have a DW_AT_name that is a filename, not
18640                  a source language identifier.  */
18641             case DW_TAG_enumeration_type:
18642             case DW_TAG_enumerator:
18643               /* These tags always have simple identifiers already; no need
18644                  to canonicalize them.  */
18645               part_die->name = DW_STRING (&attr);
18646               break;
18647             default:
18648               part_die->name
18649                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18650                                             &objfile->per_bfd->storage_obstack);
18651               break;
18652             }
18653           break;
18654         case DW_AT_linkage_name:
18655         case DW_AT_MIPS_linkage_name:
18656           /* Note that both forms of linkage name might appear.  We
18657              assume they will be the same, and we only store the last
18658              one we see.  */
18659           if (cu->language == language_ada)
18660             part_die->name = DW_STRING (&attr);
18661           part_die->linkage_name = DW_STRING (&attr);
18662           break;
18663         case DW_AT_low_pc:
18664           has_low_pc_attr = 1;
18665           part_die->lowpc = attr_value_as_address (&attr);
18666           break;
18667         case DW_AT_high_pc:
18668           has_high_pc_attr = 1;
18669           part_die->highpc = attr_value_as_address (&attr);
18670           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18671                 high_pc_relative = 1;
18672           break;
18673         case DW_AT_location:
18674           /* Support the .debug_loc offsets.  */
18675           if (attr_form_is_block (&attr))
18676             {
18677                part_die->d.locdesc = DW_BLOCK (&attr);
18678             }
18679           else if (attr_form_is_section_offset (&attr))
18680             {
18681               dwarf2_complex_location_expr_complaint ();
18682             }
18683           else
18684             {
18685               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18686                                                      "partial symbol information");
18687             }
18688           break;
18689         case DW_AT_external:
18690           part_die->is_external = DW_UNSND (&attr);
18691           break;
18692         case DW_AT_declaration:
18693           part_die->is_declaration = DW_UNSND (&attr);
18694           break;
18695         case DW_AT_type:
18696           part_die->has_type = 1;
18697           break;
18698         case DW_AT_abstract_origin:
18699         case DW_AT_specification:
18700         case DW_AT_extension:
18701           part_die->has_specification = 1;
18702           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
18703           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18704                                    || cu->per_cu->is_dwz);
18705           break;
18706         case DW_AT_sibling:
18707           /* Ignore absolute siblings, they might point outside of
18708              the current compile unit.  */
18709           if (attr.form == DW_FORM_ref_addr)
18710             complaint (&symfile_complaints,
18711                        _("ignoring absolute DW_AT_sibling"));
18712           else
18713             {
18714               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18715               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18716
18717               if (sibling_ptr < info_ptr)
18718                 complaint (&symfile_complaints,
18719                            _("DW_AT_sibling points backwards"));
18720               else if (sibling_ptr > reader->buffer_end)
18721                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18722               else
18723                 part_die->sibling = sibling_ptr;
18724             }
18725           break;
18726         case DW_AT_byte_size:
18727           part_die->has_byte_size = 1;
18728           break;
18729         case DW_AT_const_value:
18730           part_die->has_const_value = 1;
18731           break;
18732         case DW_AT_calling_convention:
18733           /* DWARF doesn't provide a way to identify a program's source-level
18734              entry point.  DW_AT_calling_convention attributes are only meant
18735              to describe functions' calling conventions.
18736
18737              However, because it's a necessary piece of information in
18738              Fortran, and before DWARF 4 DW_CC_program was the only
18739              piece of debugging information whose definition refers to
18740              a 'main program' at all, several compilers marked Fortran
18741              main programs with DW_CC_program --- even when those
18742              functions use the standard calling conventions.
18743
18744              Although DWARF now specifies a way to provide this
18745              information, we support this practice for backward
18746              compatibility.  */
18747           if (DW_UNSND (&attr) == DW_CC_program
18748               && cu->language == language_fortran)
18749             part_die->main_subprogram = 1;
18750           break;
18751         case DW_AT_inline:
18752           if (DW_UNSND (&attr) == DW_INL_inlined
18753               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18754             part_die->may_be_inlined = 1;
18755           break;
18756
18757         case DW_AT_import:
18758           if (part_die->tag == DW_TAG_imported_unit)
18759             {
18760               part_die->d.sect_off = dwarf2_get_ref_die_offset (&attr);
18761               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18762                                   || cu->per_cu->is_dwz);
18763             }
18764           break;
18765
18766         case DW_AT_main_subprogram:
18767           part_die->main_subprogram = DW_UNSND (&attr);
18768           break;
18769
18770         default:
18771           break;
18772         }
18773     }
18774
18775   if (high_pc_relative)
18776     part_die->highpc += part_die->lowpc;
18777
18778   if (has_low_pc_attr && has_high_pc_attr)
18779     {
18780       /* When using the GNU linker, .gnu.linkonce. sections are used to
18781          eliminate duplicate copies of functions and vtables and such.
18782          The linker will arbitrarily choose one and discard the others.
18783          The AT_*_pc values for such functions refer to local labels in
18784          these sections.  If the section from that file was discarded, the
18785          labels are not in the output, so the relocs get a value of 0.
18786          If this is a discarded function, mark the pc bounds as invalid,
18787          so that GDB will ignore it.  */
18788       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18789         {
18790           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18791
18792           complaint (&symfile_complaints,
18793                      _("DW_AT_low_pc %s is zero "
18794                        "for DIE at 0x%x [in module %s]"),
18795                      paddress (gdbarch, part_die->lowpc),
18796                      to_underlying (part_die->sect_off), objfile_name (objfile));
18797         }
18798       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18799       else if (part_die->lowpc >= part_die->highpc)
18800         {
18801           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18802
18803           complaint (&symfile_complaints,
18804                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18805                        "for DIE at 0x%x [in module %s]"),
18806                      paddress (gdbarch, part_die->lowpc),
18807                      paddress (gdbarch, part_die->highpc),
18808                      to_underlying (part_die->sect_off),
18809                      objfile_name (objfile));
18810         }
18811       else
18812         part_die->has_pc_info = 1;
18813     }
18814
18815   return info_ptr;
18816 }
18817
18818 /* Find a cached partial DIE at OFFSET in CU.  */
18819
18820 static struct partial_die_info *
18821 find_partial_die_in_comp_unit (sect_offset sect_off, struct dwarf2_cu *cu)
18822 {
18823   struct partial_die_info *lookup_die = NULL;
18824   struct partial_die_info part_die;
18825
18826   part_die.sect_off = sect_off;
18827   lookup_die = ((struct partial_die_info *)
18828                 htab_find_with_hash (cu->partial_dies, &part_die,
18829                                      to_underlying (sect_off)));
18830
18831   return lookup_die;
18832 }
18833
18834 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18835    except in the case of .debug_types DIEs which do not reference
18836    outside their CU (they do however referencing other types via
18837    DW_FORM_ref_sig8).  */
18838
18839 static struct partial_die_info *
18840 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18841 {
18842   struct dwarf2_per_objfile *dwarf2_per_objfile
18843     = cu->per_cu->dwarf2_per_objfile;
18844   struct objfile *objfile = dwarf2_per_objfile->objfile;
18845   struct dwarf2_per_cu_data *per_cu = NULL;
18846   struct partial_die_info *pd = NULL;
18847
18848   if (offset_in_dwz == cu->per_cu->is_dwz
18849       && offset_in_cu_p (&cu->header, sect_off))
18850     {
18851       pd = find_partial_die_in_comp_unit (sect_off, cu);
18852       if (pd != NULL)
18853         return pd;
18854       /* We missed recording what we needed.
18855          Load all dies and try again.  */
18856       per_cu = cu->per_cu;
18857     }
18858   else
18859     {
18860       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18861       if (cu->per_cu->is_debug_types)
18862         {
18863           error (_("Dwarf Error: Type Unit at offset 0x%x contains"
18864                    " external reference to offset 0x%x [in module %s].\n"),
18865                  to_underlying (cu->header.sect_off), to_underlying (sect_off),
18866                  bfd_get_filename (objfile->obfd));
18867         }
18868       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18869                                                  dwarf2_per_objfile);
18870
18871       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18872         load_partial_comp_unit (per_cu);
18873
18874       per_cu->cu->last_used = 0;
18875       pd = find_partial_die_in_comp_unit (sect_off, per_cu->cu);
18876     }
18877
18878   /* If we didn't find it, and not all dies have been loaded,
18879      load them all and try again.  */
18880
18881   if (pd == NULL && per_cu->load_all_dies == 0)
18882     {
18883       per_cu->load_all_dies = 1;
18884
18885       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18886          THIS_CU->cu may already be in use.  So we can't just free it and
18887          replace its DIEs with the ones we read in.  Instead, we leave those
18888          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18889          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18890          set.  */
18891       load_partial_comp_unit (per_cu);
18892
18893       pd = find_partial_die_in_comp_unit (sect_off, per_cu->cu);
18894     }
18895
18896   if (pd == NULL)
18897     internal_error (__FILE__, __LINE__,
18898                     _("could not find partial DIE 0x%x "
18899                       "in cache [from module %s]\n"),
18900                     to_underlying (sect_off), bfd_get_filename (objfile->obfd));
18901   return pd;
18902 }
18903
18904 /* See if we can figure out if the class lives in a namespace.  We do
18905    this by looking for a member function; its demangled name will
18906    contain namespace info, if there is any.  */
18907
18908 static void
18909 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18910                                   struct dwarf2_cu *cu)
18911 {
18912   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18913      what template types look like, because the demangler
18914      frequently doesn't give the same name as the debug info.  We
18915      could fix this by only using the demangled name to get the
18916      prefix (but see comment in read_structure_type).  */
18917
18918   struct partial_die_info *real_pdi;
18919   struct partial_die_info *child_pdi;
18920
18921   /* If this DIE (this DIE's specification, if any) has a parent, then
18922      we should not do this.  We'll prepend the parent's fully qualified
18923      name when we create the partial symbol.  */
18924
18925   real_pdi = struct_pdi;
18926   while (real_pdi->has_specification)
18927     real_pdi = find_partial_die (real_pdi->spec_offset,
18928                                  real_pdi->spec_is_dwz, cu);
18929
18930   if (real_pdi->die_parent != NULL)
18931     return;
18932
18933   for (child_pdi = struct_pdi->die_child;
18934        child_pdi != NULL;
18935        child_pdi = child_pdi->die_sibling)
18936     {
18937       if (child_pdi->tag == DW_TAG_subprogram
18938           && child_pdi->linkage_name != NULL)
18939         {
18940           char *actual_class_name
18941             = language_class_name_from_physname (cu->language_defn,
18942                                                  child_pdi->linkage_name);
18943           if (actual_class_name != NULL)
18944             {
18945               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18946               struct_pdi->name
18947                 = ((const char *)
18948                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18949                                   actual_class_name,
18950                                   strlen (actual_class_name)));
18951               xfree (actual_class_name);
18952             }
18953           break;
18954         }
18955     }
18956 }
18957
18958 /* Adjust PART_DIE before generating a symbol for it.  This function
18959    may set the is_external flag or change the DIE's name.  */
18960
18961 static void
18962 fixup_partial_die (struct partial_die_info *part_die,
18963                    struct dwarf2_cu *cu)
18964 {
18965   /* Once we've fixed up a die, there's no point in doing so again.
18966      This also avoids a memory leak if we were to call
18967      guess_partial_die_structure_name multiple times.  */
18968   if (part_die->fixup_called)
18969     return;
18970
18971   /* If we found a reference attribute and the DIE has no name, try
18972      to find a name in the referred to DIE.  */
18973
18974   if (part_die->name == NULL && part_die->has_specification)
18975     {
18976       struct partial_die_info *spec_die;
18977
18978       spec_die = find_partial_die (part_die->spec_offset,
18979                                    part_die->spec_is_dwz, cu);
18980
18981       fixup_partial_die (spec_die, cu);
18982
18983       if (spec_die->name)
18984         {
18985           part_die->name = spec_die->name;
18986
18987           /* Copy DW_AT_external attribute if it is set.  */
18988           if (spec_die->is_external)
18989             part_die->is_external = spec_die->is_external;
18990         }
18991     }
18992
18993   /* Set default names for some unnamed DIEs.  */
18994
18995   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
18996     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
18997
18998   /* If there is no parent die to provide a namespace, and there are
18999      children, see if we can determine the namespace from their linkage
19000      name.  */
19001   if (cu->language == language_cplus
19002       && !VEC_empty (dwarf2_section_info_def,
19003                      cu->per_cu->dwarf2_per_objfile->types)
19004       && part_die->die_parent == NULL
19005       && part_die->has_children
19006       && (part_die->tag == DW_TAG_class_type
19007           || part_die->tag == DW_TAG_structure_type
19008           || part_die->tag == DW_TAG_union_type))
19009     guess_partial_die_structure_name (part_die, cu);
19010
19011   /* GCC might emit a nameless struct or union that has a linkage
19012      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19013   if (part_die->name == NULL
19014       && (part_die->tag == DW_TAG_class_type
19015           || part_die->tag == DW_TAG_interface_type
19016           || part_die->tag == DW_TAG_structure_type
19017           || part_die->tag == DW_TAG_union_type)
19018       && part_die->linkage_name != NULL)
19019     {
19020       char *demangled;
19021
19022       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
19023       if (demangled)
19024         {
19025           const char *base;
19026
19027           /* Strip any leading namespaces/classes, keep only the base name.
19028              DW_AT_name for named DIEs does not contain the prefixes.  */
19029           base = strrchr (demangled, ':');
19030           if (base && base > demangled && base[-1] == ':')
19031             base++;
19032           else
19033             base = demangled;
19034
19035           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19036           part_die->name
19037             = ((const char *)
19038                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19039                               base, strlen (base)));
19040           xfree (demangled);
19041         }
19042     }
19043
19044   part_die->fixup_called = 1;
19045 }
19046
19047 /* Read an attribute value described by an attribute form.  */
19048
19049 static const gdb_byte *
19050 read_attribute_value (const struct die_reader_specs *reader,
19051                       struct attribute *attr, unsigned form,
19052                       LONGEST implicit_const, const gdb_byte *info_ptr)
19053 {
19054   struct dwarf2_cu *cu = reader->cu;
19055   struct dwarf2_per_objfile *dwarf2_per_objfile
19056     = cu->per_cu->dwarf2_per_objfile;
19057   struct objfile *objfile = dwarf2_per_objfile->objfile;
19058   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19059   bfd *abfd = reader->abfd;
19060   struct comp_unit_head *cu_header = &cu->header;
19061   unsigned int bytes_read;
19062   struct dwarf_block *blk;
19063
19064   attr->form = (enum dwarf_form) form;
19065   switch (form)
19066     {
19067     case DW_FORM_ref_addr:
19068       if (cu->header.version == 2)
19069         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19070       else
19071         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19072                                        &cu->header, &bytes_read);
19073       info_ptr += bytes_read;
19074       break;
19075     case DW_FORM_GNU_ref_alt:
19076       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19077       info_ptr += bytes_read;
19078       break;
19079     case DW_FORM_addr:
19080       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19081       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19082       info_ptr += bytes_read;
19083       break;
19084     case DW_FORM_block2:
19085       blk = dwarf_alloc_block (cu);
19086       blk->size = read_2_bytes (abfd, info_ptr);
19087       info_ptr += 2;
19088       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19089       info_ptr += blk->size;
19090       DW_BLOCK (attr) = blk;
19091       break;
19092     case DW_FORM_block4:
19093       blk = dwarf_alloc_block (cu);
19094       blk->size = read_4_bytes (abfd, info_ptr);
19095       info_ptr += 4;
19096       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19097       info_ptr += blk->size;
19098       DW_BLOCK (attr) = blk;
19099       break;
19100     case DW_FORM_data2:
19101       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19102       info_ptr += 2;
19103       break;
19104     case DW_FORM_data4:
19105       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19106       info_ptr += 4;
19107       break;
19108     case DW_FORM_data8:
19109       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19110       info_ptr += 8;
19111       break;
19112     case DW_FORM_data16:
19113       blk = dwarf_alloc_block (cu);
19114       blk->size = 16;
19115       blk->data = read_n_bytes (abfd, info_ptr, 16);
19116       info_ptr += 16;
19117       DW_BLOCK (attr) = blk;
19118       break;
19119     case DW_FORM_sec_offset:
19120       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19121       info_ptr += bytes_read;
19122       break;
19123     case DW_FORM_string:
19124       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19125       DW_STRING_IS_CANONICAL (attr) = 0;
19126       info_ptr += bytes_read;
19127       break;
19128     case DW_FORM_strp:
19129       if (!cu->per_cu->is_dwz)
19130         {
19131           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19132                                                    abfd, info_ptr, cu_header,
19133                                                    &bytes_read);
19134           DW_STRING_IS_CANONICAL (attr) = 0;
19135           info_ptr += bytes_read;
19136           break;
19137         }
19138       /* FALLTHROUGH */
19139     case DW_FORM_line_strp:
19140       if (!cu->per_cu->is_dwz)
19141         {
19142           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19143                                                         abfd, info_ptr,
19144                                                         cu_header, &bytes_read);
19145           DW_STRING_IS_CANONICAL (attr) = 0;
19146           info_ptr += bytes_read;
19147           break;
19148         }
19149       /* FALLTHROUGH */
19150     case DW_FORM_GNU_strp_alt:
19151       {
19152         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19153         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19154                                           &bytes_read);
19155
19156         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19157                                                           dwz, str_offset);
19158         DW_STRING_IS_CANONICAL (attr) = 0;
19159         info_ptr += bytes_read;
19160       }
19161       break;
19162     case DW_FORM_exprloc:
19163     case DW_FORM_block:
19164       blk = dwarf_alloc_block (cu);
19165       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19166       info_ptr += bytes_read;
19167       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19168       info_ptr += blk->size;
19169       DW_BLOCK (attr) = blk;
19170       break;
19171     case DW_FORM_block1:
19172       blk = dwarf_alloc_block (cu);
19173       blk->size = read_1_byte (abfd, info_ptr);
19174       info_ptr += 1;
19175       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19176       info_ptr += blk->size;
19177       DW_BLOCK (attr) = blk;
19178       break;
19179     case DW_FORM_data1:
19180       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19181       info_ptr += 1;
19182       break;
19183     case DW_FORM_flag:
19184       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19185       info_ptr += 1;
19186       break;
19187     case DW_FORM_flag_present:
19188       DW_UNSND (attr) = 1;
19189       break;
19190     case DW_FORM_sdata:
19191       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19192       info_ptr += bytes_read;
19193       break;
19194     case DW_FORM_udata:
19195       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19196       info_ptr += bytes_read;
19197       break;
19198     case DW_FORM_ref1:
19199       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19200                          + read_1_byte (abfd, info_ptr));
19201       info_ptr += 1;
19202       break;
19203     case DW_FORM_ref2:
19204       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19205                          + read_2_bytes (abfd, info_ptr));
19206       info_ptr += 2;
19207       break;
19208     case DW_FORM_ref4:
19209       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19210                          + read_4_bytes (abfd, info_ptr));
19211       info_ptr += 4;
19212       break;
19213     case DW_FORM_ref8:
19214       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19215                          + read_8_bytes (abfd, info_ptr));
19216       info_ptr += 8;
19217       break;
19218     case DW_FORM_ref_sig8:
19219       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19220       info_ptr += 8;
19221       break;
19222     case DW_FORM_ref_udata:
19223       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19224                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19225       info_ptr += bytes_read;
19226       break;
19227     case DW_FORM_indirect:
19228       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19229       info_ptr += bytes_read;
19230       if (form == DW_FORM_implicit_const)
19231         {
19232           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19233           info_ptr += bytes_read;
19234         }
19235       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19236                                        info_ptr);
19237       break;
19238     case DW_FORM_implicit_const:
19239       DW_SND (attr) = implicit_const;
19240       break;
19241     case DW_FORM_GNU_addr_index:
19242       if (reader->dwo_file == NULL)
19243         {
19244           /* For now flag a hard error.
19245              Later we can turn this into a complaint.  */
19246           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19247                  dwarf_form_name (form),
19248                  bfd_get_filename (abfd));
19249         }
19250       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19251       info_ptr += bytes_read;
19252       break;
19253     case DW_FORM_GNU_str_index:
19254       if (reader->dwo_file == NULL)
19255         {
19256           /* For now flag a hard error.
19257              Later we can turn this into a complaint if warranted.  */
19258           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19259                  dwarf_form_name (form),
19260                  bfd_get_filename (abfd));
19261         }
19262       {
19263         ULONGEST str_index =
19264           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19265
19266         DW_STRING (attr) = read_str_index (reader, str_index);
19267         DW_STRING_IS_CANONICAL (attr) = 0;
19268         info_ptr += bytes_read;
19269       }
19270       break;
19271     default:
19272       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19273              dwarf_form_name (form),
19274              bfd_get_filename (abfd));
19275     }
19276
19277   /* Super hack.  */
19278   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19279     attr->form = DW_FORM_GNU_ref_alt;
19280
19281   /* We have seen instances where the compiler tried to emit a byte
19282      size attribute of -1 which ended up being encoded as an unsigned
19283      0xffffffff.  Although 0xffffffff is technically a valid size value,
19284      an object of this size seems pretty unlikely so we can relatively
19285      safely treat these cases as if the size attribute was invalid and
19286      treat them as zero by default.  */
19287   if (attr->name == DW_AT_byte_size
19288       && form == DW_FORM_data4
19289       && DW_UNSND (attr) >= 0xffffffff)
19290     {
19291       complaint
19292         (&symfile_complaints,
19293          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19294          hex_string (DW_UNSND (attr)));
19295       DW_UNSND (attr) = 0;
19296     }
19297
19298   return info_ptr;
19299 }
19300
19301 /* Read an attribute described by an abbreviated attribute.  */
19302
19303 static const gdb_byte *
19304 read_attribute (const struct die_reader_specs *reader,
19305                 struct attribute *attr, struct attr_abbrev *abbrev,
19306                 const gdb_byte *info_ptr)
19307 {
19308   attr->name = abbrev->name;
19309   return read_attribute_value (reader, attr, abbrev->form,
19310                                abbrev->implicit_const, info_ptr);
19311 }
19312
19313 /* Read dwarf information from a buffer.  */
19314
19315 static unsigned int
19316 read_1_byte (bfd *abfd, const gdb_byte *buf)
19317 {
19318   return bfd_get_8 (abfd, buf);
19319 }
19320
19321 static int
19322 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19323 {
19324   return bfd_get_signed_8 (abfd, buf);
19325 }
19326
19327 static unsigned int
19328 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19329 {
19330   return bfd_get_16 (abfd, buf);
19331 }
19332
19333 static int
19334 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19335 {
19336   return bfd_get_signed_16 (abfd, buf);
19337 }
19338
19339 static unsigned int
19340 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19341 {
19342   return bfd_get_32 (abfd, buf);
19343 }
19344
19345 static int
19346 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19347 {
19348   return bfd_get_signed_32 (abfd, buf);
19349 }
19350
19351 static ULONGEST
19352 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19353 {
19354   return bfd_get_64 (abfd, buf);
19355 }
19356
19357 static CORE_ADDR
19358 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19359               unsigned int *bytes_read)
19360 {
19361   struct comp_unit_head *cu_header = &cu->header;
19362   CORE_ADDR retval = 0;
19363
19364   if (cu_header->signed_addr_p)
19365     {
19366       switch (cu_header->addr_size)
19367         {
19368         case 2:
19369           retval = bfd_get_signed_16 (abfd, buf);
19370           break;
19371         case 4:
19372           retval = bfd_get_signed_32 (abfd, buf);
19373           break;
19374         case 8:
19375           retval = bfd_get_signed_64 (abfd, buf);
19376           break;
19377         default:
19378           internal_error (__FILE__, __LINE__,
19379                           _("read_address: bad switch, signed [in module %s]"),
19380                           bfd_get_filename (abfd));
19381         }
19382     }
19383   else
19384     {
19385       switch (cu_header->addr_size)
19386         {
19387         case 2:
19388           retval = bfd_get_16 (abfd, buf);
19389           break;
19390         case 4:
19391           retval = bfd_get_32 (abfd, buf);
19392           break;
19393         case 8:
19394           retval = bfd_get_64 (abfd, buf);
19395           break;
19396         default:
19397           internal_error (__FILE__, __LINE__,
19398                           _("read_address: bad switch, "
19399                             "unsigned [in module %s]"),
19400                           bfd_get_filename (abfd));
19401         }
19402     }
19403
19404   *bytes_read = cu_header->addr_size;
19405   return retval;
19406 }
19407
19408 /* Read the initial length from a section.  The (draft) DWARF 3
19409    specification allows the initial length to take up either 4 bytes
19410    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19411    bytes describe the length and all offsets will be 8 bytes in length
19412    instead of 4.
19413
19414    An older, non-standard 64-bit format is also handled by this
19415    function.  The older format in question stores the initial length
19416    as an 8-byte quantity without an escape value.  Lengths greater
19417    than 2^32 aren't very common which means that the initial 4 bytes
19418    is almost always zero.  Since a length value of zero doesn't make
19419    sense for the 32-bit format, this initial zero can be considered to
19420    be an escape value which indicates the presence of the older 64-bit
19421    format.  As written, the code can't detect (old format) lengths
19422    greater than 4GB.  If it becomes necessary to handle lengths
19423    somewhat larger than 4GB, we could allow other small values (such
19424    as the non-sensical values of 1, 2, and 3) to also be used as
19425    escape values indicating the presence of the old format.
19426
19427    The value returned via bytes_read should be used to increment the
19428    relevant pointer after calling read_initial_length().
19429
19430    [ Note:  read_initial_length() and read_offset() are based on the
19431      document entitled "DWARF Debugging Information Format", revision
19432      3, draft 8, dated November 19, 2001.  This document was obtained
19433      from:
19434
19435         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19436
19437      This document is only a draft and is subject to change.  (So beware.)
19438
19439      Details regarding the older, non-standard 64-bit format were
19440      determined empirically by examining 64-bit ELF files produced by
19441      the SGI toolchain on an IRIX 6.5 machine.
19442
19443      - Kevin, July 16, 2002
19444    ] */
19445
19446 static LONGEST
19447 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19448 {
19449   LONGEST length = bfd_get_32 (abfd, buf);
19450
19451   if (length == 0xffffffff)
19452     {
19453       length = bfd_get_64 (abfd, buf + 4);
19454       *bytes_read = 12;
19455     }
19456   else if (length == 0)
19457     {
19458       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19459       length = bfd_get_64 (abfd, buf);
19460       *bytes_read = 8;
19461     }
19462   else
19463     {
19464       *bytes_read = 4;
19465     }
19466
19467   return length;
19468 }
19469
19470 /* Cover function for read_initial_length.
19471    Returns the length of the object at BUF, and stores the size of the
19472    initial length in *BYTES_READ and stores the size that offsets will be in
19473    *OFFSET_SIZE.
19474    If the initial length size is not equivalent to that specified in
19475    CU_HEADER then issue a complaint.
19476    This is useful when reading non-comp-unit headers.  */
19477
19478 static LONGEST
19479 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19480                                         const struct comp_unit_head *cu_header,
19481                                         unsigned int *bytes_read,
19482                                         unsigned int *offset_size)
19483 {
19484   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19485
19486   gdb_assert (cu_header->initial_length_size == 4
19487               || cu_header->initial_length_size == 8
19488               || cu_header->initial_length_size == 12);
19489
19490   if (cu_header->initial_length_size != *bytes_read)
19491     complaint (&symfile_complaints,
19492                _("intermixed 32-bit and 64-bit DWARF sections"));
19493
19494   *offset_size = (*bytes_read == 4) ? 4 : 8;
19495   return length;
19496 }
19497
19498 /* Read an offset from the data stream.  The size of the offset is
19499    given by cu_header->offset_size.  */
19500
19501 static LONGEST
19502 read_offset (bfd *abfd, const gdb_byte *buf,
19503              const struct comp_unit_head *cu_header,
19504              unsigned int *bytes_read)
19505 {
19506   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19507
19508   *bytes_read = cu_header->offset_size;
19509   return offset;
19510 }
19511
19512 /* Read an offset from the data stream.  */
19513
19514 static LONGEST
19515 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19516 {
19517   LONGEST retval = 0;
19518
19519   switch (offset_size)
19520     {
19521     case 4:
19522       retval = bfd_get_32 (abfd, buf);
19523       break;
19524     case 8:
19525       retval = bfd_get_64 (abfd, buf);
19526       break;
19527     default:
19528       internal_error (__FILE__, __LINE__,
19529                       _("read_offset_1: bad switch [in module %s]"),
19530                       bfd_get_filename (abfd));
19531     }
19532
19533   return retval;
19534 }
19535
19536 static const gdb_byte *
19537 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19538 {
19539   /* If the size of a host char is 8 bits, we can return a pointer
19540      to the buffer, otherwise we have to copy the data to a buffer
19541      allocated on the temporary obstack.  */
19542   gdb_assert (HOST_CHAR_BIT == 8);
19543   return buf;
19544 }
19545
19546 static const char *
19547 read_direct_string (bfd *abfd, const gdb_byte *buf,
19548                     unsigned int *bytes_read_ptr)
19549 {
19550   /* If the size of a host char is 8 bits, we can return a pointer
19551      to the string, otherwise we have to copy the string to a buffer
19552      allocated on the temporary obstack.  */
19553   gdb_assert (HOST_CHAR_BIT == 8);
19554   if (*buf == '\0')
19555     {
19556       *bytes_read_ptr = 1;
19557       return NULL;
19558     }
19559   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19560   return (const char *) buf;
19561 }
19562
19563 /* Return pointer to string at section SECT offset STR_OFFSET with error
19564    reporting strings FORM_NAME and SECT_NAME.  */
19565
19566 static const char *
19567 read_indirect_string_at_offset_from (struct objfile *objfile,
19568                                      bfd *abfd, LONGEST str_offset,
19569                                      struct dwarf2_section_info *sect,
19570                                      const char *form_name,
19571                                      const char *sect_name)
19572 {
19573   dwarf2_read_section (objfile, sect);
19574   if (sect->buffer == NULL)
19575     error (_("%s used without %s section [in module %s]"),
19576            form_name, sect_name, bfd_get_filename (abfd));
19577   if (str_offset >= sect->size)
19578     error (_("%s pointing outside of %s section [in module %s]"),
19579            form_name, sect_name, bfd_get_filename (abfd));
19580   gdb_assert (HOST_CHAR_BIT == 8);
19581   if (sect->buffer[str_offset] == '\0')
19582     return NULL;
19583   return (const char *) (sect->buffer + str_offset);
19584 }
19585
19586 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19587
19588 static const char *
19589 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19590                                 bfd *abfd, LONGEST str_offset)
19591 {
19592   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19593                                               abfd, str_offset,
19594                                               &dwarf2_per_objfile->str,
19595                                               "DW_FORM_strp", ".debug_str");
19596 }
19597
19598 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19599
19600 static const char *
19601 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19602                                      bfd *abfd, LONGEST str_offset)
19603 {
19604   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19605                                               abfd, str_offset,
19606                                               &dwarf2_per_objfile->line_str,
19607                                               "DW_FORM_line_strp",
19608                                               ".debug_line_str");
19609 }
19610
19611 /* Read a string at offset STR_OFFSET in the .debug_str section from
19612    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19613    the string consists of a single NUL byte, return NULL; otherwise
19614    return a pointer to the string.  */
19615
19616 static const char *
19617 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19618                                LONGEST str_offset)
19619 {
19620   dwarf2_read_section (objfile, &dwz->str);
19621
19622   if (dwz->str.buffer == NULL)
19623     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19624              "section [in module %s]"),
19625            bfd_get_filename (dwz->dwz_bfd));
19626   if (str_offset >= dwz->str.size)
19627     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19628              ".debug_str section [in module %s]"),
19629            bfd_get_filename (dwz->dwz_bfd));
19630   gdb_assert (HOST_CHAR_BIT == 8);
19631   if (dwz->str.buffer[str_offset] == '\0')
19632     return NULL;
19633   return (const char *) (dwz->str.buffer + str_offset);
19634 }
19635
19636 /* Return pointer to string at .debug_str offset as read from BUF.
19637    BUF is assumed to be in a compilation unit described by CU_HEADER.
19638    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19639
19640 static const char *
19641 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19642                       const gdb_byte *buf,
19643                       const struct comp_unit_head *cu_header,
19644                       unsigned int *bytes_read_ptr)
19645 {
19646   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19647
19648   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19649 }
19650
19651 /* Return pointer to string at .debug_line_str offset as read from BUF.
19652    BUF is assumed to be in a compilation unit described by CU_HEADER.
19653    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19654
19655 static const char *
19656 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19657                            bfd *abfd, const gdb_byte *buf,
19658                            const struct comp_unit_head *cu_header,
19659                            unsigned int *bytes_read_ptr)
19660 {
19661   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19662
19663   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19664                                               str_offset);
19665 }
19666
19667 ULONGEST
19668 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19669                           unsigned int *bytes_read_ptr)
19670 {
19671   ULONGEST result;
19672   unsigned int num_read;
19673   int shift;
19674   unsigned char byte;
19675
19676   result = 0;
19677   shift = 0;
19678   num_read = 0;
19679   while (1)
19680     {
19681       byte = bfd_get_8 (abfd, buf);
19682       buf++;
19683       num_read++;
19684       result |= ((ULONGEST) (byte & 127) << shift);
19685       if ((byte & 128) == 0)
19686         {
19687           break;
19688         }
19689       shift += 7;
19690     }
19691   *bytes_read_ptr = num_read;
19692   return result;
19693 }
19694
19695 static LONGEST
19696 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19697                     unsigned int *bytes_read_ptr)
19698 {
19699   LONGEST result;
19700   int shift, num_read;
19701   unsigned char byte;
19702
19703   result = 0;
19704   shift = 0;
19705   num_read = 0;
19706   while (1)
19707     {
19708       byte = bfd_get_8 (abfd, buf);
19709       buf++;
19710       num_read++;
19711       result |= ((LONGEST) (byte & 127) << shift);
19712       shift += 7;
19713       if ((byte & 128) == 0)
19714         {
19715           break;
19716         }
19717     }
19718   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19719     result |= -(((LONGEST) 1) << shift);
19720   *bytes_read_ptr = num_read;
19721   return result;
19722 }
19723
19724 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19725    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19726    ADDR_SIZE is the size of addresses from the CU header.  */
19727
19728 static CORE_ADDR
19729 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19730                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19731 {
19732   struct objfile *objfile = dwarf2_per_objfile->objfile;
19733   bfd *abfd = objfile->obfd;
19734   const gdb_byte *info_ptr;
19735
19736   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19737   if (dwarf2_per_objfile->addr.buffer == NULL)
19738     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19739            objfile_name (objfile));
19740   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19741     error (_("DW_FORM_addr_index pointing outside of "
19742              ".debug_addr section [in module %s]"),
19743            objfile_name (objfile));
19744   info_ptr = (dwarf2_per_objfile->addr.buffer
19745               + addr_base + addr_index * addr_size);
19746   if (addr_size == 4)
19747     return bfd_get_32 (abfd, info_ptr);
19748   else
19749     return bfd_get_64 (abfd, info_ptr);
19750 }
19751
19752 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19753
19754 static CORE_ADDR
19755 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19756 {
19757   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19758                             cu->addr_base, cu->header.addr_size);
19759 }
19760
19761 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19762
19763 static CORE_ADDR
19764 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19765                              unsigned int *bytes_read)
19766 {
19767   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19768   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19769
19770   return read_addr_index (cu, addr_index);
19771 }
19772
19773 /* Data structure to pass results from dwarf2_read_addr_index_reader
19774    back to dwarf2_read_addr_index.  */
19775
19776 struct dwarf2_read_addr_index_data
19777 {
19778   ULONGEST addr_base;
19779   int addr_size;
19780 };
19781
19782 /* die_reader_func for dwarf2_read_addr_index.  */
19783
19784 static void
19785 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19786                                const gdb_byte *info_ptr,
19787                                struct die_info *comp_unit_die,
19788                                int has_children,
19789                                void *data)
19790 {
19791   struct dwarf2_cu *cu = reader->cu;
19792   struct dwarf2_read_addr_index_data *aidata =
19793     (struct dwarf2_read_addr_index_data *) data;
19794
19795   aidata->addr_base = cu->addr_base;
19796   aidata->addr_size = cu->header.addr_size;
19797 }
19798
19799 /* Given an index in .debug_addr, fetch the value.
19800    NOTE: This can be called during dwarf expression evaluation,
19801    long after the debug information has been read, and thus per_cu->cu
19802    may no longer exist.  */
19803
19804 CORE_ADDR
19805 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19806                         unsigned int addr_index)
19807 {
19808   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19809   struct objfile *objfile = dwarf2_per_objfile->objfile;
19810   struct dwarf2_cu *cu = per_cu->cu;
19811   ULONGEST addr_base;
19812   int addr_size;
19813
19814   /* We need addr_base and addr_size.
19815      If we don't have PER_CU->cu, we have to get it.
19816      Nasty, but the alternative is storing the needed info in PER_CU,
19817      which at this point doesn't seem justified: it's not clear how frequently
19818      it would get used and it would increase the size of every PER_CU.
19819      Entry points like dwarf2_per_cu_addr_size do a similar thing
19820      so we're not in uncharted territory here.
19821      Alas we need to be a bit more complicated as addr_base is contained
19822      in the DIE.
19823
19824      We don't need to read the entire CU(/TU).
19825      We just need the header and top level die.
19826
19827      IWBN to use the aging mechanism to let us lazily later discard the CU.
19828      For now we skip this optimization.  */
19829
19830   if (cu != NULL)
19831     {
19832       addr_base = cu->addr_base;
19833       addr_size = cu->header.addr_size;
19834     }
19835   else
19836     {
19837       struct dwarf2_read_addr_index_data aidata;
19838
19839       /* Note: We can't use init_cutu_and_read_dies_simple here,
19840          we need addr_base.  */
19841       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
19842                                dwarf2_read_addr_index_reader, &aidata);
19843       addr_base = aidata.addr_base;
19844       addr_size = aidata.addr_size;
19845     }
19846
19847   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19848                             addr_size);
19849 }
19850
19851 /* Given a DW_FORM_GNU_str_index, fetch the string.
19852    This is only used by the Fission support.  */
19853
19854 static const char *
19855 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19856 {
19857   struct dwarf2_cu *cu = reader->cu;
19858   struct dwarf2_per_objfile *dwarf2_per_objfile
19859     = cu->per_cu->dwarf2_per_objfile;
19860   struct objfile *objfile = dwarf2_per_objfile->objfile;
19861   const char *objf_name = objfile_name (objfile);
19862   bfd *abfd = objfile->obfd;
19863   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19864   struct dwarf2_section_info *str_offsets_section =
19865     &reader->dwo_file->sections.str_offsets;
19866   const gdb_byte *info_ptr;
19867   ULONGEST str_offset;
19868   static const char form_name[] = "DW_FORM_GNU_str_index";
19869
19870   dwarf2_read_section (objfile, str_section);
19871   dwarf2_read_section (objfile, str_offsets_section);
19872   if (str_section->buffer == NULL)
19873     error (_("%s used without .debug_str.dwo section"
19874              " in CU at offset 0x%x [in module %s]"),
19875            form_name, to_underlying (cu->header.sect_off), objf_name);
19876   if (str_offsets_section->buffer == NULL)
19877     error (_("%s used without .debug_str_offsets.dwo section"
19878              " in CU at offset 0x%x [in module %s]"),
19879            form_name, to_underlying (cu->header.sect_off), objf_name);
19880   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19881     error (_("%s pointing outside of .debug_str_offsets.dwo"
19882              " section in CU at offset 0x%x [in module %s]"),
19883            form_name, to_underlying (cu->header.sect_off), objf_name);
19884   info_ptr = (str_offsets_section->buffer
19885               + str_index * cu->header.offset_size);
19886   if (cu->header.offset_size == 4)
19887     str_offset = bfd_get_32 (abfd, info_ptr);
19888   else
19889     str_offset = bfd_get_64 (abfd, info_ptr);
19890   if (str_offset >= str_section->size)
19891     error (_("Offset from %s pointing outside of"
19892              " .debug_str.dwo section in CU at offset 0x%x [in module %s]"),
19893            form_name, to_underlying (cu->header.sect_off), objf_name);
19894   return (const char *) (str_section->buffer + str_offset);
19895 }
19896
19897 /* Return the length of an LEB128 number in BUF.  */
19898
19899 static int
19900 leb128_size (const gdb_byte *buf)
19901 {
19902   const gdb_byte *begin = buf;
19903   gdb_byte byte;
19904
19905   while (1)
19906     {
19907       byte = *buf++;
19908       if ((byte & 128) == 0)
19909         return buf - begin;
19910     }
19911 }
19912
19913 static void
19914 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19915 {
19916   switch (lang)
19917     {
19918     case DW_LANG_C89:
19919     case DW_LANG_C99:
19920     case DW_LANG_C11:
19921     case DW_LANG_C:
19922     case DW_LANG_UPC:
19923       cu->language = language_c;
19924       break;
19925     case DW_LANG_Java:
19926     case DW_LANG_C_plus_plus:
19927     case DW_LANG_C_plus_plus_11:
19928     case DW_LANG_C_plus_plus_14:
19929       cu->language = language_cplus;
19930       break;
19931     case DW_LANG_D:
19932       cu->language = language_d;
19933       break;
19934     case DW_LANG_Fortran77:
19935     case DW_LANG_Fortran90:
19936     case DW_LANG_Fortran95:
19937     case DW_LANG_Fortran03:
19938     case DW_LANG_Fortran08:
19939       cu->language = language_fortran;
19940       break;
19941     case DW_LANG_Go:
19942       cu->language = language_go;
19943       break;
19944     case DW_LANG_Mips_Assembler:
19945       cu->language = language_asm;
19946       break;
19947     case DW_LANG_Ada83:
19948     case DW_LANG_Ada95:
19949       cu->language = language_ada;
19950       break;
19951     case DW_LANG_Modula2:
19952       cu->language = language_m2;
19953       break;
19954     case DW_LANG_Pascal83:
19955       cu->language = language_pascal;
19956       break;
19957     case DW_LANG_ObjC:
19958       cu->language = language_objc;
19959       break;
19960     case DW_LANG_Rust:
19961     case DW_LANG_Rust_old:
19962       cu->language = language_rust;
19963       break;
19964     case DW_LANG_Cobol74:
19965     case DW_LANG_Cobol85:
19966     default:
19967       cu->language = language_minimal;
19968       break;
19969     }
19970   cu->language_defn = language_def (cu->language);
19971 }
19972
19973 /* Return the named attribute or NULL if not there.  */
19974
19975 static struct attribute *
19976 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19977 {
19978   for (;;)
19979     {
19980       unsigned int i;
19981       struct attribute *spec = NULL;
19982
19983       for (i = 0; i < die->num_attrs; ++i)
19984         {
19985           if (die->attrs[i].name == name)
19986             return &die->attrs[i];
19987           if (die->attrs[i].name == DW_AT_specification
19988               || die->attrs[i].name == DW_AT_abstract_origin)
19989             spec = &die->attrs[i];
19990         }
19991
19992       if (!spec)
19993         break;
19994
19995       die = follow_die_ref (die, spec, &cu);
19996     }
19997
19998   return NULL;
19999 }
20000
20001 /* Return the named attribute or NULL if not there,
20002    but do not follow DW_AT_specification, etc.
20003    This is for use in contexts where we're reading .debug_types dies.
20004    Following DW_AT_specification, DW_AT_abstract_origin will take us
20005    back up the chain, and we want to go down.  */
20006
20007 static struct attribute *
20008 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20009 {
20010   unsigned int i;
20011
20012   for (i = 0; i < die->num_attrs; ++i)
20013     if (die->attrs[i].name == name)
20014       return &die->attrs[i];
20015
20016   return NULL;
20017 }
20018
20019 /* Return the string associated with a string-typed attribute, or NULL if it
20020    is either not found or is of an incorrect type.  */
20021
20022 static const char *
20023 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20024 {
20025   struct attribute *attr;
20026   const char *str = NULL;
20027
20028   attr = dwarf2_attr (die, name, cu);
20029
20030   if (attr != NULL)
20031     {
20032       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20033           || attr->form == DW_FORM_string
20034           || attr->form == DW_FORM_GNU_str_index
20035           || attr->form == DW_FORM_GNU_strp_alt)
20036         str = DW_STRING (attr);
20037       else
20038         complaint (&symfile_complaints,
20039                    _("string type expected for attribute %s for "
20040                      "DIE at 0x%x in module %s"),
20041                    dwarf_attr_name (name), to_underlying (die->sect_off),
20042                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20043     }
20044
20045   return str;
20046 }
20047
20048 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20049    and holds a non-zero value.  This function should only be used for
20050    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20051
20052 static int
20053 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20054 {
20055   struct attribute *attr = dwarf2_attr (die, name, cu);
20056
20057   return (attr && DW_UNSND (attr));
20058 }
20059
20060 static int
20061 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20062 {
20063   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20064      which value is non-zero.  However, we have to be careful with
20065      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20066      (via dwarf2_flag_true_p) follows this attribute.  So we may
20067      end up accidently finding a declaration attribute that belongs
20068      to a different DIE referenced by the specification attribute,
20069      even though the given DIE does not have a declaration attribute.  */
20070   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20071           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20072 }
20073
20074 /* Return the die giving the specification for DIE, if there is
20075    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20076    containing the return value on output.  If there is no
20077    specification, but there is an abstract origin, that is
20078    returned.  */
20079
20080 static struct die_info *
20081 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20082 {
20083   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20084                                              *spec_cu);
20085
20086   if (spec_attr == NULL)
20087     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20088
20089   if (spec_attr == NULL)
20090     return NULL;
20091   else
20092     return follow_die_ref (die, spec_attr, spec_cu);
20093 }
20094
20095 /* Stub for free_line_header to match void * callback types.  */
20096
20097 static void
20098 free_line_header_voidp (void *arg)
20099 {
20100   struct line_header *lh = (struct line_header *) arg;
20101
20102   delete lh;
20103 }
20104
20105 void
20106 line_header::add_include_dir (const char *include_dir)
20107 {
20108   if (dwarf_line_debug >= 2)
20109     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20110                         include_dirs.size () + 1, include_dir);
20111
20112   include_dirs.push_back (include_dir);
20113 }
20114
20115 void
20116 line_header::add_file_name (const char *name,
20117                             dir_index d_index,
20118                             unsigned int mod_time,
20119                             unsigned int length)
20120 {
20121   if (dwarf_line_debug >= 2)
20122     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20123                         (unsigned) file_names.size () + 1, name);
20124
20125   file_names.emplace_back (name, d_index, mod_time, length);
20126 }
20127
20128 /* A convenience function to find the proper .debug_line section for a CU.  */
20129
20130 static struct dwarf2_section_info *
20131 get_debug_line_section (struct dwarf2_cu *cu)
20132 {
20133   struct dwarf2_section_info *section;
20134   struct dwarf2_per_objfile *dwarf2_per_objfile
20135     = cu->per_cu->dwarf2_per_objfile;
20136
20137   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20138      DWO file.  */
20139   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20140     section = &cu->dwo_unit->dwo_file->sections.line;
20141   else if (cu->per_cu->is_dwz)
20142     {
20143       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20144
20145       section = &dwz->line;
20146     }
20147   else
20148     section = &dwarf2_per_objfile->line;
20149
20150   return section;
20151 }
20152
20153 /* Read directory or file name entry format, starting with byte of
20154    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20155    entries count and the entries themselves in the described entry
20156    format.  */
20157
20158 static void
20159 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20160                         bfd *abfd, const gdb_byte **bufp,
20161                         struct line_header *lh,
20162                         const struct comp_unit_head *cu_header,
20163                         void (*callback) (struct line_header *lh,
20164                                           const char *name,
20165                                           dir_index d_index,
20166                                           unsigned int mod_time,
20167                                           unsigned int length))
20168 {
20169   gdb_byte format_count, formati;
20170   ULONGEST data_count, datai;
20171   const gdb_byte *buf = *bufp;
20172   const gdb_byte *format_header_data;
20173   unsigned int bytes_read;
20174
20175   format_count = read_1_byte (abfd, buf);
20176   buf += 1;
20177   format_header_data = buf;
20178   for (formati = 0; formati < format_count; formati++)
20179     {
20180       read_unsigned_leb128 (abfd, buf, &bytes_read);
20181       buf += bytes_read;
20182       read_unsigned_leb128 (abfd, buf, &bytes_read);
20183       buf += bytes_read;
20184     }
20185
20186   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20187   buf += bytes_read;
20188   for (datai = 0; datai < data_count; datai++)
20189     {
20190       const gdb_byte *format = format_header_data;
20191       struct file_entry fe;
20192
20193       for (formati = 0; formati < format_count; formati++)
20194         {
20195           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20196           format += bytes_read;
20197
20198           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20199           format += bytes_read;
20200
20201           gdb::optional<const char *> string;
20202           gdb::optional<unsigned int> uint;
20203
20204           switch (form)
20205             {
20206             case DW_FORM_string:
20207               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20208               buf += bytes_read;
20209               break;
20210
20211             case DW_FORM_line_strp:
20212               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20213                                                          abfd, buf,
20214                                                          cu_header,
20215                                                          &bytes_read));
20216               buf += bytes_read;
20217               break;
20218
20219             case DW_FORM_data1:
20220               uint.emplace (read_1_byte (abfd, buf));
20221               buf += 1;
20222               break;
20223
20224             case DW_FORM_data2:
20225               uint.emplace (read_2_bytes (abfd, buf));
20226               buf += 2;
20227               break;
20228
20229             case DW_FORM_data4:
20230               uint.emplace (read_4_bytes (abfd, buf));
20231               buf += 4;
20232               break;
20233
20234             case DW_FORM_data8:
20235               uint.emplace (read_8_bytes (abfd, buf));
20236               buf += 8;
20237               break;
20238
20239             case DW_FORM_udata:
20240               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20241               buf += bytes_read;
20242               break;
20243
20244             case DW_FORM_block:
20245               /* It is valid only for DW_LNCT_timestamp which is ignored by
20246                  current GDB.  */
20247               break;
20248             }
20249
20250           switch (content_type)
20251             {
20252             case DW_LNCT_path:
20253               if (string.has_value ())
20254                 fe.name = *string;
20255               break;
20256             case DW_LNCT_directory_index:
20257               if (uint.has_value ())
20258                 fe.d_index = (dir_index) *uint;
20259               break;
20260             case DW_LNCT_timestamp:
20261               if (uint.has_value ())
20262                 fe.mod_time = *uint;
20263               break;
20264             case DW_LNCT_size:
20265               if (uint.has_value ())
20266                 fe.length = *uint;
20267               break;
20268             case DW_LNCT_MD5:
20269               break;
20270             default:
20271               complaint (&symfile_complaints,
20272                          _("Unknown format content type %s"),
20273                          pulongest (content_type));
20274             }
20275         }
20276
20277       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20278     }
20279
20280   *bufp = buf;
20281 }
20282
20283 /* Read the statement program header starting at OFFSET in
20284    .debug_line, or .debug_line.dwo.  Return a pointer
20285    to a struct line_header, allocated using xmalloc.
20286    Returns NULL if there is a problem reading the header, e.g., if it
20287    has a version we don't understand.
20288
20289    NOTE: the strings in the include directory and file name tables of
20290    the returned object point into the dwarf line section buffer,
20291    and must not be freed.  */
20292
20293 static line_header_up
20294 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20295 {
20296   const gdb_byte *line_ptr;
20297   unsigned int bytes_read, offset_size;
20298   int i;
20299   const char *cur_dir, *cur_file;
20300   struct dwarf2_section_info *section;
20301   bfd *abfd;
20302   struct dwarf2_per_objfile *dwarf2_per_objfile
20303     = cu->per_cu->dwarf2_per_objfile;
20304
20305   section = get_debug_line_section (cu);
20306   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20307   if (section->buffer == NULL)
20308     {
20309       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20310         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
20311       else
20312         complaint (&symfile_complaints, _("missing .debug_line section"));
20313       return 0;
20314     }
20315
20316   /* We can't do this until we know the section is non-empty.
20317      Only then do we know we have such a section.  */
20318   abfd = get_section_bfd_owner (section);
20319
20320   /* Make sure that at least there's room for the total_length field.
20321      That could be 12 bytes long, but we're just going to fudge that.  */
20322   if (to_underlying (sect_off) + 4 >= section->size)
20323     {
20324       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20325       return 0;
20326     }
20327
20328   line_header_up lh (new line_header ());
20329
20330   lh->sect_off = sect_off;
20331   lh->offset_in_dwz = cu->per_cu->is_dwz;
20332
20333   line_ptr = section->buffer + to_underlying (sect_off);
20334
20335   /* Read in the header.  */
20336   lh->total_length =
20337     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20338                                             &bytes_read, &offset_size);
20339   line_ptr += bytes_read;
20340   if (line_ptr + lh->total_length > (section->buffer + section->size))
20341     {
20342       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20343       return 0;
20344     }
20345   lh->statement_program_end = line_ptr + lh->total_length;
20346   lh->version = read_2_bytes (abfd, line_ptr);
20347   line_ptr += 2;
20348   if (lh->version > 5)
20349     {
20350       /* This is a version we don't understand.  The format could have
20351          changed in ways we don't handle properly so just punt.  */
20352       complaint (&symfile_complaints,
20353                  _("unsupported version in .debug_line section"));
20354       return NULL;
20355     }
20356   if (lh->version >= 5)
20357     {
20358       gdb_byte segment_selector_size;
20359
20360       /* Skip address size.  */
20361       read_1_byte (abfd, line_ptr);
20362       line_ptr += 1;
20363
20364       segment_selector_size = read_1_byte (abfd, line_ptr);
20365       line_ptr += 1;
20366       if (segment_selector_size != 0)
20367         {
20368           complaint (&symfile_complaints,
20369                      _("unsupported segment selector size %u "
20370                        "in .debug_line section"),
20371                      segment_selector_size);
20372           return NULL;
20373         }
20374     }
20375   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20376   line_ptr += offset_size;
20377   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20378   line_ptr += 1;
20379   if (lh->version >= 4)
20380     {
20381       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20382       line_ptr += 1;
20383     }
20384   else
20385     lh->maximum_ops_per_instruction = 1;
20386
20387   if (lh->maximum_ops_per_instruction == 0)
20388     {
20389       lh->maximum_ops_per_instruction = 1;
20390       complaint (&symfile_complaints,
20391                  _("invalid maximum_ops_per_instruction "
20392                    "in `.debug_line' section"));
20393     }
20394
20395   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20396   line_ptr += 1;
20397   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20398   line_ptr += 1;
20399   lh->line_range = read_1_byte (abfd, line_ptr);
20400   line_ptr += 1;
20401   lh->opcode_base = read_1_byte (abfd, line_ptr);
20402   line_ptr += 1;
20403   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20404
20405   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20406   for (i = 1; i < lh->opcode_base; ++i)
20407     {
20408       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20409       line_ptr += 1;
20410     }
20411
20412   if (lh->version >= 5)
20413     {
20414       /* Read directory table.  */
20415       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20416                               &cu->header,
20417                               [] (struct line_header *lh, const char *name,
20418                                   dir_index d_index, unsigned int mod_time,
20419                                   unsigned int length)
20420         {
20421           lh->add_include_dir (name);
20422         });
20423
20424       /* Read file name table.  */
20425       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20426                               &cu->header,
20427                               [] (struct line_header *lh, const char *name,
20428                                   dir_index d_index, unsigned int mod_time,
20429                                   unsigned int length)
20430         {
20431           lh->add_file_name (name, d_index, mod_time, length);
20432         });
20433     }
20434   else
20435     {
20436       /* Read directory table.  */
20437       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20438         {
20439           line_ptr += bytes_read;
20440           lh->add_include_dir (cur_dir);
20441         }
20442       line_ptr += bytes_read;
20443
20444       /* Read file name table.  */
20445       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20446         {
20447           unsigned int mod_time, length;
20448           dir_index d_index;
20449
20450           line_ptr += bytes_read;
20451           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20452           line_ptr += bytes_read;
20453           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20454           line_ptr += bytes_read;
20455           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20456           line_ptr += bytes_read;
20457
20458           lh->add_file_name (cur_file, d_index, mod_time, length);
20459         }
20460       line_ptr += bytes_read;
20461     }
20462   lh->statement_program_start = line_ptr;
20463
20464   if (line_ptr > (section->buffer + section->size))
20465     complaint (&symfile_complaints,
20466                _("line number info header doesn't "
20467                  "fit in `.debug_line' section"));
20468
20469   return lh;
20470 }
20471
20472 /* Subroutine of dwarf_decode_lines to simplify it.
20473    Return the file name of the psymtab for included file FILE_INDEX
20474    in line header LH of PST.
20475    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20476    If space for the result is malloc'd, it will be freed by a cleanup.
20477    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
20478
20479    The function creates dangling cleanup registration.  */
20480
20481 static const char *
20482 psymtab_include_file_name (const struct line_header *lh, int file_index,
20483                            const struct partial_symtab *pst,
20484                            const char *comp_dir)
20485 {
20486   const file_entry &fe = lh->file_names[file_index];
20487   const char *include_name = fe.name;
20488   const char *include_name_to_compare = include_name;
20489   const char *pst_filename;
20490   char *copied_name = NULL;
20491   int file_is_pst;
20492
20493   const char *dir_name = fe.include_dir (lh);
20494
20495   if (!IS_ABSOLUTE_PATH (include_name)
20496       && (dir_name != NULL || comp_dir != NULL))
20497     {
20498       /* Avoid creating a duplicate psymtab for PST.
20499          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20500          Before we do the comparison, however, we need to account
20501          for DIR_NAME and COMP_DIR.
20502          First prepend dir_name (if non-NULL).  If we still don't
20503          have an absolute path prepend comp_dir (if non-NULL).
20504          However, the directory we record in the include-file's
20505          psymtab does not contain COMP_DIR (to match the
20506          corresponding symtab(s)).
20507
20508          Example:
20509
20510          bash$ cd /tmp
20511          bash$ gcc -g ./hello.c
20512          include_name = "hello.c"
20513          dir_name = "."
20514          DW_AT_comp_dir = comp_dir = "/tmp"
20515          DW_AT_name = "./hello.c"
20516
20517       */
20518
20519       if (dir_name != NULL)
20520         {
20521           char *tem = concat (dir_name, SLASH_STRING,
20522                               include_name, (char *)NULL);
20523
20524           make_cleanup (xfree, tem);
20525           include_name = tem;
20526           include_name_to_compare = include_name;
20527         }
20528       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20529         {
20530           char *tem = concat (comp_dir, SLASH_STRING,
20531                               include_name, (char *)NULL);
20532
20533           make_cleanup (xfree, tem);
20534           include_name_to_compare = tem;
20535         }
20536     }
20537
20538   pst_filename = pst->filename;
20539   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20540     {
20541       copied_name = concat (pst->dirname, SLASH_STRING,
20542                             pst_filename, (char *)NULL);
20543       pst_filename = copied_name;
20544     }
20545
20546   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20547
20548   if (copied_name != NULL)
20549     xfree (copied_name);
20550
20551   if (file_is_pst)
20552     return NULL;
20553   return include_name;
20554 }
20555
20556 /* State machine to track the state of the line number program.  */
20557
20558 class lnp_state_machine
20559 {
20560 public:
20561   /* Initialize a machine state for the start of a line number
20562      program.  */
20563   lnp_state_machine (gdbarch *arch, line_header *lh, bool record_lines_p);
20564
20565   file_entry *current_file ()
20566   {
20567     /* lh->file_names is 0-based, but the file name numbers in the
20568        statement program are 1-based.  */
20569     return m_line_header->file_name_at (m_file);
20570   }
20571
20572   /* Record the line in the state machine.  END_SEQUENCE is true if
20573      we're processing the end of a sequence.  */
20574   void record_line (bool end_sequence);
20575
20576   /* Check address and if invalid nop-out the rest of the lines in this
20577      sequence.  */
20578   void check_line_address (struct dwarf2_cu *cu,
20579                            const gdb_byte *line_ptr,
20580                            CORE_ADDR lowpc, CORE_ADDR address);
20581
20582   void handle_set_discriminator (unsigned int discriminator)
20583   {
20584     m_discriminator = discriminator;
20585     m_line_has_non_zero_discriminator |= discriminator != 0;
20586   }
20587
20588   /* Handle DW_LNE_set_address.  */
20589   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20590   {
20591     m_op_index = 0;
20592     address += baseaddr;
20593     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20594   }
20595
20596   /* Handle DW_LNS_advance_pc.  */
20597   void handle_advance_pc (CORE_ADDR adjust);
20598
20599   /* Handle a special opcode.  */
20600   void handle_special_opcode (unsigned char op_code);
20601
20602   /* Handle DW_LNS_advance_line.  */
20603   void handle_advance_line (int line_delta)
20604   {
20605     advance_line (line_delta);
20606   }
20607
20608   /* Handle DW_LNS_set_file.  */
20609   void handle_set_file (file_name_index file);
20610
20611   /* Handle DW_LNS_negate_stmt.  */
20612   void handle_negate_stmt ()
20613   {
20614     m_is_stmt = !m_is_stmt;
20615   }
20616
20617   /* Handle DW_LNS_const_add_pc.  */
20618   void handle_const_add_pc ();
20619
20620   /* Handle DW_LNS_fixed_advance_pc.  */
20621   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20622   {
20623     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20624     m_op_index = 0;
20625   }
20626
20627   /* Handle DW_LNS_copy.  */
20628   void handle_copy ()
20629   {
20630     record_line (false);
20631     m_discriminator = 0;
20632   }
20633
20634   /* Handle DW_LNE_end_sequence.  */
20635   void handle_end_sequence ()
20636   {
20637     m_record_line_callback = ::record_line;
20638   }
20639
20640 private:
20641   /* Advance the line by LINE_DELTA.  */
20642   void advance_line (int line_delta)
20643   {
20644     m_line += line_delta;
20645
20646     if (line_delta != 0)
20647       m_line_has_non_zero_discriminator = m_discriminator != 0;
20648   }
20649
20650   gdbarch *m_gdbarch;
20651
20652   /* True if we're recording lines.
20653      Otherwise we're building partial symtabs and are just interested in
20654      finding include files mentioned by the line number program.  */
20655   bool m_record_lines_p;
20656
20657   /* The line number header.  */
20658   line_header *m_line_header;
20659
20660   /* These are part of the standard DWARF line number state machine,
20661      and initialized according to the DWARF spec.  */
20662
20663   unsigned char m_op_index = 0;
20664   /* The line table index (1-based) of the current file.  */
20665   file_name_index m_file = (file_name_index) 1;
20666   unsigned int m_line = 1;
20667
20668   /* These are initialized in the constructor.  */
20669
20670   CORE_ADDR m_address;
20671   bool m_is_stmt;
20672   unsigned int m_discriminator;
20673
20674   /* Additional bits of state we need to track.  */
20675
20676   /* The last file that we called dwarf2_start_subfile for.
20677      This is only used for TLLs.  */
20678   unsigned int m_last_file = 0;
20679   /* The last file a line number was recorded for.  */
20680   struct subfile *m_last_subfile = NULL;
20681
20682   /* The function to call to record a line.  */
20683   record_line_ftype *m_record_line_callback = NULL;
20684
20685   /* The last line number that was recorded, used to coalesce
20686      consecutive entries for the same line.  This can happen, for
20687      example, when discriminators are present.  PR 17276.  */
20688   unsigned int m_last_line = 0;
20689   bool m_line_has_non_zero_discriminator = false;
20690 };
20691
20692 void
20693 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20694 {
20695   CORE_ADDR addr_adj = (((m_op_index + adjust)
20696                          / m_line_header->maximum_ops_per_instruction)
20697                         * m_line_header->minimum_instruction_length);
20698   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20699   m_op_index = ((m_op_index + adjust)
20700                 % m_line_header->maximum_ops_per_instruction);
20701 }
20702
20703 void
20704 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20705 {
20706   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20707   CORE_ADDR addr_adj = (((m_op_index
20708                           + (adj_opcode / m_line_header->line_range))
20709                          / m_line_header->maximum_ops_per_instruction)
20710                         * m_line_header->minimum_instruction_length);
20711   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20712   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20713                 % m_line_header->maximum_ops_per_instruction);
20714
20715   int line_delta = (m_line_header->line_base
20716                     + (adj_opcode % m_line_header->line_range));
20717   advance_line (line_delta);
20718   record_line (false);
20719   m_discriminator = 0;
20720 }
20721
20722 void
20723 lnp_state_machine::handle_set_file (file_name_index file)
20724 {
20725   m_file = file;
20726
20727   const file_entry *fe = current_file ();
20728   if (fe == NULL)
20729     dwarf2_debug_line_missing_file_complaint ();
20730   else if (m_record_lines_p)
20731     {
20732       const char *dir = fe->include_dir (m_line_header);
20733
20734       m_last_subfile = current_subfile;
20735       m_line_has_non_zero_discriminator = m_discriminator != 0;
20736       dwarf2_start_subfile (fe->name, dir);
20737     }
20738 }
20739
20740 void
20741 lnp_state_machine::handle_const_add_pc ()
20742 {
20743   CORE_ADDR adjust
20744     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20745
20746   CORE_ADDR addr_adj
20747     = (((m_op_index + adjust)
20748         / m_line_header->maximum_ops_per_instruction)
20749        * m_line_header->minimum_instruction_length);
20750
20751   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20752   m_op_index = ((m_op_index + adjust)
20753                 % m_line_header->maximum_ops_per_instruction);
20754 }
20755
20756 /* Ignore this record_line request.  */
20757
20758 static void
20759 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
20760 {
20761   return;
20762 }
20763
20764 /* Return non-zero if we should add LINE to the line number table.
20765    LINE is the line to add, LAST_LINE is the last line that was added,
20766    LAST_SUBFILE is the subfile for LAST_LINE.
20767    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20768    had a non-zero discriminator.
20769
20770    We have to be careful in the presence of discriminators.
20771    E.g., for this line:
20772
20773      for (i = 0; i < 100000; i++);
20774
20775    clang can emit four line number entries for that one line,
20776    each with a different discriminator.
20777    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20778
20779    However, we want gdb to coalesce all four entries into one.
20780    Otherwise the user could stepi into the middle of the line and
20781    gdb would get confused about whether the pc really was in the
20782    middle of the line.
20783
20784    Things are further complicated by the fact that two consecutive
20785    line number entries for the same line is a heuristic used by gcc
20786    to denote the end of the prologue.  So we can't just discard duplicate
20787    entries, we have to be selective about it.  The heuristic we use is
20788    that we only collapse consecutive entries for the same line if at least
20789    one of those entries has a non-zero discriminator.  PR 17276.
20790
20791    Note: Addresses in the line number state machine can never go backwards
20792    within one sequence, thus this coalescing is ok.  */
20793
20794 static int
20795 dwarf_record_line_p (unsigned int line, unsigned int last_line,
20796                      int line_has_non_zero_discriminator,
20797                      struct subfile *last_subfile)
20798 {
20799   if (current_subfile != last_subfile)
20800     return 1;
20801   if (line != last_line)
20802     return 1;
20803   /* Same line for the same file that we've seen already.
20804      As a last check, for pr 17276, only record the line if the line
20805      has never had a non-zero discriminator.  */
20806   if (!line_has_non_zero_discriminator)
20807     return 1;
20808   return 0;
20809 }
20810
20811 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
20812    in the line table of subfile SUBFILE.  */
20813
20814 static void
20815 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20816                      unsigned int line, CORE_ADDR address,
20817                      record_line_ftype p_record_line)
20818 {
20819   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20820
20821   if (dwarf_line_debug)
20822     {
20823       fprintf_unfiltered (gdb_stdlog,
20824                           "Recording line %u, file %s, address %s\n",
20825                           line, lbasename (subfile->name),
20826                           paddress (gdbarch, address));
20827     }
20828
20829   (*p_record_line) (subfile, line, addr);
20830 }
20831
20832 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20833    Mark the end of a set of line number records.
20834    The arguments are the same as for dwarf_record_line_1.
20835    If SUBFILE is NULL the request is ignored.  */
20836
20837 static void
20838 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20839                    CORE_ADDR address, record_line_ftype p_record_line)
20840 {
20841   if (subfile == NULL)
20842     return;
20843
20844   if (dwarf_line_debug)
20845     {
20846       fprintf_unfiltered (gdb_stdlog,
20847                           "Finishing current line, file %s, address %s\n",
20848                           lbasename (subfile->name),
20849                           paddress (gdbarch, address));
20850     }
20851
20852   dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
20853 }
20854
20855 void
20856 lnp_state_machine::record_line (bool end_sequence)
20857 {
20858   if (dwarf_line_debug)
20859     {
20860       fprintf_unfiltered (gdb_stdlog,
20861                           "Processing actual line %u: file %u,"
20862                           " address %s, is_stmt %u, discrim %u\n",
20863                           m_line, to_underlying (m_file),
20864                           paddress (m_gdbarch, m_address),
20865                           m_is_stmt, m_discriminator);
20866     }
20867
20868   file_entry *fe = current_file ();
20869
20870   if (fe == NULL)
20871     dwarf2_debug_line_missing_file_complaint ();
20872   /* For now we ignore lines not starting on an instruction boundary.
20873      But not when processing end_sequence for compatibility with the
20874      previous version of the code.  */
20875   else if (m_op_index == 0 || end_sequence)
20876     {
20877       fe->included_p = 1;
20878       if (m_record_lines_p && m_is_stmt)
20879         {
20880           if (m_last_subfile != current_subfile || end_sequence)
20881             {
20882               dwarf_finish_line (m_gdbarch, m_last_subfile,
20883                                  m_address, m_record_line_callback);
20884             }
20885
20886           if (!end_sequence)
20887             {
20888               if (dwarf_record_line_p (m_line, m_last_line,
20889                                        m_line_has_non_zero_discriminator,
20890                                        m_last_subfile))
20891                 {
20892                   dwarf_record_line_1 (m_gdbarch, current_subfile,
20893                                        m_line, m_address,
20894                                        m_record_line_callback);
20895                 }
20896               m_last_subfile = current_subfile;
20897               m_last_line = m_line;
20898             }
20899         }
20900     }
20901 }
20902
20903 lnp_state_machine::lnp_state_machine (gdbarch *arch, line_header *lh,
20904                                       bool record_lines_p)
20905 {
20906   m_gdbarch = arch;
20907   m_record_lines_p = record_lines_p;
20908   m_line_header = lh;
20909
20910   m_record_line_callback = ::record_line;
20911
20912   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20913      was a line entry for it so that the backend has a chance to adjust it
20914      and also record it in case it needs it.  This is currently used by MIPS
20915      code, cf. `mips_adjust_dwarf2_line'.  */
20916   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20917   m_is_stmt = lh->default_is_stmt;
20918   m_discriminator = 0;
20919 }
20920
20921 void
20922 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20923                                        const gdb_byte *line_ptr,
20924                                        CORE_ADDR lowpc, CORE_ADDR address)
20925 {
20926   /* If address < lowpc then it's not a usable value, it's outside the
20927      pc range of the CU.  However, we restrict the test to only address
20928      values of zero to preserve GDB's previous behaviour which is to
20929      handle the specific case of a function being GC'd by the linker.  */
20930
20931   if (address == 0 && address < lowpc)
20932     {
20933       /* This line table is for a function which has been
20934          GCd by the linker.  Ignore it.  PR gdb/12528 */
20935
20936       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20937       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20938
20939       complaint (&symfile_complaints,
20940                  _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20941                  line_offset, objfile_name (objfile));
20942       m_record_line_callback = noop_record_line;
20943       /* Note: record_line_callback is left as noop_record_line until
20944          we see DW_LNE_end_sequence.  */
20945     }
20946 }
20947
20948 /* Subroutine of dwarf_decode_lines to simplify it.
20949    Process the line number information in LH.
20950    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20951    program in order to set included_p for every referenced header.  */
20952
20953 static void
20954 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20955                       const int decode_for_pst_p, CORE_ADDR lowpc)
20956 {
20957   const gdb_byte *line_ptr, *extended_end;
20958   const gdb_byte *line_end;
20959   unsigned int bytes_read, extended_len;
20960   unsigned char op_code, extended_op;
20961   CORE_ADDR baseaddr;
20962   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20963   bfd *abfd = objfile->obfd;
20964   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20965   /* True if we're recording line info (as opposed to building partial
20966      symtabs and just interested in finding include files mentioned by
20967      the line number program).  */
20968   bool record_lines_p = !decode_for_pst_p;
20969
20970   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20971
20972   line_ptr = lh->statement_program_start;
20973   line_end = lh->statement_program_end;
20974
20975   /* Read the statement sequences until there's nothing left.  */
20976   while (line_ptr < line_end)
20977     {
20978       /* The DWARF line number program state machine.  Reset the state
20979          machine at the start of each sequence.  */
20980       lnp_state_machine state_machine (gdbarch, lh, record_lines_p);
20981       bool end_sequence = false;
20982
20983       if (record_lines_p)
20984         {
20985           /* Start a subfile for the current file of the state
20986              machine.  */
20987           const file_entry *fe = state_machine.current_file ();
20988
20989           if (fe != NULL)
20990             dwarf2_start_subfile (fe->name, fe->include_dir (lh));
20991         }
20992
20993       /* Decode the table.  */
20994       while (line_ptr < line_end && !end_sequence)
20995         {
20996           op_code = read_1_byte (abfd, line_ptr);
20997           line_ptr += 1;
20998
20999           if (op_code >= lh->opcode_base)
21000             {
21001               /* Special opcode.  */
21002               state_machine.handle_special_opcode (op_code);
21003             }
21004           else switch (op_code)
21005             {
21006             case DW_LNS_extended_op:
21007               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21008                                                    &bytes_read);
21009               line_ptr += bytes_read;
21010               extended_end = line_ptr + extended_len;
21011               extended_op = read_1_byte (abfd, line_ptr);
21012               line_ptr += 1;
21013               switch (extended_op)
21014                 {
21015                 case DW_LNE_end_sequence:
21016                   state_machine.handle_end_sequence ();
21017                   end_sequence = true;
21018                   break;
21019                 case DW_LNE_set_address:
21020                   {
21021                     CORE_ADDR address
21022                       = read_address (abfd, line_ptr, cu, &bytes_read);
21023                     line_ptr += bytes_read;
21024
21025                     state_machine.check_line_address (cu, line_ptr,
21026                                                       lowpc, address);
21027                     state_machine.handle_set_address (baseaddr, address);
21028                   }
21029                   break;
21030                 case DW_LNE_define_file:
21031                   {
21032                     const char *cur_file;
21033                     unsigned int mod_time, length;
21034                     dir_index dindex;
21035
21036                     cur_file = read_direct_string (abfd, line_ptr,
21037                                                    &bytes_read);
21038                     line_ptr += bytes_read;
21039                     dindex = (dir_index)
21040                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21041                     line_ptr += bytes_read;
21042                     mod_time =
21043                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21044                     line_ptr += bytes_read;
21045                     length =
21046                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21047                     line_ptr += bytes_read;
21048                     lh->add_file_name (cur_file, dindex, mod_time, length);
21049                   }
21050                   break;
21051                 case DW_LNE_set_discriminator:
21052                   {
21053                     /* The discriminator is not interesting to the
21054                        debugger; just ignore it.  We still need to
21055                        check its value though:
21056                        if there are consecutive entries for the same
21057                        (non-prologue) line we want to coalesce them.
21058                        PR 17276.  */
21059                     unsigned int discr
21060                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21061                     line_ptr += bytes_read;
21062
21063                     state_machine.handle_set_discriminator (discr);
21064                   }
21065                   break;
21066                 default:
21067                   complaint (&symfile_complaints,
21068                              _("mangled .debug_line section"));
21069                   return;
21070                 }
21071               /* Make sure that we parsed the extended op correctly.  If e.g.
21072                  we expected a different address size than the producer used,
21073                  we may have read the wrong number of bytes.  */
21074               if (line_ptr != extended_end)
21075                 {
21076                   complaint (&symfile_complaints,
21077                              _("mangled .debug_line section"));
21078                   return;
21079                 }
21080               break;
21081             case DW_LNS_copy:
21082               state_machine.handle_copy ();
21083               break;
21084             case DW_LNS_advance_pc:
21085               {
21086                 CORE_ADDR adjust
21087                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21088                 line_ptr += bytes_read;
21089
21090                 state_machine.handle_advance_pc (adjust);
21091               }
21092               break;
21093             case DW_LNS_advance_line:
21094               {
21095                 int line_delta
21096                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21097                 line_ptr += bytes_read;
21098
21099                 state_machine.handle_advance_line (line_delta);
21100               }
21101               break;
21102             case DW_LNS_set_file:
21103               {
21104                 file_name_index file
21105                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21106                                                             &bytes_read);
21107                 line_ptr += bytes_read;
21108
21109                 state_machine.handle_set_file (file);
21110               }
21111               break;
21112             case DW_LNS_set_column:
21113               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21114               line_ptr += bytes_read;
21115               break;
21116             case DW_LNS_negate_stmt:
21117               state_machine.handle_negate_stmt ();
21118               break;
21119             case DW_LNS_set_basic_block:
21120               break;
21121             /* Add to the address register of the state machine the
21122                address increment value corresponding to special opcode
21123                255.  I.e., this value is scaled by the minimum
21124                instruction length since special opcode 255 would have
21125                scaled the increment.  */
21126             case DW_LNS_const_add_pc:
21127               state_machine.handle_const_add_pc ();
21128               break;
21129             case DW_LNS_fixed_advance_pc:
21130               {
21131                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21132                 line_ptr += 2;
21133
21134                 state_machine.handle_fixed_advance_pc (addr_adj);
21135               }
21136               break;
21137             default:
21138               {
21139                 /* Unknown standard opcode, ignore it.  */
21140                 int i;
21141
21142                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21143                   {
21144                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21145                     line_ptr += bytes_read;
21146                   }
21147               }
21148             }
21149         }
21150
21151       if (!end_sequence)
21152         dwarf2_debug_line_missing_end_sequence_complaint ();
21153
21154       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21155          in which case we still finish recording the last line).  */
21156       state_machine.record_line (true);
21157     }
21158 }
21159
21160 /* Decode the Line Number Program (LNP) for the given line_header
21161    structure and CU.  The actual information extracted and the type
21162    of structures created from the LNP depends on the value of PST.
21163
21164    1. If PST is NULL, then this procedure uses the data from the program
21165       to create all necessary symbol tables, and their linetables.
21166
21167    2. If PST is not NULL, this procedure reads the program to determine
21168       the list of files included by the unit represented by PST, and
21169       builds all the associated partial symbol tables.
21170
21171    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21172    It is used for relative paths in the line table.
21173    NOTE: When processing partial symtabs (pst != NULL),
21174    comp_dir == pst->dirname.
21175
21176    NOTE: It is important that psymtabs have the same file name (via strcmp)
21177    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21178    symtab we don't use it in the name of the psymtabs we create.
21179    E.g. expand_line_sal requires this when finding psymtabs to expand.
21180    A good testcase for this is mb-inline.exp.
21181
21182    LOWPC is the lowest address in CU (or 0 if not known).
21183
21184    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21185    for its PC<->lines mapping information.  Otherwise only the filename
21186    table is read in.  */
21187
21188 static void
21189 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21190                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21191                     CORE_ADDR lowpc, int decode_mapping)
21192 {
21193   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21194   const int decode_for_pst_p = (pst != NULL);
21195
21196   if (decode_mapping)
21197     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21198
21199   if (decode_for_pst_p)
21200     {
21201       int file_index;
21202
21203       /* Now that we're done scanning the Line Header Program, we can
21204          create the psymtab of each included file.  */
21205       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21206         if (lh->file_names[file_index].included_p == 1)
21207           {
21208             const char *include_name =
21209               psymtab_include_file_name (lh, file_index, pst, comp_dir);
21210             if (include_name != NULL)
21211               dwarf2_create_include_psymtab (include_name, pst, objfile);
21212           }
21213     }
21214   else
21215     {
21216       /* Make sure a symtab is created for every file, even files
21217          which contain only variables (i.e. no code with associated
21218          line numbers).  */
21219       struct compunit_symtab *cust = buildsym_compunit_symtab ();
21220       int i;
21221
21222       for (i = 0; i < lh->file_names.size (); i++)
21223         {
21224           file_entry &fe = lh->file_names[i];
21225
21226           dwarf2_start_subfile (fe.name, fe.include_dir (lh));
21227
21228           if (current_subfile->symtab == NULL)
21229             {
21230               current_subfile->symtab
21231                 = allocate_symtab (cust, current_subfile->name);
21232             }
21233           fe.symtab = current_subfile->symtab;
21234         }
21235     }
21236 }
21237
21238 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21239    DIRNAME the name of the source directory which contains FILENAME
21240    or NULL if not known.
21241    This routine tries to keep line numbers from identical absolute and
21242    relative file names in a common subfile.
21243
21244    Using the `list' example from the GDB testsuite, which resides in
21245    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21246    of /srcdir/list0.c yields the following debugging information for list0.c:
21247
21248    DW_AT_name:          /srcdir/list0.c
21249    DW_AT_comp_dir:      /compdir
21250    files.files[0].name: list0.h
21251    files.files[0].dir:  /srcdir
21252    files.files[1].name: list0.c
21253    files.files[1].dir:  /srcdir
21254
21255    The line number information for list0.c has to end up in a single
21256    subfile, so that `break /srcdir/list0.c:1' works as expected.
21257    start_subfile will ensure that this happens provided that we pass the
21258    concatenation of files.files[1].dir and files.files[1].name as the
21259    subfile's name.  */
21260
21261 static void
21262 dwarf2_start_subfile (const char *filename, const char *dirname)
21263 {
21264   char *copy = NULL;
21265
21266   /* In order not to lose the line information directory,
21267      we concatenate it to the filename when it makes sense.
21268      Note that the Dwarf3 standard says (speaking of filenames in line
21269      information): ``The directory index is ignored for file names
21270      that represent full path names''.  Thus ignoring dirname in the
21271      `else' branch below isn't an issue.  */
21272
21273   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21274     {
21275       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21276       filename = copy;
21277     }
21278
21279   start_subfile (filename);
21280
21281   if (copy != NULL)
21282     xfree (copy);
21283 }
21284
21285 /* Start a symtab for DWARF.
21286    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
21287
21288 static struct compunit_symtab *
21289 dwarf2_start_symtab (struct dwarf2_cu *cu,
21290                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21291 {
21292   struct compunit_symtab *cust
21293     = start_symtab (cu->per_cu->dwarf2_per_objfile->objfile, name, comp_dir,
21294                     low_pc, cu->language);
21295
21296   record_debugformat ("DWARF 2");
21297   record_producer (cu->producer);
21298
21299   /* We assume that we're processing GCC output.  */
21300   processing_gcc_compilation = 2;
21301
21302   cu->processing_has_namespace_info = 0;
21303
21304   return cust;
21305 }
21306
21307 static void
21308 var_decode_location (struct attribute *attr, struct symbol *sym,
21309                      struct dwarf2_cu *cu)
21310 {
21311   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21312   struct comp_unit_head *cu_header = &cu->header;
21313
21314   /* NOTE drow/2003-01-30: There used to be a comment and some special
21315      code here to turn a symbol with DW_AT_external and a
21316      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21317      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21318      with some versions of binutils) where shared libraries could have
21319      relocations against symbols in their debug information - the
21320      minimal symbol would have the right address, but the debug info
21321      would not.  It's no longer necessary, because we will explicitly
21322      apply relocations when we read in the debug information now.  */
21323
21324   /* A DW_AT_location attribute with no contents indicates that a
21325      variable has been optimized away.  */
21326   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21327     {
21328       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21329       return;
21330     }
21331
21332   /* Handle one degenerate form of location expression specially, to
21333      preserve GDB's previous behavior when section offsets are
21334      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21335      then mark this symbol as LOC_STATIC.  */
21336
21337   if (attr_form_is_block (attr)
21338       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21339            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21340           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21341               && (DW_BLOCK (attr)->size
21342                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21343     {
21344       unsigned int dummy;
21345
21346       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21347         SYMBOL_VALUE_ADDRESS (sym) =
21348           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21349       else
21350         SYMBOL_VALUE_ADDRESS (sym) =
21351           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21352       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21353       fixup_symbol_section (sym, objfile);
21354       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21355                                               SYMBOL_SECTION (sym));
21356       return;
21357     }
21358
21359   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21360      expression evaluator, and use LOC_COMPUTED only when necessary
21361      (i.e. when the value of a register or memory location is
21362      referenced, or a thread-local block, etc.).  Then again, it might
21363      not be worthwhile.  I'm assuming that it isn't unless performance
21364      or memory numbers show me otherwise.  */
21365
21366   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21367
21368   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21369     cu->has_loclist = 1;
21370 }
21371
21372 /* Given a pointer to a DWARF information entry, figure out if we need
21373    to make a symbol table entry for it, and if so, create a new entry
21374    and return a pointer to it.
21375    If TYPE is NULL, determine symbol type from the die, otherwise
21376    used the passed type.
21377    If SPACE is not NULL, use it to hold the new symbol.  If it is
21378    NULL, allocate a new symbol on the objfile's obstack.  */
21379
21380 static struct symbol *
21381 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21382                  struct symbol *space)
21383 {
21384   struct dwarf2_per_objfile *dwarf2_per_objfile
21385     = cu->per_cu->dwarf2_per_objfile;
21386   struct objfile *objfile = dwarf2_per_objfile->objfile;
21387   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21388   struct symbol *sym = NULL;
21389   const char *name;
21390   struct attribute *attr = NULL;
21391   struct attribute *attr2 = NULL;
21392   CORE_ADDR baseaddr;
21393   struct pending **list_to_add = NULL;
21394
21395   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21396
21397   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21398
21399   name = dwarf2_name (die, cu);
21400   if (name)
21401     {
21402       const char *linkagename;
21403       int suppress_add = 0;
21404
21405       if (space)
21406         sym = space;
21407       else
21408         sym = allocate_symbol (objfile);
21409       OBJSTAT (objfile, n_syms++);
21410
21411       /* Cache this symbol's name and the name's demangled form (if any).  */
21412       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21413       linkagename = dwarf2_physname (name, die, cu);
21414       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21415
21416       /* Fortran does not have mangling standard and the mangling does differ
21417          between gfortran, iFort etc.  */
21418       if (cu->language == language_fortran
21419           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21420         symbol_set_demangled_name (&(sym->ginfo),
21421                                    dwarf2_full_name (name, die, cu),
21422                                    NULL);
21423
21424       /* Default assumptions.
21425          Use the passed type or decode it from the die.  */
21426       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21427       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21428       if (type != NULL)
21429         SYMBOL_TYPE (sym) = type;
21430       else
21431         SYMBOL_TYPE (sym) = die_type (die, cu);
21432       attr = dwarf2_attr (die,
21433                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21434                           cu);
21435       if (attr)
21436         {
21437           SYMBOL_LINE (sym) = DW_UNSND (attr);
21438         }
21439
21440       attr = dwarf2_attr (die,
21441                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21442                           cu);
21443       if (attr)
21444         {
21445           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21446           struct file_entry *fe;
21447
21448           if (cu->line_header != NULL)
21449             fe = cu->line_header->file_name_at (file_index);
21450           else
21451             fe = NULL;
21452
21453           if (fe == NULL)
21454             complaint (&symfile_complaints,
21455                        _("file index out of range"));
21456           else
21457             symbol_set_symtab (sym, fe->symtab);
21458         }
21459
21460       switch (die->tag)
21461         {
21462         case DW_TAG_label:
21463           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21464           if (attr)
21465             {
21466               CORE_ADDR addr;
21467
21468               addr = attr_value_as_address (attr);
21469               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21470               SYMBOL_VALUE_ADDRESS (sym) = addr;
21471             }
21472           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21473           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21474           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21475           add_symbol_to_list (sym, cu->list_in_scope);
21476           break;
21477         case DW_TAG_subprogram:
21478           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21479              finish_block.  */
21480           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21481           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21482           if ((attr2 && (DW_UNSND (attr2) != 0))
21483               || cu->language == language_ada)
21484             {
21485               /* Subprograms marked external are stored as a global symbol.
21486                  Ada subprograms, whether marked external or not, are always
21487                  stored as a global symbol, because we want to be able to
21488                  access them globally.  For instance, we want to be able
21489                  to break on a nested subprogram without having to
21490                  specify the context.  */
21491               list_to_add = &global_symbols;
21492             }
21493           else
21494             {
21495               list_to_add = cu->list_in_scope;
21496             }
21497           break;
21498         case DW_TAG_inlined_subroutine:
21499           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21500              finish_block.  */
21501           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21502           SYMBOL_INLINED (sym) = 1;
21503           list_to_add = cu->list_in_scope;
21504           break;
21505         case DW_TAG_template_value_param:
21506           suppress_add = 1;
21507           /* Fall through.  */
21508         case DW_TAG_constant:
21509         case DW_TAG_variable:
21510         case DW_TAG_member:
21511           /* Compilation with minimal debug info may result in
21512              variables with missing type entries.  Change the
21513              misleading `void' type to something sensible.  */
21514           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21515             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21516
21517           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21518           /* In the case of DW_TAG_member, we should only be called for
21519              static const members.  */
21520           if (die->tag == DW_TAG_member)
21521             {
21522               /* dwarf2_add_field uses die_is_declaration,
21523                  so we do the same.  */
21524               gdb_assert (die_is_declaration (die, cu));
21525               gdb_assert (attr);
21526             }
21527           if (attr)
21528             {
21529               dwarf2_const_value (attr, sym, cu);
21530               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21531               if (!suppress_add)
21532                 {
21533                   if (attr2 && (DW_UNSND (attr2) != 0))
21534                     list_to_add = &global_symbols;
21535                   else
21536                     list_to_add = cu->list_in_scope;
21537                 }
21538               break;
21539             }
21540           attr = dwarf2_attr (die, DW_AT_location, cu);
21541           if (attr)
21542             {
21543               var_decode_location (attr, sym, cu);
21544               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21545
21546               /* Fortran explicitly imports any global symbols to the local
21547                  scope by DW_TAG_common_block.  */
21548               if (cu->language == language_fortran && die->parent
21549                   && die->parent->tag == DW_TAG_common_block)
21550                 attr2 = NULL;
21551
21552               if (SYMBOL_CLASS (sym) == LOC_STATIC
21553                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21554                   && !dwarf2_per_objfile->has_section_at_zero)
21555                 {
21556                   /* When a static variable is eliminated by the linker,
21557                      the corresponding debug information is not stripped
21558                      out, but the variable address is set to null;
21559                      do not add such variables into symbol table.  */
21560                 }
21561               else if (attr2 && (DW_UNSND (attr2) != 0))
21562                 {
21563                   /* Workaround gfortran PR debug/40040 - it uses
21564                      DW_AT_location for variables in -fPIC libraries which may
21565                      get overriden by other libraries/executable and get
21566                      a different address.  Resolve it by the minimal symbol
21567                      which may come from inferior's executable using copy
21568                      relocation.  Make this workaround only for gfortran as for
21569                      other compilers GDB cannot guess the minimal symbol
21570                      Fortran mangling kind.  */
21571                   if (cu->language == language_fortran && die->parent
21572                       && die->parent->tag == DW_TAG_module
21573                       && cu->producer
21574                       && startswith (cu->producer, "GNU Fortran"))
21575                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21576
21577                   /* A variable with DW_AT_external is never static,
21578                      but it may be block-scoped.  */
21579                   list_to_add = (cu->list_in_scope == &file_symbols
21580                                  ? &global_symbols : cu->list_in_scope);
21581                 }
21582               else
21583                 list_to_add = cu->list_in_scope;
21584             }
21585           else
21586             {
21587               /* We do not know the address of this symbol.
21588                  If it is an external symbol and we have type information
21589                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21590                  The address of the variable will then be determined from
21591                  the minimal symbol table whenever the variable is
21592                  referenced.  */
21593               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21594
21595               /* Fortran explicitly imports any global symbols to the local
21596                  scope by DW_TAG_common_block.  */
21597               if (cu->language == language_fortran && die->parent
21598                   && die->parent->tag == DW_TAG_common_block)
21599                 {
21600                   /* SYMBOL_CLASS doesn't matter here because
21601                      read_common_block is going to reset it.  */
21602                   if (!suppress_add)
21603                     list_to_add = cu->list_in_scope;
21604                 }
21605               else if (attr2 && (DW_UNSND (attr2) != 0)
21606                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21607                 {
21608                   /* A variable with DW_AT_external is never static, but it
21609                      may be block-scoped.  */
21610                   list_to_add = (cu->list_in_scope == &file_symbols
21611                                  ? &global_symbols : cu->list_in_scope);
21612
21613                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21614                 }
21615               else if (!die_is_declaration (die, cu))
21616                 {
21617                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21618                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21619                   if (!suppress_add)
21620                     list_to_add = cu->list_in_scope;
21621                 }
21622             }
21623           break;
21624         case DW_TAG_formal_parameter:
21625           /* If we are inside a function, mark this as an argument.  If
21626              not, we might be looking at an argument to an inlined function
21627              when we do not have enough information to show inlined frames;
21628              pretend it's a local variable in that case so that the user can
21629              still see it.  */
21630           if (context_stack_depth > 0
21631               && context_stack[context_stack_depth - 1].name != NULL)
21632             SYMBOL_IS_ARGUMENT (sym) = 1;
21633           attr = dwarf2_attr (die, DW_AT_location, cu);
21634           if (attr)
21635             {
21636               var_decode_location (attr, sym, cu);
21637             }
21638           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21639           if (attr)
21640             {
21641               dwarf2_const_value (attr, sym, cu);
21642             }
21643
21644           list_to_add = cu->list_in_scope;
21645           break;
21646         case DW_TAG_unspecified_parameters:
21647           /* From varargs functions; gdb doesn't seem to have any
21648              interest in this information, so just ignore it for now.
21649              (FIXME?) */
21650           break;
21651         case DW_TAG_template_type_param:
21652           suppress_add = 1;
21653           /* Fall through.  */
21654         case DW_TAG_class_type:
21655         case DW_TAG_interface_type:
21656         case DW_TAG_structure_type:
21657         case DW_TAG_union_type:
21658         case DW_TAG_set_type:
21659         case DW_TAG_enumeration_type:
21660           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21661           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21662
21663           {
21664             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21665                really ever be static objects: otherwise, if you try
21666                to, say, break of a class's method and you're in a file
21667                which doesn't mention that class, it won't work unless
21668                the check for all static symbols in lookup_symbol_aux
21669                saves you.  See the OtherFileClass tests in
21670                gdb.c++/namespace.exp.  */
21671
21672             if (!suppress_add)
21673               {
21674                 list_to_add = (cu->list_in_scope == &file_symbols
21675                                && cu->language == language_cplus
21676                                ? &global_symbols : cu->list_in_scope);
21677
21678                 /* The semantics of C++ state that "struct foo {
21679                    ... }" also defines a typedef for "foo".  */
21680                 if (cu->language == language_cplus
21681                     || cu->language == language_ada
21682                     || cu->language == language_d
21683                     || cu->language == language_rust)
21684                   {
21685                     /* The symbol's name is already allocated along
21686                        with this objfile, so we don't need to
21687                        duplicate it for the type.  */
21688                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21689                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21690                   }
21691               }
21692           }
21693           break;
21694         case DW_TAG_typedef:
21695           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21696           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21697           list_to_add = cu->list_in_scope;
21698           break;
21699         case DW_TAG_base_type:
21700         case DW_TAG_subrange_type:
21701           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21702           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21703           list_to_add = cu->list_in_scope;
21704           break;
21705         case DW_TAG_enumerator:
21706           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21707           if (attr)
21708             {
21709               dwarf2_const_value (attr, sym, cu);
21710             }
21711           {
21712             /* NOTE: carlton/2003-11-10: See comment above in the
21713                DW_TAG_class_type, etc. block.  */
21714
21715             list_to_add = (cu->list_in_scope == &file_symbols
21716                            && cu->language == language_cplus
21717                            ? &global_symbols : cu->list_in_scope);
21718           }
21719           break;
21720         case DW_TAG_imported_declaration:
21721         case DW_TAG_namespace:
21722           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21723           list_to_add = &global_symbols;
21724           break;
21725         case DW_TAG_module:
21726           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21727           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21728           list_to_add = &global_symbols;
21729           break;
21730         case DW_TAG_common_block:
21731           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21732           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21733           add_symbol_to_list (sym, cu->list_in_scope);
21734           break;
21735         default:
21736           /* Not a tag we recognize.  Hopefully we aren't processing
21737              trash data, but since we must specifically ignore things
21738              we don't recognize, there is nothing else we should do at
21739              this point.  */
21740           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
21741                      dwarf_tag_name (die->tag));
21742           break;
21743         }
21744
21745       if (suppress_add)
21746         {
21747           sym->hash_next = objfile->template_symbols;
21748           objfile->template_symbols = sym;
21749           list_to_add = NULL;
21750         }
21751
21752       if (list_to_add != NULL)
21753         add_symbol_to_list (sym, list_to_add);
21754
21755       /* For the benefit of old versions of GCC, check for anonymous
21756          namespaces based on the demangled name.  */
21757       if (!cu->processing_has_namespace_info
21758           && cu->language == language_cplus)
21759         cp_scan_for_anonymous_namespaces (sym, objfile);
21760     }
21761   return (sym);
21762 }
21763
21764 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
21765
21766 static struct symbol *
21767 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21768 {
21769   return new_symbol_full (die, type, cu, NULL);
21770 }
21771
21772 /* Given an attr with a DW_FORM_dataN value in host byte order,
21773    zero-extend it as appropriate for the symbol's type.  The DWARF
21774    standard (v4) is not entirely clear about the meaning of using
21775    DW_FORM_dataN for a constant with a signed type, where the type is
21776    wider than the data.  The conclusion of a discussion on the DWARF
21777    list was that this is unspecified.  We choose to always zero-extend
21778    because that is the interpretation long in use by GCC.  */
21779
21780 static gdb_byte *
21781 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21782                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21783 {
21784   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21785   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21786                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21787   LONGEST l = DW_UNSND (attr);
21788
21789   if (bits < sizeof (*value) * 8)
21790     {
21791       l &= ((LONGEST) 1 << bits) - 1;
21792       *value = l;
21793     }
21794   else if (bits == sizeof (*value) * 8)
21795     *value = l;
21796   else
21797     {
21798       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21799       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21800       return bytes;
21801     }
21802
21803   return NULL;
21804 }
21805
21806 /* Read a constant value from an attribute.  Either set *VALUE, or if
21807    the value does not fit in *VALUE, set *BYTES - either already
21808    allocated on the objfile obstack, or newly allocated on OBSTACK,
21809    or, set *BATON, if we translated the constant to a location
21810    expression.  */
21811
21812 static void
21813 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21814                          const char *name, struct obstack *obstack,
21815                          struct dwarf2_cu *cu,
21816                          LONGEST *value, const gdb_byte **bytes,
21817                          struct dwarf2_locexpr_baton **baton)
21818 {
21819   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21820   struct comp_unit_head *cu_header = &cu->header;
21821   struct dwarf_block *blk;
21822   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21823                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21824
21825   *value = 0;
21826   *bytes = NULL;
21827   *baton = NULL;
21828
21829   switch (attr->form)
21830     {
21831     case DW_FORM_addr:
21832     case DW_FORM_GNU_addr_index:
21833       {
21834         gdb_byte *data;
21835
21836         if (TYPE_LENGTH (type) != cu_header->addr_size)
21837           dwarf2_const_value_length_mismatch_complaint (name,
21838                                                         cu_header->addr_size,
21839                                                         TYPE_LENGTH (type));
21840         /* Symbols of this form are reasonably rare, so we just
21841            piggyback on the existing location code rather than writing
21842            a new implementation of symbol_computed_ops.  */
21843         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21844         (*baton)->per_cu = cu->per_cu;
21845         gdb_assert ((*baton)->per_cu);
21846
21847         (*baton)->size = 2 + cu_header->addr_size;
21848         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21849         (*baton)->data = data;
21850
21851         data[0] = DW_OP_addr;
21852         store_unsigned_integer (&data[1], cu_header->addr_size,
21853                                 byte_order, DW_ADDR (attr));
21854         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21855       }
21856       break;
21857     case DW_FORM_string:
21858     case DW_FORM_strp:
21859     case DW_FORM_GNU_str_index:
21860     case DW_FORM_GNU_strp_alt:
21861       /* DW_STRING is already allocated on the objfile obstack, point
21862          directly to it.  */
21863       *bytes = (const gdb_byte *) DW_STRING (attr);
21864       break;
21865     case DW_FORM_block1:
21866     case DW_FORM_block2:
21867     case DW_FORM_block4:
21868     case DW_FORM_block:
21869     case DW_FORM_exprloc:
21870     case DW_FORM_data16:
21871       blk = DW_BLOCK (attr);
21872       if (TYPE_LENGTH (type) != blk->size)
21873         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21874                                                       TYPE_LENGTH (type));
21875       *bytes = blk->data;
21876       break;
21877
21878       /* The DW_AT_const_value attributes are supposed to carry the
21879          symbol's value "represented as it would be on the target
21880          architecture."  By the time we get here, it's already been
21881          converted to host endianness, so we just need to sign- or
21882          zero-extend it as appropriate.  */
21883     case DW_FORM_data1:
21884       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21885       break;
21886     case DW_FORM_data2:
21887       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21888       break;
21889     case DW_FORM_data4:
21890       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21891       break;
21892     case DW_FORM_data8:
21893       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21894       break;
21895
21896     case DW_FORM_sdata:
21897     case DW_FORM_implicit_const:
21898       *value = DW_SND (attr);
21899       break;
21900
21901     case DW_FORM_udata:
21902       *value = DW_UNSND (attr);
21903       break;
21904
21905     default:
21906       complaint (&symfile_complaints,
21907                  _("unsupported const value attribute form: '%s'"),
21908                  dwarf_form_name (attr->form));
21909       *value = 0;
21910       break;
21911     }
21912 }
21913
21914
21915 /* Copy constant value from an attribute to a symbol.  */
21916
21917 static void
21918 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21919                     struct dwarf2_cu *cu)
21920 {
21921   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21922   LONGEST value;
21923   const gdb_byte *bytes;
21924   struct dwarf2_locexpr_baton *baton;
21925
21926   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21927                            SYMBOL_PRINT_NAME (sym),
21928                            &objfile->objfile_obstack, cu,
21929                            &value, &bytes, &baton);
21930
21931   if (baton != NULL)
21932     {
21933       SYMBOL_LOCATION_BATON (sym) = baton;
21934       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21935     }
21936   else if (bytes != NULL)
21937      {
21938       SYMBOL_VALUE_BYTES (sym) = bytes;
21939       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21940     }
21941   else
21942     {
21943       SYMBOL_VALUE (sym) = value;
21944       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21945     }
21946 }
21947
21948 /* Return the type of the die in question using its DW_AT_type attribute.  */
21949
21950 static struct type *
21951 die_type (struct die_info *die, struct dwarf2_cu *cu)
21952 {
21953   struct attribute *type_attr;
21954
21955   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21956   if (!type_attr)
21957     {
21958       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21959       /* A missing DW_AT_type represents a void type.  */
21960       return objfile_type (objfile)->builtin_void;
21961     }
21962
21963   return lookup_die_type (die, type_attr, cu);
21964 }
21965
21966 /* True iff CU's producer generates GNAT Ada auxiliary information
21967    that allows to find parallel types through that information instead
21968    of having to do expensive parallel lookups by type name.  */
21969
21970 static int
21971 need_gnat_info (struct dwarf2_cu *cu)
21972 {
21973   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
21974      of GNAT produces this auxiliary information, without any indication
21975      that it is produced.  Part of enhancing the FSF version of GNAT
21976      to produce that information will be to put in place an indicator
21977      that we can use in order to determine whether the descriptive type
21978      info is available or not.  One suggestion that has been made is
21979      to use a new attribute, attached to the CU die.  For now, assume
21980      that the descriptive type info is not available.  */
21981   return 0;
21982 }
21983
21984 /* Return the auxiliary type of the die in question using its
21985    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21986    attribute is not present.  */
21987
21988 static struct type *
21989 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21990 {
21991   struct attribute *type_attr;
21992
21993   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21994   if (!type_attr)
21995     return NULL;
21996
21997   return lookup_die_type (die, type_attr, cu);
21998 }
21999
22000 /* If DIE has a descriptive_type attribute, then set the TYPE's
22001    descriptive type accordingly.  */
22002
22003 static void
22004 set_descriptive_type (struct type *type, struct die_info *die,
22005                       struct dwarf2_cu *cu)
22006 {
22007   struct type *descriptive_type = die_descriptive_type (die, cu);
22008
22009   if (descriptive_type)
22010     {
22011       ALLOCATE_GNAT_AUX_TYPE (type);
22012       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22013     }
22014 }
22015
22016 /* Return the containing type of the die in question using its
22017    DW_AT_containing_type attribute.  */
22018
22019 static struct type *
22020 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22021 {
22022   struct attribute *type_attr;
22023   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22024
22025   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22026   if (!type_attr)
22027     error (_("Dwarf Error: Problem turning containing type into gdb type "
22028              "[in module %s]"), objfile_name (objfile));
22029
22030   return lookup_die_type (die, type_attr, cu);
22031 }
22032
22033 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22034
22035 static struct type *
22036 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22037 {
22038   struct dwarf2_per_objfile *dwarf2_per_objfile
22039     = cu->per_cu->dwarf2_per_objfile;
22040   struct objfile *objfile = dwarf2_per_objfile->objfile;
22041   char *message, *saved;
22042
22043   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
22044                         objfile_name (objfile),
22045                         to_underlying (cu->header.sect_off),
22046                         to_underlying (die->sect_off));
22047   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22048                                   message, strlen (message));
22049   xfree (message);
22050
22051   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22052 }
22053
22054 /* Look up the type of DIE in CU using its type attribute ATTR.
22055    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22056    DW_AT_containing_type.
22057    If there is no type substitute an error marker.  */
22058
22059 static struct type *
22060 lookup_die_type (struct die_info *die, const struct attribute *attr,
22061                  struct dwarf2_cu *cu)
22062 {
22063   struct dwarf2_per_objfile *dwarf2_per_objfile
22064     = cu->per_cu->dwarf2_per_objfile;
22065   struct objfile *objfile = dwarf2_per_objfile->objfile;
22066   struct type *this_type;
22067
22068   gdb_assert (attr->name == DW_AT_type
22069               || attr->name == DW_AT_GNAT_descriptive_type
22070               || attr->name == DW_AT_containing_type);
22071
22072   /* First see if we have it cached.  */
22073
22074   if (attr->form == DW_FORM_GNU_ref_alt)
22075     {
22076       struct dwarf2_per_cu_data *per_cu;
22077       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22078
22079       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22080                                                  dwarf2_per_objfile);
22081       this_type = get_die_type_at_offset (sect_off, per_cu);
22082     }
22083   else if (attr_form_is_ref (attr))
22084     {
22085       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22086
22087       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22088     }
22089   else if (attr->form == DW_FORM_ref_sig8)
22090     {
22091       ULONGEST signature = DW_SIGNATURE (attr);
22092
22093       return get_signatured_type (die, signature, cu);
22094     }
22095   else
22096     {
22097       complaint (&symfile_complaints,
22098                  _("Dwarf Error: Bad type attribute %s in DIE"
22099                    " at 0x%x [in module %s]"),
22100                  dwarf_attr_name (attr->name), to_underlying (die->sect_off),
22101                  objfile_name (objfile));
22102       return build_error_marker_type (cu, die);
22103     }
22104
22105   /* If not cached we need to read it in.  */
22106
22107   if (this_type == NULL)
22108     {
22109       struct die_info *type_die = NULL;
22110       struct dwarf2_cu *type_cu = cu;
22111
22112       if (attr_form_is_ref (attr))
22113         type_die = follow_die_ref (die, attr, &type_cu);
22114       if (type_die == NULL)
22115         return build_error_marker_type (cu, die);
22116       /* If we find the type now, it's probably because the type came
22117          from an inter-CU reference and the type's CU got expanded before
22118          ours.  */
22119       this_type = read_type_die (type_die, type_cu);
22120     }
22121
22122   /* If we still don't have a type use an error marker.  */
22123
22124   if (this_type == NULL)
22125     return build_error_marker_type (cu, die);
22126
22127   return this_type;
22128 }
22129
22130 /* Return the type in DIE, CU.
22131    Returns NULL for invalid types.
22132
22133    This first does a lookup in die_type_hash,
22134    and only reads the die in if necessary.
22135
22136    NOTE: This can be called when reading in partial or full symbols.  */
22137
22138 static struct type *
22139 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22140 {
22141   struct type *this_type;
22142
22143   this_type = get_die_type (die, cu);
22144   if (this_type)
22145     return this_type;
22146
22147   return read_type_die_1 (die, cu);
22148 }
22149
22150 /* Read the type in DIE, CU.
22151    Returns NULL for invalid types.  */
22152
22153 static struct type *
22154 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22155 {
22156   struct type *this_type = NULL;
22157
22158   switch (die->tag)
22159     {
22160     case DW_TAG_class_type:
22161     case DW_TAG_interface_type:
22162     case DW_TAG_structure_type:
22163     case DW_TAG_union_type:
22164       this_type = read_structure_type (die, cu);
22165       break;
22166     case DW_TAG_enumeration_type:
22167       this_type = read_enumeration_type (die, cu);
22168       break;
22169     case DW_TAG_subprogram:
22170     case DW_TAG_subroutine_type:
22171     case DW_TAG_inlined_subroutine:
22172       this_type = read_subroutine_type (die, cu);
22173       break;
22174     case DW_TAG_array_type:
22175       this_type = read_array_type (die, cu);
22176       break;
22177     case DW_TAG_set_type:
22178       this_type = read_set_type (die, cu);
22179       break;
22180     case DW_TAG_pointer_type:
22181       this_type = read_tag_pointer_type (die, cu);
22182       break;
22183     case DW_TAG_ptr_to_member_type:
22184       this_type = read_tag_ptr_to_member_type (die, cu);
22185       break;
22186     case DW_TAG_reference_type:
22187       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22188       break;
22189     case DW_TAG_rvalue_reference_type:
22190       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22191       break;
22192     case DW_TAG_const_type:
22193       this_type = read_tag_const_type (die, cu);
22194       break;
22195     case DW_TAG_volatile_type:
22196       this_type = read_tag_volatile_type (die, cu);
22197       break;
22198     case DW_TAG_restrict_type:
22199       this_type = read_tag_restrict_type (die, cu);
22200       break;
22201     case DW_TAG_string_type:
22202       this_type = read_tag_string_type (die, cu);
22203       break;
22204     case DW_TAG_typedef:
22205       this_type = read_typedef (die, cu);
22206       break;
22207     case DW_TAG_subrange_type:
22208       this_type = read_subrange_type (die, cu);
22209       break;
22210     case DW_TAG_base_type:
22211       this_type = read_base_type (die, cu);
22212       break;
22213     case DW_TAG_unspecified_type:
22214       this_type = read_unspecified_type (die, cu);
22215       break;
22216     case DW_TAG_namespace:
22217       this_type = read_namespace_type (die, cu);
22218       break;
22219     case DW_TAG_module:
22220       this_type = read_module_type (die, cu);
22221       break;
22222     case DW_TAG_atomic_type:
22223       this_type = read_tag_atomic_type (die, cu);
22224       break;
22225     default:
22226       complaint (&symfile_complaints,
22227                  _("unexpected tag in read_type_die: '%s'"),
22228                  dwarf_tag_name (die->tag));
22229       break;
22230     }
22231
22232   return this_type;
22233 }
22234
22235 /* See if we can figure out if the class lives in a namespace.  We do
22236    this by looking for a member function; its demangled name will
22237    contain namespace info, if there is any.
22238    Return the computed name or NULL.
22239    Space for the result is allocated on the objfile's obstack.
22240    This is the full-die version of guess_partial_die_structure_name.
22241    In this case we know DIE has no useful parent.  */
22242
22243 static char *
22244 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22245 {
22246   struct die_info *spec_die;
22247   struct dwarf2_cu *spec_cu;
22248   struct die_info *child;
22249   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22250
22251   spec_cu = cu;
22252   spec_die = die_specification (die, &spec_cu);
22253   if (spec_die != NULL)
22254     {
22255       die = spec_die;
22256       cu = spec_cu;
22257     }
22258
22259   for (child = die->child;
22260        child != NULL;
22261        child = child->sibling)
22262     {
22263       if (child->tag == DW_TAG_subprogram)
22264         {
22265           const char *linkage_name = dw2_linkage_name (child, cu);
22266
22267           if (linkage_name != NULL)
22268             {
22269               char *actual_name
22270                 = language_class_name_from_physname (cu->language_defn,
22271                                                      linkage_name);
22272               char *name = NULL;
22273
22274               if (actual_name != NULL)
22275                 {
22276                   const char *die_name = dwarf2_name (die, cu);
22277
22278                   if (die_name != NULL
22279                       && strcmp (die_name, actual_name) != 0)
22280                     {
22281                       /* Strip off the class name from the full name.
22282                          We want the prefix.  */
22283                       int die_name_len = strlen (die_name);
22284                       int actual_name_len = strlen (actual_name);
22285
22286                       /* Test for '::' as a sanity check.  */
22287                       if (actual_name_len > die_name_len + 2
22288                           && actual_name[actual_name_len
22289                                          - die_name_len - 1] == ':')
22290                         name = (char *) obstack_copy0 (
22291                           &objfile->per_bfd->storage_obstack,
22292                           actual_name, actual_name_len - die_name_len - 2);
22293                     }
22294                 }
22295               xfree (actual_name);
22296               return name;
22297             }
22298         }
22299     }
22300
22301   return NULL;
22302 }
22303
22304 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22305    prefix part in such case.  See
22306    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22307
22308 static const char *
22309 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22310 {
22311   struct attribute *attr;
22312   const char *base;
22313
22314   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22315       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22316     return NULL;
22317
22318   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22319     return NULL;
22320
22321   attr = dw2_linkage_name_attr (die, cu);
22322   if (attr == NULL || DW_STRING (attr) == NULL)
22323     return NULL;
22324
22325   /* dwarf2_name had to be already called.  */
22326   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22327
22328   /* Strip the base name, keep any leading namespaces/classes.  */
22329   base = strrchr (DW_STRING (attr), ':');
22330   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22331     return "";
22332
22333   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22334   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22335                                  DW_STRING (attr),
22336                                  &base[-1] - DW_STRING (attr));
22337 }
22338
22339 /* Return the name of the namespace/class that DIE is defined within,
22340    or "" if we can't tell.  The caller should not xfree the result.
22341
22342    For example, if we're within the method foo() in the following
22343    code:
22344
22345    namespace N {
22346      class C {
22347        void foo () {
22348        }
22349      };
22350    }
22351
22352    then determine_prefix on foo's die will return "N::C".  */
22353
22354 static const char *
22355 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22356 {
22357   struct dwarf2_per_objfile *dwarf2_per_objfile
22358     = cu->per_cu->dwarf2_per_objfile;
22359   struct die_info *parent, *spec_die;
22360   struct dwarf2_cu *spec_cu;
22361   struct type *parent_type;
22362   const char *retval;
22363
22364   if (cu->language != language_cplus
22365       && cu->language != language_fortran && cu->language != language_d
22366       && cu->language != language_rust)
22367     return "";
22368
22369   retval = anonymous_struct_prefix (die, cu);
22370   if (retval)
22371     return retval;
22372
22373   /* We have to be careful in the presence of DW_AT_specification.
22374      For example, with GCC 3.4, given the code
22375
22376      namespace N {
22377        void foo() {
22378          // Definition of N::foo.
22379        }
22380      }
22381
22382      then we'll have a tree of DIEs like this:
22383
22384      1: DW_TAG_compile_unit
22385        2: DW_TAG_namespace        // N
22386          3: DW_TAG_subprogram     // declaration of N::foo
22387        4: DW_TAG_subprogram       // definition of N::foo
22388             DW_AT_specification   // refers to die #3
22389
22390      Thus, when processing die #4, we have to pretend that we're in
22391      the context of its DW_AT_specification, namely the contex of die
22392      #3.  */
22393   spec_cu = cu;
22394   spec_die = die_specification (die, &spec_cu);
22395   if (spec_die == NULL)
22396     parent = die->parent;
22397   else
22398     {
22399       parent = spec_die->parent;
22400       cu = spec_cu;
22401     }
22402
22403   if (parent == NULL)
22404     return "";
22405   else if (parent->building_fullname)
22406     {
22407       const char *name;
22408       const char *parent_name;
22409
22410       /* It has been seen on RealView 2.2 built binaries,
22411          DW_TAG_template_type_param types actually _defined_ as
22412          children of the parent class:
22413
22414          enum E {};
22415          template class <class Enum> Class{};
22416          Class<enum E> class_e;
22417
22418          1: DW_TAG_class_type (Class)
22419            2: DW_TAG_enumeration_type (E)
22420              3: DW_TAG_enumerator (enum1:0)
22421              3: DW_TAG_enumerator (enum2:1)
22422              ...
22423            2: DW_TAG_template_type_param
22424               DW_AT_type  DW_FORM_ref_udata (E)
22425
22426          Besides being broken debug info, it can put GDB into an
22427          infinite loop.  Consider:
22428
22429          When we're building the full name for Class<E>, we'll start
22430          at Class, and go look over its template type parameters,
22431          finding E.  We'll then try to build the full name of E, and
22432          reach here.  We're now trying to build the full name of E,
22433          and look over the parent DIE for containing scope.  In the
22434          broken case, if we followed the parent DIE of E, we'd again
22435          find Class, and once again go look at its template type
22436          arguments, etc., etc.  Simply don't consider such parent die
22437          as source-level parent of this die (it can't be, the language
22438          doesn't allow it), and break the loop here.  */
22439       name = dwarf2_name (die, cu);
22440       parent_name = dwarf2_name (parent, cu);
22441       complaint (&symfile_complaints,
22442                  _("template param type '%s' defined within parent '%s'"),
22443                  name ? name : "<unknown>",
22444                  parent_name ? parent_name : "<unknown>");
22445       return "";
22446     }
22447   else
22448     switch (parent->tag)
22449       {
22450       case DW_TAG_namespace:
22451         parent_type = read_type_die (parent, cu);
22452         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22453            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22454            Work around this problem here.  */
22455         if (cu->language == language_cplus
22456             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
22457           return "";
22458         /* We give a name to even anonymous namespaces.  */
22459         return TYPE_TAG_NAME (parent_type);
22460       case DW_TAG_class_type:
22461       case DW_TAG_interface_type:
22462       case DW_TAG_structure_type:
22463       case DW_TAG_union_type:
22464       case DW_TAG_module:
22465         parent_type = read_type_die (parent, cu);
22466         if (TYPE_TAG_NAME (parent_type) != NULL)
22467           return TYPE_TAG_NAME (parent_type);
22468         else
22469           /* An anonymous structure is only allowed non-static data
22470              members; no typedefs, no member functions, et cetera.
22471              So it does not need a prefix.  */
22472           return "";
22473       case DW_TAG_compile_unit:
22474       case DW_TAG_partial_unit:
22475         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22476         if (cu->language == language_cplus
22477             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22478             && die->child != NULL
22479             && (die->tag == DW_TAG_class_type
22480                 || die->tag == DW_TAG_structure_type
22481                 || die->tag == DW_TAG_union_type))
22482           {
22483             char *name = guess_full_die_structure_name (die, cu);
22484             if (name != NULL)
22485               return name;
22486           }
22487         return "";
22488       case DW_TAG_enumeration_type:
22489         parent_type = read_type_die (parent, cu);
22490         if (TYPE_DECLARED_CLASS (parent_type))
22491           {
22492             if (TYPE_TAG_NAME (parent_type) != NULL)
22493               return TYPE_TAG_NAME (parent_type);
22494             return "";
22495           }
22496         /* Fall through.  */
22497       default:
22498         return determine_prefix (parent, cu);
22499       }
22500 }
22501
22502 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22503    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22504    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22505    an obconcat, otherwise allocate storage for the result.  The CU argument is
22506    used to determine the language and hence, the appropriate separator.  */
22507
22508 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22509
22510 static char *
22511 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22512                  int physname, struct dwarf2_cu *cu)
22513 {
22514   const char *lead = "";
22515   const char *sep;
22516
22517   if (suffix == NULL || suffix[0] == '\0'
22518       || prefix == NULL || prefix[0] == '\0')
22519     sep = "";
22520   else if (cu->language == language_d)
22521     {
22522       /* For D, the 'main' function could be defined in any module, but it
22523          should never be prefixed.  */
22524       if (strcmp (suffix, "D main") == 0)
22525         {
22526           prefix = "";
22527           sep = "";
22528         }
22529       else
22530         sep = ".";
22531     }
22532   else if (cu->language == language_fortran && physname)
22533     {
22534       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22535          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22536
22537       lead = "__";
22538       sep = "_MOD_";
22539     }
22540   else
22541     sep = "::";
22542
22543   if (prefix == NULL)
22544     prefix = "";
22545   if (suffix == NULL)
22546     suffix = "";
22547
22548   if (obs == NULL)
22549     {
22550       char *retval
22551         = ((char *)
22552            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22553
22554       strcpy (retval, lead);
22555       strcat (retval, prefix);
22556       strcat (retval, sep);
22557       strcat (retval, suffix);
22558       return retval;
22559     }
22560   else
22561     {
22562       /* We have an obstack.  */
22563       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22564     }
22565 }
22566
22567 /* Return sibling of die, NULL if no sibling.  */
22568
22569 static struct die_info *
22570 sibling_die (struct die_info *die)
22571 {
22572   return die->sibling;
22573 }
22574
22575 /* Get name of a die, return NULL if not found.  */
22576
22577 static const char *
22578 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22579                           struct obstack *obstack)
22580 {
22581   if (name && cu->language == language_cplus)
22582     {
22583       std::string canon_name = cp_canonicalize_string (name);
22584
22585       if (!canon_name.empty ())
22586         {
22587           if (canon_name != name)
22588             name = (const char *) obstack_copy0 (obstack,
22589                                                  canon_name.c_str (),
22590                                                  canon_name.length ());
22591         }
22592     }
22593
22594   return name;
22595 }
22596
22597 /* Get name of a die, return NULL if not found.
22598    Anonymous namespaces are converted to their magic string.  */
22599
22600 static const char *
22601 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22602 {
22603   struct attribute *attr;
22604   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22605
22606   attr = dwarf2_attr (die, DW_AT_name, cu);
22607   if ((!attr || !DW_STRING (attr))
22608       && die->tag != DW_TAG_namespace
22609       && die->tag != DW_TAG_class_type
22610       && die->tag != DW_TAG_interface_type
22611       && die->tag != DW_TAG_structure_type
22612       && die->tag != DW_TAG_union_type)
22613     return NULL;
22614
22615   switch (die->tag)
22616     {
22617     case DW_TAG_compile_unit:
22618     case DW_TAG_partial_unit:
22619       /* Compilation units have a DW_AT_name that is a filename, not
22620          a source language identifier.  */
22621     case DW_TAG_enumeration_type:
22622     case DW_TAG_enumerator:
22623       /* These tags always have simple identifiers already; no need
22624          to canonicalize them.  */
22625       return DW_STRING (attr);
22626
22627     case DW_TAG_namespace:
22628       if (attr != NULL && DW_STRING (attr) != NULL)
22629         return DW_STRING (attr);
22630       return CP_ANONYMOUS_NAMESPACE_STR;
22631
22632     case DW_TAG_class_type:
22633     case DW_TAG_interface_type:
22634     case DW_TAG_structure_type:
22635     case DW_TAG_union_type:
22636       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22637          structures or unions.  These were of the form "._%d" in GCC 4.1,
22638          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22639          and GCC 4.4.  We work around this problem by ignoring these.  */
22640       if (attr && DW_STRING (attr)
22641           && (startswith (DW_STRING (attr), "._")
22642               || startswith (DW_STRING (attr), "<anonymous")))
22643         return NULL;
22644
22645       /* GCC might emit a nameless typedef that has a linkage name.  See
22646          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22647       if (!attr || DW_STRING (attr) == NULL)
22648         {
22649           char *demangled = NULL;
22650
22651           attr = dw2_linkage_name_attr (die, cu);
22652           if (attr == NULL || DW_STRING (attr) == NULL)
22653             return NULL;
22654
22655           /* Avoid demangling DW_STRING (attr) the second time on a second
22656              call for the same DIE.  */
22657           if (!DW_STRING_IS_CANONICAL (attr))
22658             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22659
22660           if (demangled)
22661             {
22662               const char *base;
22663
22664               /* FIXME: we already did this for the partial symbol... */
22665               DW_STRING (attr)
22666                 = ((const char *)
22667                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22668                                   demangled, strlen (demangled)));
22669               DW_STRING_IS_CANONICAL (attr) = 1;
22670               xfree (demangled);
22671
22672               /* Strip any leading namespaces/classes, keep only the base name.
22673                  DW_AT_name for named DIEs does not contain the prefixes.  */
22674               base = strrchr (DW_STRING (attr), ':');
22675               if (base && base > DW_STRING (attr) && base[-1] == ':')
22676                 return &base[1];
22677               else
22678                 return DW_STRING (attr);
22679             }
22680         }
22681       break;
22682
22683     default:
22684       break;
22685     }
22686
22687   if (!DW_STRING_IS_CANONICAL (attr))
22688     {
22689       DW_STRING (attr)
22690         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22691                                     &objfile->per_bfd->storage_obstack);
22692       DW_STRING_IS_CANONICAL (attr) = 1;
22693     }
22694   return DW_STRING (attr);
22695 }
22696
22697 /* Return the die that this die in an extension of, or NULL if there
22698    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22699    containing the return value on output.  */
22700
22701 static struct die_info *
22702 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22703 {
22704   struct attribute *attr;
22705
22706   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22707   if (attr == NULL)
22708     return NULL;
22709
22710   return follow_die_ref (die, attr, ext_cu);
22711 }
22712
22713 /* Convert a DIE tag into its string name.  */
22714
22715 static const char *
22716 dwarf_tag_name (unsigned tag)
22717 {
22718   const char *name = get_DW_TAG_name (tag);
22719
22720   if (name == NULL)
22721     return "DW_TAG_<unknown>";
22722
22723   return name;
22724 }
22725
22726 /* Convert a DWARF attribute code into its string name.  */
22727
22728 static const char *
22729 dwarf_attr_name (unsigned attr)
22730 {
22731   const char *name;
22732
22733 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22734   if (attr == DW_AT_MIPS_fde)
22735     return "DW_AT_MIPS_fde";
22736 #else
22737   if (attr == DW_AT_HP_block_index)
22738     return "DW_AT_HP_block_index";
22739 #endif
22740
22741   name = get_DW_AT_name (attr);
22742
22743   if (name == NULL)
22744     return "DW_AT_<unknown>";
22745
22746   return name;
22747 }
22748
22749 /* Convert a DWARF value form code into its string name.  */
22750
22751 static const char *
22752 dwarf_form_name (unsigned form)
22753 {
22754   const char *name = get_DW_FORM_name (form);
22755
22756   if (name == NULL)
22757     return "DW_FORM_<unknown>";
22758
22759   return name;
22760 }
22761
22762 static const char *
22763 dwarf_bool_name (unsigned mybool)
22764 {
22765   if (mybool)
22766     return "TRUE";
22767   else
22768     return "FALSE";
22769 }
22770
22771 /* Convert a DWARF type code into its string name.  */
22772
22773 static const char *
22774 dwarf_type_encoding_name (unsigned enc)
22775 {
22776   const char *name = get_DW_ATE_name (enc);
22777
22778   if (name == NULL)
22779     return "DW_ATE_<unknown>";
22780
22781   return name;
22782 }
22783
22784 static void
22785 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22786 {
22787   unsigned int i;
22788
22789   print_spaces (indent, f);
22790   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
22791                       dwarf_tag_name (die->tag), die->abbrev,
22792                       to_underlying (die->sect_off));
22793
22794   if (die->parent != NULL)
22795     {
22796       print_spaces (indent, f);
22797       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
22798                           to_underlying (die->parent->sect_off));
22799     }
22800
22801   print_spaces (indent, f);
22802   fprintf_unfiltered (f, "  has children: %s\n",
22803            dwarf_bool_name (die->child != NULL));
22804
22805   print_spaces (indent, f);
22806   fprintf_unfiltered (f, "  attributes:\n");
22807
22808   for (i = 0; i < die->num_attrs; ++i)
22809     {
22810       print_spaces (indent, f);
22811       fprintf_unfiltered (f, "    %s (%s) ",
22812                dwarf_attr_name (die->attrs[i].name),
22813                dwarf_form_name (die->attrs[i].form));
22814
22815       switch (die->attrs[i].form)
22816         {
22817         case DW_FORM_addr:
22818         case DW_FORM_GNU_addr_index:
22819           fprintf_unfiltered (f, "address: ");
22820           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22821           break;
22822         case DW_FORM_block2:
22823         case DW_FORM_block4:
22824         case DW_FORM_block:
22825         case DW_FORM_block1:
22826           fprintf_unfiltered (f, "block: size %s",
22827                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22828           break;
22829         case DW_FORM_exprloc:
22830           fprintf_unfiltered (f, "expression: size %s",
22831                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22832           break;
22833         case DW_FORM_data16:
22834           fprintf_unfiltered (f, "constant of 16 bytes");
22835           break;
22836         case DW_FORM_ref_addr:
22837           fprintf_unfiltered (f, "ref address: ");
22838           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22839           break;
22840         case DW_FORM_GNU_ref_alt:
22841           fprintf_unfiltered (f, "alt ref address: ");
22842           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22843           break;
22844         case DW_FORM_ref1:
22845         case DW_FORM_ref2:
22846         case DW_FORM_ref4:
22847         case DW_FORM_ref8:
22848         case DW_FORM_ref_udata:
22849           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22850                               (long) (DW_UNSND (&die->attrs[i])));
22851           break;
22852         case DW_FORM_data1:
22853         case DW_FORM_data2:
22854         case DW_FORM_data4:
22855         case DW_FORM_data8:
22856         case DW_FORM_udata:
22857         case DW_FORM_sdata:
22858           fprintf_unfiltered (f, "constant: %s",
22859                               pulongest (DW_UNSND (&die->attrs[i])));
22860           break;
22861         case DW_FORM_sec_offset:
22862           fprintf_unfiltered (f, "section offset: %s",
22863                               pulongest (DW_UNSND (&die->attrs[i])));
22864           break;
22865         case DW_FORM_ref_sig8:
22866           fprintf_unfiltered (f, "signature: %s",
22867                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22868           break;
22869         case DW_FORM_string:
22870         case DW_FORM_strp:
22871         case DW_FORM_line_strp:
22872         case DW_FORM_GNU_str_index:
22873         case DW_FORM_GNU_strp_alt:
22874           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22875                    DW_STRING (&die->attrs[i])
22876                    ? DW_STRING (&die->attrs[i]) : "",
22877                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22878           break;
22879         case DW_FORM_flag:
22880           if (DW_UNSND (&die->attrs[i]))
22881             fprintf_unfiltered (f, "flag: TRUE");
22882           else
22883             fprintf_unfiltered (f, "flag: FALSE");
22884           break;
22885         case DW_FORM_flag_present:
22886           fprintf_unfiltered (f, "flag: TRUE");
22887           break;
22888         case DW_FORM_indirect:
22889           /* The reader will have reduced the indirect form to
22890              the "base form" so this form should not occur.  */
22891           fprintf_unfiltered (f, 
22892                               "unexpected attribute form: DW_FORM_indirect");
22893           break;
22894         case DW_FORM_implicit_const:
22895           fprintf_unfiltered (f, "constant: %s",
22896                               plongest (DW_SND (&die->attrs[i])));
22897           break;
22898         default:
22899           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22900                    die->attrs[i].form);
22901           break;
22902         }
22903       fprintf_unfiltered (f, "\n");
22904     }
22905 }
22906
22907 static void
22908 dump_die_for_error (struct die_info *die)
22909 {
22910   dump_die_shallow (gdb_stderr, 0, die);
22911 }
22912
22913 static void
22914 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22915 {
22916   int indent = level * 4;
22917
22918   gdb_assert (die != NULL);
22919
22920   if (level >= max_level)
22921     return;
22922
22923   dump_die_shallow (f, indent, die);
22924
22925   if (die->child != NULL)
22926     {
22927       print_spaces (indent, f);
22928       fprintf_unfiltered (f, "  Children:");
22929       if (level + 1 < max_level)
22930         {
22931           fprintf_unfiltered (f, "\n");
22932           dump_die_1 (f, level + 1, max_level, die->child);
22933         }
22934       else
22935         {
22936           fprintf_unfiltered (f,
22937                               " [not printed, max nesting level reached]\n");
22938         }
22939     }
22940
22941   if (die->sibling != NULL && level > 0)
22942     {
22943       dump_die_1 (f, level, max_level, die->sibling);
22944     }
22945 }
22946
22947 /* This is called from the pdie macro in gdbinit.in.
22948    It's not static so gcc will keep a copy callable from gdb.  */
22949
22950 void
22951 dump_die (struct die_info *die, int max_level)
22952 {
22953   dump_die_1 (gdb_stdlog, 0, max_level, die);
22954 }
22955
22956 static void
22957 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22958 {
22959   void **slot;
22960
22961   slot = htab_find_slot_with_hash (cu->die_hash, die,
22962                                    to_underlying (die->sect_off),
22963                                    INSERT);
22964
22965   *slot = die;
22966 }
22967
22968 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22969    required kind.  */
22970
22971 static sect_offset
22972 dwarf2_get_ref_die_offset (const struct attribute *attr)
22973 {
22974   if (attr_form_is_ref (attr))
22975     return (sect_offset) DW_UNSND (attr);
22976
22977   complaint (&symfile_complaints,
22978              _("unsupported die ref attribute form: '%s'"),
22979              dwarf_form_name (attr->form));
22980   return {};
22981 }
22982
22983 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22984  * the value held by the attribute is not constant.  */
22985
22986 static LONGEST
22987 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22988 {
22989   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22990     return DW_SND (attr);
22991   else if (attr->form == DW_FORM_udata
22992            || attr->form == DW_FORM_data1
22993            || attr->form == DW_FORM_data2
22994            || attr->form == DW_FORM_data4
22995            || attr->form == DW_FORM_data8)
22996     return DW_UNSND (attr);
22997   else
22998     {
22999       /* For DW_FORM_data16 see attr_form_is_constant.  */
23000       complaint (&symfile_complaints,
23001                  _("Attribute value is not a constant (%s)"),
23002                  dwarf_form_name (attr->form));
23003       return default_value;
23004     }
23005 }
23006
23007 /* Follow reference or signature attribute ATTR of SRC_DIE.
23008    On entry *REF_CU is the CU of SRC_DIE.
23009    On exit *REF_CU is the CU of the result.  */
23010
23011 static struct die_info *
23012 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23013                        struct dwarf2_cu **ref_cu)
23014 {
23015   struct die_info *die;
23016
23017   if (attr_form_is_ref (attr))
23018     die = follow_die_ref (src_die, attr, ref_cu);
23019   else if (attr->form == DW_FORM_ref_sig8)
23020     die = follow_die_sig (src_die, attr, ref_cu);
23021   else
23022     {
23023       dump_die_for_error (src_die);
23024       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23025              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23026     }
23027
23028   return die;
23029 }
23030
23031 /* Follow reference OFFSET.
23032    On entry *REF_CU is the CU of the source die referencing OFFSET.
23033    On exit *REF_CU is the CU of the result.
23034    Returns NULL if OFFSET is invalid.  */
23035
23036 static struct die_info *
23037 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23038                    struct dwarf2_cu **ref_cu)
23039 {
23040   struct die_info temp_die;
23041   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23042   struct dwarf2_per_objfile *dwarf2_per_objfile
23043     = cu->per_cu->dwarf2_per_objfile;
23044   struct objfile *objfile = dwarf2_per_objfile->objfile;
23045
23046   gdb_assert (cu->per_cu != NULL);
23047
23048   target_cu = cu;
23049
23050   if (cu->per_cu->is_debug_types)
23051     {
23052       /* .debug_types CUs cannot reference anything outside their CU.
23053          If they need to, they have to reference a signatured type via
23054          DW_FORM_ref_sig8.  */
23055       if (!offset_in_cu_p (&cu->header, sect_off))
23056         return NULL;
23057     }
23058   else if (offset_in_dwz != cu->per_cu->is_dwz
23059            || !offset_in_cu_p (&cu->header, sect_off))
23060     {
23061       struct dwarf2_per_cu_data *per_cu;
23062
23063       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23064                                                  dwarf2_per_objfile);
23065
23066       /* If necessary, add it to the queue and load its DIEs.  */
23067       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23068         load_full_comp_unit (per_cu, cu->language);
23069
23070       target_cu = per_cu->cu;
23071     }
23072   else if (cu->dies == NULL)
23073     {
23074       /* We're loading full DIEs during partial symbol reading.  */
23075       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23076       load_full_comp_unit (cu->per_cu, language_minimal);
23077     }
23078
23079   *ref_cu = target_cu;
23080   temp_die.sect_off = sect_off;
23081   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23082                                                   &temp_die,
23083                                                   to_underlying (sect_off));
23084 }
23085
23086 /* Follow reference attribute ATTR of SRC_DIE.
23087    On entry *REF_CU is the CU of SRC_DIE.
23088    On exit *REF_CU is the CU of the result.  */
23089
23090 static struct die_info *
23091 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23092                 struct dwarf2_cu **ref_cu)
23093 {
23094   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23095   struct dwarf2_cu *cu = *ref_cu;
23096   struct die_info *die;
23097
23098   die = follow_die_offset (sect_off,
23099                            (attr->form == DW_FORM_GNU_ref_alt
23100                             || cu->per_cu->is_dwz),
23101                            ref_cu);
23102   if (!die)
23103     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
23104            "at 0x%x [in module %s]"),
23105            to_underlying (sect_off), to_underlying (src_die->sect_off),
23106            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23107
23108   return die;
23109 }
23110
23111 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23112    Returned value is intended for DW_OP_call*.  Returned
23113    dwarf2_locexpr_baton->data has lifetime of
23114    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23115
23116 struct dwarf2_locexpr_baton
23117 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23118                                struct dwarf2_per_cu_data *per_cu,
23119                                CORE_ADDR (*get_frame_pc) (void *baton),
23120                                void *baton)
23121 {
23122   struct dwarf2_cu *cu;
23123   struct die_info *die;
23124   struct attribute *attr;
23125   struct dwarf2_locexpr_baton retval;
23126   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23127   struct dwarf2_per_objfile *dwarf2_per_objfile
23128     = get_dwarf2_per_objfile (objfile);
23129
23130   if (per_cu->cu == NULL)
23131     load_cu (per_cu);
23132   cu = per_cu->cu;
23133   if (cu == NULL)
23134     {
23135       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23136          Instead just throw an error, not much else we can do.  */
23137       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
23138              to_underlying (sect_off), objfile_name (objfile));
23139     }
23140
23141   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23142   if (!die)
23143     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
23144            to_underlying (sect_off), objfile_name (objfile));
23145
23146   attr = dwarf2_attr (die, DW_AT_location, cu);
23147   if (!attr)
23148     {
23149       /* DWARF: "If there is no such attribute, then there is no effect.".
23150          DATA is ignored if SIZE is 0.  */
23151
23152       retval.data = NULL;
23153       retval.size = 0;
23154     }
23155   else if (attr_form_is_section_offset (attr))
23156     {
23157       struct dwarf2_loclist_baton loclist_baton;
23158       CORE_ADDR pc = (*get_frame_pc) (baton);
23159       size_t size;
23160
23161       fill_in_loclist_baton (cu, &loclist_baton, attr);
23162
23163       retval.data = dwarf2_find_location_expression (&loclist_baton,
23164                                                      &size, pc);
23165       retval.size = size;
23166     }
23167   else
23168     {
23169       if (!attr_form_is_block (attr))
23170         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
23171                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23172                to_underlying (sect_off), objfile_name (objfile));
23173
23174       retval.data = DW_BLOCK (attr)->data;
23175       retval.size = DW_BLOCK (attr)->size;
23176     }
23177   retval.per_cu = cu->per_cu;
23178
23179   age_cached_comp_units (dwarf2_per_objfile);
23180
23181   return retval;
23182 }
23183
23184 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23185    offset.  */
23186
23187 struct dwarf2_locexpr_baton
23188 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23189                              struct dwarf2_per_cu_data *per_cu,
23190                              CORE_ADDR (*get_frame_pc) (void *baton),
23191                              void *baton)
23192 {
23193   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23194
23195   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23196 }
23197
23198 /* Write a constant of a given type as target-ordered bytes into
23199    OBSTACK.  */
23200
23201 static const gdb_byte *
23202 write_constant_as_bytes (struct obstack *obstack,
23203                          enum bfd_endian byte_order,
23204                          struct type *type,
23205                          ULONGEST value,
23206                          LONGEST *len)
23207 {
23208   gdb_byte *result;
23209
23210   *len = TYPE_LENGTH (type);
23211   result = (gdb_byte *) obstack_alloc (obstack, *len);
23212   store_unsigned_integer (result, *len, byte_order, value);
23213
23214   return result;
23215 }
23216
23217 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23218    pointer to the constant bytes and set LEN to the length of the
23219    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23220    does not have a DW_AT_const_value, return NULL.  */
23221
23222 const gdb_byte *
23223 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23224                              struct dwarf2_per_cu_data *per_cu,
23225                              struct obstack *obstack,
23226                              LONGEST *len)
23227 {
23228   struct dwarf2_cu *cu;
23229   struct die_info *die;
23230   struct attribute *attr;
23231   const gdb_byte *result = NULL;
23232   struct type *type;
23233   LONGEST value;
23234   enum bfd_endian byte_order;
23235   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23236
23237   if (per_cu->cu == NULL)
23238     load_cu (per_cu);
23239   cu = per_cu->cu;
23240   if (cu == NULL)
23241     {
23242       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23243          Instead just throw an error, not much else we can do.  */
23244       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
23245              to_underlying (sect_off), objfile_name (objfile));
23246     }
23247
23248   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23249   if (!die)
23250     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
23251            to_underlying (sect_off), objfile_name (objfile));
23252
23253
23254   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23255   if (attr == NULL)
23256     return NULL;
23257
23258   byte_order = (bfd_big_endian (objfile->obfd)
23259                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23260
23261   switch (attr->form)
23262     {
23263     case DW_FORM_addr:
23264     case DW_FORM_GNU_addr_index:
23265       {
23266         gdb_byte *tem;
23267
23268         *len = cu->header.addr_size;
23269         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23270         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23271         result = tem;
23272       }
23273       break;
23274     case DW_FORM_string:
23275     case DW_FORM_strp:
23276     case DW_FORM_GNU_str_index:
23277     case DW_FORM_GNU_strp_alt:
23278       /* DW_STRING is already allocated on the objfile obstack, point
23279          directly to it.  */
23280       result = (const gdb_byte *) DW_STRING (attr);
23281       *len = strlen (DW_STRING (attr));
23282       break;
23283     case DW_FORM_block1:
23284     case DW_FORM_block2:
23285     case DW_FORM_block4:
23286     case DW_FORM_block:
23287     case DW_FORM_exprloc:
23288     case DW_FORM_data16:
23289       result = DW_BLOCK (attr)->data;
23290       *len = DW_BLOCK (attr)->size;
23291       break;
23292
23293       /* The DW_AT_const_value attributes are supposed to carry the
23294          symbol's value "represented as it would be on the target
23295          architecture."  By the time we get here, it's already been
23296          converted to host endianness, so we just need to sign- or
23297          zero-extend it as appropriate.  */
23298     case DW_FORM_data1:
23299       type = die_type (die, cu);
23300       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23301       if (result == NULL)
23302         result = write_constant_as_bytes (obstack, byte_order,
23303                                           type, value, len);
23304       break;
23305     case DW_FORM_data2:
23306       type = die_type (die, cu);
23307       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23308       if (result == NULL)
23309         result = write_constant_as_bytes (obstack, byte_order,
23310                                           type, value, len);
23311       break;
23312     case DW_FORM_data4:
23313       type = die_type (die, cu);
23314       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23315       if (result == NULL)
23316         result = write_constant_as_bytes (obstack, byte_order,
23317                                           type, value, len);
23318       break;
23319     case DW_FORM_data8:
23320       type = die_type (die, cu);
23321       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23322       if (result == NULL)
23323         result = write_constant_as_bytes (obstack, byte_order,
23324                                           type, value, len);
23325       break;
23326
23327     case DW_FORM_sdata:
23328     case DW_FORM_implicit_const:
23329       type = die_type (die, cu);
23330       result = write_constant_as_bytes (obstack, byte_order,
23331                                         type, DW_SND (attr), len);
23332       break;
23333
23334     case DW_FORM_udata:
23335       type = die_type (die, cu);
23336       result = write_constant_as_bytes (obstack, byte_order,
23337                                         type, DW_UNSND (attr), len);
23338       break;
23339
23340     default:
23341       complaint (&symfile_complaints,
23342                  _("unsupported const value attribute form: '%s'"),
23343                  dwarf_form_name (attr->form));
23344       break;
23345     }
23346
23347   return result;
23348 }
23349
23350 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23351    valid type for this die is found.  */
23352
23353 struct type *
23354 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23355                                 struct dwarf2_per_cu_data *per_cu)
23356 {
23357   struct dwarf2_cu *cu;
23358   struct die_info *die;
23359
23360   if (per_cu->cu == NULL)
23361     load_cu (per_cu);
23362   cu = per_cu->cu;
23363   if (!cu)
23364     return NULL;
23365
23366   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23367   if (!die)
23368     return NULL;
23369
23370   return die_type (die, cu);
23371 }
23372
23373 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23374    PER_CU.  */
23375
23376 struct type *
23377 dwarf2_get_die_type (cu_offset die_offset,
23378                      struct dwarf2_per_cu_data *per_cu)
23379 {
23380   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23381   return get_die_type_at_offset (die_offset_sect, per_cu);
23382 }
23383
23384 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23385    On entry *REF_CU is the CU of SRC_DIE.
23386    On exit *REF_CU is the CU of the result.
23387    Returns NULL if the referenced DIE isn't found.  */
23388
23389 static struct die_info *
23390 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23391                   struct dwarf2_cu **ref_cu)
23392 {
23393   struct die_info temp_die;
23394   struct dwarf2_cu *sig_cu;
23395   struct die_info *die;
23396
23397   /* While it might be nice to assert sig_type->type == NULL here,
23398      we can get here for DW_AT_imported_declaration where we need
23399      the DIE not the type.  */
23400
23401   /* If necessary, add it to the queue and load its DIEs.  */
23402
23403   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23404     read_signatured_type (sig_type);
23405
23406   sig_cu = sig_type->per_cu.cu;
23407   gdb_assert (sig_cu != NULL);
23408   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23409   temp_die.sect_off = sig_type->type_offset_in_section;
23410   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23411                                                  to_underlying (temp_die.sect_off));
23412   if (die)
23413     {
23414       struct dwarf2_per_objfile *dwarf2_per_objfile
23415         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23416
23417       /* For .gdb_index version 7 keep track of included TUs.
23418          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23419       if (dwarf2_per_objfile->index_table != NULL
23420           && dwarf2_per_objfile->index_table->version <= 7)
23421         {
23422           VEC_safe_push (dwarf2_per_cu_ptr,
23423                          (*ref_cu)->per_cu->imported_symtabs,
23424                          sig_cu->per_cu);
23425         }
23426
23427       *ref_cu = sig_cu;
23428       return die;
23429     }
23430
23431   return NULL;
23432 }
23433
23434 /* Follow signatured type referenced by ATTR in SRC_DIE.
23435    On entry *REF_CU is the CU of SRC_DIE.
23436    On exit *REF_CU is the CU of the result.
23437    The result is the DIE of the type.
23438    If the referenced type cannot be found an error is thrown.  */
23439
23440 static struct die_info *
23441 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23442                 struct dwarf2_cu **ref_cu)
23443 {
23444   ULONGEST signature = DW_SIGNATURE (attr);
23445   struct signatured_type *sig_type;
23446   struct die_info *die;
23447
23448   gdb_assert (attr->form == DW_FORM_ref_sig8);
23449
23450   sig_type = lookup_signatured_type (*ref_cu, signature);
23451   /* sig_type will be NULL if the signatured type is missing from
23452      the debug info.  */
23453   if (sig_type == NULL)
23454     {
23455       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23456                " from DIE at 0x%x [in module %s]"),
23457              hex_string (signature), to_underlying (src_die->sect_off),
23458              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23459     }
23460
23461   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23462   if (die == NULL)
23463     {
23464       dump_die_for_error (src_die);
23465       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23466                " from DIE at 0x%x [in module %s]"),
23467              hex_string (signature), to_underlying (src_die->sect_off),
23468              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23469     }
23470
23471   return die;
23472 }
23473
23474 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23475    reading in and processing the type unit if necessary.  */
23476
23477 static struct type *
23478 get_signatured_type (struct die_info *die, ULONGEST signature,
23479                      struct dwarf2_cu *cu)
23480 {
23481   struct dwarf2_per_objfile *dwarf2_per_objfile
23482     = cu->per_cu->dwarf2_per_objfile;
23483   struct signatured_type *sig_type;
23484   struct dwarf2_cu *type_cu;
23485   struct die_info *type_die;
23486   struct type *type;
23487
23488   sig_type = lookup_signatured_type (cu, signature);
23489   /* sig_type will be NULL if the signatured type is missing from
23490      the debug info.  */
23491   if (sig_type == NULL)
23492     {
23493       complaint (&symfile_complaints,
23494                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
23495                    " from DIE at 0x%x [in module %s]"),
23496                  hex_string (signature), to_underlying (die->sect_off),
23497                  objfile_name (dwarf2_per_objfile->objfile));
23498       return build_error_marker_type (cu, die);
23499     }
23500
23501   /* If we already know the type we're done.  */
23502   if (sig_type->type != NULL)
23503     return sig_type->type;
23504
23505   type_cu = cu;
23506   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23507   if (type_die != NULL)
23508     {
23509       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23510          is created.  This is important, for example, because for c++ classes
23511          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23512       type = read_type_die (type_die, type_cu);
23513       if (type == NULL)
23514         {
23515           complaint (&symfile_complaints,
23516                      _("Dwarf Error: Cannot build signatured type %s"
23517                        " referenced from DIE at 0x%x [in module %s]"),
23518                      hex_string (signature), to_underlying (die->sect_off),
23519                      objfile_name (dwarf2_per_objfile->objfile));
23520           type = build_error_marker_type (cu, die);
23521         }
23522     }
23523   else
23524     {
23525       complaint (&symfile_complaints,
23526                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
23527                    " from DIE at 0x%x [in module %s]"),
23528                  hex_string (signature), to_underlying (die->sect_off),
23529                  objfile_name (dwarf2_per_objfile->objfile));
23530       type = build_error_marker_type (cu, die);
23531     }
23532   sig_type->type = type;
23533
23534   return type;
23535 }
23536
23537 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23538    reading in and processing the type unit if necessary.  */
23539
23540 static struct type *
23541 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23542                           struct dwarf2_cu *cu) /* ARI: editCase function */
23543 {
23544   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23545   if (attr_form_is_ref (attr))
23546     {
23547       struct dwarf2_cu *type_cu = cu;
23548       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23549
23550       return read_type_die (type_die, type_cu);
23551     }
23552   else if (attr->form == DW_FORM_ref_sig8)
23553     {
23554       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23555     }
23556   else
23557     {
23558       struct dwarf2_per_objfile *dwarf2_per_objfile
23559         = cu->per_cu->dwarf2_per_objfile;
23560
23561       complaint (&symfile_complaints,
23562                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23563                    " at 0x%x [in module %s]"),
23564                  dwarf_form_name (attr->form), to_underlying (die->sect_off),
23565                  objfile_name (dwarf2_per_objfile->objfile));
23566       return build_error_marker_type (cu, die);
23567     }
23568 }
23569
23570 /* Load the DIEs associated with type unit PER_CU into memory.  */
23571
23572 static void
23573 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23574 {
23575   struct signatured_type *sig_type;
23576
23577   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23578   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23579
23580   /* We have the per_cu, but we need the signatured_type.
23581      Fortunately this is an easy translation.  */
23582   gdb_assert (per_cu->is_debug_types);
23583   sig_type = (struct signatured_type *) per_cu;
23584
23585   gdb_assert (per_cu->cu == NULL);
23586
23587   read_signatured_type (sig_type);
23588
23589   gdb_assert (per_cu->cu != NULL);
23590 }
23591
23592 /* die_reader_func for read_signatured_type.
23593    This is identical to load_full_comp_unit_reader,
23594    but is kept separate for now.  */
23595
23596 static void
23597 read_signatured_type_reader (const struct die_reader_specs *reader,
23598                              const gdb_byte *info_ptr,
23599                              struct die_info *comp_unit_die,
23600                              int has_children,
23601                              void *data)
23602 {
23603   struct dwarf2_cu *cu = reader->cu;
23604
23605   gdb_assert (cu->die_hash == NULL);
23606   cu->die_hash =
23607     htab_create_alloc_ex (cu->header.length / 12,
23608                           die_hash,
23609                           die_eq,
23610                           NULL,
23611                           &cu->comp_unit_obstack,
23612                           hashtab_obstack_allocate,
23613                           dummy_obstack_deallocate);
23614
23615   if (has_children)
23616     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23617                                                   &info_ptr, comp_unit_die);
23618   cu->dies = comp_unit_die;
23619   /* comp_unit_die is not stored in die_hash, no need.  */
23620
23621   /* We try not to read any attributes in this function, because not
23622      all CUs needed for references have been loaded yet, and symbol
23623      table processing isn't initialized.  But we have to set the CU language,
23624      or we won't be able to build types correctly.
23625      Similarly, if we do not read the producer, we can not apply
23626      producer-specific interpretation.  */
23627   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23628 }
23629
23630 /* Read in a signatured type and build its CU and DIEs.
23631    If the type is a stub for the real type in a DWO file,
23632    read in the real type from the DWO file as well.  */
23633
23634 static void
23635 read_signatured_type (struct signatured_type *sig_type)
23636 {
23637   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23638
23639   gdb_assert (per_cu->is_debug_types);
23640   gdb_assert (per_cu->cu == NULL);
23641
23642   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
23643                            read_signatured_type_reader, NULL);
23644   sig_type->per_cu.tu_read = 1;
23645 }
23646
23647 /* Decode simple location descriptions.
23648    Given a pointer to a dwarf block that defines a location, compute
23649    the location and return the value.
23650
23651    NOTE drow/2003-11-18: This function is called in two situations
23652    now: for the address of static or global variables (partial symbols
23653    only) and for offsets into structures which are expected to be
23654    (more or less) constant.  The partial symbol case should go away,
23655    and only the constant case should remain.  That will let this
23656    function complain more accurately.  A few special modes are allowed
23657    without complaint for global variables (for instance, global
23658    register values and thread-local values).
23659
23660    A location description containing no operations indicates that the
23661    object is optimized out.  The return value is 0 for that case.
23662    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23663    callers will only want a very basic result and this can become a
23664    complaint.
23665
23666    Note that stack[0] is unused except as a default error return.  */
23667
23668 static CORE_ADDR
23669 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23670 {
23671   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23672   size_t i;
23673   size_t size = blk->size;
23674   const gdb_byte *data = blk->data;
23675   CORE_ADDR stack[64];
23676   int stacki;
23677   unsigned int bytes_read, unsnd;
23678   gdb_byte op;
23679
23680   i = 0;
23681   stacki = 0;
23682   stack[stacki] = 0;
23683   stack[++stacki] = 0;
23684
23685   while (i < size)
23686     {
23687       op = data[i++];
23688       switch (op)
23689         {
23690         case DW_OP_lit0:
23691         case DW_OP_lit1:
23692         case DW_OP_lit2:
23693         case DW_OP_lit3:
23694         case DW_OP_lit4:
23695         case DW_OP_lit5:
23696         case DW_OP_lit6:
23697         case DW_OP_lit7:
23698         case DW_OP_lit8:
23699         case DW_OP_lit9:
23700         case DW_OP_lit10:
23701         case DW_OP_lit11:
23702         case DW_OP_lit12:
23703         case DW_OP_lit13:
23704         case DW_OP_lit14:
23705         case DW_OP_lit15:
23706         case DW_OP_lit16:
23707         case DW_OP_lit17:
23708         case DW_OP_lit18:
23709         case DW_OP_lit19:
23710         case DW_OP_lit20:
23711         case DW_OP_lit21:
23712         case DW_OP_lit22:
23713         case DW_OP_lit23:
23714         case DW_OP_lit24:
23715         case DW_OP_lit25:
23716         case DW_OP_lit26:
23717         case DW_OP_lit27:
23718         case DW_OP_lit28:
23719         case DW_OP_lit29:
23720         case DW_OP_lit30:
23721         case DW_OP_lit31:
23722           stack[++stacki] = op - DW_OP_lit0;
23723           break;
23724
23725         case DW_OP_reg0:
23726         case DW_OP_reg1:
23727         case DW_OP_reg2:
23728         case DW_OP_reg3:
23729         case DW_OP_reg4:
23730         case DW_OP_reg5:
23731         case DW_OP_reg6:
23732         case DW_OP_reg7:
23733         case DW_OP_reg8:
23734         case DW_OP_reg9:
23735         case DW_OP_reg10:
23736         case DW_OP_reg11:
23737         case DW_OP_reg12:
23738         case DW_OP_reg13:
23739         case DW_OP_reg14:
23740         case DW_OP_reg15:
23741         case DW_OP_reg16:
23742         case DW_OP_reg17:
23743         case DW_OP_reg18:
23744         case DW_OP_reg19:
23745         case DW_OP_reg20:
23746         case DW_OP_reg21:
23747         case DW_OP_reg22:
23748         case DW_OP_reg23:
23749         case DW_OP_reg24:
23750         case DW_OP_reg25:
23751         case DW_OP_reg26:
23752         case DW_OP_reg27:
23753         case DW_OP_reg28:
23754         case DW_OP_reg29:
23755         case DW_OP_reg30:
23756         case DW_OP_reg31:
23757           stack[++stacki] = op - DW_OP_reg0;
23758           if (i < size)
23759             dwarf2_complex_location_expr_complaint ();
23760           break;
23761
23762         case DW_OP_regx:
23763           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23764           i += bytes_read;
23765           stack[++stacki] = unsnd;
23766           if (i < size)
23767             dwarf2_complex_location_expr_complaint ();
23768           break;
23769
23770         case DW_OP_addr:
23771           stack[++stacki] = read_address (objfile->obfd, &data[i],
23772                                           cu, &bytes_read);
23773           i += bytes_read;
23774           break;
23775
23776         case DW_OP_const1u:
23777           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23778           i += 1;
23779           break;
23780
23781         case DW_OP_const1s:
23782           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23783           i += 1;
23784           break;
23785
23786         case DW_OP_const2u:
23787           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23788           i += 2;
23789           break;
23790
23791         case DW_OP_const2s:
23792           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23793           i += 2;
23794           break;
23795
23796         case DW_OP_const4u:
23797           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23798           i += 4;
23799           break;
23800
23801         case DW_OP_const4s:
23802           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23803           i += 4;
23804           break;
23805
23806         case DW_OP_const8u:
23807           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23808           i += 8;
23809           break;
23810
23811         case DW_OP_constu:
23812           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23813                                                   &bytes_read);
23814           i += bytes_read;
23815           break;
23816
23817         case DW_OP_consts:
23818           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23819           i += bytes_read;
23820           break;
23821
23822         case DW_OP_dup:
23823           stack[stacki + 1] = stack[stacki];
23824           stacki++;
23825           break;
23826
23827         case DW_OP_plus:
23828           stack[stacki - 1] += stack[stacki];
23829           stacki--;
23830           break;
23831
23832         case DW_OP_plus_uconst:
23833           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23834                                                  &bytes_read);
23835           i += bytes_read;
23836           break;
23837
23838         case DW_OP_minus:
23839           stack[stacki - 1] -= stack[stacki];
23840           stacki--;
23841           break;
23842
23843         case DW_OP_deref:
23844           /* If we're not the last op, then we definitely can't encode
23845              this using GDB's address_class enum.  This is valid for partial
23846              global symbols, although the variable's address will be bogus
23847              in the psymtab.  */
23848           if (i < size)
23849             dwarf2_complex_location_expr_complaint ();
23850           break;
23851
23852         case DW_OP_GNU_push_tls_address:
23853         case DW_OP_form_tls_address:
23854           /* The top of the stack has the offset from the beginning
23855              of the thread control block at which the variable is located.  */
23856           /* Nothing should follow this operator, so the top of stack would
23857              be returned.  */
23858           /* This is valid for partial global symbols, but the variable's
23859              address will be bogus in the psymtab.  Make it always at least
23860              non-zero to not look as a variable garbage collected by linker
23861              which have DW_OP_addr 0.  */
23862           if (i < size)
23863             dwarf2_complex_location_expr_complaint ();
23864           stack[stacki]++;
23865           break;
23866
23867         case DW_OP_GNU_uninit:
23868           break;
23869
23870         case DW_OP_GNU_addr_index:
23871         case DW_OP_GNU_const_index:
23872           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23873                                                          &bytes_read);
23874           i += bytes_read;
23875           break;
23876
23877         default:
23878           {
23879             const char *name = get_DW_OP_name (op);
23880
23881             if (name)
23882               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
23883                          name);
23884             else
23885               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
23886                          op);
23887           }
23888
23889           return (stack[stacki]);
23890         }
23891
23892       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23893          outside of the allocated space.  Also enforce minimum>0.  */
23894       if (stacki >= ARRAY_SIZE (stack) - 1)
23895         {
23896           complaint (&symfile_complaints,
23897                      _("location description stack overflow"));
23898           return 0;
23899         }
23900
23901       if (stacki <= 0)
23902         {
23903           complaint (&symfile_complaints,
23904                      _("location description stack underflow"));
23905           return 0;
23906         }
23907     }
23908   return (stack[stacki]);
23909 }
23910
23911 /* memory allocation interface */
23912
23913 static struct dwarf_block *
23914 dwarf_alloc_block (struct dwarf2_cu *cu)
23915 {
23916   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23917 }
23918
23919 static struct die_info *
23920 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23921 {
23922   struct die_info *die;
23923   size_t size = sizeof (struct die_info);
23924
23925   if (num_attrs > 1)
23926     size += (num_attrs - 1) * sizeof (struct attribute);
23927
23928   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23929   memset (die, 0, sizeof (struct die_info));
23930   return (die);
23931 }
23932
23933 \f
23934 /* Macro support.  */
23935
23936 /* Return file name relative to the compilation directory of file number I in
23937    *LH's file name table.  The result is allocated using xmalloc; the caller is
23938    responsible for freeing it.  */
23939
23940 static char *
23941 file_file_name (int file, struct line_header *lh)
23942 {
23943   /* Is the file number a valid index into the line header's file name
23944      table?  Remember that file numbers start with one, not zero.  */
23945   if (1 <= file && file <= lh->file_names.size ())
23946     {
23947       const file_entry &fe = lh->file_names[file - 1];
23948
23949       if (!IS_ABSOLUTE_PATH (fe.name))
23950         {
23951           const char *dir = fe.include_dir (lh);
23952           if (dir != NULL)
23953             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23954         }
23955       return xstrdup (fe.name);
23956     }
23957   else
23958     {
23959       /* The compiler produced a bogus file number.  We can at least
23960          record the macro definitions made in the file, even if we
23961          won't be able to find the file by name.  */
23962       char fake_name[80];
23963
23964       xsnprintf (fake_name, sizeof (fake_name),
23965                  "<bad macro file number %d>", file);
23966
23967       complaint (&symfile_complaints,
23968                  _("bad file number in macro information (%d)"),
23969                  file);
23970
23971       return xstrdup (fake_name);
23972     }
23973 }
23974
23975 /* Return the full name of file number I in *LH's file name table.
23976    Use COMP_DIR as the name of the current directory of the
23977    compilation.  The result is allocated using xmalloc; the caller is
23978    responsible for freeing it.  */
23979 static char *
23980 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23981 {
23982   /* Is the file number a valid index into the line header's file name
23983      table?  Remember that file numbers start with one, not zero.  */
23984   if (1 <= file && file <= lh->file_names.size ())
23985     {
23986       char *relative = file_file_name (file, lh);
23987
23988       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23989         return relative;
23990       return reconcat (relative, comp_dir, SLASH_STRING,
23991                        relative, (char *) NULL);
23992     }
23993   else
23994     return file_file_name (file, lh);
23995 }
23996
23997
23998 static struct macro_source_file *
23999 macro_start_file (int file, int line,
24000                   struct macro_source_file *current_file,
24001                   struct line_header *lh)
24002 {
24003   /* File name relative to the compilation directory of this source file.  */
24004   char *file_name = file_file_name (file, lh);
24005
24006   if (! current_file)
24007     {
24008       /* Note: We don't create a macro table for this compilation unit
24009          at all until we actually get a filename.  */
24010       struct macro_table *macro_table = get_macro_table ();
24011
24012       /* If we have no current file, then this must be the start_file
24013          directive for the compilation unit's main source file.  */
24014       current_file = macro_set_main (macro_table, file_name);
24015       macro_define_special (macro_table);
24016     }
24017   else
24018     current_file = macro_include (current_file, line, file_name);
24019
24020   xfree (file_name);
24021
24022   return current_file;
24023 }
24024
24025 static const char *
24026 consume_improper_spaces (const char *p, const char *body)
24027 {
24028   if (*p == ' ')
24029     {
24030       complaint (&symfile_complaints,
24031                  _("macro definition contains spaces "
24032                    "in formal argument list:\n`%s'"),
24033                  body);
24034
24035       while (*p == ' ')
24036         p++;
24037     }
24038
24039   return p;
24040 }
24041
24042
24043 static void
24044 parse_macro_definition (struct macro_source_file *file, int line,
24045                         const char *body)
24046 {
24047   const char *p;
24048
24049   /* The body string takes one of two forms.  For object-like macro
24050      definitions, it should be:
24051
24052         <macro name> " " <definition>
24053
24054      For function-like macro definitions, it should be:
24055
24056         <macro name> "() " <definition>
24057      or
24058         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24059
24060      Spaces may appear only where explicitly indicated, and in the
24061      <definition>.
24062
24063      The Dwarf 2 spec says that an object-like macro's name is always
24064      followed by a space, but versions of GCC around March 2002 omit
24065      the space when the macro's definition is the empty string.
24066
24067      The Dwarf 2 spec says that there should be no spaces between the
24068      formal arguments in a function-like macro's formal argument list,
24069      but versions of GCC around March 2002 include spaces after the
24070      commas.  */
24071
24072
24073   /* Find the extent of the macro name.  The macro name is terminated
24074      by either a space or null character (for an object-like macro) or
24075      an opening paren (for a function-like macro).  */
24076   for (p = body; *p; p++)
24077     if (*p == ' ' || *p == '(')
24078       break;
24079
24080   if (*p == ' ' || *p == '\0')
24081     {
24082       /* It's an object-like macro.  */
24083       int name_len = p - body;
24084       char *name = savestring (body, name_len);
24085       const char *replacement;
24086
24087       if (*p == ' ')
24088         replacement = body + name_len + 1;
24089       else
24090         {
24091           dwarf2_macro_malformed_definition_complaint (body);
24092           replacement = body + name_len;
24093         }
24094
24095       macro_define_object (file, line, name, replacement);
24096
24097       xfree (name);
24098     }
24099   else if (*p == '(')
24100     {
24101       /* It's a function-like macro.  */
24102       char *name = savestring (body, p - body);
24103       int argc = 0;
24104       int argv_size = 1;
24105       char **argv = XNEWVEC (char *, argv_size);
24106
24107       p++;
24108
24109       p = consume_improper_spaces (p, body);
24110
24111       /* Parse the formal argument list.  */
24112       while (*p && *p != ')')
24113         {
24114           /* Find the extent of the current argument name.  */
24115           const char *arg_start = p;
24116
24117           while (*p && *p != ',' && *p != ')' && *p != ' ')
24118             p++;
24119
24120           if (! *p || p == arg_start)
24121             dwarf2_macro_malformed_definition_complaint (body);
24122           else
24123             {
24124               /* Make sure argv has room for the new argument.  */
24125               if (argc >= argv_size)
24126                 {
24127                   argv_size *= 2;
24128                   argv = XRESIZEVEC (char *, argv, argv_size);
24129                 }
24130
24131               argv[argc++] = savestring (arg_start, p - arg_start);
24132             }
24133
24134           p = consume_improper_spaces (p, body);
24135
24136           /* Consume the comma, if present.  */
24137           if (*p == ',')
24138             {
24139               p++;
24140
24141               p = consume_improper_spaces (p, body);
24142             }
24143         }
24144
24145       if (*p == ')')
24146         {
24147           p++;
24148
24149           if (*p == ' ')
24150             /* Perfectly formed definition, no complaints.  */
24151             macro_define_function (file, line, name,
24152                                    argc, (const char **) argv,
24153                                    p + 1);
24154           else if (*p == '\0')
24155             {
24156               /* Complain, but do define it.  */
24157               dwarf2_macro_malformed_definition_complaint (body);
24158               macro_define_function (file, line, name,
24159                                      argc, (const char **) argv,
24160                                      p);
24161             }
24162           else
24163             /* Just complain.  */
24164             dwarf2_macro_malformed_definition_complaint (body);
24165         }
24166       else
24167         /* Just complain.  */
24168         dwarf2_macro_malformed_definition_complaint (body);
24169
24170       xfree (name);
24171       {
24172         int i;
24173
24174         for (i = 0; i < argc; i++)
24175           xfree (argv[i]);
24176       }
24177       xfree (argv);
24178     }
24179   else
24180     dwarf2_macro_malformed_definition_complaint (body);
24181 }
24182
24183 /* Skip some bytes from BYTES according to the form given in FORM.
24184    Returns the new pointer.  */
24185
24186 static const gdb_byte *
24187 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24188                  enum dwarf_form form,
24189                  unsigned int offset_size,
24190                  struct dwarf2_section_info *section)
24191 {
24192   unsigned int bytes_read;
24193
24194   switch (form)
24195     {
24196     case DW_FORM_data1:
24197     case DW_FORM_flag:
24198       ++bytes;
24199       break;
24200
24201     case DW_FORM_data2:
24202       bytes += 2;
24203       break;
24204
24205     case DW_FORM_data4:
24206       bytes += 4;
24207       break;
24208
24209     case DW_FORM_data8:
24210       bytes += 8;
24211       break;
24212
24213     case DW_FORM_data16:
24214       bytes += 16;
24215       break;
24216
24217     case DW_FORM_string:
24218       read_direct_string (abfd, bytes, &bytes_read);
24219       bytes += bytes_read;
24220       break;
24221
24222     case DW_FORM_sec_offset:
24223     case DW_FORM_strp:
24224     case DW_FORM_GNU_strp_alt:
24225       bytes += offset_size;
24226       break;
24227
24228     case DW_FORM_block:
24229       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24230       bytes += bytes_read;
24231       break;
24232
24233     case DW_FORM_block1:
24234       bytes += 1 + read_1_byte (abfd, bytes);
24235       break;
24236     case DW_FORM_block2:
24237       bytes += 2 + read_2_bytes (abfd, bytes);
24238       break;
24239     case DW_FORM_block4:
24240       bytes += 4 + read_4_bytes (abfd, bytes);
24241       break;
24242
24243     case DW_FORM_sdata:
24244     case DW_FORM_udata:
24245     case DW_FORM_GNU_addr_index:
24246     case DW_FORM_GNU_str_index:
24247       bytes = gdb_skip_leb128 (bytes, buffer_end);
24248       if (bytes == NULL)
24249         {
24250           dwarf2_section_buffer_overflow_complaint (section);
24251           return NULL;
24252         }
24253       break;
24254
24255     case DW_FORM_implicit_const:
24256       break;
24257
24258     default:
24259       {
24260         complaint (&symfile_complaints,
24261                    _("invalid form 0x%x in `%s'"),
24262                    form, get_section_name (section));
24263         return NULL;
24264       }
24265     }
24266
24267   return bytes;
24268 }
24269
24270 /* A helper for dwarf_decode_macros that handles skipping an unknown
24271    opcode.  Returns an updated pointer to the macro data buffer; or,
24272    on error, issues a complaint and returns NULL.  */
24273
24274 static const gdb_byte *
24275 skip_unknown_opcode (unsigned int opcode,
24276                      const gdb_byte **opcode_definitions,
24277                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24278                      bfd *abfd,
24279                      unsigned int offset_size,
24280                      struct dwarf2_section_info *section)
24281 {
24282   unsigned int bytes_read, i;
24283   unsigned long arg;
24284   const gdb_byte *defn;
24285
24286   if (opcode_definitions[opcode] == NULL)
24287     {
24288       complaint (&symfile_complaints,
24289                  _("unrecognized DW_MACFINO opcode 0x%x"),
24290                  opcode);
24291       return NULL;
24292     }
24293
24294   defn = opcode_definitions[opcode];
24295   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24296   defn += bytes_read;
24297
24298   for (i = 0; i < arg; ++i)
24299     {
24300       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24301                                  (enum dwarf_form) defn[i], offset_size,
24302                                  section);
24303       if (mac_ptr == NULL)
24304         {
24305           /* skip_form_bytes already issued the complaint.  */
24306           return NULL;
24307         }
24308     }
24309
24310   return mac_ptr;
24311 }
24312
24313 /* A helper function which parses the header of a macro section.
24314    If the macro section is the extended (for now called "GNU") type,
24315    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24316    the header, or issues a complaint and returns NULL on error.  */
24317
24318 static const gdb_byte *
24319 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24320                           bfd *abfd,
24321                           const gdb_byte *mac_ptr,
24322                           unsigned int *offset_size,
24323                           int section_is_gnu)
24324 {
24325   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24326
24327   if (section_is_gnu)
24328     {
24329       unsigned int version, flags;
24330
24331       version = read_2_bytes (abfd, mac_ptr);
24332       if (version != 4 && version != 5)
24333         {
24334           complaint (&symfile_complaints,
24335                      _("unrecognized version `%d' in .debug_macro section"),
24336                      version);
24337           return NULL;
24338         }
24339       mac_ptr += 2;
24340
24341       flags = read_1_byte (abfd, mac_ptr);
24342       ++mac_ptr;
24343       *offset_size = (flags & 1) ? 8 : 4;
24344
24345       if ((flags & 2) != 0)
24346         /* We don't need the line table offset.  */
24347         mac_ptr += *offset_size;
24348
24349       /* Vendor opcode descriptions.  */
24350       if ((flags & 4) != 0)
24351         {
24352           unsigned int i, count;
24353
24354           count = read_1_byte (abfd, mac_ptr);
24355           ++mac_ptr;
24356           for (i = 0; i < count; ++i)
24357             {
24358               unsigned int opcode, bytes_read;
24359               unsigned long arg;
24360
24361               opcode = read_1_byte (abfd, mac_ptr);
24362               ++mac_ptr;
24363               opcode_definitions[opcode] = mac_ptr;
24364               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24365               mac_ptr += bytes_read;
24366               mac_ptr += arg;
24367             }
24368         }
24369     }
24370
24371   return mac_ptr;
24372 }
24373
24374 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24375    including DW_MACRO_import.  */
24376
24377 static void
24378 dwarf_decode_macro_bytes (struct dwarf2_per_objfile *dwarf2_per_objfile,
24379                           bfd *abfd,
24380                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24381                           struct macro_source_file *current_file,
24382                           struct line_header *lh,
24383                           struct dwarf2_section_info *section,
24384                           int section_is_gnu, int section_is_dwz,
24385                           unsigned int offset_size,
24386                           htab_t include_hash)
24387 {
24388   struct objfile *objfile = dwarf2_per_objfile->objfile;
24389   enum dwarf_macro_record_type macinfo_type;
24390   int at_commandline;
24391   const gdb_byte *opcode_definitions[256];
24392
24393   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24394                                       &offset_size, section_is_gnu);
24395   if (mac_ptr == NULL)
24396     {
24397       /* We already issued a complaint.  */
24398       return;
24399     }
24400
24401   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24402      GDB is still reading the definitions from command line.  First
24403      DW_MACINFO_start_file will need to be ignored as it was already executed
24404      to create CURRENT_FILE for the main source holding also the command line
24405      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24406      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24407
24408   at_commandline = 1;
24409
24410   do
24411     {
24412       /* Do we at least have room for a macinfo type byte?  */
24413       if (mac_ptr >= mac_end)
24414         {
24415           dwarf2_section_buffer_overflow_complaint (section);
24416           break;
24417         }
24418
24419       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24420       mac_ptr++;
24421
24422       /* Note that we rely on the fact that the corresponding GNU and
24423          DWARF constants are the same.  */
24424       DIAGNOSTIC_PUSH
24425       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24426       switch (macinfo_type)
24427         {
24428           /* A zero macinfo type indicates the end of the macro
24429              information.  */
24430         case 0:
24431           break;
24432
24433         case DW_MACRO_define:
24434         case DW_MACRO_undef:
24435         case DW_MACRO_define_strp:
24436         case DW_MACRO_undef_strp:
24437         case DW_MACRO_define_sup:
24438         case DW_MACRO_undef_sup:
24439           {
24440             unsigned int bytes_read;
24441             int line;
24442             const char *body;
24443             int is_define;
24444
24445             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24446             mac_ptr += bytes_read;
24447
24448             if (macinfo_type == DW_MACRO_define
24449                 || macinfo_type == DW_MACRO_undef)
24450               {
24451                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24452                 mac_ptr += bytes_read;
24453               }
24454             else
24455               {
24456                 LONGEST str_offset;
24457
24458                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24459                 mac_ptr += offset_size;
24460
24461                 if (macinfo_type == DW_MACRO_define_sup
24462                     || macinfo_type == DW_MACRO_undef_sup
24463                     || section_is_dwz)
24464                   {
24465                     struct dwz_file *dwz
24466                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24467
24468                     body = read_indirect_string_from_dwz (objfile,
24469                                                           dwz, str_offset);
24470                   }
24471                 else
24472                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24473                                                          abfd, str_offset);
24474               }
24475
24476             is_define = (macinfo_type == DW_MACRO_define
24477                          || macinfo_type == DW_MACRO_define_strp
24478                          || macinfo_type == DW_MACRO_define_sup);
24479             if (! current_file)
24480               {
24481                 /* DWARF violation as no main source is present.  */
24482                 complaint (&symfile_complaints,
24483                            _("debug info with no main source gives macro %s "
24484                              "on line %d: %s"),
24485                            is_define ? _("definition") : _("undefinition"),
24486                            line, body);
24487                 break;
24488               }
24489             if ((line == 0 && !at_commandline)
24490                 || (line != 0 && at_commandline))
24491               complaint (&symfile_complaints,
24492                          _("debug info gives %s macro %s with %s line %d: %s"),
24493                          at_commandline ? _("command-line") : _("in-file"),
24494                          is_define ? _("definition") : _("undefinition"),
24495                          line == 0 ? _("zero") : _("non-zero"), line, body);
24496
24497             if (is_define)
24498               parse_macro_definition (current_file, line, body);
24499             else
24500               {
24501                 gdb_assert (macinfo_type == DW_MACRO_undef
24502                             || macinfo_type == DW_MACRO_undef_strp
24503                             || macinfo_type == DW_MACRO_undef_sup);
24504                 macro_undef (current_file, line, body);
24505               }
24506           }
24507           break;
24508
24509         case DW_MACRO_start_file:
24510           {
24511             unsigned int bytes_read;
24512             int line, file;
24513
24514             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24515             mac_ptr += bytes_read;
24516             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24517             mac_ptr += bytes_read;
24518
24519             if ((line == 0 && !at_commandline)
24520                 || (line != 0 && at_commandline))
24521               complaint (&symfile_complaints,
24522                          _("debug info gives source %d included "
24523                            "from %s at %s line %d"),
24524                          file, at_commandline ? _("command-line") : _("file"),
24525                          line == 0 ? _("zero") : _("non-zero"), line);
24526
24527             if (at_commandline)
24528               {
24529                 /* This DW_MACRO_start_file was executed in the
24530                    pass one.  */
24531                 at_commandline = 0;
24532               }
24533             else
24534               current_file = macro_start_file (file, line, current_file, lh);
24535           }
24536           break;
24537
24538         case DW_MACRO_end_file:
24539           if (! current_file)
24540             complaint (&symfile_complaints,
24541                        _("macro debug info has an unmatched "
24542                          "`close_file' directive"));
24543           else
24544             {
24545               current_file = current_file->included_by;
24546               if (! current_file)
24547                 {
24548                   enum dwarf_macro_record_type next_type;
24549
24550                   /* GCC circa March 2002 doesn't produce the zero
24551                      type byte marking the end of the compilation
24552                      unit.  Complain if it's not there, but exit no
24553                      matter what.  */
24554
24555                   /* Do we at least have room for a macinfo type byte?  */
24556                   if (mac_ptr >= mac_end)
24557                     {
24558                       dwarf2_section_buffer_overflow_complaint (section);
24559                       return;
24560                     }
24561
24562                   /* We don't increment mac_ptr here, so this is just
24563                      a look-ahead.  */
24564                   next_type
24565                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24566                                                                   mac_ptr);
24567                   if (next_type != 0)
24568                     complaint (&symfile_complaints,
24569                                _("no terminating 0-type entry for "
24570                                  "macros in `.debug_macinfo' section"));
24571
24572                   return;
24573                 }
24574             }
24575           break;
24576
24577         case DW_MACRO_import:
24578         case DW_MACRO_import_sup:
24579           {
24580             LONGEST offset;
24581             void **slot;
24582             bfd *include_bfd = abfd;
24583             struct dwarf2_section_info *include_section = section;
24584             const gdb_byte *include_mac_end = mac_end;
24585             int is_dwz = section_is_dwz;
24586             const gdb_byte *new_mac_ptr;
24587
24588             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24589             mac_ptr += offset_size;
24590
24591             if (macinfo_type == DW_MACRO_import_sup)
24592               {
24593                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24594
24595                 dwarf2_read_section (objfile, &dwz->macro);
24596
24597                 include_section = &dwz->macro;
24598                 include_bfd = get_section_bfd_owner (include_section);
24599                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24600                 is_dwz = 1;
24601               }
24602
24603             new_mac_ptr = include_section->buffer + offset;
24604             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24605
24606             if (*slot != NULL)
24607               {
24608                 /* This has actually happened; see
24609                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24610                 complaint (&symfile_complaints,
24611                            _("recursive DW_MACRO_import in "
24612                              ".debug_macro section"));
24613               }
24614             else
24615               {
24616                 *slot = (void *) new_mac_ptr;
24617
24618                 dwarf_decode_macro_bytes (dwarf2_per_objfile,
24619                                           include_bfd, new_mac_ptr,
24620                                           include_mac_end, current_file, lh,
24621                                           section, section_is_gnu, is_dwz,
24622                                           offset_size, include_hash);
24623
24624                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24625               }
24626           }
24627           break;
24628
24629         case DW_MACINFO_vendor_ext:
24630           if (!section_is_gnu)
24631             {
24632               unsigned int bytes_read;
24633
24634               /* This reads the constant, but since we don't recognize
24635                  any vendor extensions, we ignore it.  */
24636               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24637               mac_ptr += bytes_read;
24638               read_direct_string (abfd, mac_ptr, &bytes_read);
24639               mac_ptr += bytes_read;
24640
24641               /* We don't recognize any vendor extensions.  */
24642               break;
24643             }
24644           /* FALLTHROUGH */
24645
24646         default:
24647           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24648                                          mac_ptr, mac_end, abfd, offset_size,
24649                                          section);
24650           if (mac_ptr == NULL)
24651             return;
24652           break;
24653         }
24654       DIAGNOSTIC_POP
24655     } while (macinfo_type != 0);
24656 }
24657
24658 static void
24659 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24660                      int section_is_gnu)
24661 {
24662   struct dwarf2_per_objfile *dwarf2_per_objfile
24663     = cu->per_cu->dwarf2_per_objfile;
24664   struct objfile *objfile = dwarf2_per_objfile->objfile;
24665   struct line_header *lh = cu->line_header;
24666   bfd *abfd;
24667   const gdb_byte *mac_ptr, *mac_end;
24668   struct macro_source_file *current_file = 0;
24669   enum dwarf_macro_record_type macinfo_type;
24670   unsigned int offset_size = cu->header.offset_size;
24671   const gdb_byte *opcode_definitions[256];
24672   void **slot;
24673   struct dwarf2_section_info *section;
24674   const char *section_name;
24675
24676   if (cu->dwo_unit != NULL)
24677     {
24678       if (section_is_gnu)
24679         {
24680           section = &cu->dwo_unit->dwo_file->sections.macro;
24681           section_name = ".debug_macro.dwo";
24682         }
24683       else
24684         {
24685           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24686           section_name = ".debug_macinfo.dwo";
24687         }
24688     }
24689   else
24690     {
24691       if (section_is_gnu)
24692         {
24693           section = &dwarf2_per_objfile->macro;
24694           section_name = ".debug_macro";
24695         }
24696       else
24697         {
24698           section = &dwarf2_per_objfile->macinfo;
24699           section_name = ".debug_macinfo";
24700         }
24701     }
24702
24703   dwarf2_read_section (objfile, section);
24704   if (section->buffer == NULL)
24705     {
24706       complaint (&symfile_complaints, _("missing %s section"), section_name);
24707       return;
24708     }
24709   abfd = get_section_bfd_owner (section);
24710
24711   /* First pass: Find the name of the base filename.
24712      This filename is needed in order to process all macros whose definition
24713      (or undefinition) comes from the command line.  These macros are defined
24714      before the first DW_MACINFO_start_file entry, and yet still need to be
24715      associated to the base file.
24716
24717      To determine the base file name, we scan the macro definitions until we
24718      reach the first DW_MACINFO_start_file entry.  We then initialize
24719      CURRENT_FILE accordingly so that any macro definition found before the
24720      first DW_MACINFO_start_file can still be associated to the base file.  */
24721
24722   mac_ptr = section->buffer + offset;
24723   mac_end = section->buffer + section->size;
24724
24725   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24726                                       &offset_size, section_is_gnu);
24727   if (mac_ptr == NULL)
24728     {
24729       /* We already issued a complaint.  */
24730       return;
24731     }
24732
24733   do
24734     {
24735       /* Do we at least have room for a macinfo type byte?  */
24736       if (mac_ptr >= mac_end)
24737         {
24738           /* Complaint is printed during the second pass as GDB will probably
24739              stop the first pass earlier upon finding
24740              DW_MACINFO_start_file.  */
24741           break;
24742         }
24743
24744       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24745       mac_ptr++;
24746
24747       /* Note that we rely on the fact that the corresponding GNU and
24748          DWARF constants are the same.  */
24749       DIAGNOSTIC_PUSH
24750       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24751       switch (macinfo_type)
24752         {
24753           /* A zero macinfo type indicates the end of the macro
24754              information.  */
24755         case 0:
24756           break;
24757
24758         case DW_MACRO_define:
24759         case DW_MACRO_undef:
24760           /* Only skip the data by MAC_PTR.  */
24761           {
24762             unsigned int bytes_read;
24763
24764             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24765             mac_ptr += bytes_read;
24766             read_direct_string (abfd, mac_ptr, &bytes_read);
24767             mac_ptr += bytes_read;
24768           }
24769           break;
24770
24771         case DW_MACRO_start_file:
24772           {
24773             unsigned int bytes_read;
24774             int line, file;
24775
24776             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24777             mac_ptr += bytes_read;
24778             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24779             mac_ptr += bytes_read;
24780
24781             current_file = macro_start_file (file, line, current_file, lh);
24782           }
24783           break;
24784
24785         case DW_MACRO_end_file:
24786           /* No data to skip by MAC_PTR.  */
24787           break;
24788
24789         case DW_MACRO_define_strp:
24790         case DW_MACRO_undef_strp:
24791         case DW_MACRO_define_sup:
24792         case DW_MACRO_undef_sup:
24793           {
24794             unsigned int bytes_read;
24795
24796             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24797             mac_ptr += bytes_read;
24798             mac_ptr += offset_size;
24799           }
24800           break;
24801
24802         case DW_MACRO_import:
24803         case DW_MACRO_import_sup:
24804           /* Note that, according to the spec, a transparent include
24805              chain cannot call DW_MACRO_start_file.  So, we can just
24806              skip this opcode.  */
24807           mac_ptr += offset_size;
24808           break;
24809
24810         case DW_MACINFO_vendor_ext:
24811           /* Only skip the data by MAC_PTR.  */
24812           if (!section_is_gnu)
24813             {
24814               unsigned int bytes_read;
24815
24816               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24817               mac_ptr += bytes_read;
24818               read_direct_string (abfd, mac_ptr, &bytes_read);
24819               mac_ptr += bytes_read;
24820             }
24821           /* FALLTHROUGH */
24822
24823         default:
24824           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24825                                          mac_ptr, mac_end, abfd, offset_size,
24826                                          section);
24827           if (mac_ptr == NULL)
24828             return;
24829           break;
24830         }
24831       DIAGNOSTIC_POP
24832     } while (macinfo_type != 0 && current_file == NULL);
24833
24834   /* Second pass: Process all entries.
24835
24836      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24837      command-line macro definitions/undefinitions.  This flag is unset when we
24838      reach the first DW_MACINFO_start_file entry.  */
24839
24840   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24841                                            htab_eq_pointer,
24842                                            NULL, xcalloc, xfree));
24843   mac_ptr = section->buffer + offset;
24844   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24845   *slot = (void *) mac_ptr;
24846   dwarf_decode_macro_bytes (dwarf2_per_objfile,
24847                             abfd, mac_ptr, mac_end,
24848                             current_file, lh, section,
24849                             section_is_gnu, 0, offset_size,
24850                             include_hash.get ());
24851 }
24852
24853 /* Check if the attribute's form is a DW_FORM_block*
24854    if so return true else false.  */
24855
24856 static int
24857 attr_form_is_block (const struct attribute *attr)
24858 {
24859   return (attr == NULL ? 0 :
24860       attr->form == DW_FORM_block1
24861       || attr->form == DW_FORM_block2
24862       || attr->form == DW_FORM_block4
24863       || attr->form == DW_FORM_block
24864       || attr->form == DW_FORM_exprloc);
24865 }
24866
24867 /* Return non-zero if ATTR's value is a section offset --- classes
24868    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24869    You may use DW_UNSND (attr) to retrieve such offsets.
24870
24871    Section 7.5.4, "Attribute Encodings", explains that no attribute
24872    may have a value that belongs to more than one of these classes; it
24873    would be ambiguous if we did, because we use the same forms for all
24874    of them.  */
24875
24876 static int
24877 attr_form_is_section_offset (const struct attribute *attr)
24878 {
24879   return (attr->form == DW_FORM_data4
24880           || attr->form == DW_FORM_data8
24881           || attr->form == DW_FORM_sec_offset);
24882 }
24883
24884 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24885    zero otherwise.  When this function returns true, you can apply
24886    dwarf2_get_attr_constant_value to it.
24887
24888    However, note that for some attributes you must check
24889    attr_form_is_section_offset before using this test.  DW_FORM_data4
24890    and DW_FORM_data8 are members of both the constant class, and of
24891    the classes that contain offsets into other debug sections
24892    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24893    that, if an attribute's can be either a constant or one of the
24894    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24895    taken as section offsets, not constants.
24896
24897    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24898    cannot handle that.  */
24899
24900 static int
24901 attr_form_is_constant (const struct attribute *attr)
24902 {
24903   switch (attr->form)
24904     {
24905     case DW_FORM_sdata:
24906     case DW_FORM_udata:
24907     case DW_FORM_data1:
24908     case DW_FORM_data2:
24909     case DW_FORM_data4:
24910     case DW_FORM_data8:
24911     case DW_FORM_implicit_const:
24912       return 1;
24913     default:
24914       return 0;
24915     }
24916 }
24917
24918
24919 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24920    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24921
24922 static int
24923 attr_form_is_ref (const struct attribute *attr)
24924 {
24925   switch (attr->form)
24926     {
24927     case DW_FORM_ref_addr:
24928     case DW_FORM_ref1:
24929     case DW_FORM_ref2:
24930     case DW_FORM_ref4:
24931     case DW_FORM_ref8:
24932     case DW_FORM_ref_udata:
24933     case DW_FORM_GNU_ref_alt:
24934       return 1;
24935     default:
24936       return 0;
24937     }
24938 }
24939
24940 /* Return the .debug_loc section to use for CU.
24941    For DWO files use .debug_loc.dwo.  */
24942
24943 static struct dwarf2_section_info *
24944 cu_debug_loc_section (struct dwarf2_cu *cu)
24945 {
24946   struct dwarf2_per_objfile *dwarf2_per_objfile
24947     = cu->per_cu->dwarf2_per_objfile;
24948
24949   if (cu->dwo_unit)
24950     {
24951       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24952       
24953       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24954     }
24955   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24956                                   : &dwarf2_per_objfile->loc);
24957 }
24958
24959 /* A helper function that fills in a dwarf2_loclist_baton.  */
24960
24961 static void
24962 fill_in_loclist_baton (struct dwarf2_cu *cu,
24963                        struct dwarf2_loclist_baton *baton,
24964                        const struct attribute *attr)
24965 {
24966   struct dwarf2_per_objfile *dwarf2_per_objfile
24967     = cu->per_cu->dwarf2_per_objfile;
24968   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24969
24970   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24971
24972   baton->per_cu = cu->per_cu;
24973   gdb_assert (baton->per_cu);
24974   /* We don't know how long the location list is, but make sure we
24975      don't run off the edge of the section.  */
24976   baton->size = section->size - DW_UNSND (attr);
24977   baton->data = section->buffer + DW_UNSND (attr);
24978   baton->base_address = cu->base_address;
24979   baton->from_dwo = cu->dwo_unit != NULL;
24980 }
24981
24982 static void
24983 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24984                              struct dwarf2_cu *cu, int is_block)
24985 {
24986   struct dwarf2_per_objfile *dwarf2_per_objfile
24987     = cu->per_cu->dwarf2_per_objfile;
24988   struct objfile *objfile = dwarf2_per_objfile->objfile;
24989   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24990
24991   if (attr_form_is_section_offset (attr)
24992       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24993          the section.  If so, fall through to the complaint in the
24994          other branch.  */
24995       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24996     {
24997       struct dwarf2_loclist_baton *baton;
24998
24999       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25000
25001       fill_in_loclist_baton (cu, baton, attr);
25002
25003       if (cu->base_known == 0)
25004         complaint (&symfile_complaints,
25005                    _("Location list used without "
25006                      "specifying the CU base address."));
25007
25008       SYMBOL_ACLASS_INDEX (sym) = (is_block
25009                                    ? dwarf2_loclist_block_index
25010                                    : dwarf2_loclist_index);
25011       SYMBOL_LOCATION_BATON (sym) = baton;
25012     }
25013   else
25014     {
25015       struct dwarf2_locexpr_baton *baton;
25016
25017       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25018       baton->per_cu = cu->per_cu;
25019       gdb_assert (baton->per_cu);
25020
25021       if (attr_form_is_block (attr))
25022         {
25023           /* Note that we're just copying the block's data pointer
25024              here, not the actual data.  We're still pointing into the
25025              info_buffer for SYM's objfile; right now we never release
25026              that buffer, but when we do clean up properly this may
25027              need to change.  */
25028           baton->size = DW_BLOCK (attr)->size;
25029           baton->data = DW_BLOCK (attr)->data;
25030         }
25031       else
25032         {
25033           dwarf2_invalid_attrib_class_complaint ("location description",
25034                                                  SYMBOL_NATURAL_NAME (sym));
25035           baton->size = 0;
25036         }
25037
25038       SYMBOL_ACLASS_INDEX (sym) = (is_block
25039                                    ? dwarf2_locexpr_block_index
25040                                    : dwarf2_locexpr_index);
25041       SYMBOL_LOCATION_BATON (sym) = baton;
25042     }
25043 }
25044
25045 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25046    came from a separate debuginfo file, then the master objfile is
25047    returned.  */
25048
25049 struct objfile *
25050 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25051 {
25052   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25053
25054   /* Return the master objfile, so that we can report and look up the
25055      correct file containing this variable.  */
25056   if (objfile->separate_debug_objfile_backlink)
25057     objfile = objfile->separate_debug_objfile_backlink;
25058
25059   return objfile;
25060 }
25061
25062 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25063    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25064    CU_HEADERP first.  */
25065
25066 static const struct comp_unit_head *
25067 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25068                        struct dwarf2_per_cu_data *per_cu)
25069 {
25070   const gdb_byte *info_ptr;
25071
25072   if (per_cu->cu)
25073     return &per_cu->cu->header;
25074
25075   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25076
25077   memset (cu_headerp, 0, sizeof (*cu_headerp));
25078   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25079                        rcuh_kind::COMPILE);
25080
25081   return cu_headerp;
25082 }
25083
25084 /* Return the address size given in the compilation unit header for CU.  */
25085
25086 int
25087 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25088 {
25089   struct comp_unit_head cu_header_local;
25090   const struct comp_unit_head *cu_headerp;
25091
25092   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25093
25094   return cu_headerp->addr_size;
25095 }
25096
25097 /* Return the offset size given in the compilation unit header for CU.  */
25098
25099 int
25100 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25101 {
25102   struct comp_unit_head cu_header_local;
25103   const struct comp_unit_head *cu_headerp;
25104
25105   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25106
25107   return cu_headerp->offset_size;
25108 }
25109
25110 /* See its dwarf2loc.h declaration.  */
25111
25112 int
25113 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25114 {
25115   struct comp_unit_head cu_header_local;
25116   const struct comp_unit_head *cu_headerp;
25117
25118   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25119
25120   if (cu_headerp->version == 2)
25121     return cu_headerp->addr_size;
25122   else
25123     return cu_headerp->offset_size;
25124 }
25125
25126 /* Return the text offset of the CU.  The returned offset comes from
25127    this CU's objfile.  If this objfile came from a separate debuginfo
25128    file, then the offset may be different from the corresponding
25129    offset in the parent objfile.  */
25130
25131 CORE_ADDR
25132 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25133 {
25134   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25135
25136   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25137 }
25138
25139 /* Return DWARF version number of PER_CU.  */
25140
25141 short
25142 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25143 {
25144   return per_cu->dwarf_version;
25145 }
25146
25147 /* Locate the .debug_info compilation unit from CU's objfile which contains
25148    the DIE at OFFSET.  Raises an error on failure.  */
25149
25150 static struct dwarf2_per_cu_data *
25151 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25152                                   unsigned int offset_in_dwz,
25153                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25154 {
25155   struct dwarf2_per_cu_data *this_cu;
25156   int low, high;
25157   const sect_offset *cu_off;
25158
25159   low = 0;
25160   high = dwarf2_per_objfile->n_comp_units - 1;
25161   while (high > low)
25162     {
25163       struct dwarf2_per_cu_data *mid_cu;
25164       int mid = low + (high - low) / 2;
25165
25166       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25167       cu_off = &mid_cu->sect_off;
25168       if (mid_cu->is_dwz > offset_in_dwz
25169           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25170         high = mid;
25171       else
25172         low = mid + 1;
25173     }
25174   gdb_assert (low == high);
25175   this_cu = dwarf2_per_objfile->all_comp_units[low];
25176   cu_off = &this_cu->sect_off;
25177   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25178     {
25179       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25180         error (_("Dwarf Error: could not find partial DIE containing "
25181                "offset 0x%x [in module %s]"),
25182                to_underlying (sect_off),
25183                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25184
25185       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25186                   <= sect_off);
25187       return dwarf2_per_objfile->all_comp_units[low-1];
25188     }
25189   else
25190     {
25191       this_cu = dwarf2_per_objfile->all_comp_units[low];
25192       if (low == dwarf2_per_objfile->n_comp_units - 1
25193           && sect_off >= this_cu->sect_off + this_cu->length)
25194         error (_("invalid dwarf2 offset %u"), to_underlying (sect_off));
25195       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25196       return this_cu;
25197     }
25198 }
25199
25200 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25201
25202 static void
25203 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
25204 {
25205   memset (cu, 0, sizeof (*cu));
25206   per_cu->cu = cu;
25207   cu->per_cu = per_cu;
25208   obstack_init (&cu->comp_unit_obstack);
25209 }
25210
25211 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25212
25213 static void
25214 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25215                        enum language pretend_language)
25216 {
25217   struct attribute *attr;
25218
25219   /* Set the language we're debugging.  */
25220   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25221   if (attr)
25222     set_cu_language (DW_UNSND (attr), cu);
25223   else
25224     {
25225       cu->language = pretend_language;
25226       cu->language_defn = language_def (cu->language);
25227     }
25228
25229   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25230 }
25231
25232 /* Release one cached compilation unit, CU.  We unlink it from the tree
25233    of compilation units, but we don't remove it from the read_in_chain;
25234    the caller is responsible for that.
25235    NOTE: DATA is a void * because this function is also used as a
25236    cleanup routine.  */
25237
25238 static void
25239 free_heap_comp_unit (void *data)
25240 {
25241   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
25242
25243   gdb_assert (cu->per_cu != NULL);
25244   cu->per_cu->cu = NULL;
25245   cu->per_cu = NULL;
25246
25247   obstack_free (&cu->comp_unit_obstack, NULL);
25248
25249   xfree (cu);
25250 }
25251
25252 /* This cleanup function is passed the address of a dwarf2_cu on the stack
25253    when we're finished with it.  We can't free the pointer itself, but be
25254    sure to unlink it from the cache.  Also release any associated storage.  */
25255
25256 static void
25257 free_stack_comp_unit (void *data)
25258 {
25259   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
25260
25261   gdb_assert (cu->per_cu != NULL);
25262   cu->per_cu->cu = NULL;
25263   cu->per_cu = NULL;
25264
25265   obstack_free (&cu->comp_unit_obstack, NULL);
25266   cu->partial_dies = NULL;
25267 }
25268
25269 /* Free all cached compilation units.  */
25270
25271 static void
25272 free_cached_comp_units (void *data)
25273 {
25274   struct dwarf2_per_objfile *dwarf2_per_objfile
25275     = (struct dwarf2_per_objfile *) data;
25276
25277   dwarf2_per_objfile->free_cached_comp_units ();
25278 }
25279
25280 /* Increase the age counter on each cached compilation unit, and free
25281    any that are too old.  */
25282
25283 static void
25284 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25285 {
25286   struct dwarf2_per_cu_data *per_cu, **last_chain;
25287
25288   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25289   per_cu = dwarf2_per_objfile->read_in_chain;
25290   while (per_cu != NULL)
25291     {
25292       per_cu->cu->last_used ++;
25293       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25294         dwarf2_mark (per_cu->cu);
25295       per_cu = per_cu->cu->read_in_chain;
25296     }
25297
25298   per_cu = dwarf2_per_objfile->read_in_chain;
25299   last_chain = &dwarf2_per_objfile->read_in_chain;
25300   while (per_cu != NULL)
25301     {
25302       struct dwarf2_per_cu_data *next_cu;
25303
25304       next_cu = per_cu->cu->read_in_chain;
25305
25306       if (!per_cu->cu->mark)
25307         {
25308           free_heap_comp_unit (per_cu->cu);
25309           *last_chain = next_cu;
25310         }
25311       else
25312         last_chain = &per_cu->cu->read_in_chain;
25313
25314       per_cu = next_cu;
25315     }
25316 }
25317
25318 /* Remove a single compilation unit from the cache.  */
25319
25320 static void
25321 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25322 {
25323   struct dwarf2_per_cu_data *per_cu, **last_chain;
25324   struct dwarf2_per_objfile *dwarf2_per_objfile
25325     = target_per_cu->dwarf2_per_objfile;
25326
25327   per_cu = dwarf2_per_objfile->read_in_chain;
25328   last_chain = &dwarf2_per_objfile->read_in_chain;
25329   while (per_cu != NULL)
25330     {
25331       struct dwarf2_per_cu_data *next_cu;
25332
25333       next_cu = per_cu->cu->read_in_chain;
25334
25335       if (per_cu == target_per_cu)
25336         {
25337           free_heap_comp_unit (per_cu->cu);
25338           per_cu->cu = NULL;
25339           *last_chain = next_cu;
25340           break;
25341         }
25342       else
25343         last_chain = &per_cu->cu->read_in_chain;
25344
25345       per_cu = next_cu;
25346     }
25347 }
25348
25349 /* Release all extra memory associated with OBJFILE.  */
25350
25351 void
25352 dwarf2_free_objfile (struct objfile *objfile)
25353 {
25354   struct dwarf2_per_objfile *dwarf2_per_objfile
25355     = get_dwarf2_per_objfile (objfile);
25356
25357   if (dwarf2_per_objfile == NULL)
25358     return;
25359
25360   dwarf2_per_objfile->~dwarf2_per_objfile ();
25361 }
25362
25363 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25364    We store these in a hash table separate from the DIEs, and preserve them
25365    when the DIEs are flushed out of cache.
25366
25367    The CU "per_cu" pointer is needed because offset alone is not enough to
25368    uniquely identify the type.  A file may have multiple .debug_types sections,
25369    or the type may come from a DWO file.  Furthermore, while it's more logical
25370    to use per_cu->section+offset, with Fission the section with the data is in
25371    the DWO file but we don't know that section at the point we need it.
25372    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25373    because we can enter the lookup routine, get_die_type_at_offset, from
25374    outside this file, and thus won't necessarily have PER_CU->cu.
25375    Fortunately, PER_CU is stable for the life of the objfile.  */
25376
25377 struct dwarf2_per_cu_offset_and_type
25378 {
25379   const struct dwarf2_per_cu_data *per_cu;
25380   sect_offset sect_off;
25381   struct type *type;
25382 };
25383
25384 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25385
25386 static hashval_t
25387 per_cu_offset_and_type_hash (const void *item)
25388 {
25389   const struct dwarf2_per_cu_offset_and_type *ofs
25390     = (const struct dwarf2_per_cu_offset_and_type *) item;
25391
25392   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25393 }
25394
25395 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25396
25397 static int
25398 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25399 {
25400   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25401     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25402   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25403     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25404
25405   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25406           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25407 }
25408
25409 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25410    table if necessary.  For convenience, return TYPE.
25411
25412    The DIEs reading must have careful ordering to:
25413     * Not cause infite loops trying to read in DIEs as a prerequisite for
25414       reading current DIE.
25415     * Not trying to dereference contents of still incompletely read in types
25416       while reading in other DIEs.
25417     * Enable referencing still incompletely read in types just by a pointer to
25418       the type without accessing its fields.
25419
25420    Therefore caller should follow these rules:
25421      * Try to fetch any prerequisite types we may need to build this DIE type
25422        before building the type and calling set_die_type.
25423      * After building type call set_die_type for current DIE as soon as
25424        possible before fetching more types to complete the current type.
25425      * Make the type as complete as possible before fetching more types.  */
25426
25427 static struct type *
25428 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25429 {
25430   struct dwarf2_per_objfile *dwarf2_per_objfile
25431     = cu->per_cu->dwarf2_per_objfile;
25432   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25433   struct objfile *objfile = dwarf2_per_objfile->objfile;
25434   struct attribute *attr;
25435   struct dynamic_prop prop;
25436
25437   /* For Ada types, make sure that the gnat-specific data is always
25438      initialized (if not already set).  There are a few types where
25439      we should not be doing so, because the type-specific area is
25440      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25441      where the type-specific area is used to store the floatformat).
25442      But this is not a problem, because the gnat-specific information
25443      is actually not needed for these types.  */
25444   if (need_gnat_info (cu)
25445       && TYPE_CODE (type) != TYPE_CODE_FUNC
25446       && TYPE_CODE (type) != TYPE_CODE_FLT
25447       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25448       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25449       && TYPE_CODE (type) != TYPE_CODE_METHOD
25450       && !HAVE_GNAT_AUX_INFO (type))
25451     INIT_GNAT_SPECIFIC (type);
25452
25453   /* Read DW_AT_allocated and set in type.  */
25454   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25455   if (attr_form_is_block (attr))
25456     {
25457       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25458         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
25459     }
25460   else if (attr != NULL)
25461     {
25462       complaint (&symfile_complaints,
25463                  _("DW_AT_allocated has the wrong form (%s) at DIE 0x%x"),
25464                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25465                  to_underlying (die->sect_off));
25466     }
25467
25468   /* Read DW_AT_associated and set in type.  */
25469   attr = dwarf2_attr (die, DW_AT_associated, cu);
25470   if (attr_form_is_block (attr))
25471     {
25472       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25473         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
25474     }
25475   else if (attr != NULL)
25476     {
25477       complaint (&symfile_complaints,
25478                  _("DW_AT_associated has the wrong form (%s) at DIE 0x%x"),
25479                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25480                  to_underlying (die->sect_off));
25481     }
25482
25483   /* Read DW_AT_data_location and set in type.  */
25484   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25485   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25486     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
25487
25488   if (dwarf2_per_objfile->die_type_hash == NULL)
25489     {
25490       dwarf2_per_objfile->die_type_hash =
25491         htab_create_alloc_ex (127,
25492                               per_cu_offset_and_type_hash,
25493                               per_cu_offset_and_type_eq,
25494                               NULL,
25495                               &objfile->objfile_obstack,
25496                               hashtab_obstack_allocate,
25497                               dummy_obstack_deallocate);
25498     }
25499
25500   ofs.per_cu = cu->per_cu;
25501   ofs.sect_off = die->sect_off;
25502   ofs.type = type;
25503   slot = (struct dwarf2_per_cu_offset_and_type **)
25504     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25505   if (*slot)
25506     complaint (&symfile_complaints,
25507                _("A problem internal to GDB: DIE 0x%x has type already set"),
25508                to_underlying (die->sect_off));
25509   *slot = XOBNEW (&objfile->objfile_obstack,
25510                   struct dwarf2_per_cu_offset_and_type);
25511   **slot = ofs;
25512   return type;
25513 }
25514
25515 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25516    or return NULL if the die does not have a saved type.  */
25517
25518 static struct type *
25519 get_die_type_at_offset (sect_offset sect_off,
25520                         struct dwarf2_per_cu_data *per_cu)
25521 {
25522   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25523   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25524
25525   if (dwarf2_per_objfile->die_type_hash == NULL)
25526     return NULL;
25527
25528   ofs.per_cu = per_cu;
25529   ofs.sect_off = sect_off;
25530   slot = ((struct dwarf2_per_cu_offset_and_type *)
25531           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25532   if (slot)
25533     return slot->type;
25534   else
25535     return NULL;
25536 }
25537
25538 /* Look up the type for DIE in CU in die_type_hash,
25539    or return NULL if DIE does not have a saved type.  */
25540
25541 static struct type *
25542 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25543 {
25544   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25545 }
25546
25547 /* Add a dependence relationship from CU to REF_PER_CU.  */
25548
25549 static void
25550 dwarf2_add_dependence (struct dwarf2_cu *cu,
25551                        struct dwarf2_per_cu_data *ref_per_cu)
25552 {
25553   void **slot;
25554
25555   if (cu->dependencies == NULL)
25556     cu->dependencies
25557       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25558                               NULL, &cu->comp_unit_obstack,
25559                               hashtab_obstack_allocate,
25560                               dummy_obstack_deallocate);
25561
25562   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25563   if (*slot == NULL)
25564     *slot = ref_per_cu;
25565 }
25566
25567 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25568    Set the mark field in every compilation unit in the
25569    cache that we must keep because we are keeping CU.  */
25570
25571 static int
25572 dwarf2_mark_helper (void **slot, void *data)
25573 {
25574   struct dwarf2_per_cu_data *per_cu;
25575
25576   per_cu = (struct dwarf2_per_cu_data *) *slot;
25577
25578   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25579      reading of the chain.  As such dependencies remain valid it is not much
25580      useful to track and undo them during QUIT cleanups.  */
25581   if (per_cu->cu == NULL)
25582     return 1;
25583
25584   if (per_cu->cu->mark)
25585     return 1;
25586   per_cu->cu->mark = 1;
25587
25588   if (per_cu->cu->dependencies != NULL)
25589     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25590
25591   return 1;
25592 }
25593
25594 /* Set the mark field in CU and in every other compilation unit in the
25595    cache that we must keep because we are keeping CU.  */
25596
25597 static void
25598 dwarf2_mark (struct dwarf2_cu *cu)
25599 {
25600   if (cu->mark)
25601     return;
25602   cu->mark = 1;
25603   if (cu->dependencies != NULL)
25604     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25605 }
25606
25607 static void
25608 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25609 {
25610   while (per_cu)
25611     {
25612       per_cu->cu->mark = 0;
25613       per_cu = per_cu->cu->read_in_chain;
25614     }
25615 }
25616
25617 /* Trivial hash function for partial_die_info: the hash value of a DIE
25618    is its offset in .debug_info for this objfile.  */
25619
25620 static hashval_t
25621 partial_die_hash (const void *item)
25622 {
25623   const struct partial_die_info *part_die
25624     = (const struct partial_die_info *) item;
25625
25626   return to_underlying (part_die->sect_off);
25627 }
25628
25629 /* Trivial comparison function for partial_die_info structures: two DIEs
25630    are equal if they have the same offset.  */
25631
25632 static int
25633 partial_die_eq (const void *item_lhs, const void *item_rhs)
25634 {
25635   const struct partial_die_info *part_die_lhs
25636     = (const struct partial_die_info *) item_lhs;
25637   const struct partial_die_info *part_die_rhs
25638     = (const struct partial_die_info *) item_rhs;
25639
25640   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25641 }
25642
25643 static struct cmd_list_element *set_dwarf_cmdlist;
25644 static struct cmd_list_element *show_dwarf_cmdlist;
25645
25646 static void
25647 set_dwarf_cmd (const char *args, int from_tty)
25648 {
25649   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25650              gdb_stdout);
25651 }
25652
25653 static void
25654 show_dwarf_cmd (const char *args, int from_tty)
25655 {
25656   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25657 }
25658
25659 /* Free data associated with OBJFILE, if necessary.  */
25660
25661 static void
25662 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
25663 {
25664   struct dwarf2_per_objfile *data = (struct dwarf2_per_objfile *) d;
25665   int ix;
25666
25667   for (ix = 0; ix < data->n_comp_units; ++ix)
25668    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
25669
25670   for (ix = 0; ix < data->n_type_units; ++ix)
25671     VEC_free (dwarf2_per_cu_ptr,
25672               data->all_type_units[ix]->per_cu.imported_symtabs);
25673   xfree (data->all_type_units);
25674
25675   VEC_free (dwarf2_section_info_def, data->types);
25676
25677   if (data->dwo_files)
25678     free_dwo_files (data->dwo_files, objfile);
25679   if (data->dwp_file)
25680     gdb_bfd_unref (data->dwp_file->dbfd);
25681
25682   if (data->dwz_file && data->dwz_file->dwz_bfd)
25683     gdb_bfd_unref (data->dwz_file->dwz_bfd);
25684
25685   if (data->index_table != NULL)
25686     data->index_table->~mapped_index ();
25687 }
25688
25689 \f
25690 /* The "save gdb-index" command.  */
25691
25692 /* Write SIZE bytes from the buffer pointed to by DATA to FILE, with
25693    error checking.  */
25694
25695 static void
25696 file_write (FILE *file, const void *data, size_t size)
25697 {
25698   if (fwrite (data, 1, size, file) != size)
25699     error (_("couldn't data write to file"));
25700 }
25701
25702 /* Write the contents of VEC to FILE, with error checking.  */
25703
25704 template<typename Elem, typename Alloc>
25705 static void
25706 file_write (FILE *file, const std::vector<Elem, Alloc> &vec)
25707 {
25708   file_write (file, vec.data (), vec.size () * sizeof (vec[0]));
25709 }
25710
25711 /* In-memory buffer to prepare data to be written later to a file.  */
25712 class data_buf
25713 {
25714 public:
25715   /* Copy DATA to the end of the buffer.  */
25716   template<typename T>
25717   void append_data (const T &data)
25718   {
25719     std::copy (reinterpret_cast<const gdb_byte *> (&data),
25720                reinterpret_cast<const gdb_byte *> (&data + 1),
25721                grow (sizeof (data)));
25722   }
25723
25724   /* Copy CSTR (a zero-terminated string) to the end of buffer.  The
25725      terminating zero is appended too.  */
25726   void append_cstr0 (const char *cstr)
25727   {
25728     const size_t size = strlen (cstr) + 1;
25729     std::copy (cstr, cstr + size, grow (size));
25730   }
25731
25732   /* Store INPUT as ULEB128 to the end of buffer.  */
25733   void append_unsigned_leb128 (ULONGEST input)
25734   {
25735     for (;;)
25736       {
25737         gdb_byte output = input & 0x7f;
25738         input >>= 7;
25739         if (input)
25740           output |= 0x80;
25741         append_data (output);
25742         if (input == 0)
25743           break;
25744       }
25745   }
25746
25747   /* Accept a host-format integer in VAL and append it to the buffer
25748      as a target-format integer which is LEN bytes long.  */
25749   void append_uint (size_t len, bfd_endian byte_order, ULONGEST val)
25750   {
25751     ::store_unsigned_integer (grow (len), len, byte_order, val);
25752   }
25753
25754   /* Return the size of the buffer.  */
25755   size_t size () const
25756   {
25757     return m_vec.size ();
25758   }
25759
25760   /* Return true iff the buffer is empty.  */
25761   bool empty () const
25762   {
25763     return m_vec.empty ();
25764   }
25765
25766   /* Write the buffer to FILE.  */
25767   void file_write (FILE *file) const
25768   {
25769     ::file_write (file, m_vec);
25770   }
25771
25772 private:
25773   /* Grow SIZE bytes at the end of the buffer.  Returns a pointer to
25774      the start of the new block.  */
25775   gdb_byte *grow (size_t size)
25776   {
25777     m_vec.resize (m_vec.size () + size);
25778     return &*m_vec.end () - size;
25779   }
25780
25781   gdb::byte_vector m_vec;
25782 };
25783
25784 /* An entry in the symbol table.  */
25785 struct symtab_index_entry
25786 {
25787   /* The name of the symbol.  */
25788   const char *name;
25789   /* The offset of the name in the constant pool.  */
25790   offset_type index_offset;
25791   /* A sorted vector of the indices of all the CUs that hold an object
25792      of this name.  */
25793   std::vector<offset_type> cu_indices;
25794 };
25795
25796 /* The symbol table.  This is a power-of-2-sized hash table.  */
25797 struct mapped_symtab
25798 {
25799   mapped_symtab ()
25800   {
25801     data.resize (1024);
25802   }
25803
25804   offset_type n_elements = 0;
25805   std::vector<symtab_index_entry> data;
25806 };
25807
25808 /* Find a slot in SYMTAB for the symbol NAME.  Returns a reference to
25809    the slot.
25810    
25811    Function is used only during write_hash_table so no index format backward
25812    compatibility is needed.  */
25813
25814 static symtab_index_entry &
25815 find_slot (struct mapped_symtab *symtab, const char *name)
25816 {
25817   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
25818
25819   index = hash & (symtab->data.size () - 1);
25820   step = ((hash * 17) & (symtab->data.size () - 1)) | 1;
25821
25822   for (;;)
25823     {
25824       if (symtab->data[index].name == NULL
25825           || strcmp (name, symtab->data[index].name) == 0)
25826         return symtab->data[index];
25827       index = (index + step) & (symtab->data.size () - 1);
25828     }
25829 }
25830
25831 /* Expand SYMTAB's hash table.  */
25832
25833 static void
25834 hash_expand (struct mapped_symtab *symtab)
25835 {
25836   auto old_entries = std::move (symtab->data);
25837
25838   symtab->data.clear ();
25839   symtab->data.resize (old_entries.size () * 2);
25840
25841   for (auto &it : old_entries)
25842     if (it.name != NULL)
25843       {
25844         auto &ref = find_slot (symtab, it.name);
25845         ref = std::move (it);
25846       }
25847 }
25848
25849 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
25850    CU_INDEX is the index of the CU in which the symbol appears.
25851    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
25852
25853 static void
25854 add_index_entry (struct mapped_symtab *symtab, const char *name,
25855                  int is_static, gdb_index_symbol_kind kind,
25856                  offset_type cu_index)
25857 {
25858   offset_type cu_index_and_attrs;
25859
25860   ++symtab->n_elements;
25861   if (4 * symtab->n_elements / 3 >= symtab->data.size ())
25862     hash_expand (symtab);
25863
25864   symtab_index_entry &slot = find_slot (symtab, name);
25865   if (slot.name == NULL)
25866     {
25867       slot.name = name;
25868       /* index_offset is set later.  */
25869     }
25870
25871   cu_index_and_attrs = 0;
25872   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
25873   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
25874   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
25875
25876   /* We don't want to record an index value twice as we want to avoid the
25877      duplication.
25878      We process all global symbols and then all static symbols
25879      (which would allow us to avoid the duplication by only having to check
25880      the last entry pushed), but a symbol could have multiple kinds in one CU.
25881      To keep things simple we don't worry about the duplication here and
25882      sort and uniqufy the list after we've processed all symbols.  */
25883   slot.cu_indices.push_back (cu_index_and_attrs);
25884 }
25885
25886 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
25887
25888 static void
25889 uniquify_cu_indices (struct mapped_symtab *symtab)
25890 {
25891   for (auto &entry : symtab->data)
25892     {
25893       if (entry.name != NULL && !entry.cu_indices.empty ())
25894         {
25895           auto &cu_indices = entry.cu_indices;
25896           std::sort (cu_indices.begin (), cu_indices.end ());
25897           auto from = std::unique (cu_indices.begin (), cu_indices.end ());
25898           cu_indices.erase (from, cu_indices.end ());
25899         }
25900     }
25901 }
25902
25903 /* A form of 'const char *' suitable for container keys.  Only the
25904    pointer is stored.  The strings themselves are compared, not the
25905    pointers.  */
25906 class c_str_view
25907 {
25908 public:
25909   c_str_view (const char *cstr)
25910     : m_cstr (cstr)
25911   {}
25912
25913   bool operator== (const c_str_view &other) const
25914   {
25915     return strcmp (m_cstr, other.m_cstr) == 0;
25916   }
25917
25918   /* Return the underlying C string.  Note, the returned string is
25919      only a reference with lifetime of this object.  */
25920   const char *c_str () const
25921   {
25922     return m_cstr;
25923   }
25924
25925 private:
25926   friend class c_str_view_hasher;
25927   const char *const m_cstr;
25928 };
25929
25930 /* A std::unordered_map::hasher for c_str_view that uses the right
25931    hash function for strings in a mapped index.  */
25932 class c_str_view_hasher
25933 {
25934 public:
25935   size_t operator () (const c_str_view &x) const
25936   {
25937     return mapped_index_string_hash (INT_MAX, x.m_cstr);
25938   }
25939 };
25940
25941 /* A std::unordered_map::hasher for std::vector<>.  */
25942 template<typename T>
25943 class vector_hasher
25944 {
25945 public:
25946   size_t operator () (const std::vector<T> &key) const
25947   {
25948     return iterative_hash (key.data (),
25949                            sizeof (key.front ()) * key.size (), 0);
25950   }
25951 };
25952
25953 /* Write the mapped hash table SYMTAB to the data buffer OUTPUT, with
25954    constant pool entries going into the data buffer CPOOL.  */
25955
25956 static void
25957 write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
25958 {
25959   {
25960     /* Elements are sorted vectors of the indices of all the CUs that
25961        hold an object of this name.  */
25962     std::unordered_map<std::vector<offset_type>, offset_type,
25963                        vector_hasher<offset_type>>
25964       symbol_hash_table;
25965
25966     /* We add all the index vectors to the constant pool first, to
25967        ensure alignment is ok.  */
25968     for (symtab_index_entry &entry : symtab->data)
25969       {
25970         if (entry.name == NULL)
25971           continue;
25972         gdb_assert (entry.index_offset == 0);
25973
25974         /* Finding before inserting is faster than always trying to
25975            insert, because inserting always allocates a node, does the
25976            lookup, and then destroys the new node if another node
25977            already had the same key.  C++17 try_emplace will avoid
25978            this.  */
25979         const auto found
25980           = symbol_hash_table.find (entry.cu_indices);
25981         if (found != symbol_hash_table.end ())
25982           {
25983             entry.index_offset = found->second;
25984             continue;
25985           }
25986
25987         symbol_hash_table.emplace (entry.cu_indices, cpool.size ());
25988         entry.index_offset = cpool.size ();
25989         cpool.append_data (MAYBE_SWAP (entry.cu_indices.size ()));
25990         for (const auto index : entry.cu_indices)
25991           cpool.append_data (MAYBE_SWAP (index));
25992       }
25993   }
25994
25995   /* Now write out the hash table.  */
25996   std::unordered_map<c_str_view, offset_type, c_str_view_hasher> str_table;
25997   for (const auto &entry : symtab->data)
25998     {
25999       offset_type str_off, vec_off;
26000
26001       if (entry.name != NULL)
26002         {
26003           const auto insertpair = str_table.emplace (entry.name, cpool.size ());
26004           if (insertpair.second)
26005             cpool.append_cstr0 (entry.name);
26006           str_off = insertpair.first->second;
26007           vec_off = entry.index_offset;
26008         }
26009       else
26010         {
26011           /* While 0 is a valid constant pool index, it is not valid
26012              to have 0 for both offsets.  */
26013           str_off = 0;
26014           vec_off = 0;
26015         }
26016
26017       output.append_data (MAYBE_SWAP (str_off));
26018       output.append_data (MAYBE_SWAP (vec_off));
26019     }
26020 }
26021
26022 typedef std::unordered_map<partial_symtab *, unsigned int> psym_index_map;
26023
26024 /* Helper struct for building the address table.  */
26025 struct addrmap_index_data
26026 {
26027   addrmap_index_data (data_buf &addr_vec_, psym_index_map &cu_index_htab_)
26028     : addr_vec (addr_vec_), cu_index_htab (cu_index_htab_)
26029   {}
26030
26031   struct objfile *objfile;
26032   data_buf &addr_vec;
26033   psym_index_map &cu_index_htab;
26034
26035   /* Non-zero if the previous_* fields are valid.
26036      We can't write an entry until we see the next entry (since it is only then
26037      that we know the end of the entry).  */
26038   int previous_valid;
26039   /* Index of the CU in the table of all CUs in the index file.  */
26040   unsigned int previous_cu_index;
26041   /* Start address of the CU.  */
26042   CORE_ADDR previous_cu_start;
26043 };
26044
26045 /* Write an address entry to ADDR_VEC.  */
26046
26047 static void
26048 add_address_entry (struct objfile *objfile, data_buf &addr_vec,
26049                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
26050 {
26051   CORE_ADDR baseaddr;
26052
26053   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
26054
26055   addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, start - baseaddr);
26056   addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, end - baseaddr);
26057   addr_vec.append_data (MAYBE_SWAP (cu_index));
26058 }
26059
26060 /* Worker function for traversing an addrmap to build the address table.  */
26061
26062 static int
26063 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
26064 {
26065   struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
26066   struct partial_symtab *pst = (struct partial_symtab *) obj;
26067
26068   if (data->previous_valid)
26069     add_address_entry (data->objfile, data->addr_vec,
26070                        data->previous_cu_start, start_addr,
26071                        data->previous_cu_index);
26072
26073   data->previous_cu_start = start_addr;
26074   if (pst != NULL)
26075     {
26076       const auto it = data->cu_index_htab.find (pst);
26077       gdb_assert (it != data->cu_index_htab.cend ());
26078       data->previous_cu_index = it->second;
26079       data->previous_valid = 1;
26080     }
26081   else
26082     data->previous_valid = 0;
26083
26084   return 0;
26085 }
26086
26087 /* Write OBJFILE's address map to ADDR_VEC.
26088    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
26089    in the index file.  */
26090
26091 static void
26092 write_address_map (struct objfile *objfile, data_buf &addr_vec,
26093                    psym_index_map &cu_index_htab)
26094 {
26095   struct addrmap_index_data addrmap_index_data (addr_vec, cu_index_htab);
26096
26097   /* When writing the address table, we have to cope with the fact that
26098      the addrmap iterator only provides the start of a region; we have to
26099      wait until the next invocation to get the start of the next region.  */
26100
26101   addrmap_index_data.objfile = objfile;
26102   addrmap_index_data.previous_valid = 0;
26103
26104   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
26105                    &addrmap_index_data);
26106
26107   /* It's highly unlikely the last entry (end address = 0xff...ff)
26108      is valid, but we should still handle it.
26109      The end address is recorded as the start of the next region, but that
26110      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
26111      anyway.  */
26112   if (addrmap_index_data.previous_valid)
26113     add_address_entry (objfile, addr_vec,
26114                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
26115                        addrmap_index_data.previous_cu_index);
26116 }
26117
26118 /* Return the symbol kind of PSYM.  */
26119
26120 static gdb_index_symbol_kind
26121 symbol_kind (struct partial_symbol *psym)
26122 {
26123   domain_enum domain = PSYMBOL_DOMAIN (psym);
26124   enum address_class aclass = PSYMBOL_CLASS (psym);
26125
26126   switch (domain)
26127     {
26128     case VAR_DOMAIN:
26129       switch (aclass)
26130         {
26131         case LOC_BLOCK:
26132           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
26133         case LOC_TYPEDEF:
26134           return GDB_INDEX_SYMBOL_KIND_TYPE;
26135         case LOC_COMPUTED:
26136         case LOC_CONST_BYTES:
26137         case LOC_OPTIMIZED_OUT:
26138         case LOC_STATIC:
26139           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
26140         case LOC_CONST:
26141           /* Note: It's currently impossible to recognize psyms as enum values
26142              short of reading the type info.  For now punt.  */
26143           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
26144         default:
26145           /* There are other LOC_FOO values that one might want to classify
26146              as variables, but dwarf2read.c doesn't currently use them.  */
26147           return GDB_INDEX_SYMBOL_KIND_OTHER;
26148         }
26149     case STRUCT_DOMAIN:
26150       return GDB_INDEX_SYMBOL_KIND_TYPE;
26151     default:
26152       return GDB_INDEX_SYMBOL_KIND_OTHER;
26153     }
26154 }
26155
26156 /* Add a list of partial symbols to SYMTAB.  */
26157
26158 static void
26159 write_psymbols (struct mapped_symtab *symtab,
26160                 std::unordered_set<partial_symbol *> &psyms_seen,
26161                 struct partial_symbol **psymp,
26162                 int count,
26163                 offset_type cu_index,
26164                 int is_static)
26165 {
26166   for (; count-- > 0; ++psymp)
26167     {
26168       struct partial_symbol *psym = *psymp;
26169
26170       if (SYMBOL_LANGUAGE (psym) == language_ada)
26171         error (_("Ada is not currently supported by the index"));
26172
26173       /* Only add a given psymbol once.  */
26174       if (psyms_seen.insert (psym).second)
26175         {
26176           gdb_index_symbol_kind kind = symbol_kind (psym);
26177
26178           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
26179                            is_static, kind, cu_index);
26180         }
26181     }
26182 }
26183
26184 /* A helper struct used when iterating over debug_types.  */
26185 struct signatured_type_index_data
26186 {
26187   signatured_type_index_data (data_buf &types_list_,
26188                               std::unordered_set<partial_symbol *> &psyms_seen_)
26189     : types_list (types_list_), psyms_seen (psyms_seen_)
26190   {}
26191
26192   struct objfile *objfile;
26193   struct mapped_symtab *symtab;
26194   data_buf &types_list;
26195   std::unordered_set<partial_symbol *> &psyms_seen;
26196   int cu_index;
26197 };
26198
26199 /* A helper function that writes a single signatured_type to an
26200    obstack.  */
26201
26202 static int
26203 write_one_signatured_type (void **slot, void *d)
26204 {
26205   struct signatured_type_index_data *info
26206     = (struct signatured_type_index_data *) d;
26207   struct signatured_type *entry = (struct signatured_type *) *slot;
26208   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
26209
26210   write_psymbols (info->symtab,
26211                   info->psyms_seen,
26212                   &info->objfile->global_psymbols[psymtab->globals_offset],
26213                   psymtab->n_global_syms, info->cu_index,
26214                   0);
26215   write_psymbols (info->symtab,
26216                   info->psyms_seen,
26217                   &info->objfile->static_psymbols[psymtab->statics_offset],
26218                   psymtab->n_static_syms, info->cu_index,
26219                   1);
26220
26221   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
26222                                 to_underlying (entry->per_cu.sect_off));
26223   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
26224                                 to_underlying (entry->type_offset_in_tu));
26225   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, entry->signature);
26226
26227   ++info->cu_index;
26228
26229   return 1;
26230 }
26231
26232 /* Recurse into all "included" dependencies and count their symbols as
26233    if they appeared in this psymtab.  */
26234
26235 static void
26236 recursively_count_psymbols (struct partial_symtab *psymtab,
26237                             size_t &psyms_seen)
26238 {
26239   for (int i = 0; i < psymtab->number_of_dependencies; ++i)
26240     if (psymtab->dependencies[i]->user != NULL)
26241       recursively_count_psymbols (psymtab->dependencies[i],
26242                                   psyms_seen);
26243
26244   psyms_seen += psymtab->n_global_syms;
26245   psyms_seen += psymtab->n_static_syms;
26246 }
26247
26248 /* Recurse into all "included" dependencies and write their symbols as
26249    if they appeared in this psymtab.  */
26250
26251 static void
26252 recursively_write_psymbols (struct objfile *objfile,
26253                             struct partial_symtab *psymtab,
26254                             struct mapped_symtab *symtab,
26255                             std::unordered_set<partial_symbol *> &psyms_seen,
26256                             offset_type cu_index)
26257 {
26258   int i;
26259
26260   for (i = 0; i < psymtab->number_of_dependencies; ++i)
26261     if (psymtab->dependencies[i]->user != NULL)
26262       recursively_write_psymbols (objfile, psymtab->dependencies[i],
26263                                   symtab, psyms_seen, cu_index);
26264
26265   write_psymbols (symtab,
26266                   psyms_seen,
26267                   &objfile->global_psymbols[psymtab->globals_offset],
26268                   psymtab->n_global_syms, cu_index,
26269                   0);
26270   write_psymbols (symtab,
26271                   psyms_seen,
26272                   &objfile->static_psymbols[psymtab->statics_offset],
26273                   psymtab->n_static_syms, cu_index,
26274                   1);
26275 }
26276
26277 /* DWARF-5 .debug_names builder.  */
26278 class debug_names
26279 {
26280 public:
26281   debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile, bool is_dwarf64,
26282                bfd_endian dwarf5_byte_order)
26283     : m_dwarf5_byte_order (dwarf5_byte_order),
26284       m_dwarf32 (dwarf5_byte_order),
26285       m_dwarf64 (dwarf5_byte_order),
26286       m_dwarf (is_dwarf64
26287                ? static_cast<dwarf &> (m_dwarf64)
26288                : static_cast<dwarf &> (m_dwarf32)),
26289       m_name_table_string_offs (m_dwarf.name_table_string_offs),
26290       m_name_table_entry_offs (m_dwarf.name_table_entry_offs),
26291       m_debugstrlookup (dwarf2_per_objfile)
26292   {}
26293
26294   int dwarf5_offset_size () const
26295   {
26296     const bool dwarf5_is_dwarf64 = &m_dwarf == &m_dwarf64;
26297     return dwarf5_is_dwarf64 ? 8 : 4;
26298   }
26299
26300   /* Is this symbol from DW_TAG_compile_unit or DW_TAG_type_unit?  */
26301   enum class unit_kind { cu, tu };
26302
26303   /* Insert one symbol.  */
26304   void insert (const partial_symbol *psym, int cu_index, bool is_static,
26305                unit_kind kind)
26306   {
26307     const int dwarf_tag = psymbol_tag (psym);
26308     if (dwarf_tag == 0)
26309       return;
26310     const char *const name = SYMBOL_SEARCH_NAME (psym);
26311     const auto insertpair
26312       = m_name_to_value_set.emplace (c_str_view (name),
26313                                      std::set<symbol_value> ());
26314     std::set<symbol_value> &value_set = insertpair.first->second;
26315     value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static, kind));
26316   }
26317
26318   /* Build all the tables.  All symbols must be already inserted.
26319      This function does not call file_write, caller has to do it
26320      afterwards.  */
26321   void build ()
26322   {
26323     /* Verify the build method has not be called twice.  */
26324     gdb_assert (m_abbrev_table.empty ());
26325     const size_t name_count = m_name_to_value_set.size ();
26326     m_bucket_table.resize
26327       (std::pow (2, std::ceil (std::log2 (name_count * 4 / 3))));
26328     m_hash_table.reserve (name_count);
26329     m_name_table_string_offs.reserve (name_count);
26330     m_name_table_entry_offs.reserve (name_count);
26331
26332     /* Map each hash of symbol to its name and value.  */
26333     struct hash_it_pair
26334     {
26335       uint32_t hash;
26336       decltype (m_name_to_value_set)::const_iterator it;
26337     };
26338     std::vector<std::forward_list<hash_it_pair>> bucket_hash;
26339     bucket_hash.resize (m_bucket_table.size ());
26340     for (decltype (m_name_to_value_set)::const_iterator it
26341            = m_name_to_value_set.cbegin ();
26342          it != m_name_to_value_set.cend ();
26343          ++it)
26344       {
26345         const char *const name = it->first.c_str ();
26346         const uint32_t hash = dwarf5_djb_hash (name);
26347         hash_it_pair hashitpair;
26348         hashitpair.hash = hash;
26349         hashitpair.it = it;
26350         auto &slot = bucket_hash[hash % bucket_hash.size()];
26351         slot.push_front (std::move (hashitpair));
26352       }
26353     for (size_t bucket_ix = 0; bucket_ix < bucket_hash.size (); ++bucket_ix)
26354       {
26355         const std::forward_list<hash_it_pair> &hashitlist
26356           = bucket_hash[bucket_ix];
26357         if (hashitlist.empty ())
26358           continue;
26359         uint32_t &bucket_slot = m_bucket_table[bucket_ix];
26360         /* The hashes array is indexed starting at 1.  */
26361         store_unsigned_integer (reinterpret_cast<gdb_byte *> (&bucket_slot),
26362                                 sizeof (bucket_slot), m_dwarf5_byte_order,
26363                                 m_hash_table.size () + 1);
26364         for (const hash_it_pair &hashitpair : hashitlist)
26365           {
26366             m_hash_table.push_back (0);
26367             store_unsigned_integer (reinterpret_cast<gdb_byte *>
26368                                                         (&m_hash_table.back ()),
26369                                     sizeof (m_hash_table.back ()),
26370                                     m_dwarf5_byte_order, hashitpair.hash);
26371             const c_str_view &name = hashitpair.it->first;
26372             const std::set<symbol_value> &value_set = hashitpair.it->second;
26373             m_name_table_string_offs.push_back_reorder
26374               (m_debugstrlookup.lookup (name.c_str ()));
26375             m_name_table_entry_offs.push_back_reorder (m_entry_pool.size ());
26376             gdb_assert (!value_set.empty ());
26377             for (const symbol_value &value : value_set)
26378               {
26379                 int &idx = m_indexkey_to_idx[index_key (value.dwarf_tag,
26380                                                         value.is_static,
26381                                                         value.kind)];
26382                 if (idx == 0)
26383                   {
26384                     idx = m_idx_next++;
26385                     m_abbrev_table.append_unsigned_leb128 (idx);
26386                     m_abbrev_table.append_unsigned_leb128 (value.dwarf_tag);
26387                     m_abbrev_table.append_unsigned_leb128
26388                               (value.kind == unit_kind::cu ? DW_IDX_compile_unit
26389                                                            : DW_IDX_type_unit);
26390                     m_abbrev_table.append_unsigned_leb128 (DW_FORM_udata);
26391                     m_abbrev_table.append_unsigned_leb128 (value.is_static
26392                                                            ? DW_IDX_GNU_internal
26393                                                            : DW_IDX_GNU_external);
26394                     m_abbrev_table.append_unsigned_leb128 (DW_FORM_flag_present);
26395
26396                     /* Terminate attributes list.  */
26397                     m_abbrev_table.append_unsigned_leb128 (0);
26398                     m_abbrev_table.append_unsigned_leb128 (0);
26399                   }
26400
26401                 m_entry_pool.append_unsigned_leb128 (idx);
26402                 m_entry_pool.append_unsigned_leb128 (value.cu_index);
26403               }
26404
26405             /* Terminate the list of CUs.  */
26406             m_entry_pool.append_unsigned_leb128 (0);
26407           }
26408       }
26409     gdb_assert (m_hash_table.size () == name_count);
26410
26411     /* Terminate tags list.  */
26412     m_abbrev_table.append_unsigned_leb128 (0);
26413   }
26414
26415   /* Return .debug_names bucket count.  This must be called only after
26416      calling the build method.  */
26417   uint32_t bucket_count () const
26418   {
26419     /* Verify the build method has been already called.  */
26420     gdb_assert (!m_abbrev_table.empty ());
26421     const uint32_t retval = m_bucket_table.size ();
26422
26423     /* Check for overflow.  */
26424     gdb_assert (retval == m_bucket_table.size ());
26425     return retval;
26426   }
26427
26428   /* Return .debug_names names count.  This must be called only after
26429      calling the build method.  */
26430   uint32_t name_count () const
26431   {
26432     /* Verify the build method has been already called.  */
26433     gdb_assert (!m_abbrev_table.empty ());
26434     const uint32_t retval = m_hash_table.size ();
26435
26436     /* Check for overflow.  */
26437     gdb_assert (retval == m_hash_table.size ());
26438     return retval;
26439   }
26440
26441   /* Return number of bytes of .debug_names abbreviation table.  This
26442      must be called only after calling the build method.  */
26443   uint32_t abbrev_table_bytes () const
26444   {
26445     gdb_assert (!m_abbrev_table.empty ());
26446     return m_abbrev_table.size ();
26447   }
26448
26449   /* Recurse into all "included" dependencies and store their symbols
26450      as if they appeared in this psymtab.  */
26451   void recursively_write_psymbols
26452     (struct objfile *objfile,
26453      struct partial_symtab *psymtab,
26454      std::unordered_set<partial_symbol *> &psyms_seen,
26455      int cu_index)
26456   {
26457     for (int i = 0; i < psymtab->number_of_dependencies; ++i)
26458       if (psymtab->dependencies[i]->user != NULL)
26459         recursively_write_psymbols (objfile, psymtab->dependencies[i],
26460                                     psyms_seen, cu_index);
26461
26462     write_psymbols (psyms_seen,
26463                     &objfile->global_psymbols[psymtab->globals_offset],
26464                     psymtab->n_global_syms, cu_index, false, unit_kind::cu);
26465     write_psymbols (psyms_seen,
26466                     &objfile->static_psymbols[psymtab->statics_offset],
26467                     psymtab->n_static_syms, cu_index, true, unit_kind::cu);
26468   }
26469
26470   /* Return number of bytes the .debug_names section will have.  This
26471      must be called only after calling the build method.  */
26472   size_t bytes () const
26473   {
26474     /* Verify the build method has been already called.  */
26475     gdb_assert (!m_abbrev_table.empty ());
26476     size_t expected_bytes = 0;
26477     expected_bytes += m_bucket_table.size () * sizeof (m_bucket_table[0]);
26478     expected_bytes += m_hash_table.size () * sizeof (m_hash_table[0]);
26479     expected_bytes += m_name_table_string_offs.bytes ();
26480     expected_bytes += m_name_table_entry_offs.bytes ();
26481     expected_bytes += m_abbrev_table.size ();
26482     expected_bytes += m_entry_pool.size ();
26483     return expected_bytes;
26484   }
26485
26486   /* Write .debug_names to FILE_NAMES and .debug_str addition to
26487      FILE_STR.  This must be called only after calling the build
26488      method.  */
26489   void file_write (FILE *file_names, FILE *file_str) const
26490   {
26491     /* Verify the build method has been already called.  */
26492     gdb_assert (!m_abbrev_table.empty ());
26493     ::file_write (file_names, m_bucket_table);
26494     ::file_write (file_names, m_hash_table);
26495     m_name_table_string_offs.file_write (file_names);
26496     m_name_table_entry_offs.file_write (file_names);
26497     m_abbrev_table.file_write (file_names);
26498     m_entry_pool.file_write (file_names);
26499     m_debugstrlookup.file_write (file_str);
26500   }
26501
26502   /* A helper user data for write_one_signatured_type.  */
26503   class write_one_signatured_type_data
26504   {
26505   public:
26506     write_one_signatured_type_data (debug_names &nametable_,
26507                                     signatured_type_index_data &&info_)
26508     : nametable (nametable_), info (std::move (info_))
26509     {}
26510     debug_names &nametable;
26511     struct signatured_type_index_data info;
26512   };
26513
26514   /* A helper function to pass write_one_signatured_type to
26515      htab_traverse_noresize.  */
26516   static int
26517   write_one_signatured_type (void **slot, void *d)
26518   {
26519     write_one_signatured_type_data *data = (write_one_signatured_type_data *) d;
26520     struct signatured_type_index_data *info = &data->info;
26521     struct signatured_type *entry = (struct signatured_type *) *slot;
26522
26523     data->nametable.write_one_signatured_type (entry, info);
26524
26525     return 1;
26526   }
26527
26528 private:
26529
26530   /* Storage for symbol names mapping them to their .debug_str section
26531      offsets.  */
26532   class debug_str_lookup
26533   {
26534   public:
26535
26536     /* Object costructor to be called for current DWARF2_PER_OBJFILE.
26537        All .debug_str section strings are automatically stored.  */
26538     debug_str_lookup (struct dwarf2_per_objfile *dwarf2_per_objfile)
26539       : m_abfd (dwarf2_per_objfile->objfile->obfd),
26540         m_dwarf2_per_objfile (dwarf2_per_objfile)
26541     {
26542       dwarf2_read_section (dwarf2_per_objfile->objfile,
26543                            &dwarf2_per_objfile->str);
26544       if (dwarf2_per_objfile->str.buffer == NULL)
26545         return;
26546       for (const gdb_byte *data = dwarf2_per_objfile->str.buffer;
26547            data < (dwarf2_per_objfile->str.buffer
26548                    + dwarf2_per_objfile->str.size);)
26549         {
26550           const char *const s = reinterpret_cast<const char *> (data);
26551           const auto insertpair
26552             = m_str_table.emplace (c_str_view (s),
26553                                    data - dwarf2_per_objfile->str.buffer);
26554           if (!insertpair.second)
26555             complaint (&symfile_complaints,
26556                        _("Duplicate string \"%s\" in "
26557                          ".debug_str section [in module %s]"),
26558                        s, bfd_get_filename (m_abfd));
26559           data += strlen (s) + 1;
26560         }
26561     }
26562
26563     /* Return offset of symbol name S in the .debug_str section.  Add
26564        such symbol to the section's end if it does not exist there
26565        yet.  */
26566     size_t lookup (const char *s)
26567     {
26568       const auto it = m_str_table.find (c_str_view (s));
26569       if (it != m_str_table.end ())
26570         return it->second;
26571       const size_t offset = (m_dwarf2_per_objfile->str.size
26572                              + m_str_add_buf.size ());
26573       m_str_table.emplace (c_str_view (s), offset);
26574       m_str_add_buf.append_cstr0 (s);
26575       return offset;
26576     }
26577
26578     /* Append the end of the .debug_str section to FILE.  */
26579     void file_write (FILE *file) const
26580     {
26581       m_str_add_buf.file_write (file);
26582     }
26583
26584   private:
26585     std::unordered_map<c_str_view, size_t, c_str_view_hasher> m_str_table;
26586     bfd *const m_abfd;
26587     struct dwarf2_per_objfile *m_dwarf2_per_objfile;
26588
26589     /* Data to add at the end of .debug_str for new needed symbol names.  */
26590     data_buf m_str_add_buf;
26591   };
26592
26593   /* Container to map used DWARF tags to their .debug_names abbreviation
26594      tags.  */
26595   class index_key
26596   {
26597   public:
26598     index_key (int dwarf_tag_, bool is_static_, unit_kind kind_)
26599       : dwarf_tag (dwarf_tag_), is_static (is_static_), kind (kind_)
26600     {
26601     }
26602
26603     bool
26604     operator== (const index_key &other) const
26605     {
26606       return (dwarf_tag == other.dwarf_tag && is_static == other.is_static
26607               && kind == other.kind);
26608     }
26609
26610     const int dwarf_tag;
26611     const bool is_static;
26612     const unit_kind kind;
26613   };
26614
26615   /* Provide std::unordered_map::hasher for index_key.  */
26616   class index_key_hasher
26617   {
26618   public:
26619     size_t
26620     operator () (const index_key &key) const
26621     {
26622       return (std::hash<int>() (key.dwarf_tag) << 1) | key.is_static;
26623     }
26624   };
26625
26626   /* Parameters of one symbol entry.  */
26627   class symbol_value
26628   {
26629   public:
26630     const int dwarf_tag, cu_index;
26631     const bool is_static;
26632     const unit_kind kind;
26633
26634     symbol_value (int dwarf_tag_, int cu_index_, bool is_static_,
26635                   unit_kind kind_)
26636       : dwarf_tag (dwarf_tag_), cu_index (cu_index_), is_static (is_static_),
26637         kind (kind_)
26638     {}
26639
26640     bool
26641     operator< (const symbol_value &other) const
26642     {
26643 #define X(n) \
26644   do \
26645     { \
26646       if (n < other.n) \
26647         return true; \
26648       if (n > other.n) \
26649         return false; \
26650     } \
26651   while (0)
26652       X (dwarf_tag);
26653       X (is_static);
26654       X (kind);
26655       X (cu_index);
26656 #undef X
26657       return false;
26658     }
26659   };
26660
26661   /* Abstract base class to unify DWARF-32 and DWARF-64 name table
26662      output.  */
26663   class offset_vec
26664   {
26665   protected:
26666     const bfd_endian dwarf5_byte_order;
26667   public:
26668     explicit offset_vec (bfd_endian dwarf5_byte_order_)
26669       : dwarf5_byte_order (dwarf5_byte_order_)
26670     {}
26671
26672     /* Call std::vector::reserve for NELEM elements.  */
26673     virtual void reserve (size_t nelem) = 0;
26674
26675     /* Call std::vector::push_back with store_unsigned_integer byte
26676        reordering for ELEM.  */
26677     virtual void push_back_reorder (size_t elem) = 0;
26678
26679     /* Return expected output size in bytes.  */
26680     virtual size_t bytes () const = 0;
26681
26682     /* Write name table to FILE.  */
26683     virtual void file_write (FILE *file) const = 0;
26684   };
26685
26686   /* Template to unify DWARF-32 and DWARF-64 output.  */
26687   template<typename OffsetSize>
26688   class offset_vec_tmpl : public offset_vec
26689   {
26690   public:
26691     explicit offset_vec_tmpl (bfd_endian dwarf5_byte_order_)
26692       : offset_vec (dwarf5_byte_order_)
26693     {}
26694
26695     /* Implement offset_vec::reserve.  */
26696     void reserve (size_t nelem) override
26697     {
26698       m_vec.reserve (nelem);
26699     }
26700
26701     /* Implement offset_vec::push_back_reorder.  */
26702     void push_back_reorder (size_t elem) override
26703     {
26704       m_vec.push_back (elem);
26705       /* Check for overflow.  */
26706       gdb_assert (m_vec.back () == elem);
26707       store_unsigned_integer (reinterpret_cast<gdb_byte *> (&m_vec.back ()),
26708                               sizeof (m_vec.back ()), dwarf5_byte_order, elem);
26709     }
26710
26711     /* Implement offset_vec::bytes.  */
26712     size_t bytes () const override
26713     {
26714       return m_vec.size () * sizeof (m_vec[0]);
26715     }
26716
26717     /* Implement offset_vec::file_write.  */
26718     void file_write (FILE *file) const override
26719     {
26720       ::file_write (file, m_vec);
26721     }
26722
26723   private:
26724     std::vector<OffsetSize> m_vec;
26725   };
26726
26727   /* Base class to unify DWARF-32 and DWARF-64 .debug_names output
26728      respecting name table width.  */
26729   class dwarf
26730   {
26731   public:
26732     offset_vec &name_table_string_offs, &name_table_entry_offs;
26733
26734     dwarf (offset_vec &name_table_string_offs_,
26735            offset_vec &name_table_entry_offs_)
26736       : name_table_string_offs (name_table_string_offs_),
26737         name_table_entry_offs (name_table_entry_offs_)
26738     {
26739     }
26740   };
26741
26742   /* Template to unify DWARF-32 and DWARF-64 .debug_names output
26743      respecting name table width.  */
26744   template<typename OffsetSize>
26745   class dwarf_tmpl : public dwarf
26746   {
26747   public:
26748     explicit dwarf_tmpl (bfd_endian dwarf5_byte_order_)
26749       : dwarf (m_name_table_string_offs, m_name_table_entry_offs),
26750         m_name_table_string_offs (dwarf5_byte_order_),
26751         m_name_table_entry_offs (dwarf5_byte_order_)
26752     {}
26753
26754   private:
26755     offset_vec_tmpl<OffsetSize> m_name_table_string_offs;
26756     offset_vec_tmpl<OffsetSize> m_name_table_entry_offs;
26757   };
26758
26759   /* Try to reconstruct original DWARF tag for given partial_symbol.
26760      This function is not DWARF-5 compliant but it is sufficient for
26761      GDB as a DWARF-5 index consumer.  */
26762   static int psymbol_tag (const struct partial_symbol *psym)
26763   {
26764     domain_enum domain = PSYMBOL_DOMAIN (psym);
26765     enum address_class aclass = PSYMBOL_CLASS (psym);
26766
26767     switch (domain)
26768       {
26769       case VAR_DOMAIN:
26770         switch (aclass)
26771           {
26772           case LOC_BLOCK:
26773             return DW_TAG_subprogram;
26774           case LOC_TYPEDEF:
26775             return DW_TAG_typedef;
26776           case LOC_COMPUTED:
26777           case LOC_CONST_BYTES:
26778           case LOC_OPTIMIZED_OUT:
26779           case LOC_STATIC:
26780             return DW_TAG_variable;
26781           case LOC_CONST:
26782             /* Note: It's currently impossible to recognize psyms as enum values
26783                short of reading the type info.  For now punt.  */
26784             return DW_TAG_variable;
26785           default:
26786             /* There are other LOC_FOO values that one might want to classify
26787                as variables, but dwarf2read.c doesn't currently use them.  */
26788             return DW_TAG_variable;
26789           }
26790       case STRUCT_DOMAIN:
26791         return DW_TAG_structure_type;
26792       default:
26793         return 0;
26794       }
26795   }
26796
26797   /* Call insert for all partial symbols and mark them in PSYMS_SEEN.  */
26798   void write_psymbols (std::unordered_set<partial_symbol *> &psyms_seen,
26799                        struct partial_symbol **psymp, int count, int cu_index,
26800                        bool is_static, unit_kind kind)
26801   {
26802     for (; count-- > 0; ++psymp)
26803       {
26804         struct partial_symbol *psym = *psymp;
26805
26806         if (SYMBOL_LANGUAGE (psym) == language_ada)
26807           error (_("Ada is not currently supported by the index"));
26808
26809         /* Only add a given psymbol once.  */
26810         if (psyms_seen.insert (psym).second)
26811           insert (psym, cu_index, is_static, kind);
26812       }
26813   }
26814
26815   /* A helper function that writes a single signatured_type
26816      to a debug_names.  */
26817   void
26818   write_one_signatured_type (struct signatured_type *entry,
26819                              struct signatured_type_index_data *info)
26820   {
26821     struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
26822
26823     write_psymbols (info->psyms_seen,
26824                     &info->objfile->global_psymbols[psymtab->globals_offset],
26825                     psymtab->n_global_syms, info->cu_index, false,
26826                     unit_kind::tu);
26827     write_psymbols (info->psyms_seen,
26828                     &info->objfile->static_psymbols[psymtab->statics_offset],
26829                     psymtab->n_static_syms, info->cu_index, true,
26830                     unit_kind::tu);
26831
26832     info->types_list.append_uint (dwarf5_offset_size (), m_dwarf5_byte_order,
26833                                   to_underlying (entry->per_cu.sect_off));
26834
26835     ++info->cu_index;
26836   }
26837
26838   /* Store value of each symbol.  */
26839   std::unordered_map<c_str_view, std::set<symbol_value>, c_str_view_hasher>
26840     m_name_to_value_set;
26841
26842   /* Tables of DWARF-5 .debug_names.  They are in object file byte
26843      order.  */
26844   std::vector<uint32_t> m_bucket_table;
26845   std::vector<uint32_t> m_hash_table;
26846
26847   const bfd_endian m_dwarf5_byte_order;
26848   dwarf_tmpl<uint32_t> m_dwarf32;
26849   dwarf_tmpl<uint64_t> m_dwarf64;
26850   dwarf &m_dwarf;
26851   offset_vec &m_name_table_string_offs, &m_name_table_entry_offs;
26852   debug_str_lookup m_debugstrlookup;
26853
26854   /* Map each used .debug_names abbreviation tag parameter to its
26855      index value.  */
26856   std::unordered_map<index_key, int, index_key_hasher> m_indexkey_to_idx;
26857
26858   /* Next unused .debug_names abbreviation tag for
26859      m_indexkey_to_idx.  */
26860   int m_idx_next = 1;
26861
26862   /* .debug_names abbreviation table.  */
26863   data_buf m_abbrev_table;
26864
26865   /* .debug_names entry pool.  */
26866   data_buf m_entry_pool;
26867 };
26868
26869 /* Return iff any of the needed offsets does not fit into 32-bit
26870    .debug_names section.  */
26871
26872 static bool
26873 check_dwarf64_offsets (struct dwarf2_per_objfile *dwarf2_per_objfile)
26874 {
26875   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26876     {
26877       const dwarf2_per_cu_data &per_cu = *dwarf2_per_objfile->all_comp_units[i];
26878
26879       if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
26880         return true;
26881     }
26882   for (int i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
26883     {
26884       const signatured_type &sigtype = *dwarf2_per_objfile->all_type_units[i];
26885       const dwarf2_per_cu_data &per_cu = sigtype.per_cu;
26886
26887       if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
26888         return true;
26889     }
26890   return false;
26891 }
26892
26893 /* The psyms_seen set is potentially going to be largish (~40k
26894    elements when indexing a -g3 build of GDB itself).  Estimate the
26895    number of elements in order to avoid too many rehashes, which
26896    require rebuilding buckets and thus many trips to
26897    malloc/free.  */
26898
26899 static size_t
26900 psyms_seen_size (struct dwarf2_per_objfile *dwarf2_per_objfile)
26901 {
26902   size_t psyms_count = 0;
26903   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26904     {
26905       struct dwarf2_per_cu_data *per_cu
26906         = dwarf2_per_objfile->all_comp_units[i];
26907       struct partial_symtab *psymtab = per_cu->v.psymtab;
26908
26909       if (psymtab != NULL && psymtab->user == NULL)
26910         recursively_count_psymbols (psymtab, psyms_count);
26911     }
26912   /* Generating an index for gdb itself shows a ratio of
26913      TOTAL_SEEN_SYMS/UNIQUE_SYMS or ~5.  4 seems like a good bet.  */
26914   return psyms_count / 4;
26915 }
26916
26917 /* Write new .gdb_index section for OBJFILE into OUT_FILE.
26918    Return how many bytes were expected to be written into OUT_FILE.  */
26919
26920 static size_t
26921 write_gdbindex (struct dwarf2_per_objfile *dwarf2_per_objfile, FILE *out_file)
26922 {
26923   struct objfile *objfile = dwarf2_per_objfile->objfile;
26924   mapped_symtab symtab;
26925   data_buf cu_list;
26926
26927   /* While we're scanning CU's create a table that maps a psymtab pointer
26928      (which is what addrmap records) to its index (which is what is recorded
26929      in the index file).  This will later be needed to write the address
26930      table.  */
26931   psym_index_map cu_index_htab;
26932   cu_index_htab.reserve (dwarf2_per_objfile->n_comp_units);
26933
26934   /* The CU list is already sorted, so we don't need to do additional
26935      work here.  Also, the debug_types entries do not appear in
26936      all_comp_units, but only in their own hash table.  */
26937
26938   std::unordered_set<partial_symbol *> psyms_seen
26939     (psyms_seen_size (dwarf2_per_objfile));
26940   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26941     {
26942       struct dwarf2_per_cu_data *per_cu
26943         = dwarf2_per_objfile->all_comp_units[i];
26944       struct partial_symtab *psymtab = per_cu->v.psymtab;
26945
26946       /* CU of a shared file from 'dwz -m' may be unused by this main file.
26947          It may be referenced from a local scope but in such case it does not
26948          need to be present in .gdb_index.  */
26949       if (psymtab == NULL)
26950         continue;
26951
26952       if (psymtab->user == NULL)
26953         recursively_write_psymbols (objfile, psymtab, &symtab,
26954                                     psyms_seen, i);
26955
26956       const auto insertpair = cu_index_htab.emplace (psymtab, i);
26957       gdb_assert (insertpair.second);
26958
26959       cu_list.append_uint (8, BFD_ENDIAN_LITTLE,
26960                            to_underlying (per_cu->sect_off));
26961       cu_list.append_uint (8, BFD_ENDIAN_LITTLE, per_cu->length);
26962     }
26963
26964   /* Dump the address map.  */
26965   data_buf addr_vec;
26966   write_address_map (objfile, addr_vec, cu_index_htab);
26967
26968   /* Write out the .debug_type entries, if any.  */
26969   data_buf types_cu_list;
26970   if (dwarf2_per_objfile->signatured_types)
26971     {
26972       signatured_type_index_data sig_data (types_cu_list,
26973                                            psyms_seen);
26974
26975       sig_data.objfile = objfile;
26976       sig_data.symtab = &symtab;
26977       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
26978       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
26979                               write_one_signatured_type, &sig_data);
26980     }
26981
26982   /* Now that we've processed all symbols we can shrink their cu_indices
26983      lists.  */
26984   uniquify_cu_indices (&symtab);
26985
26986   data_buf symtab_vec, constant_pool;
26987   write_hash_table (&symtab, symtab_vec, constant_pool);
26988
26989   data_buf contents;
26990   const offset_type size_of_contents = 6 * sizeof (offset_type);
26991   offset_type total_len = size_of_contents;
26992
26993   /* The version number.  */
26994   contents.append_data (MAYBE_SWAP (8));
26995
26996   /* The offset of the CU list from the start of the file.  */
26997   contents.append_data (MAYBE_SWAP (total_len));
26998   total_len += cu_list.size ();
26999
27000   /* The offset of the types CU list from the start of the file.  */
27001   contents.append_data (MAYBE_SWAP (total_len));
27002   total_len += types_cu_list.size ();
27003
27004   /* The offset of the address table from the start of the file.  */
27005   contents.append_data (MAYBE_SWAP (total_len));
27006   total_len += addr_vec.size ();
27007
27008   /* The offset of the symbol table from the start of the file.  */
27009   contents.append_data (MAYBE_SWAP (total_len));
27010   total_len += symtab_vec.size ();
27011
27012   /* The offset of the constant pool from the start of the file.  */
27013   contents.append_data (MAYBE_SWAP (total_len));
27014   total_len += constant_pool.size ();
27015
27016   gdb_assert (contents.size () == size_of_contents);
27017
27018   contents.file_write (out_file);
27019   cu_list.file_write (out_file);
27020   types_cu_list.file_write (out_file);
27021   addr_vec.file_write (out_file);
27022   symtab_vec.file_write (out_file);
27023   constant_pool.file_write (out_file);
27024
27025   return total_len;
27026 }
27027
27028 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
27029 static const gdb_byte dwarf5_gdb_augmentation[] = { 'G', 'D', 'B', 0 };
27030
27031 /* Write a new .debug_names section for OBJFILE into OUT_FILE, write
27032    needed addition to .debug_str section to OUT_FILE_STR.  Return how
27033    many bytes were expected to be written into OUT_FILE.  */
27034
27035 static size_t
27036 write_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
27037                    FILE *out_file, FILE *out_file_str)
27038 {
27039   const bool dwarf5_is_dwarf64 = check_dwarf64_offsets (dwarf2_per_objfile);
27040   struct objfile *objfile = dwarf2_per_objfile->objfile;
27041   const enum bfd_endian dwarf5_byte_order
27042     = gdbarch_byte_order (get_objfile_arch (objfile));
27043
27044   /* The CU list is already sorted, so we don't need to do additional
27045      work here.  Also, the debug_types entries do not appear in
27046      all_comp_units, but only in their own hash table.  */
27047   data_buf cu_list;
27048   debug_names nametable (dwarf2_per_objfile, dwarf5_is_dwarf64,
27049                          dwarf5_byte_order);
27050   std::unordered_set<partial_symbol *>
27051     psyms_seen (psyms_seen_size (dwarf2_per_objfile));
27052   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
27053     {
27054       const dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->all_comp_units[i];
27055       partial_symtab *psymtab = per_cu->v.psymtab;
27056
27057       /* CU of a shared file from 'dwz -m' may be unused by this main
27058          file.  It may be referenced from a local scope but in such
27059          case it does not need to be present in .debug_names.  */
27060       if (psymtab == NULL)
27061         continue;
27062
27063       if (psymtab->user == NULL)
27064         nametable.recursively_write_psymbols (objfile, psymtab, psyms_seen, i);
27065
27066       cu_list.append_uint (nametable.dwarf5_offset_size (), dwarf5_byte_order,
27067                            to_underlying (per_cu->sect_off));
27068     }
27069
27070   /* Write out the .debug_type entries, if any.  */
27071   data_buf types_cu_list;
27072   if (dwarf2_per_objfile->signatured_types)
27073     {
27074       debug_names::write_one_signatured_type_data sig_data (nametable,
27075                         signatured_type_index_data (types_cu_list, psyms_seen));
27076
27077       sig_data.info.objfile = objfile;
27078       /* It is used only for gdb_index.  */
27079       sig_data.info.symtab = nullptr;
27080       sig_data.info.cu_index = 0;
27081       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
27082                               debug_names::write_one_signatured_type,
27083                               &sig_data);
27084     }
27085
27086   nametable.build ();
27087
27088   /* No addr_vec - DWARF-5 uses .debug_aranges generated by GCC.  */
27089
27090   const offset_type bytes_of_header
27091     = ((dwarf5_is_dwarf64 ? 12 : 4)
27092        + 2 + 2 + 7 * 4
27093        + sizeof (dwarf5_gdb_augmentation));
27094   size_t expected_bytes = 0;
27095   expected_bytes += bytes_of_header;
27096   expected_bytes += cu_list.size ();
27097   expected_bytes += types_cu_list.size ();
27098   expected_bytes += nametable.bytes ();
27099   data_buf header;
27100
27101   if (!dwarf5_is_dwarf64)
27102     {
27103       const uint64_t size64 = expected_bytes - 4;
27104       gdb_assert (size64 < 0xfffffff0);
27105       header.append_uint (4, dwarf5_byte_order, size64);
27106     }
27107   else
27108     {
27109       header.append_uint (4, dwarf5_byte_order, 0xffffffff);
27110       header.append_uint (8, dwarf5_byte_order, expected_bytes - 12);
27111     }
27112
27113   /* The version number.  */
27114   header.append_uint (2, dwarf5_byte_order, 5);
27115
27116   /* Padding.  */
27117   header.append_uint (2, dwarf5_byte_order, 0);
27118
27119   /* comp_unit_count - The number of CUs in the CU list.  */
27120   header.append_uint (4, dwarf5_byte_order, dwarf2_per_objfile->n_comp_units);
27121
27122   /* local_type_unit_count - The number of TUs in the local TU
27123      list.  */
27124   header.append_uint (4, dwarf5_byte_order, dwarf2_per_objfile->n_type_units);
27125
27126   /* foreign_type_unit_count - The number of TUs in the foreign TU
27127      list.  */
27128   header.append_uint (4, dwarf5_byte_order, 0);
27129
27130   /* bucket_count - The number of hash buckets in the hash lookup
27131      table.  */
27132   header.append_uint (4, dwarf5_byte_order, nametable.bucket_count ());
27133
27134   /* name_count - The number of unique names in the index.  */
27135   header.append_uint (4, dwarf5_byte_order, nametable.name_count ());
27136
27137   /* abbrev_table_size - The size in bytes of the abbreviations
27138      table.  */
27139   header.append_uint (4, dwarf5_byte_order, nametable.abbrev_table_bytes ());
27140
27141   /* augmentation_string_size - The size in bytes of the augmentation
27142      string.  This value is rounded up to a multiple of 4.  */
27143   static_assert (sizeof (dwarf5_gdb_augmentation) % 4 == 0, "");
27144   header.append_uint (4, dwarf5_byte_order, sizeof (dwarf5_gdb_augmentation));
27145   header.append_data (dwarf5_gdb_augmentation);
27146
27147   gdb_assert (header.size () == bytes_of_header);
27148
27149   header.file_write (out_file);
27150   cu_list.file_write (out_file);
27151   types_cu_list.file_write (out_file);
27152   nametable.file_write (out_file, out_file_str);
27153
27154   return expected_bytes;
27155 }
27156
27157 /* Assert that FILE's size is EXPECTED_SIZE.  Assumes file's seek
27158    position is at the end of the file.  */
27159
27160 static void
27161 assert_file_size (FILE *file, const char *filename, size_t expected_size)
27162 {
27163   const auto file_size = ftell (file);
27164   if (file_size == -1)
27165     error (_("Can't get `%s' size"), filename);
27166   gdb_assert (file_size == expected_size);
27167 }
27168
27169 /* Create an index file for OBJFILE in the directory DIR.  */
27170
27171 static void
27172 write_psymtabs_to_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
27173                          const char *dir,
27174                          dw_index_kind index_kind)
27175 {
27176   struct objfile *objfile = dwarf2_per_objfile->objfile;
27177
27178   if (dwarf2_per_objfile->using_index)
27179     error (_("Cannot use an index to create the index"));
27180
27181   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
27182     error (_("Cannot make an index when the file has multiple .debug_types sections"));
27183
27184   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
27185     return;
27186
27187   struct stat st;
27188   if (stat (objfile_name (objfile), &st) < 0)
27189     perror_with_name (objfile_name (objfile));
27190
27191   std::string filename (std::string (dir) + SLASH_STRING
27192                         + lbasename (objfile_name (objfile))
27193                         + (index_kind == dw_index_kind::DEBUG_NAMES
27194                            ? INDEX5_SUFFIX : INDEX4_SUFFIX));
27195
27196   FILE *out_file = gdb_fopen_cloexec (filename.c_str (), "wb").release ();
27197   if (!out_file)
27198     error (_("Can't open `%s' for writing"), filename.c_str ());
27199
27200   /* Order matters here; we want FILE to be closed before FILENAME is
27201      unlinked, because on MS-Windows one cannot delete a file that is
27202      still open.  (Don't call anything here that might throw until
27203      file_closer is created.)  */
27204   gdb::unlinker unlink_file (filename.c_str ());
27205   gdb_file_up close_out_file (out_file);
27206
27207   if (index_kind == dw_index_kind::DEBUG_NAMES)
27208     {
27209       std::string filename_str (std::string (dir) + SLASH_STRING
27210                                 + lbasename (objfile_name (objfile))
27211                                 + DEBUG_STR_SUFFIX);
27212       FILE *out_file_str
27213         = gdb_fopen_cloexec (filename_str.c_str (), "wb").release ();
27214       if (!out_file_str)
27215         error (_("Can't open `%s' for writing"), filename_str.c_str ());
27216       gdb::unlinker unlink_file_str (filename_str.c_str ());
27217       gdb_file_up close_out_file_str (out_file_str);
27218
27219       const size_t total_len
27220         = write_debug_names (dwarf2_per_objfile, out_file, out_file_str);
27221       assert_file_size (out_file, filename.c_str (), total_len);
27222
27223       /* We want to keep the file .debug_str file too.  */
27224       unlink_file_str.keep ();
27225     }
27226   else
27227     {
27228       const size_t total_len
27229         = write_gdbindex (dwarf2_per_objfile, out_file);
27230       assert_file_size (out_file, filename.c_str (), total_len);
27231     }
27232
27233   /* We want to keep the file.  */
27234   unlink_file.keep ();
27235 }
27236
27237 /* Implementation of the `save gdb-index' command.
27238    
27239    Note that the .gdb_index file format used by this command is
27240    documented in the GDB manual.  Any changes here must be documented
27241    there.  */
27242
27243 static void
27244 save_gdb_index_command (const char *arg, int from_tty)
27245 {
27246   struct objfile *objfile;
27247   const char dwarf5space[] = "-dwarf-5 ";
27248   dw_index_kind index_kind = dw_index_kind::GDB_INDEX;
27249
27250   if (!arg)
27251     arg = "";
27252
27253   arg = skip_spaces (arg);
27254   if (strncmp (arg, dwarf5space, strlen (dwarf5space)) == 0)
27255     {
27256       index_kind = dw_index_kind::DEBUG_NAMES;
27257       arg += strlen (dwarf5space);
27258       arg = skip_spaces (arg);
27259     }
27260
27261   if (!*arg)
27262     error (_("usage: save gdb-index [-dwarf-5] DIRECTORY"));
27263
27264   ALL_OBJFILES (objfile)
27265   {
27266     struct stat st;
27267
27268     /* If the objfile does not correspond to an actual file, skip it.  */
27269     if (stat (objfile_name (objfile), &st) < 0)
27270       continue;
27271
27272     struct dwarf2_per_objfile *dwarf2_per_objfile
27273       = get_dwarf2_per_objfile (objfile);
27274
27275     if (dwarf2_per_objfile != NULL)
27276       {
27277         TRY
27278           {
27279             write_psymtabs_to_index (dwarf2_per_objfile, arg, index_kind);
27280           }
27281         CATCH (except, RETURN_MASK_ERROR)
27282           {
27283             exception_fprintf (gdb_stderr, except,
27284                                _("Error while writing index for `%s': "),
27285                                objfile_name (objfile));
27286           }
27287         END_CATCH
27288       }
27289
27290   }
27291 }
27292
27293 \f
27294
27295 int dwarf_always_disassemble;
27296
27297 static void
27298 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
27299                                struct cmd_list_element *c, const char *value)
27300 {
27301   fprintf_filtered (file,
27302                     _("Whether to always disassemble "
27303                       "DWARF expressions is %s.\n"),
27304                     value);
27305 }
27306
27307 static void
27308 show_check_physname (struct ui_file *file, int from_tty,
27309                      struct cmd_list_element *c, const char *value)
27310 {
27311   fprintf_filtered (file,
27312                     _("Whether to check \"physname\" is %s.\n"),
27313                     value);
27314 }
27315
27316 void
27317 _initialize_dwarf2_read (void)
27318 {
27319   struct cmd_list_element *c;
27320
27321   dwarf2_objfile_data_key
27322     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
27323
27324   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
27325 Set DWARF specific variables.\n\
27326 Configure DWARF variables such as the cache size"),
27327                   &set_dwarf_cmdlist, "maintenance set dwarf ",
27328                   0/*allow-unknown*/, &maintenance_set_cmdlist);
27329
27330   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
27331 Show DWARF specific variables\n\
27332 Show DWARF variables such as the cache size"),
27333                   &show_dwarf_cmdlist, "maintenance show dwarf ",
27334                   0/*allow-unknown*/, &maintenance_show_cmdlist);
27335
27336   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
27337                             &dwarf_max_cache_age, _("\
27338 Set the upper bound on the age of cached DWARF compilation units."), _("\
27339 Show the upper bound on the age of cached DWARF compilation units."), _("\
27340 A higher limit means that cached compilation units will be stored\n\
27341 in memory longer, and more total memory will be used.  Zero disables\n\
27342 caching, which can slow down startup."),
27343                             NULL,
27344                             show_dwarf_max_cache_age,
27345                             &set_dwarf_cmdlist,
27346                             &show_dwarf_cmdlist);
27347
27348   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
27349                            &dwarf_always_disassemble, _("\
27350 Set whether `info address' always disassembles DWARF expressions."), _("\
27351 Show whether `info address' always disassembles DWARF expressions."), _("\
27352 When enabled, DWARF expressions are always printed in an assembly-like\n\
27353 syntax.  When disabled, expressions will be printed in a more\n\
27354 conversational style, when possible."),
27355                            NULL,
27356                            show_dwarf_always_disassemble,
27357                            &set_dwarf_cmdlist,
27358                            &show_dwarf_cmdlist);
27359
27360   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
27361 Set debugging of the DWARF reader."), _("\
27362 Show debugging of the DWARF reader."), _("\
27363 When enabled (non-zero), debugging messages are printed during DWARF\n\
27364 reading and symtab expansion.  A value of 1 (one) provides basic\n\
27365 information.  A value greater than 1 provides more verbose information."),
27366                             NULL,
27367                             NULL,
27368                             &setdebuglist, &showdebuglist);
27369
27370   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
27371 Set debugging of the DWARF DIE reader."), _("\
27372 Show debugging of the DWARF DIE reader."), _("\
27373 When enabled (non-zero), DIEs are dumped after they are read in.\n\
27374 The value is the maximum depth to print."),
27375                              NULL,
27376                              NULL,
27377                              &setdebuglist, &showdebuglist);
27378
27379   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
27380 Set debugging of the dwarf line reader."), _("\
27381 Show debugging of the dwarf line reader."), _("\
27382 When enabled (non-zero), line number entries are dumped as they are read in.\n\
27383 A value of 1 (one) provides basic information.\n\
27384 A value greater than 1 provides more verbose information."),
27385                              NULL,
27386                              NULL,
27387                              &setdebuglist, &showdebuglist);
27388
27389   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
27390 Set cross-checking of \"physname\" code against demangler."), _("\
27391 Show cross-checking of \"physname\" code against demangler."), _("\
27392 When enabled, GDB's internal \"physname\" code is checked against\n\
27393 the demangler."),
27394                            NULL, show_check_physname,
27395                            &setdebuglist, &showdebuglist);
27396
27397   add_setshow_boolean_cmd ("use-deprecated-index-sections",
27398                            no_class, &use_deprecated_index_sections, _("\
27399 Set whether to use deprecated gdb_index sections."), _("\
27400 Show whether to use deprecated gdb_index sections."), _("\
27401 When enabled, deprecated .gdb_index sections are used anyway.\n\
27402 Normally they are ignored either because of a missing feature or\n\
27403 performance issue.\n\
27404 Warning: This option must be enabled before gdb reads the file."),
27405                            NULL,
27406                            NULL,
27407                            &setlist, &showlist);
27408
27409   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
27410                _("\
27411 Save a gdb-index file.\n\
27412 Usage: save gdb-index [-dwarf-5] DIRECTORY\n\
27413 \n\
27414 No options create one file with .gdb-index extension for pre-DWARF-5\n\
27415 compatible .gdb_index section.  With -dwarf-5 creates two files with\n\
27416 extension .debug_names and .debug_str for DWARF-5 .debug_names section."),
27417                &save_cmdlist);
27418   set_cmd_completer (c, filename_completer);
27419
27420   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
27421                                                         &dwarf2_locexpr_funcs);
27422   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
27423                                                         &dwarf2_loclist_funcs);
27424
27425   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
27426                                         &dwarf2_block_frame_base_locexpr_funcs);
27427   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
27428                                         &dwarf2_block_frame_base_loclist_funcs);
27429
27430 #if GDB_SELF_TEST
27431   selftests::register_test ("dw2_expand_symtabs_matching",
27432                             selftests::dw2_expand_symtabs_matching::run_test);
27433 #endif
27434 }