Fix breakpoint add on inlined function using function name.
[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           || pdi->tag == DW_TAG_inlined_subroutine)
9070         {
9071           switch (pdi->tag)
9072             {
9073             case DW_TAG_subprogram:
9074             case DW_TAG_inlined_subroutine:
9075               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9076               break;
9077             case DW_TAG_constant:
9078             case DW_TAG_variable:
9079             case DW_TAG_typedef:
9080             case DW_TAG_union_type:
9081               if (!pdi->is_declaration)
9082                 {
9083                   add_partial_symbol (pdi, cu);
9084                 }
9085               break;
9086             case DW_TAG_class_type:
9087             case DW_TAG_interface_type:
9088             case DW_TAG_structure_type:
9089               if (!pdi->is_declaration)
9090                 {
9091                   add_partial_symbol (pdi, cu);
9092                 }
9093               if (cu->language == language_rust && pdi->has_children)
9094                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
9095                                       set_addrmap, cu);
9096               break;
9097             case DW_TAG_enumeration_type:
9098               if (!pdi->is_declaration)
9099                 add_partial_enumeration (pdi, cu);
9100               break;
9101             case DW_TAG_base_type:
9102             case DW_TAG_subrange_type:
9103               /* File scope base type definitions are added to the partial
9104                  symbol table.  */
9105               add_partial_symbol (pdi, cu);
9106               break;
9107             case DW_TAG_namespace:
9108               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
9109               break;
9110             case DW_TAG_module:
9111               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
9112               break;
9113             case DW_TAG_imported_unit:
9114               {
9115                 struct dwarf2_per_cu_data *per_cu;
9116
9117                 /* For now we don't handle imported units in type units.  */
9118                 if (cu->per_cu->is_debug_types)
9119                   {
9120                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
9121                              " supported in type units [in module %s]"),
9122                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
9123                   }
9124
9125                 per_cu = dwarf2_find_containing_comp_unit
9126                            (pdi->d.sect_off, pdi->is_dwz,
9127                             cu->per_cu->dwarf2_per_objfile);
9128
9129                 /* Go read the partial unit, if needed.  */
9130                 if (per_cu->v.psymtab == NULL)
9131                   process_psymtab_comp_unit (per_cu, 1, cu->language);
9132
9133                 VEC_safe_push (dwarf2_per_cu_ptr,
9134                                cu->per_cu->imported_symtabs, per_cu);
9135               }
9136               break;
9137             case DW_TAG_imported_declaration:
9138               add_partial_symbol (pdi, cu);
9139               break;
9140             default:
9141               break;
9142             }
9143         }
9144
9145       /* If the die has a sibling, skip to the sibling.  */
9146
9147       pdi = pdi->die_sibling;
9148     }
9149 }
9150
9151 /* Functions used to compute the fully scoped name of a partial DIE.
9152
9153    Normally, this is simple.  For C++, the parent DIE's fully scoped
9154    name is concatenated with "::" and the partial DIE's name.
9155    Enumerators are an exception; they use the scope of their parent
9156    enumeration type, i.e. the name of the enumeration type is not
9157    prepended to the enumerator.
9158
9159    There are two complexities.  One is DW_AT_specification; in this
9160    case "parent" means the parent of the target of the specification,
9161    instead of the direct parent of the DIE.  The other is compilers
9162    which do not emit DW_TAG_namespace; in this case we try to guess
9163    the fully qualified name of structure types from their members'
9164    linkage names.  This must be done using the DIE's children rather
9165    than the children of any DW_AT_specification target.  We only need
9166    to do this for structures at the top level, i.e. if the target of
9167    any DW_AT_specification (if any; otherwise the DIE itself) does not
9168    have a parent.  */
9169
9170 /* Compute the scope prefix associated with PDI's parent, in
9171    compilation unit CU.  The result will be allocated on CU's
9172    comp_unit_obstack, or a copy of the already allocated PDI->NAME
9173    field.  NULL is returned if no prefix is necessary.  */
9174 static const char *
9175 partial_die_parent_scope (struct partial_die_info *pdi,
9176                           struct dwarf2_cu *cu)
9177 {
9178   const char *grandparent_scope;
9179   struct partial_die_info *parent, *real_pdi;
9180
9181   /* We need to look at our parent DIE; if we have a DW_AT_specification,
9182      then this means the parent of the specification DIE.  */
9183
9184   real_pdi = pdi;
9185   while (real_pdi->has_specification)
9186     real_pdi = find_partial_die (real_pdi->spec_offset,
9187                                  real_pdi->spec_is_dwz, cu);
9188
9189   parent = real_pdi->die_parent;
9190   if (parent == NULL)
9191     return NULL;
9192
9193   if (parent->scope_set)
9194     return parent->scope;
9195
9196   fixup_partial_die (parent, cu);
9197
9198   grandparent_scope = partial_die_parent_scope (parent, cu);
9199
9200   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
9201      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
9202      Work around this problem here.  */
9203   if (cu->language == language_cplus
9204       && parent->tag == DW_TAG_namespace
9205       && strcmp (parent->name, "::") == 0
9206       && grandparent_scope == NULL)
9207     {
9208       parent->scope = NULL;
9209       parent->scope_set = 1;
9210       return NULL;
9211     }
9212
9213   if (pdi->tag == DW_TAG_enumerator)
9214     /* Enumerators should not get the name of the enumeration as a prefix.  */
9215     parent->scope = grandparent_scope;
9216   else if (parent->tag == DW_TAG_namespace
9217       || parent->tag == DW_TAG_module
9218       || parent->tag == DW_TAG_structure_type
9219       || parent->tag == DW_TAG_class_type
9220       || parent->tag == DW_TAG_interface_type
9221       || parent->tag == DW_TAG_union_type
9222       || parent->tag == DW_TAG_enumeration_type)
9223     {
9224       if (grandparent_scope == NULL)
9225         parent->scope = parent->name;
9226       else
9227         parent->scope = typename_concat (&cu->comp_unit_obstack,
9228                                          grandparent_scope,
9229                                          parent->name, 0, cu);
9230     }
9231   else
9232     {
9233       /* FIXME drow/2004-04-01: What should we be doing with
9234          function-local names?  For partial symbols, we should probably be
9235          ignoring them.  */
9236       complaint (&symfile_complaints,
9237                  _("unhandled containing DIE tag %d for DIE at %d"),
9238                  parent->tag, to_underlying (pdi->sect_off));
9239       parent->scope = grandparent_scope;
9240     }
9241
9242   parent->scope_set = 1;
9243   return parent->scope;
9244 }
9245
9246 /* Return the fully scoped name associated with PDI, from compilation unit
9247    CU.  The result will be allocated with malloc.  */
9248
9249 static char *
9250 partial_die_full_name (struct partial_die_info *pdi,
9251                        struct dwarf2_cu *cu)
9252 {
9253   const char *parent_scope;
9254
9255   /* If this is a template instantiation, we can not work out the
9256      template arguments from partial DIEs.  So, unfortunately, we have
9257      to go through the full DIEs.  At least any work we do building
9258      types here will be reused if full symbols are loaded later.  */
9259   if (pdi->has_template_arguments)
9260     {
9261       fixup_partial_die (pdi, cu);
9262
9263       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
9264         {
9265           struct die_info *die;
9266           struct attribute attr;
9267           struct dwarf2_cu *ref_cu = cu;
9268
9269           /* DW_FORM_ref_addr is using section offset.  */
9270           attr.name = (enum dwarf_attribute) 0;
9271           attr.form = DW_FORM_ref_addr;
9272           attr.u.unsnd = to_underlying (pdi->sect_off);
9273           die = follow_die_ref (NULL, &attr, &ref_cu);
9274
9275           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
9276         }
9277     }
9278
9279   parent_scope = partial_die_parent_scope (pdi, cu);
9280   if (parent_scope == NULL)
9281     return NULL;
9282   else
9283     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
9284 }
9285
9286 static void
9287 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
9288 {
9289   struct dwarf2_per_objfile *dwarf2_per_objfile
9290     = cu->per_cu->dwarf2_per_objfile;
9291   struct objfile *objfile = dwarf2_per_objfile->objfile;
9292   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9293   CORE_ADDR addr = 0;
9294   const char *actual_name = NULL;
9295   CORE_ADDR baseaddr;
9296   char *built_actual_name;
9297
9298   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9299
9300   built_actual_name = partial_die_full_name (pdi, cu);
9301   if (built_actual_name != NULL)
9302     actual_name = built_actual_name;
9303
9304   if (actual_name == NULL)
9305     actual_name = pdi->name;
9306
9307   switch (pdi->tag)
9308     {
9309     case DW_TAG_inlined_subroutine:
9310     case DW_TAG_subprogram:
9311       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
9312       if (pdi->is_external || cu->language == language_ada)
9313         {
9314           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
9315              of the global scope.  But in Ada, we want to be able to access
9316              nested procedures globally.  So all Ada subprograms are stored
9317              in the global scope.  */
9318           add_psymbol_to_list (actual_name, strlen (actual_name),
9319                                built_actual_name != NULL,
9320                                VAR_DOMAIN, LOC_BLOCK,
9321                                &objfile->global_psymbols,
9322                                addr, cu->language, objfile);
9323         }
9324       else
9325         {
9326           add_psymbol_to_list (actual_name, strlen (actual_name),
9327                                built_actual_name != NULL,
9328                                VAR_DOMAIN, LOC_BLOCK,
9329                                &objfile->static_psymbols,
9330                                addr, cu->language, objfile);
9331         }
9332
9333       if (pdi->main_subprogram && actual_name != NULL)
9334         set_objfile_main_name (objfile, actual_name, cu->language);
9335       break;
9336     case DW_TAG_constant:
9337       {
9338         std::vector<partial_symbol *> *list;
9339
9340         if (pdi->is_external)
9341           list = &objfile->global_psymbols;
9342         else
9343           list = &objfile->static_psymbols;
9344         add_psymbol_to_list (actual_name, strlen (actual_name),
9345                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
9346                              list, 0, cu->language, objfile);
9347       }
9348       break;
9349     case DW_TAG_variable:
9350       if (pdi->d.locdesc)
9351         addr = decode_locdesc (pdi->d.locdesc, cu);
9352
9353       if (pdi->d.locdesc
9354           && addr == 0
9355           && !dwarf2_per_objfile->has_section_at_zero)
9356         {
9357           /* A global or static variable may also have been stripped
9358              out by the linker if unused, in which case its address
9359              will be nullified; do not add such variables into partial
9360              symbol table then.  */
9361         }
9362       else if (pdi->is_external)
9363         {
9364           /* Global Variable.
9365              Don't enter into the minimal symbol tables as there is
9366              a minimal symbol table entry from the ELF symbols already.
9367              Enter into partial symbol table if it has a location
9368              descriptor or a type.
9369              If the location descriptor is missing, new_symbol will create
9370              a LOC_UNRESOLVED symbol, the address of the variable will then
9371              be determined from the minimal symbol table whenever the variable
9372              is referenced.
9373              The address for the partial symbol table entry is not
9374              used by GDB, but it comes in handy for debugging partial symbol
9375              table building.  */
9376
9377           if (pdi->d.locdesc || pdi->has_type)
9378             add_psymbol_to_list (actual_name, strlen (actual_name),
9379                                  built_actual_name != NULL,
9380                                  VAR_DOMAIN, LOC_STATIC,
9381                                  &objfile->global_psymbols,
9382                                  addr + baseaddr,
9383                                  cu->language, objfile);
9384         }
9385       else
9386         {
9387           int has_loc = pdi->d.locdesc != NULL;
9388
9389           /* Static Variable.  Skip symbols whose value we cannot know (those
9390              without location descriptors or constant values).  */
9391           if (!has_loc && !pdi->has_const_value)
9392             {
9393               xfree (built_actual_name);
9394               return;
9395             }
9396
9397           add_psymbol_to_list (actual_name, strlen (actual_name),
9398                                built_actual_name != NULL,
9399                                VAR_DOMAIN, LOC_STATIC,
9400                                &objfile->static_psymbols,
9401                                has_loc ? addr + baseaddr : (CORE_ADDR) 0,
9402                                cu->language, objfile);
9403         }
9404       break;
9405     case DW_TAG_typedef:
9406     case DW_TAG_base_type:
9407     case DW_TAG_subrange_type:
9408       add_psymbol_to_list (actual_name, strlen (actual_name),
9409                            built_actual_name != NULL,
9410                            VAR_DOMAIN, LOC_TYPEDEF,
9411                            &objfile->static_psymbols,
9412                            0, cu->language, objfile);
9413       break;
9414     case DW_TAG_imported_declaration:
9415     case DW_TAG_namespace:
9416       add_psymbol_to_list (actual_name, strlen (actual_name),
9417                            built_actual_name != NULL,
9418                            VAR_DOMAIN, LOC_TYPEDEF,
9419                            &objfile->global_psymbols,
9420                            0, cu->language, objfile);
9421       break;
9422     case DW_TAG_module:
9423       add_psymbol_to_list (actual_name, strlen (actual_name),
9424                            built_actual_name != NULL,
9425                            MODULE_DOMAIN, LOC_TYPEDEF,
9426                            &objfile->global_psymbols,
9427                            0, cu->language, objfile);
9428       break;
9429     case DW_TAG_class_type:
9430     case DW_TAG_interface_type:
9431     case DW_TAG_structure_type:
9432     case DW_TAG_union_type:
9433     case DW_TAG_enumeration_type:
9434       /* Skip external references.  The DWARF standard says in the section
9435          about "Structure, Union, and Class Type Entries": "An incomplete
9436          structure, union or class type is represented by a structure,
9437          union or class entry that does not have a byte size attribute
9438          and that has a DW_AT_declaration attribute."  */
9439       if (!pdi->has_byte_size && pdi->is_declaration)
9440         {
9441           xfree (built_actual_name);
9442           return;
9443         }
9444
9445       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9446          static vs. global.  */
9447       add_psymbol_to_list (actual_name, strlen (actual_name),
9448                            built_actual_name != NULL,
9449                            STRUCT_DOMAIN, LOC_TYPEDEF,
9450                            cu->language == language_cplus
9451                            ? &objfile->global_psymbols
9452                            : &objfile->static_psymbols,
9453                            0, cu->language, objfile);
9454
9455       break;
9456     case DW_TAG_enumerator:
9457       add_psymbol_to_list (actual_name, strlen (actual_name),
9458                            built_actual_name != NULL,
9459                            VAR_DOMAIN, LOC_CONST,
9460                            cu->language == language_cplus
9461                            ? &objfile->global_psymbols
9462                            : &objfile->static_psymbols,
9463                            0, cu->language, objfile);
9464       break;
9465     default:
9466       break;
9467     }
9468
9469   xfree (built_actual_name);
9470 }
9471
9472 /* Read a partial die corresponding to a namespace; also, add a symbol
9473    corresponding to that namespace to the symbol table.  NAMESPACE is
9474    the name of the enclosing namespace.  */
9475
9476 static void
9477 add_partial_namespace (struct partial_die_info *pdi,
9478                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9479                        int set_addrmap, struct dwarf2_cu *cu)
9480 {
9481   /* Add a symbol for the namespace.  */
9482
9483   add_partial_symbol (pdi, cu);
9484
9485   /* Now scan partial symbols in that namespace.  */
9486
9487   if (pdi->has_children)
9488     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9489 }
9490
9491 /* Read a partial die corresponding to a Fortran module.  */
9492
9493 static void
9494 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9495                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9496 {
9497   /* Add a symbol for the namespace.  */
9498
9499   add_partial_symbol (pdi, cu);
9500
9501   /* Now scan partial symbols in that module.  */
9502
9503   if (pdi->has_children)
9504     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9505 }
9506
9507 /* Read a partial die corresponding to a subprogram or an inlined
9508    subprogram and create a partial symbol for that subprogram.
9509    When the CU language allows it, this routine also defines a partial
9510    symbol for each nested subprogram that this subprogram contains.
9511    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9512    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9513
9514    PDI may also be a lexical block, in which case we simply search
9515    recursively for subprograms defined inside that lexical block.
9516    Again, this is only performed when the CU language allows this
9517    type of definitions.  */
9518
9519 static void
9520 add_partial_subprogram (struct partial_die_info *pdi,
9521                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9522                         int set_addrmap, struct dwarf2_cu *cu)
9523 {
9524   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9525     {
9526       if (pdi->has_pc_info)
9527         {
9528           if (pdi->lowpc < *lowpc)
9529             *lowpc = pdi->lowpc;
9530           if (pdi->highpc > *highpc)
9531             *highpc = pdi->highpc;
9532           if (set_addrmap)
9533             {
9534               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9535               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9536               CORE_ADDR baseaddr;
9537               CORE_ADDR highpc;
9538               CORE_ADDR lowpc;
9539
9540               baseaddr = ANOFFSET (objfile->section_offsets,
9541                                    SECT_OFF_TEXT (objfile));
9542               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9543                                                   pdi->lowpc + baseaddr);
9544               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
9545                                                    pdi->highpc + baseaddr);
9546               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9547                                  cu->per_cu->v.psymtab);
9548             }
9549         }
9550
9551       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9552         {
9553           if (!pdi->is_declaration)
9554             /* Ignore subprogram DIEs that do not have a name, they are
9555                illegal.  Do not emit a complaint at this point, we will
9556                do so when we convert this psymtab into a symtab.  */
9557             if (pdi->name)
9558               add_partial_symbol (pdi, cu);
9559         }
9560     }
9561
9562   if (! pdi->has_children)
9563     return;
9564
9565   if (cu->language == language_ada)
9566     {
9567       pdi = pdi->die_child;
9568       while (pdi != NULL)
9569         {
9570           fixup_partial_die (pdi, cu);
9571           if (pdi->tag == DW_TAG_subprogram
9572               || pdi->tag == DW_TAG_inlined_subroutine
9573               || pdi->tag == DW_TAG_lexical_block)
9574             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9575           pdi = pdi->die_sibling;
9576         }
9577     }
9578 }
9579
9580 /* Read a partial die corresponding to an enumeration type.  */
9581
9582 static void
9583 add_partial_enumeration (struct partial_die_info *enum_pdi,
9584                          struct dwarf2_cu *cu)
9585 {
9586   struct partial_die_info *pdi;
9587
9588   if (enum_pdi->name != NULL)
9589     add_partial_symbol (enum_pdi, cu);
9590
9591   pdi = enum_pdi->die_child;
9592   while (pdi)
9593     {
9594       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9595         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
9596       else
9597         add_partial_symbol (pdi, cu);
9598       pdi = pdi->die_sibling;
9599     }
9600 }
9601
9602 /* Return the initial uleb128 in the die at INFO_PTR.  */
9603
9604 static unsigned int
9605 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9606 {
9607   unsigned int bytes_read;
9608
9609   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9610 }
9611
9612 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
9613    Return the corresponding abbrev, or NULL if the number is zero (indicating
9614    an empty DIE).  In either case *BYTES_READ will be set to the length of
9615    the initial number.  */
9616
9617 static struct abbrev_info *
9618 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
9619                  struct dwarf2_cu *cu)
9620 {
9621   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9622   unsigned int abbrev_number;
9623   struct abbrev_info *abbrev;
9624
9625   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9626
9627   if (abbrev_number == 0)
9628     return NULL;
9629
9630   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
9631   if (!abbrev)
9632     {
9633       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9634                " at offset 0x%x [in module %s]"),
9635              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9636              to_underlying (cu->header.sect_off), bfd_get_filename (abfd));
9637     }
9638
9639   return abbrev;
9640 }
9641
9642 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9643    Returns a pointer to the end of a series of DIEs, terminated by an empty
9644    DIE.  Any children of the skipped DIEs will also be skipped.  */
9645
9646 static const gdb_byte *
9647 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9648 {
9649   struct dwarf2_cu *cu = reader->cu;
9650   struct abbrev_info *abbrev;
9651   unsigned int bytes_read;
9652
9653   while (1)
9654     {
9655       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
9656       if (abbrev == NULL)
9657         return info_ptr + bytes_read;
9658       else
9659         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9660     }
9661 }
9662
9663 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9664    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9665    abbrev corresponding to that skipped uleb128 should be passed in
9666    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9667    children.  */
9668
9669 static const gdb_byte *
9670 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9671               struct abbrev_info *abbrev)
9672 {
9673   unsigned int bytes_read;
9674   struct attribute attr;
9675   bfd *abfd = reader->abfd;
9676   struct dwarf2_cu *cu = reader->cu;
9677   const gdb_byte *buffer = reader->buffer;
9678   const gdb_byte *buffer_end = reader->buffer_end;
9679   unsigned int form, i;
9680
9681   for (i = 0; i < abbrev->num_attrs; i++)
9682     {
9683       /* The only abbrev we care about is DW_AT_sibling.  */
9684       if (abbrev->attrs[i].name == DW_AT_sibling)
9685         {
9686           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9687           if (attr.form == DW_FORM_ref_addr)
9688             complaint (&symfile_complaints,
9689                        _("ignoring absolute DW_AT_sibling"));
9690           else
9691             {
9692               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9693               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9694
9695               if (sibling_ptr < info_ptr)
9696                 complaint (&symfile_complaints,
9697                            _("DW_AT_sibling points backwards"));
9698               else if (sibling_ptr > reader->buffer_end)
9699                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9700               else
9701                 return sibling_ptr;
9702             }
9703         }
9704
9705       /* If it isn't DW_AT_sibling, skip this attribute.  */
9706       form = abbrev->attrs[i].form;
9707     skip_attribute:
9708       switch (form)
9709         {
9710         case DW_FORM_ref_addr:
9711           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9712              and later it is offset sized.  */
9713           if (cu->header.version == 2)
9714             info_ptr += cu->header.addr_size;
9715           else
9716             info_ptr += cu->header.offset_size;
9717           break;
9718         case DW_FORM_GNU_ref_alt:
9719           info_ptr += cu->header.offset_size;
9720           break;
9721         case DW_FORM_addr:
9722           info_ptr += cu->header.addr_size;
9723           break;
9724         case DW_FORM_data1:
9725         case DW_FORM_ref1:
9726         case DW_FORM_flag:
9727           info_ptr += 1;
9728           break;
9729         case DW_FORM_flag_present:
9730         case DW_FORM_implicit_const:
9731           break;
9732         case DW_FORM_data2:
9733         case DW_FORM_ref2:
9734           info_ptr += 2;
9735           break;
9736         case DW_FORM_data4:
9737         case DW_FORM_ref4:
9738           info_ptr += 4;
9739           break;
9740         case DW_FORM_data8:
9741         case DW_FORM_ref8:
9742         case DW_FORM_ref_sig8:
9743           info_ptr += 8;
9744           break;
9745         case DW_FORM_data16:
9746           info_ptr += 16;
9747           break;
9748         case DW_FORM_string:
9749           read_direct_string (abfd, info_ptr, &bytes_read);
9750           info_ptr += bytes_read;
9751           break;
9752         case DW_FORM_sec_offset:
9753         case DW_FORM_strp:
9754         case DW_FORM_GNU_strp_alt:
9755           info_ptr += cu->header.offset_size;
9756           break;
9757         case DW_FORM_exprloc:
9758         case DW_FORM_block:
9759           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9760           info_ptr += bytes_read;
9761           break;
9762         case DW_FORM_block1:
9763           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9764           break;
9765         case DW_FORM_block2:
9766           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9767           break;
9768         case DW_FORM_block4:
9769           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9770           break;
9771         case DW_FORM_sdata:
9772         case DW_FORM_udata:
9773         case DW_FORM_ref_udata:
9774         case DW_FORM_GNU_addr_index:
9775         case DW_FORM_GNU_str_index:
9776           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9777           break;
9778         case DW_FORM_indirect:
9779           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9780           info_ptr += bytes_read;
9781           /* We need to continue parsing from here, so just go back to
9782              the top.  */
9783           goto skip_attribute;
9784
9785         default:
9786           error (_("Dwarf Error: Cannot handle %s "
9787                    "in DWARF reader [in module %s]"),
9788                  dwarf_form_name (form),
9789                  bfd_get_filename (abfd));
9790         }
9791     }
9792
9793   if (abbrev->has_children)
9794     return skip_children (reader, info_ptr);
9795   else
9796     return info_ptr;
9797 }
9798
9799 /* Locate ORIG_PDI's sibling.
9800    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9801
9802 static const gdb_byte *
9803 locate_pdi_sibling (const struct die_reader_specs *reader,
9804                     struct partial_die_info *orig_pdi,
9805                     const gdb_byte *info_ptr)
9806 {
9807   /* Do we know the sibling already?  */
9808
9809   if (orig_pdi->sibling)
9810     return orig_pdi->sibling;
9811
9812   /* Are there any children to deal with?  */
9813
9814   if (!orig_pdi->has_children)
9815     return info_ptr;
9816
9817   /* Skip the children the long way.  */
9818
9819   return skip_children (reader, info_ptr);
9820 }
9821
9822 /* Expand this partial symbol table into a full symbol table.  SELF is
9823    not NULL.  */
9824
9825 static void
9826 dwarf2_read_symtab (struct partial_symtab *self,
9827                     struct objfile *objfile)
9828 {
9829   struct dwarf2_per_objfile *dwarf2_per_objfile
9830     = get_dwarf2_per_objfile (objfile);
9831
9832   if (self->readin)
9833     {
9834       warning (_("bug: psymtab for %s is already read in."),
9835                self->filename);
9836     }
9837   else
9838     {
9839       if (info_verbose)
9840         {
9841           printf_filtered (_("Reading in symbols for %s..."),
9842                            self->filename);
9843           gdb_flush (gdb_stdout);
9844         }
9845
9846       /* If this psymtab is constructed from a debug-only objfile, the
9847          has_section_at_zero flag will not necessarily be correct.  We
9848          can get the correct value for this flag by looking at the data
9849          associated with the (presumably stripped) associated objfile.  */
9850       if (objfile->separate_debug_objfile_backlink)
9851         {
9852           struct dwarf2_per_objfile *dpo_backlink
9853             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9854
9855           dwarf2_per_objfile->has_section_at_zero
9856             = dpo_backlink->has_section_at_zero;
9857         }
9858
9859       dwarf2_per_objfile->reading_partial_symbols = 0;
9860
9861       psymtab_to_symtab_1 (self);
9862
9863       /* Finish up the debug error message.  */
9864       if (info_verbose)
9865         printf_filtered (_("done.\n"));
9866     }
9867
9868   process_cu_includes (dwarf2_per_objfile);
9869 }
9870 \f
9871 /* Reading in full CUs.  */
9872
9873 /* Add PER_CU to the queue.  */
9874
9875 static void
9876 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9877                  enum language pretend_language)
9878 {
9879   struct dwarf2_queue_item *item;
9880
9881   per_cu->queued = 1;
9882   item = XNEW (struct dwarf2_queue_item);
9883   item->per_cu = per_cu;
9884   item->pretend_language = pretend_language;
9885   item->next = NULL;
9886
9887   if (dwarf2_queue == NULL)
9888     dwarf2_queue = item;
9889   else
9890     dwarf2_queue_tail->next = item;
9891
9892   dwarf2_queue_tail = item;
9893 }
9894
9895 /* If PER_CU is not yet queued, add it to the queue.
9896    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9897    dependency.
9898    The result is non-zero if PER_CU was queued, otherwise the result is zero
9899    meaning either PER_CU is already queued or it is already loaded.
9900
9901    N.B. There is an invariant here that if a CU is queued then it is loaded.
9902    The caller is required to load PER_CU if we return non-zero.  */
9903
9904 static int
9905 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9906                        struct dwarf2_per_cu_data *per_cu,
9907                        enum language pretend_language)
9908 {
9909   /* We may arrive here during partial symbol reading, if we need full
9910      DIEs to process an unusual case (e.g. template arguments).  Do
9911      not queue PER_CU, just tell our caller to load its DIEs.  */
9912   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9913     {
9914       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9915         return 1;
9916       return 0;
9917     }
9918
9919   /* Mark the dependence relation so that we don't flush PER_CU
9920      too early.  */
9921   if (dependent_cu != NULL)
9922     dwarf2_add_dependence (dependent_cu, per_cu);
9923
9924   /* If it's already on the queue, we have nothing to do.  */
9925   if (per_cu->queued)
9926     return 0;
9927
9928   /* If the compilation unit is already loaded, just mark it as
9929      used.  */
9930   if (per_cu->cu != NULL)
9931     {
9932       per_cu->cu->last_used = 0;
9933       return 0;
9934     }
9935
9936   /* Add it to the queue.  */
9937   queue_comp_unit (per_cu, pretend_language);
9938
9939   return 1;
9940 }
9941
9942 /* Process the queue.  */
9943
9944 static void
9945 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9946 {
9947   struct dwarf2_queue_item *item, *next_item;
9948
9949   if (dwarf_read_debug)
9950     {
9951       fprintf_unfiltered (gdb_stdlog,
9952                           "Expanding one or more symtabs of objfile %s ...\n",
9953                           objfile_name (dwarf2_per_objfile->objfile));
9954     }
9955
9956   /* The queue starts out with one item, but following a DIE reference
9957      may load a new CU, adding it to the end of the queue.  */
9958   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9959     {
9960       if ((dwarf2_per_objfile->using_index
9961            ? !item->per_cu->v.quick->compunit_symtab
9962            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9963           /* Skip dummy CUs.  */
9964           && item->per_cu->cu != NULL)
9965         {
9966           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9967           unsigned int debug_print_threshold;
9968           char buf[100];
9969
9970           if (per_cu->is_debug_types)
9971             {
9972               struct signatured_type *sig_type =
9973                 (struct signatured_type *) per_cu;
9974
9975               sprintf (buf, "TU %s at offset 0x%x",
9976                        hex_string (sig_type->signature),
9977                        to_underlying (per_cu->sect_off));
9978               /* There can be 100s of TUs.
9979                  Only print them in verbose mode.  */
9980               debug_print_threshold = 2;
9981             }
9982           else
9983             {
9984               sprintf (buf, "CU at offset 0x%x",
9985                        to_underlying (per_cu->sect_off));
9986               debug_print_threshold = 1;
9987             }
9988
9989           if (dwarf_read_debug >= debug_print_threshold)
9990             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9991
9992           if (per_cu->is_debug_types)
9993             process_full_type_unit (per_cu, item->pretend_language);
9994           else
9995             process_full_comp_unit (per_cu, item->pretend_language);
9996
9997           if (dwarf_read_debug >= debug_print_threshold)
9998             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9999         }
10000
10001       item->per_cu->queued = 0;
10002       next_item = item->next;
10003       xfree (item);
10004     }
10005
10006   dwarf2_queue_tail = NULL;
10007
10008   if (dwarf_read_debug)
10009     {
10010       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
10011                           objfile_name (dwarf2_per_objfile->objfile));
10012     }
10013 }
10014
10015 /* Free all allocated queue entries.  This function only releases anything if
10016    an error was thrown; if the queue was processed then it would have been
10017    freed as we went along.  */
10018
10019 static void
10020 dwarf2_release_queue (void *dummy)
10021 {
10022   struct dwarf2_queue_item *item, *last;
10023
10024   item = dwarf2_queue;
10025   while (item)
10026     {
10027       /* Anything still marked queued is likely to be in an
10028          inconsistent state, so discard it.  */
10029       if (item->per_cu->queued)
10030         {
10031           if (item->per_cu->cu != NULL)
10032             free_one_cached_comp_unit (item->per_cu);
10033           item->per_cu->queued = 0;
10034         }
10035
10036       last = item;
10037       item = item->next;
10038       xfree (last);
10039     }
10040
10041   dwarf2_queue = dwarf2_queue_tail = NULL;
10042 }
10043
10044 /* Read in full symbols for PST, and anything it depends on.  */
10045
10046 static void
10047 psymtab_to_symtab_1 (struct partial_symtab *pst)
10048 {
10049   struct dwarf2_per_cu_data *per_cu;
10050   int i;
10051
10052   if (pst->readin)
10053     return;
10054
10055   for (i = 0; i < pst->number_of_dependencies; i++)
10056     if (!pst->dependencies[i]->readin
10057         && pst->dependencies[i]->user == NULL)
10058       {
10059         /* Inform about additional files that need to be read in.  */
10060         if (info_verbose)
10061           {
10062             /* FIXME: i18n: Need to make this a single string.  */
10063             fputs_filtered (" ", gdb_stdout);
10064             wrap_here ("");
10065             fputs_filtered ("and ", gdb_stdout);
10066             wrap_here ("");
10067             printf_filtered ("%s...", pst->dependencies[i]->filename);
10068             wrap_here ("");     /* Flush output.  */
10069             gdb_flush (gdb_stdout);
10070           }
10071         psymtab_to_symtab_1 (pst->dependencies[i]);
10072       }
10073
10074   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
10075
10076   if (per_cu == NULL)
10077     {
10078       /* It's an include file, no symbols to read for it.
10079          Everything is in the parent symtab.  */
10080       pst->readin = 1;
10081       return;
10082     }
10083
10084   dw2_do_instantiate_symtab (per_cu);
10085 }
10086
10087 /* Trivial hash function for die_info: the hash value of a DIE
10088    is its offset in .debug_info for this objfile.  */
10089
10090 static hashval_t
10091 die_hash (const void *item)
10092 {
10093   const struct die_info *die = (const struct die_info *) item;
10094
10095   return to_underlying (die->sect_off);
10096 }
10097
10098 /* Trivial comparison function for die_info structures: two DIEs
10099    are equal if they have the same offset.  */
10100
10101 static int
10102 die_eq (const void *item_lhs, const void *item_rhs)
10103 {
10104   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
10105   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
10106
10107   return die_lhs->sect_off == die_rhs->sect_off;
10108 }
10109
10110 /* die_reader_func for load_full_comp_unit.
10111    This is identical to read_signatured_type_reader,
10112    but is kept separate for now.  */
10113
10114 static void
10115 load_full_comp_unit_reader (const struct die_reader_specs *reader,
10116                             const gdb_byte *info_ptr,
10117                             struct die_info *comp_unit_die,
10118                             int has_children,
10119                             void *data)
10120 {
10121   struct dwarf2_cu *cu = reader->cu;
10122   enum language *language_ptr = (enum language *) data;
10123
10124   gdb_assert (cu->die_hash == NULL);
10125   cu->die_hash =
10126     htab_create_alloc_ex (cu->header.length / 12,
10127                           die_hash,
10128                           die_eq,
10129                           NULL,
10130                           &cu->comp_unit_obstack,
10131                           hashtab_obstack_allocate,
10132                           dummy_obstack_deallocate);
10133
10134   if (has_children)
10135     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
10136                                                   &info_ptr, comp_unit_die);
10137   cu->dies = comp_unit_die;
10138   /* comp_unit_die is not stored in die_hash, no need.  */
10139
10140   /* We try not to read any attributes in this function, because not
10141      all CUs needed for references have been loaded yet, and symbol
10142      table processing isn't initialized.  But we have to set the CU language,
10143      or we won't be able to build types correctly.
10144      Similarly, if we do not read the producer, we can not apply
10145      producer-specific interpretation.  */
10146   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
10147 }
10148
10149 /* Load the DIEs associated with PER_CU into memory.  */
10150
10151 static void
10152 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
10153                      enum language pretend_language)
10154 {
10155   gdb_assert (! this_cu->is_debug_types);
10156
10157   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
10158                            load_full_comp_unit_reader, &pretend_language);
10159 }
10160
10161 /* Add a DIE to the delayed physname list.  */
10162
10163 static void
10164 add_to_method_list (struct type *type, int fnfield_index, int index,
10165                     const char *name, struct die_info *die,
10166                     struct dwarf2_cu *cu)
10167 {
10168   struct delayed_method_info mi;
10169   mi.type = type;
10170   mi.fnfield_index = fnfield_index;
10171   mi.index = index;
10172   mi.name = name;
10173   mi.die = die;
10174   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
10175 }
10176
10177 /* A cleanup for freeing the delayed method list.  */
10178
10179 static void
10180 free_delayed_list (void *ptr)
10181 {
10182   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
10183   if (cu->method_list != NULL)
10184     {
10185       VEC_free (delayed_method_info, cu->method_list);
10186       cu->method_list = NULL;
10187     }
10188 }
10189
10190 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
10191    "const" / "volatile".  If so, decrements LEN by the length of the
10192    modifier and return true.  Otherwise return false.  */
10193
10194 template<size_t N>
10195 static bool
10196 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
10197 {
10198   size_t mod_len = sizeof (mod) - 1;
10199   if (len > mod_len && startswith (physname + (len - mod_len), mod))
10200     {
10201       len -= mod_len;
10202       return true;
10203     }
10204   return false;
10205 }
10206
10207 /* Compute the physnames of any methods on the CU's method list.
10208
10209    The computation of method physnames is delayed in order to avoid the
10210    (bad) condition that one of the method's formal parameters is of an as yet
10211    incomplete type.  */
10212
10213 static void
10214 compute_delayed_physnames (struct dwarf2_cu *cu)
10215 {
10216   int i;
10217   struct delayed_method_info *mi;
10218
10219   /* Only C++ delays computing physnames.  */
10220   if (VEC_empty (delayed_method_info, cu->method_list))
10221     return;
10222   gdb_assert (cu->language == language_cplus);
10223
10224   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
10225     {
10226       const char *physname;
10227       struct fn_fieldlist *fn_flp
10228         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
10229       physname = dwarf2_physname (mi->name, mi->die, cu);
10230       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
10231         = physname ? physname : "";
10232
10233       /* Since there's no tag to indicate whether a method is a
10234          const/volatile overload, extract that information out of the
10235          demangled name.  */
10236       if (physname != NULL)
10237         {
10238           size_t len = strlen (physname);
10239
10240           while (1)
10241             {
10242               if (physname[len] == ')') /* shortcut */
10243                 break;
10244               else if (check_modifier (physname, len, " const"))
10245                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi->index) = 1;
10246               else if (check_modifier (physname, len, " volatile"))
10247                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi->index) = 1;
10248               else
10249                 break;
10250             }
10251         }
10252     }
10253 }
10254
10255 /* Go objects should be embedded in a DW_TAG_module DIE,
10256    and it's not clear if/how imported objects will appear.
10257    To keep Go support simple until that's worked out,
10258    go back through what we've read and create something usable.
10259    We could do this while processing each DIE, and feels kinda cleaner,
10260    but that way is more invasive.
10261    This is to, for example, allow the user to type "p var" or "b main"
10262    without having to specify the package name, and allow lookups
10263    of module.object to work in contexts that use the expression
10264    parser.  */
10265
10266 static void
10267 fixup_go_packaging (struct dwarf2_cu *cu)
10268 {
10269   char *package_name = NULL;
10270   struct pending *list;
10271   int i;
10272
10273   for (list = global_symbols; list != NULL; list = list->next)
10274     {
10275       for (i = 0; i < list->nsyms; ++i)
10276         {
10277           struct symbol *sym = list->symbol[i];
10278
10279           if (SYMBOL_LANGUAGE (sym) == language_go
10280               && SYMBOL_CLASS (sym) == LOC_BLOCK)
10281             {
10282               char *this_package_name = go_symbol_package_name (sym);
10283
10284               if (this_package_name == NULL)
10285                 continue;
10286               if (package_name == NULL)
10287                 package_name = this_package_name;
10288               else
10289                 {
10290                   struct objfile *objfile
10291                     = cu->per_cu->dwarf2_per_objfile->objfile;
10292                   if (strcmp (package_name, this_package_name) != 0)
10293                     complaint (&symfile_complaints,
10294                                _("Symtab %s has objects from two different Go packages: %s and %s"),
10295                                (symbol_symtab (sym) != NULL
10296                                 ? symtab_to_filename_for_display
10297                                     (symbol_symtab (sym))
10298                                 : objfile_name (objfile)),
10299                                this_package_name, package_name);
10300                   xfree (this_package_name);
10301                 }
10302             }
10303         }
10304     }
10305
10306   if (package_name != NULL)
10307     {
10308       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10309       const char *saved_package_name
10310         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
10311                                         package_name,
10312                                         strlen (package_name));
10313       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
10314                                      saved_package_name);
10315       struct symbol *sym;
10316
10317       TYPE_TAG_NAME (type) = TYPE_NAME (type);
10318
10319       sym = allocate_symbol (objfile);
10320       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
10321       SYMBOL_SET_NAMES (sym, saved_package_name,
10322                         strlen (saved_package_name), 0, objfile);
10323       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
10324          e.g., "main" finds the "main" module and not C's main().  */
10325       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
10326       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
10327       SYMBOL_TYPE (sym) = type;
10328
10329       add_symbol_to_list (sym, &global_symbols);
10330
10331       xfree (package_name);
10332     }
10333 }
10334
10335 /* Return the symtab for PER_CU.  This works properly regardless of
10336    whether we're using the index or psymtabs.  */
10337
10338 static struct compunit_symtab *
10339 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10340 {
10341   return (per_cu->dwarf2_per_objfile->using_index
10342           ? per_cu->v.quick->compunit_symtab
10343           : per_cu->v.psymtab->compunit_symtab);
10344 }
10345
10346 /* A helper function for computing the list of all symbol tables
10347    included by PER_CU.  */
10348
10349 static void
10350 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10351                                 htab_t all_children, htab_t all_type_symtabs,
10352                                 struct dwarf2_per_cu_data *per_cu,
10353                                 struct compunit_symtab *immediate_parent)
10354 {
10355   void **slot;
10356   int ix;
10357   struct compunit_symtab *cust;
10358   struct dwarf2_per_cu_data *iter;
10359
10360   slot = htab_find_slot (all_children, per_cu, INSERT);
10361   if (*slot != NULL)
10362     {
10363       /* This inclusion and its children have been processed.  */
10364       return;
10365     }
10366
10367   *slot = per_cu;
10368   /* Only add a CU if it has a symbol table.  */
10369   cust = get_compunit_symtab (per_cu);
10370   if (cust != NULL)
10371     {
10372       /* If this is a type unit only add its symbol table if we haven't
10373          seen it yet (type unit per_cu's can share symtabs).  */
10374       if (per_cu->is_debug_types)
10375         {
10376           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10377           if (*slot == NULL)
10378             {
10379               *slot = cust;
10380               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10381               if (cust->user == NULL)
10382                 cust->user = immediate_parent;
10383             }
10384         }
10385       else
10386         {
10387           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10388           if (cust->user == NULL)
10389             cust->user = immediate_parent;
10390         }
10391     }
10392
10393   for (ix = 0;
10394        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10395        ++ix)
10396     {
10397       recursively_compute_inclusions (result, all_children,
10398                                       all_type_symtabs, iter, cust);
10399     }
10400 }
10401
10402 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10403    PER_CU.  */
10404
10405 static void
10406 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10407 {
10408   gdb_assert (! per_cu->is_debug_types);
10409
10410   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10411     {
10412       int ix, len;
10413       struct dwarf2_per_cu_data *per_cu_iter;
10414       struct compunit_symtab *compunit_symtab_iter;
10415       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10416       htab_t all_children, all_type_symtabs;
10417       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10418
10419       /* If we don't have a symtab, we can just skip this case.  */
10420       if (cust == NULL)
10421         return;
10422
10423       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10424                                         NULL, xcalloc, xfree);
10425       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10426                                             NULL, xcalloc, xfree);
10427
10428       for (ix = 0;
10429            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10430                         ix, per_cu_iter);
10431            ++ix)
10432         {
10433           recursively_compute_inclusions (&result_symtabs, all_children,
10434                                           all_type_symtabs, per_cu_iter,
10435                                           cust);
10436         }
10437
10438       /* Now we have a transitive closure of all the included symtabs.  */
10439       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10440       cust->includes
10441         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10442                      struct compunit_symtab *, len + 1);
10443       for (ix = 0;
10444            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10445                         compunit_symtab_iter);
10446            ++ix)
10447         cust->includes[ix] = compunit_symtab_iter;
10448       cust->includes[len] = NULL;
10449
10450       VEC_free (compunit_symtab_ptr, result_symtabs);
10451       htab_delete (all_children);
10452       htab_delete (all_type_symtabs);
10453     }
10454 }
10455
10456 /* Compute the 'includes' field for the symtabs of all the CUs we just
10457    read.  */
10458
10459 static void
10460 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10461 {
10462   int ix;
10463   struct dwarf2_per_cu_data *iter;
10464
10465   for (ix = 0;
10466        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
10467                     ix, iter);
10468        ++ix)
10469     {
10470       if (! iter->is_debug_types)
10471         compute_compunit_symtab_includes (iter);
10472     }
10473
10474   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
10475 }
10476
10477 /* Generate full symbol information for PER_CU, whose DIEs have
10478    already been loaded into memory.  */
10479
10480 static void
10481 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10482                         enum language pretend_language)
10483 {
10484   struct dwarf2_cu *cu = per_cu->cu;
10485   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10486   struct objfile *objfile = dwarf2_per_objfile->objfile;
10487   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10488   CORE_ADDR lowpc, highpc;
10489   struct compunit_symtab *cust;
10490   struct cleanup *delayed_list_cleanup;
10491   CORE_ADDR baseaddr;
10492   struct block *static_block;
10493   CORE_ADDR addr;
10494
10495   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10496
10497   buildsym_init ();
10498   scoped_free_pendings free_pending;
10499   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10500
10501   cu->list_in_scope = &file_symbols;
10502
10503   cu->language = pretend_language;
10504   cu->language_defn = language_def (cu->language);
10505
10506   /* Do line number decoding in read_file_scope () */
10507   process_die (cu->dies, cu);
10508
10509   /* For now fudge the Go package.  */
10510   if (cu->language == language_go)
10511     fixup_go_packaging (cu);
10512
10513   /* Now that we have processed all the DIEs in the CU, all the types 
10514      should be complete, and it should now be safe to compute all of the
10515      physnames.  */
10516   compute_delayed_physnames (cu);
10517   do_cleanups (delayed_list_cleanup);
10518
10519   /* Some compilers don't define a DW_AT_high_pc attribute for the
10520      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10521      it, by scanning the DIE's below the compilation unit.  */
10522   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10523
10524   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10525   static_block = end_symtab_get_static_block (addr, 0, 1);
10526
10527   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10528      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10529      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10530      addrmap to help ensure it has an accurate map of pc values belonging to
10531      this comp unit.  */
10532   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10533
10534   cust = end_symtab_from_static_block (static_block,
10535                                        SECT_OFF_TEXT (objfile), 0);
10536
10537   if (cust != NULL)
10538     {
10539       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10540
10541       /* Set symtab language to language from DW_AT_language.  If the
10542          compilation is from a C file generated by language preprocessors, do
10543          not set the language if it was already deduced by start_subfile.  */
10544       if (!(cu->language == language_c
10545             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10546         COMPUNIT_FILETABS (cust)->language = cu->language;
10547
10548       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10549          produce DW_AT_location with location lists but it can be possibly
10550          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10551          there were bugs in prologue debug info, fixed later in GCC-4.5
10552          by "unwind info for epilogues" patch (which is not directly related).
10553
10554          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10555          needed, it would be wrong due to missing DW_AT_producer there.
10556
10557          Still one can confuse GDB by using non-standard GCC compilation
10558          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10559          */ 
10560       if (cu->has_loclist && gcc_4_minor >= 5)
10561         cust->locations_valid = 1;
10562
10563       if (gcc_4_minor >= 5)
10564         cust->epilogue_unwind_valid = 1;
10565
10566       cust->call_site_htab = cu->call_site_htab;
10567     }
10568
10569   if (dwarf2_per_objfile->using_index)
10570     per_cu->v.quick->compunit_symtab = cust;
10571   else
10572     {
10573       struct partial_symtab *pst = per_cu->v.psymtab;
10574       pst->compunit_symtab = cust;
10575       pst->readin = 1;
10576     }
10577
10578   /* Push it for inclusion processing later.  */
10579   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
10580 }
10581
10582 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10583    already been loaded into memory.  */
10584
10585 static void
10586 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10587                         enum language pretend_language)
10588 {
10589   struct dwarf2_cu *cu = per_cu->cu;
10590   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10591   struct objfile *objfile = dwarf2_per_objfile->objfile;
10592   struct compunit_symtab *cust;
10593   struct cleanup *delayed_list_cleanup;
10594   struct signatured_type *sig_type;
10595
10596   gdb_assert (per_cu->is_debug_types);
10597   sig_type = (struct signatured_type *) per_cu;
10598
10599   buildsym_init ();
10600   scoped_free_pendings free_pending;
10601   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10602
10603   cu->list_in_scope = &file_symbols;
10604
10605   cu->language = pretend_language;
10606   cu->language_defn = language_def (cu->language);
10607
10608   /* The symbol tables are set up in read_type_unit_scope.  */
10609   process_die (cu->dies, cu);
10610
10611   /* For now fudge the Go package.  */
10612   if (cu->language == language_go)
10613     fixup_go_packaging (cu);
10614
10615   /* Now that we have processed all the DIEs in the CU, all the types 
10616      should be complete, and it should now be safe to compute all of the
10617      physnames.  */
10618   compute_delayed_physnames (cu);
10619   do_cleanups (delayed_list_cleanup);
10620
10621   /* TUs share symbol tables.
10622      If this is the first TU to use this symtab, complete the construction
10623      of it with end_expandable_symtab.  Otherwise, complete the addition of
10624      this TU's symbols to the existing symtab.  */
10625   if (sig_type->type_unit_group->compunit_symtab == NULL)
10626     {
10627       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10628       sig_type->type_unit_group->compunit_symtab = cust;
10629
10630       if (cust != NULL)
10631         {
10632           /* Set symtab language to language from DW_AT_language.  If the
10633              compilation is from a C file generated by language preprocessors,
10634              do not set the language if it was already deduced by
10635              start_subfile.  */
10636           if (!(cu->language == language_c
10637                 && COMPUNIT_FILETABS (cust)->language != language_c))
10638             COMPUNIT_FILETABS (cust)->language = cu->language;
10639         }
10640     }
10641   else
10642     {
10643       augment_type_symtab ();
10644       cust = sig_type->type_unit_group->compunit_symtab;
10645     }
10646
10647   if (dwarf2_per_objfile->using_index)
10648     per_cu->v.quick->compunit_symtab = cust;
10649   else
10650     {
10651       struct partial_symtab *pst = per_cu->v.psymtab;
10652       pst->compunit_symtab = cust;
10653       pst->readin = 1;
10654     }
10655 }
10656
10657 /* Process an imported unit DIE.  */
10658
10659 static void
10660 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10661 {
10662   struct attribute *attr;
10663
10664   /* For now we don't handle imported units in type units.  */
10665   if (cu->per_cu->is_debug_types)
10666     {
10667       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10668                " supported in type units [in module %s]"),
10669              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10670     }
10671
10672   attr = dwarf2_attr (die, DW_AT_import, cu);
10673   if (attr != NULL)
10674     {
10675       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10676       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10677       dwarf2_per_cu_data *per_cu
10678         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10679                                             cu->per_cu->dwarf2_per_objfile);
10680
10681       /* If necessary, add it to the queue and load its DIEs.  */
10682       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10683         load_full_comp_unit (per_cu, cu->language);
10684
10685       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10686                      per_cu);
10687     }
10688 }
10689
10690 /* RAII object that represents a process_die scope: i.e.,
10691    starts/finishes processing a DIE.  */
10692 class process_die_scope
10693 {
10694 public:
10695   process_die_scope (die_info *die, dwarf2_cu *cu)
10696     : m_die (die), m_cu (cu)
10697   {
10698     /* We should only be processing DIEs not already in process.  */
10699     gdb_assert (!m_die->in_process);
10700     m_die->in_process = true;
10701   }
10702
10703   ~process_die_scope ()
10704   {
10705     m_die->in_process = false;
10706
10707     /* If we're done processing the DIE for the CU that owns the line
10708        header, we don't need the line header anymore.  */
10709     if (m_cu->line_header_die_owner == m_die)
10710       {
10711         delete m_cu->line_header;
10712         m_cu->line_header = NULL;
10713         m_cu->line_header_die_owner = NULL;
10714       }
10715   }
10716
10717 private:
10718   die_info *m_die;
10719   dwarf2_cu *m_cu;
10720 };
10721
10722 /* Process a die and its children.  */
10723
10724 static void
10725 process_die (struct die_info *die, struct dwarf2_cu *cu)
10726 {
10727   process_die_scope scope (die, cu);
10728
10729   switch (die->tag)
10730     {
10731     case DW_TAG_padding:
10732       break;
10733     case DW_TAG_compile_unit:
10734     case DW_TAG_partial_unit:
10735       read_file_scope (die, cu);
10736       break;
10737     case DW_TAG_type_unit:
10738       read_type_unit_scope (die, cu);
10739       break;
10740     case DW_TAG_subprogram:
10741     case DW_TAG_inlined_subroutine:
10742       read_func_scope (die, cu);
10743       break;
10744     case DW_TAG_lexical_block:
10745     case DW_TAG_try_block:
10746     case DW_TAG_catch_block:
10747       read_lexical_block_scope (die, cu);
10748       break;
10749     case DW_TAG_call_site:
10750     case DW_TAG_GNU_call_site:
10751       read_call_site_scope (die, cu);
10752       break;
10753     case DW_TAG_class_type:
10754     case DW_TAG_interface_type:
10755     case DW_TAG_structure_type:
10756     case DW_TAG_union_type:
10757       process_structure_scope (die, cu);
10758       break;
10759     case DW_TAG_enumeration_type:
10760       process_enumeration_scope (die, cu);
10761       break;
10762
10763     /* These dies have a type, but processing them does not create
10764        a symbol or recurse to process the children.  Therefore we can
10765        read them on-demand through read_type_die.  */
10766     case DW_TAG_subroutine_type:
10767     case DW_TAG_set_type:
10768     case DW_TAG_array_type:
10769     case DW_TAG_pointer_type:
10770     case DW_TAG_ptr_to_member_type:
10771     case DW_TAG_reference_type:
10772     case DW_TAG_rvalue_reference_type:
10773     case DW_TAG_string_type:
10774       break;
10775
10776     case DW_TAG_base_type:
10777     case DW_TAG_subrange_type:
10778     case DW_TAG_typedef:
10779       /* Add a typedef symbol for the type definition, if it has a
10780          DW_AT_name.  */
10781       new_symbol (die, read_type_die (die, cu), cu);
10782       break;
10783     case DW_TAG_common_block:
10784       read_common_block (die, cu);
10785       break;
10786     case DW_TAG_common_inclusion:
10787       break;
10788     case DW_TAG_namespace:
10789       cu->processing_has_namespace_info = 1;
10790       read_namespace (die, cu);
10791       break;
10792     case DW_TAG_module:
10793       cu->processing_has_namespace_info = 1;
10794       read_module (die, cu);
10795       break;
10796     case DW_TAG_imported_declaration:
10797       cu->processing_has_namespace_info = 1;
10798       if (read_namespace_alias (die, cu))
10799         break;
10800       /* The declaration is not a global namespace alias: fall through.  */
10801     case DW_TAG_imported_module:
10802       cu->processing_has_namespace_info = 1;
10803       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10804                                  || cu->language != language_fortran))
10805         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
10806                    dwarf_tag_name (die->tag));
10807       read_import_statement (die, cu);
10808       break;
10809
10810     case DW_TAG_imported_unit:
10811       process_imported_unit_die (die, cu);
10812       break;
10813
10814     case DW_TAG_variable:
10815       read_variable (die, cu);
10816       break;
10817
10818     default:
10819       new_symbol (die, NULL, cu);
10820       break;
10821     }
10822 }
10823 \f
10824 /* DWARF name computation.  */
10825
10826 /* A helper function for dwarf2_compute_name which determines whether DIE
10827    needs to have the name of the scope prepended to the name listed in the
10828    die.  */
10829
10830 static int
10831 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10832 {
10833   struct attribute *attr;
10834
10835   switch (die->tag)
10836     {
10837     case DW_TAG_namespace:
10838     case DW_TAG_typedef:
10839     case DW_TAG_class_type:
10840     case DW_TAG_interface_type:
10841     case DW_TAG_structure_type:
10842     case DW_TAG_union_type:
10843     case DW_TAG_enumeration_type:
10844     case DW_TAG_enumerator:
10845     case DW_TAG_subprogram:
10846     case DW_TAG_inlined_subroutine:
10847     case DW_TAG_member:
10848     case DW_TAG_imported_declaration:
10849       return 1;
10850
10851     case DW_TAG_variable:
10852     case DW_TAG_constant:
10853       /* We only need to prefix "globally" visible variables.  These include
10854          any variable marked with DW_AT_external or any variable that
10855          lives in a namespace.  [Variables in anonymous namespaces
10856          require prefixing, but they are not DW_AT_external.]  */
10857
10858       if (dwarf2_attr (die, DW_AT_specification, cu))
10859         {
10860           struct dwarf2_cu *spec_cu = cu;
10861
10862           return die_needs_namespace (die_specification (die, &spec_cu),
10863                                       spec_cu);
10864         }
10865
10866       attr = dwarf2_attr (die, DW_AT_external, cu);
10867       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10868           && die->parent->tag != DW_TAG_module)
10869         return 0;
10870       /* A variable in a lexical block of some kind does not need a
10871          namespace, even though in C++ such variables may be external
10872          and have a mangled name.  */
10873       if (die->parent->tag ==  DW_TAG_lexical_block
10874           || die->parent->tag ==  DW_TAG_try_block
10875           || die->parent->tag ==  DW_TAG_catch_block
10876           || die->parent->tag == DW_TAG_subprogram)
10877         return 0;
10878       return 1;
10879
10880     default:
10881       return 0;
10882     }
10883 }
10884
10885 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10886    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10887    defined for the given DIE.  */
10888
10889 static struct attribute *
10890 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10891 {
10892   struct attribute *attr;
10893
10894   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10895   if (attr == NULL)
10896     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10897
10898   return attr;
10899 }
10900
10901 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10902    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10903    defined for the given DIE.  */
10904
10905 static const char *
10906 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10907 {
10908   const char *linkage_name;
10909
10910   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10911   if (linkage_name == NULL)
10912     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10913
10914   return linkage_name;
10915 }
10916
10917 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10918    compute the physname for the object, which include a method's:
10919    - formal parameters (C++),
10920    - receiver type (Go),
10921
10922    The term "physname" is a bit confusing.
10923    For C++, for example, it is the demangled name.
10924    For Go, for example, it's the mangled name.
10925
10926    For Ada, return the DIE's linkage name rather than the fully qualified
10927    name.  PHYSNAME is ignored..
10928
10929    The result is allocated on the objfile_obstack and canonicalized.  */
10930
10931 static const char *
10932 dwarf2_compute_name (const char *name,
10933                      struct die_info *die, struct dwarf2_cu *cu,
10934                      int physname)
10935 {
10936   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10937
10938   if (name == NULL)
10939     name = dwarf2_name (die, cu);
10940
10941   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10942      but otherwise compute it by typename_concat inside GDB.
10943      FIXME: Actually this is not really true, or at least not always true.
10944      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10945      Fortran names because there is no mangling standard.  So new_symbol_full
10946      will set the demangled name to the result of dwarf2_full_name, and it is
10947      the demangled name that GDB uses if it exists.  */
10948   if (cu->language == language_ada
10949       || (cu->language == language_fortran && physname))
10950     {
10951       /* For Ada unit, we prefer the linkage name over the name, as
10952          the former contains the exported name, which the user expects
10953          to be able to reference.  Ideally, we want the user to be able
10954          to reference this entity using either natural or linkage name,
10955          but we haven't started looking at this enhancement yet.  */
10956       const char *linkage_name = dw2_linkage_name (die, cu);
10957
10958       if (linkage_name != NULL)
10959         return linkage_name;
10960     }
10961
10962   /* These are the only languages we know how to qualify names in.  */
10963   if (name != NULL
10964       && (cu->language == language_cplus
10965           || cu->language == language_fortran || cu->language == language_d
10966           || cu->language == language_rust))
10967     {
10968       if (die_needs_namespace (die, cu))
10969         {
10970           const char *prefix;
10971           const char *canonical_name = NULL;
10972
10973           string_file buf;
10974
10975           prefix = determine_prefix (die, cu);
10976           if (*prefix != '\0')
10977             {
10978               char *prefixed_name = typename_concat (NULL, prefix, name,
10979                                                      physname, cu);
10980
10981               buf.puts (prefixed_name);
10982               xfree (prefixed_name);
10983             }
10984           else
10985             buf.puts (name);
10986
10987           /* Template parameters may be specified in the DIE's DW_AT_name, or
10988              as children with DW_TAG_template_type_param or
10989              DW_TAG_value_type_param.  If the latter, add them to the name
10990              here.  If the name already has template parameters, then
10991              skip this step; some versions of GCC emit both, and
10992              it is more efficient to use the pre-computed name.
10993
10994              Something to keep in mind about this process: it is very
10995              unlikely, or in some cases downright impossible, to produce
10996              something that will match the mangled name of a function.
10997              If the definition of the function has the same debug info,
10998              we should be able to match up with it anyway.  But fallbacks
10999              using the minimal symbol, for instance to find a method
11000              implemented in a stripped copy of libstdc++, will not work.
11001              If we do not have debug info for the definition, we will have to
11002              match them up some other way.
11003
11004              When we do name matching there is a related problem with function
11005              templates; two instantiated function templates are allowed to
11006              differ only by their return types, which we do not add here.  */
11007
11008           if (cu->language == language_cplus && strchr (name, '<') == NULL)
11009             {
11010               struct attribute *attr;
11011               struct die_info *child;
11012               int first = 1;
11013
11014               die->building_fullname = 1;
11015
11016               for (child = die->child; child != NULL; child = child->sibling)
11017                 {
11018                   struct type *type;
11019                   LONGEST value;
11020                   const gdb_byte *bytes;
11021                   struct dwarf2_locexpr_baton *baton;
11022                   struct value *v;
11023
11024                   if (child->tag != DW_TAG_template_type_param
11025                       && child->tag != DW_TAG_template_value_param)
11026                     continue;
11027
11028                   if (first)
11029                     {
11030                       buf.puts ("<");
11031                       first = 0;
11032                     }
11033                   else
11034                     buf.puts (", ");
11035
11036                   attr = dwarf2_attr (child, DW_AT_type, cu);
11037                   if (attr == NULL)
11038                     {
11039                       complaint (&symfile_complaints,
11040                                  _("template parameter missing DW_AT_type"));
11041                       buf.puts ("UNKNOWN_TYPE");
11042                       continue;
11043                     }
11044                   type = die_type (child, cu);
11045
11046                   if (child->tag == DW_TAG_template_type_param)
11047                     {
11048                       c_print_type (type, "", &buf, -1, 0, &type_print_raw_options);
11049                       continue;
11050                     }
11051
11052                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
11053                   if (attr == NULL)
11054                     {
11055                       complaint (&symfile_complaints,
11056                                  _("template parameter missing "
11057                                    "DW_AT_const_value"));
11058                       buf.puts ("UNKNOWN_VALUE");
11059                       continue;
11060                     }
11061
11062                   dwarf2_const_value_attr (attr, type, name,
11063                                            &cu->comp_unit_obstack, cu,
11064                                            &value, &bytes, &baton);
11065
11066                   if (TYPE_NOSIGN (type))
11067                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
11068                        changed, this can use value_print instead.  */
11069                     c_printchar (value, type, &buf);
11070                   else
11071                     {
11072                       struct value_print_options opts;
11073
11074                       if (baton != NULL)
11075                         v = dwarf2_evaluate_loc_desc (type, NULL,
11076                                                       baton->data,
11077                                                       baton->size,
11078                                                       baton->per_cu);
11079                       else if (bytes != NULL)
11080                         {
11081                           v = allocate_value (type);
11082                           memcpy (value_contents_writeable (v), bytes,
11083                                   TYPE_LENGTH (type));
11084                         }
11085                       else
11086                         v = value_from_longest (type, value);
11087
11088                       /* Specify decimal so that we do not depend on
11089                          the radix.  */
11090                       get_formatted_print_options (&opts, 'd');
11091                       opts.raw = 1;
11092                       value_print (v, &buf, &opts);
11093                       release_value (v);
11094                       value_free (v);
11095                     }
11096                 }
11097
11098               die->building_fullname = 0;
11099
11100               if (!first)
11101                 {
11102                   /* Close the argument list, with a space if necessary
11103                      (nested templates).  */
11104                   if (!buf.empty () && buf.string ().back () == '>')
11105                     buf.puts (" >");
11106                   else
11107                     buf.puts (">");
11108                 }
11109             }
11110
11111           /* For C++ methods, append formal parameter type
11112              information, if PHYSNAME.  */
11113
11114           if (physname && die->tag == DW_TAG_subprogram
11115               && cu->language == language_cplus)
11116             {
11117               struct type *type = read_type_die (die, cu);
11118
11119               c_type_print_args (type, &buf, 1, cu->language,
11120                                  &type_print_raw_options);
11121
11122               if (cu->language == language_cplus)
11123                 {
11124                   /* Assume that an artificial first parameter is
11125                      "this", but do not crash if it is not.  RealView
11126                      marks unnamed (and thus unused) parameters as
11127                      artificial; there is no way to differentiate
11128                      the two cases.  */
11129                   if (TYPE_NFIELDS (type) > 0
11130                       && TYPE_FIELD_ARTIFICIAL (type, 0)
11131                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
11132                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
11133                                                                         0))))
11134                     buf.puts (" const");
11135                 }
11136             }
11137
11138           const std::string &intermediate_name = buf.string ();
11139
11140           if (cu->language == language_cplus)
11141             canonical_name
11142               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11143                                           &objfile->per_bfd->storage_obstack);
11144
11145           /* If we only computed INTERMEDIATE_NAME, or if
11146              INTERMEDIATE_NAME is already canonical, then we need to
11147              copy it to the appropriate obstack.  */
11148           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11149             name = ((const char *)
11150                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11151                                    intermediate_name.c_str (),
11152                                    intermediate_name.length ()));
11153           else
11154             name = canonical_name;
11155         }
11156     }
11157
11158   return name;
11159 }
11160
11161 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11162    If scope qualifiers are appropriate they will be added.  The result
11163    will be allocated on the storage_obstack, or NULL if the DIE does
11164    not have a name.  NAME may either be from a previous call to
11165    dwarf2_name or NULL.
11166
11167    The output string will be canonicalized (if C++).  */
11168
11169 static const char *
11170 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11171 {
11172   return dwarf2_compute_name (name, die, cu, 0);
11173 }
11174
11175 /* Construct a physname for the given DIE in CU.  NAME may either be
11176    from a previous call to dwarf2_name or NULL.  The result will be
11177    allocated on the objfile_objstack or NULL if the DIE does not have a
11178    name.
11179
11180    The output string will be canonicalized (if C++).  */
11181
11182 static const char *
11183 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11184 {
11185   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11186   const char *retval, *mangled = NULL, *canon = NULL;
11187   int need_copy = 1;
11188
11189   /* In this case dwarf2_compute_name is just a shortcut not building anything
11190      on its own.  */
11191   if (!die_needs_namespace (die, cu))
11192     return dwarf2_compute_name (name, die, cu, 1);
11193
11194   mangled = dw2_linkage_name (die, cu);
11195
11196   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11197      See https://github.com/rust-lang/rust/issues/32925.  */
11198   if (cu->language == language_rust && mangled != NULL
11199       && strchr (mangled, '{') != NULL)
11200     mangled = NULL;
11201
11202   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11203      has computed.  */
11204   gdb::unique_xmalloc_ptr<char> demangled;
11205   if (mangled != NULL)
11206     {
11207       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
11208          type.  It is easier for GDB users to search for such functions as
11209          `name(params)' than `long name(params)'.  In such case the minimal
11210          symbol names do not match the full symbol names but for template
11211          functions there is never a need to look up their definition from their
11212          declaration so the only disadvantage remains the minimal symbol
11213          variant `long name(params)' does not have the proper inferior type.
11214          */
11215
11216       if (cu->language == language_go)
11217         {
11218           /* This is a lie, but we already lie to the caller new_symbol_full.
11219              new_symbol_full assumes we return the mangled name.
11220              This just undoes that lie until things are cleaned up.  */
11221         }
11222       else
11223         {
11224           demangled.reset (gdb_demangle (mangled,
11225                                          (DMGL_PARAMS | DMGL_ANSI
11226                                           | DMGL_RET_DROP)));
11227         }
11228       if (demangled)
11229         canon = demangled.get ();
11230       else
11231         {
11232           canon = mangled;
11233           need_copy = 0;
11234         }
11235     }
11236
11237   if (canon == NULL || check_physname)
11238     {
11239       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11240
11241       if (canon != NULL && strcmp (physname, canon) != 0)
11242         {
11243           /* It may not mean a bug in GDB.  The compiler could also
11244              compute DW_AT_linkage_name incorrectly.  But in such case
11245              GDB would need to be bug-to-bug compatible.  */
11246
11247           complaint (&symfile_complaints,
11248                      _("Computed physname <%s> does not match demangled <%s> "
11249                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
11250                      physname, canon, mangled, to_underlying (die->sect_off),
11251                      objfile_name (objfile));
11252
11253           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11254              is available here - over computed PHYSNAME.  It is safer
11255              against both buggy GDB and buggy compilers.  */
11256
11257           retval = canon;
11258         }
11259       else
11260         {
11261           retval = physname;
11262           need_copy = 0;
11263         }
11264     }
11265   else
11266     retval = canon;
11267
11268   if (need_copy)
11269     retval = ((const char *)
11270               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11271                              retval, strlen (retval)));
11272
11273   return retval;
11274 }
11275
11276 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11277    a new symbol for it.
11278
11279    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11280
11281 static int
11282 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11283 {
11284   struct attribute *attr;
11285
11286   /* If the die does not have a name, this is not a namespace
11287      alias.  */
11288   attr = dwarf2_attr (die, DW_AT_name, cu);
11289   if (attr != NULL)
11290     {
11291       int num;
11292       struct die_info *d = die;
11293       struct dwarf2_cu *imported_cu = cu;
11294
11295       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11296          keep inspecting DIEs until we hit the underlying import.  */
11297 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11298       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11299         {
11300           attr = dwarf2_attr (d, DW_AT_import, cu);
11301           if (attr == NULL)
11302             break;
11303
11304           d = follow_die_ref (d, attr, &imported_cu);
11305           if (d->tag != DW_TAG_imported_declaration)
11306             break;
11307         }
11308
11309       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11310         {
11311           complaint (&symfile_complaints,
11312                      _("DIE at 0x%x has too many recursively imported "
11313                        "declarations"), to_underlying (d->sect_off));
11314           return 0;
11315         }
11316
11317       if (attr != NULL)
11318         {
11319           struct type *type;
11320           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11321
11322           type = get_die_type_at_offset (sect_off, cu->per_cu);
11323           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11324             {
11325               /* This declaration is a global namespace alias.  Add
11326                  a symbol for it whose type is the aliased namespace.  */
11327               new_symbol (die, type, cu);
11328               return 1;
11329             }
11330         }
11331     }
11332
11333   return 0;
11334 }
11335
11336 /* Return the using directives repository (global or local?) to use in the
11337    current context for LANGUAGE.
11338
11339    For Ada, imported declarations can materialize renamings, which *may* be
11340    global.  However it is impossible (for now?) in DWARF to distinguish
11341    "external" imported declarations and "static" ones.  As all imported
11342    declarations seem to be static in all other languages, make them all CU-wide
11343    global only in Ada.  */
11344
11345 static struct using_direct **
11346 using_directives (enum language language)
11347 {
11348   if (language == language_ada && context_stack_depth == 0)
11349     return &global_using_directives;
11350   else
11351     return &local_using_directives;
11352 }
11353
11354 /* Read the import statement specified by the given die and record it.  */
11355
11356 static void
11357 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11358 {
11359   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11360   struct attribute *import_attr;
11361   struct die_info *imported_die, *child_die;
11362   struct dwarf2_cu *imported_cu;
11363   const char *imported_name;
11364   const char *imported_name_prefix;
11365   const char *canonical_name;
11366   const char *import_alias;
11367   const char *imported_declaration = NULL;
11368   const char *import_prefix;
11369   std::vector<const char *> excludes;
11370
11371   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11372   if (import_attr == NULL)
11373     {
11374       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11375                  dwarf_tag_name (die->tag));
11376       return;
11377     }
11378
11379   imported_cu = cu;
11380   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11381   imported_name = dwarf2_name (imported_die, imported_cu);
11382   if (imported_name == NULL)
11383     {
11384       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11385
11386         The import in the following code:
11387         namespace A
11388           {
11389             typedef int B;
11390           }
11391
11392         int main ()
11393           {
11394             using A::B;
11395             B b;
11396             return b;
11397           }
11398
11399         ...
11400          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11401             <52>   DW_AT_decl_file   : 1
11402             <53>   DW_AT_decl_line   : 6
11403             <54>   DW_AT_import      : <0x75>
11404          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11405             <59>   DW_AT_name        : B
11406             <5b>   DW_AT_decl_file   : 1
11407             <5c>   DW_AT_decl_line   : 2
11408             <5d>   DW_AT_type        : <0x6e>
11409         ...
11410          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11411             <76>   DW_AT_byte_size   : 4
11412             <77>   DW_AT_encoding    : 5        (signed)
11413
11414         imports the wrong die ( 0x75 instead of 0x58 ).
11415         This case will be ignored until the gcc bug is fixed.  */
11416       return;
11417     }
11418
11419   /* Figure out the local name after import.  */
11420   import_alias = dwarf2_name (die, cu);
11421
11422   /* Figure out where the statement is being imported to.  */
11423   import_prefix = determine_prefix (die, cu);
11424
11425   /* Figure out what the scope of the imported die is and prepend it
11426      to the name of the imported die.  */
11427   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11428
11429   if (imported_die->tag != DW_TAG_namespace
11430       && imported_die->tag != DW_TAG_module)
11431     {
11432       imported_declaration = imported_name;
11433       canonical_name = imported_name_prefix;
11434     }
11435   else if (strlen (imported_name_prefix) > 0)
11436     canonical_name = obconcat (&objfile->objfile_obstack,
11437                                imported_name_prefix,
11438                                (cu->language == language_d ? "." : "::"),
11439                                imported_name, (char *) NULL);
11440   else
11441     canonical_name = imported_name;
11442
11443   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11444     for (child_die = die->child; child_die && child_die->tag;
11445          child_die = sibling_die (child_die))
11446       {
11447         /* DWARF-4: A Fortran use statement with a “rename list” may be
11448            represented by an imported module entry with an import attribute
11449            referring to the module and owned entries corresponding to those
11450            entities that are renamed as part of being imported.  */
11451
11452         if (child_die->tag != DW_TAG_imported_declaration)
11453           {
11454             complaint (&symfile_complaints,
11455                        _("child DW_TAG_imported_declaration expected "
11456                          "- DIE at 0x%x [in module %s]"),
11457                        to_underlying (child_die->sect_off), objfile_name (objfile));
11458             continue;
11459           }
11460
11461         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11462         if (import_attr == NULL)
11463           {
11464             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
11465                        dwarf_tag_name (child_die->tag));
11466             continue;
11467           }
11468
11469         imported_cu = cu;
11470         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11471                                               &imported_cu);
11472         imported_name = dwarf2_name (imported_die, imported_cu);
11473         if (imported_name == NULL)
11474           {
11475             complaint (&symfile_complaints,
11476                        _("child DW_TAG_imported_declaration has unknown "
11477                          "imported name - DIE at 0x%x [in module %s]"),
11478                        to_underlying (child_die->sect_off), objfile_name (objfile));
11479             continue;
11480           }
11481
11482         excludes.push_back (imported_name);
11483
11484         process_die (child_die, cu);
11485       }
11486
11487   add_using_directive (using_directives (cu->language),
11488                        import_prefix,
11489                        canonical_name,
11490                        import_alias,
11491                        imported_declaration,
11492                        excludes,
11493                        0,
11494                        &objfile->objfile_obstack);
11495 }
11496
11497 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11498    types, but gives them a size of zero.  Starting with version 14,
11499    ICC is compatible with GCC.  */
11500
11501 static int
11502 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11503 {
11504   if (!cu->checked_producer)
11505     check_producer (cu);
11506
11507   return cu->producer_is_icc_lt_14;
11508 }
11509
11510 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11511    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11512    this, it was first present in GCC release 4.3.0.  */
11513
11514 static int
11515 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11516 {
11517   if (!cu->checked_producer)
11518     check_producer (cu);
11519
11520   return cu->producer_is_gcc_lt_4_3;
11521 }
11522
11523 static file_and_directory
11524 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11525 {
11526   file_and_directory res;
11527
11528   /* Find the filename.  Do not use dwarf2_name here, since the filename
11529      is not a source language identifier.  */
11530   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11531   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11532
11533   if (res.comp_dir == NULL
11534       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11535       && IS_ABSOLUTE_PATH (res.name))
11536     {
11537       res.comp_dir_storage = ldirname (res.name);
11538       if (!res.comp_dir_storage.empty ())
11539         res.comp_dir = res.comp_dir_storage.c_str ();
11540     }
11541   if (res.comp_dir != NULL)
11542     {
11543       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11544          directory, get rid of it.  */
11545       const char *cp = strchr (res.comp_dir, ':');
11546
11547       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11548         res.comp_dir = cp + 1;
11549     }
11550
11551   if (res.name == NULL)
11552     res.name = "<unknown>";
11553
11554   return res;
11555 }
11556
11557 /* Handle DW_AT_stmt_list for a compilation unit.
11558    DIE is the DW_TAG_compile_unit die for CU.
11559    COMP_DIR is the compilation directory.  LOWPC is passed to
11560    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11561
11562 static void
11563 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11564                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11565 {
11566   struct dwarf2_per_objfile *dwarf2_per_objfile
11567     = cu->per_cu->dwarf2_per_objfile;
11568   struct objfile *objfile = dwarf2_per_objfile->objfile;
11569   struct attribute *attr;
11570   struct line_header line_header_local;
11571   hashval_t line_header_local_hash;
11572   void **slot;
11573   int decode_mapping;
11574
11575   gdb_assert (! cu->per_cu->is_debug_types);
11576
11577   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11578   if (attr == NULL)
11579     return;
11580
11581   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11582
11583   /* The line header hash table is only created if needed (it exists to
11584      prevent redundant reading of the line table for partial_units).
11585      If we're given a partial_unit, we'll need it.  If we're given a
11586      compile_unit, then use the line header hash table if it's already
11587      created, but don't create one just yet.  */
11588
11589   if (dwarf2_per_objfile->line_header_hash == NULL
11590       && die->tag == DW_TAG_partial_unit)
11591     {
11592       dwarf2_per_objfile->line_header_hash
11593         = htab_create_alloc_ex (127, line_header_hash_voidp,
11594                                 line_header_eq_voidp,
11595                                 free_line_header_voidp,
11596                                 &objfile->objfile_obstack,
11597                                 hashtab_obstack_allocate,
11598                                 dummy_obstack_deallocate);
11599     }
11600
11601   line_header_local.sect_off = line_offset;
11602   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11603   line_header_local_hash = line_header_hash (&line_header_local);
11604   if (dwarf2_per_objfile->line_header_hash != NULL)
11605     {
11606       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11607                                        &line_header_local,
11608                                        line_header_local_hash, NO_INSERT);
11609
11610       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11611          is not present in *SLOT (since if there is something in *SLOT then
11612          it will be for a partial_unit).  */
11613       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11614         {
11615           gdb_assert (*slot != NULL);
11616           cu->line_header = (struct line_header *) *slot;
11617           return;
11618         }
11619     }
11620
11621   /* dwarf_decode_line_header does not yet provide sufficient information.
11622      We always have to call also dwarf_decode_lines for it.  */
11623   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11624   if (lh == NULL)
11625     return;
11626
11627   cu->line_header = lh.release ();
11628   cu->line_header_die_owner = die;
11629
11630   if (dwarf2_per_objfile->line_header_hash == NULL)
11631     slot = NULL;
11632   else
11633     {
11634       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11635                                        &line_header_local,
11636                                        line_header_local_hash, INSERT);
11637       gdb_assert (slot != NULL);
11638     }
11639   if (slot != NULL && *slot == NULL)
11640     {
11641       /* This newly decoded line number information unit will be owned
11642          by line_header_hash hash table.  */
11643       *slot = cu->line_header;
11644       cu->line_header_die_owner = NULL;
11645     }
11646   else
11647     {
11648       /* We cannot free any current entry in (*slot) as that struct line_header
11649          may be already used by multiple CUs.  Create only temporary decoded
11650          line_header for this CU - it may happen at most once for each line
11651          number information unit.  And if we're not using line_header_hash
11652          then this is what we want as well.  */
11653       gdb_assert (die->tag != DW_TAG_partial_unit);
11654     }
11655   decode_mapping = (die->tag != DW_TAG_partial_unit);
11656   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11657                       decode_mapping);
11658
11659 }
11660
11661 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11662
11663 static void
11664 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11665 {
11666   struct dwarf2_per_objfile *dwarf2_per_objfile
11667     = cu->per_cu->dwarf2_per_objfile;
11668   struct objfile *objfile = dwarf2_per_objfile->objfile;
11669   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11670   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11671   CORE_ADDR highpc = ((CORE_ADDR) 0);
11672   struct attribute *attr;
11673   struct die_info *child_die;
11674   CORE_ADDR baseaddr;
11675
11676   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11677
11678   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11679
11680   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11681      from finish_block.  */
11682   if (lowpc == ((CORE_ADDR) -1))
11683     lowpc = highpc;
11684   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11685
11686   file_and_directory fnd = find_file_and_directory (die, cu);
11687
11688   prepare_one_comp_unit (cu, die, cu->language);
11689
11690   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11691      standardised yet.  As a workaround for the language detection we fall
11692      back to the DW_AT_producer string.  */
11693   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11694     cu->language = language_opencl;
11695
11696   /* Similar hack for Go.  */
11697   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11698     set_cu_language (DW_LANG_Go, cu);
11699
11700   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11701
11702   /* Decode line number information if present.  We do this before
11703      processing child DIEs, so that the line header table is available
11704      for DW_AT_decl_file.  */
11705   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11706
11707   /* Process all dies in compilation unit.  */
11708   if (die->child != NULL)
11709     {
11710       child_die = die->child;
11711       while (child_die && child_die->tag)
11712         {
11713           process_die (child_die, cu);
11714           child_die = sibling_die (child_die);
11715         }
11716     }
11717
11718   /* Decode macro information, if present.  Dwarf 2 macro information
11719      refers to information in the line number info statement program
11720      header, so we can only read it if we've read the header
11721      successfully.  */
11722   attr = dwarf2_attr (die, DW_AT_macros, cu);
11723   if (attr == NULL)
11724     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11725   if (attr && cu->line_header)
11726     {
11727       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11728         complaint (&symfile_complaints,
11729                    _("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11730
11731       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11732     }
11733   else
11734     {
11735       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11736       if (attr && cu->line_header)
11737         {
11738           unsigned int macro_offset = DW_UNSND (attr);
11739
11740           dwarf_decode_macros (cu, macro_offset, 0);
11741         }
11742     }
11743 }
11744
11745 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11746    Create the set of symtabs used by this TU, or if this TU is sharing
11747    symtabs with another TU and the symtabs have already been created
11748    then restore those symtabs in the line header.
11749    We don't need the pc/line-number mapping for type units.  */
11750
11751 static void
11752 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11753 {
11754   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11755   struct type_unit_group *tu_group;
11756   int first_time;
11757   struct attribute *attr;
11758   unsigned int i;
11759   struct signatured_type *sig_type;
11760
11761   gdb_assert (per_cu->is_debug_types);
11762   sig_type = (struct signatured_type *) per_cu;
11763
11764   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11765
11766   /* If we're using .gdb_index (includes -readnow) then
11767      per_cu->type_unit_group may not have been set up yet.  */
11768   if (sig_type->type_unit_group == NULL)
11769     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11770   tu_group = sig_type->type_unit_group;
11771
11772   /* If we've already processed this stmt_list there's no real need to
11773      do it again, we could fake it and just recreate the part we need
11774      (file name,index -> symtab mapping).  If data shows this optimization
11775      is useful we can do it then.  */
11776   first_time = tu_group->compunit_symtab == NULL;
11777
11778   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11779      debug info.  */
11780   line_header_up lh;
11781   if (attr != NULL)
11782     {
11783       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11784       lh = dwarf_decode_line_header (line_offset, cu);
11785     }
11786   if (lh == NULL)
11787     {
11788       if (first_time)
11789         dwarf2_start_symtab (cu, "", NULL, 0);
11790       else
11791         {
11792           gdb_assert (tu_group->symtabs == NULL);
11793           restart_symtab (tu_group->compunit_symtab, "", 0);
11794         }
11795       return;
11796     }
11797
11798   cu->line_header = lh.release ();
11799   cu->line_header_die_owner = die;
11800
11801   if (first_time)
11802     {
11803       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11804
11805       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11806          still initializing it, and our caller (a few levels up)
11807          process_full_type_unit still needs to know if this is the first
11808          time.  */
11809
11810       tu_group->num_symtabs = cu->line_header->file_names.size ();
11811       tu_group->symtabs = XNEWVEC (struct symtab *,
11812                                    cu->line_header->file_names.size ());
11813
11814       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11815         {
11816           file_entry &fe = cu->line_header->file_names[i];
11817
11818           dwarf2_start_subfile (fe.name, fe.include_dir (cu->line_header));
11819
11820           if (current_subfile->symtab == NULL)
11821             {
11822               /* NOTE: start_subfile will recognize when it's been
11823                  passed a file it has already seen.  So we can't
11824                  assume there's a simple mapping from
11825                  cu->line_header->file_names to subfiles, plus
11826                  cu->line_header->file_names may contain dups.  */
11827               current_subfile->symtab
11828                 = allocate_symtab (cust, current_subfile->name);
11829             }
11830
11831           fe.symtab = current_subfile->symtab;
11832           tu_group->symtabs[i] = fe.symtab;
11833         }
11834     }
11835   else
11836     {
11837       restart_symtab (tu_group->compunit_symtab, "", 0);
11838
11839       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11840         {
11841           file_entry &fe = cu->line_header->file_names[i];
11842
11843           fe.symtab = tu_group->symtabs[i];
11844         }
11845     }
11846
11847   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11848      so they don't have a "real" (so to speak) symtab anyway.
11849      There is later code that will assign the main symtab to all symbols
11850      that don't have one.  We need to handle the case of a symbol with a
11851      missing symtab (DW_AT_decl_file) anyway.  */
11852 }
11853
11854 /* Process DW_TAG_type_unit.
11855    For TUs we want to skip the first top level sibling if it's not the
11856    actual type being defined by this TU.  In this case the first top
11857    level sibling is there to provide context only.  */
11858
11859 static void
11860 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11861 {
11862   struct die_info *child_die;
11863
11864   prepare_one_comp_unit (cu, die, language_minimal);
11865
11866   /* Initialize (or reinitialize) the machinery for building symtabs.
11867      We do this before processing child DIEs, so that the line header table
11868      is available for DW_AT_decl_file.  */
11869   setup_type_unit_groups (die, cu);
11870
11871   if (die->child != NULL)
11872     {
11873       child_die = die->child;
11874       while (child_die && child_die->tag)
11875         {
11876           process_die (child_die, cu);
11877           child_die = sibling_die (child_die);
11878         }
11879     }
11880 }
11881 \f
11882 /* DWO/DWP files.
11883
11884    http://gcc.gnu.org/wiki/DebugFission
11885    http://gcc.gnu.org/wiki/DebugFissionDWP
11886
11887    To simplify handling of both DWO files ("object" files with the DWARF info)
11888    and DWP files (a file with the DWOs packaged up into one file), we treat
11889    DWP files as having a collection of virtual DWO files.  */
11890
11891 static hashval_t
11892 hash_dwo_file (const void *item)
11893 {
11894   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11895   hashval_t hash;
11896
11897   hash = htab_hash_string (dwo_file->dwo_name);
11898   if (dwo_file->comp_dir != NULL)
11899     hash += htab_hash_string (dwo_file->comp_dir);
11900   return hash;
11901 }
11902
11903 static int
11904 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11905 {
11906   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11907   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11908
11909   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11910     return 0;
11911   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11912     return lhs->comp_dir == rhs->comp_dir;
11913   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11914 }
11915
11916 /* Allocate a hash table for DWO files.  */
11917
11918 static htab_t
11919 allocate_dwo_file_hash_table (struct objfile *objfile)
11920 {
11921   return htab_create_alloc_ex (41,
11922                                hash_dwo_file,
11923                                eq_dwo_file,
11924                                NULL,
11925                                &objfile->objfile_obstack,
11926                                hashtab_obstack_allocate,
11927                                dummy_obstack_deallocate);
11928 }
11929
11930 /* Lookup DWO file DWO_NAME.  */
11931
11932 static void **
11933 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11934                       const char *dwo_name,
11935                       const char *comp_dir)
11936 {
11937   struct dwo_file find_entry;
11938   void **slot;
11939
11940   if (dwarf2_per_objfile->dwo_files == NULL)
11941     dwarf2_per_objfile->dwo_files
11942       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11943
11944   memset (&find_entry, 0, sizeof (find_entry));
11945   find_entry.dwo_name = dwo_name;
11946   find_entry.comp_dir = comp_dir;
11947   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11948
11949   return slot;
11950 }
11951
11952 static hashval_t
11953 hash_dwo_unit (const void *item)
11954 {
11955   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11956
11957   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11958   return dwo_unit->signature;
11959 }
11960
11961 static int
11962 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11963 {
11964   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11965   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11966
11967   /* The signature is assumed to be unique within the DWO file.
11968      So while object file CU dwo_id's always have the value zero,
11969      that's OK, assuming each object file DWO file has only one CU,
11970      and that's the rule for now.  */
11971   return lhs->signature == rhs->signature;
11972 }
11973
11974 /* Allocate a hash table for DWO CUs,TUs.
11975    There is one of these tables for each of CUs,TUs for each DWO file.  */
11976
11977 static htab_t
11978 allocate_dwo_unit_table (struct objfile *objfile)
11979 {
11980   /* Start out with a pretty small number.
11981      Generally DWO files contain only one CU and maybe some TUs.  */
11982   return htab_create_alloc_ex (3,
11983                                hash_dwo_unit,
11984                                eq_dwo_unit,
11985                                NULL,
11986                                &objfile->objfile_obstack,
11987                                hashtab_obstack_allocate,
11988                                dummy_obstack_deallocate);
11989 }
11990
11991 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11992
11993 struct create_dwo_cu_data
11994 {
11995   struct dwo_file *dwo_file;
11996   struct dwo_unit dwo_unit;
11997 };
11998
11999 /* die_reader_func for create_dwo_cu.  */
12000
12001 static void
12002 create_dwo_cu_reader (const struct die_reader_specs *reader,
12003                       const gdb_byte *info_ptr,
12004                       struct die_info *comp_unit_die,
12005                       int has_children,
12006                       void *datap)
12007 {
12008   struct dwarf2_cu *cu = reader->cu;
12009   sect_offset sect_off = cu->per_cu->sect_off;
12010   struct dwarf2_section_info *section = cu->per_cu->section;
12011   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
12012   struct dwo_file *dwo_file = data->dwo_file;
12013   struct dwo_unit *dwo_unit = &data->dwo_unit;
12014   struct attribute *attr;
12015
12016   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
12017   if (attr == NULL)
12018     {
12019       complaint (&symfile_complaints,
12020                  _("Dwarf Error: debug entry at offset 0x%x is missing"
12021                    " its dwo_id [in module %s]"),
12022                  to_underlying (sect_off), dwo_file->dwo_name);
12023       return;
12024     }
12025
12026   dwo_unit->dwo_file = dwo_file;
12027   dwo_unit->signature = DW_UNSND (attr);
12028   dwo_unit->section = section;
12029   dwo_unit->sect_off = sect_off;
12030   dwo_unit->length = cu->per_cu->length;
12031
12032   if (dwarf_read_debug)
12033     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
12034                         to_underlying (sect_off),
12035                         hex_string (dwo_unit->signature));
12036 }
12037
12038 /* Create the dwo_units for the CUs in a DWO_FILE.
12039    Note: This function processes DWO files only, not DWP files.  */
12040
12041 static void
12042 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12043                        struct dwo_file &dwo_file, dwarf2_section_info &section,
12044                        htab_t &cus_htab)
12045 {
12046   struct objfile *objfile = dwarf2_per_objfile->objfile;
12047   const gdb_byte *info_ptr, *end_ptr;
12048
12049   dwarf2_read_section (objfile, &section);
12050   info_ptr = section.buffer;
12051
12052   if (info_ptr == NULL)
12053     return;
12054
12055   if (dwarf_read_debug)
12056     {
12057       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
12058                           get_section_name (&section),
12059                           get_section_file_name (&section));
12060     }
12061
12062   end_ptr = info_ptr + section.size;
12063   while (info_ptr < end_ptr)
12064     {
12065       struct dwarf2_per_cu_data per_cu;
12066       struct create_dwo_cu_data create_dwo_cu_data;
12067       struct dwo_unit *dwo_unit;
12068       void **slot;
12069       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
12070
12071       memset (&create_dwo_cu_data.dwo_unit, 0,
12072               sizeof (create_dwo_cu_data.dwo_unit));
12073       memset (&per_cu, 0, sizeof (per_cu));
12074       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
12075       per_cu.is_debug_types = 0;
12076       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
12077       per_cu.section = &section;
12078       create_dwo_cu_data.dwo_file = &dwo_file;
12079
12080       init_cutu_and_read_dies_no_follow (
12081           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
12082       info_ptr += per_cu.length;
12083
12084       // If the unit could not be parsed, skip it.
12085       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
12086         continue;
12087
12088       if (cus_htab == NULL)
12089         cus_htab = allocate_dwo_unit_table (objfile);
12090
12091       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12092       *dwo_unit = create_dwo_cu_data.dwo_unit;
12093       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
12094       gdb_assert (slot != NULL);
12095       if (*slot != NULL)
12096         {
12097           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
12098           sect_offset dup_sect_off = dup_cu->sect_off;
12099
12100           complaint (&symfile_complaints,
12101                      _("debug cu entry at offset 0x%x is duplicate to"
12102                        " the entry at offset 0x%x, signature %s"),
12103                      to_underlying (sect_off), to_underlying (dup_sect_off),
12104                      hex_string (dwo_unit->signature));
12105         }
12106       *slot = (void *)dwo_unit;
12107     }
12108 }
12109
12110 /* DWP file .debug_{cu,tu}_index section format:
12111    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
12112
12113    DWP Version 1:
12114
12115    Both index sections have the same format, and serve to map a 64-bit
12116    signature to a set of section numbers.  Each section begins with a header,
12117    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
12118    indexes, and a pool of 32-bit section numbers.  The index sections will be
12119    aligned at 8-byte boundaries in the file.
12120
12121    The index section header consists of:
12122
12123     V, 32 bit version number
12124     -, 32 bits unused
12125     N, 32 bit number of compilation units or type units in the index
12126     M, 32 bit number of slots in the hash table
12127
12128    Numbers are recorded using the byte order of the application binary.
12129
12130    The hash table begins at offset 16 in the section, and consists of an array
12131    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12132    order of the application binary).  Unused slots in the hash table are 0.
12133    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12134
12135    The parallel table begins immediately after the hash table
12136    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12137    array of 32-bit indexes (using the byte order of the application binary),
12138    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12139    table contains a 32-bit index into the pool of section numbers.  For unused
12140    hash table slots, the corresponding entry in the parallel table will be 0.
12141
12142    The pool of section numbers begins immediately following the hash table
12143    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12144    section numbers consists of an array of 32-bit words (using the byte order
12145    of the application binary).  Each item in the array is indexed starting
12146    from 0.  The hash table entry provides the index of the first section
12147    number in the set.  Additional section numbers in the set follow, and the
12148    set is terminated by a 0 entry (section number 0 is not used in ELF).
12149
12150    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12151    section must be the first entry in the set, and the .debug_abbrev.dwo must
12152    be the second entry. Other members of the set may follow in any order.
12153
12154    ---
12155
12156    DWP Version 2:
12157
12158    DWP Version 2 combines all the .debug_info, etc. sections into one,
12159    and the entries in the index tables are now offsets into these sections.
12160    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12161    section.
12162
12163    Index Section Contents:
12164     Header
12165     Hash Table of Signatures   dwp_hash_table.hash_table
12166     Parallel Table of Indices  dwp_hash_table.unit_table
12167     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12168     Table of Section Sizes     dwp_hash_table.v2.sizes
12169
12170    The index section header consists of:
12171
12172     V, 32 bit version number
12173     L, 32 bit number of columns in the table of section offsets
12174     N, 32 bit number of compilation units or type units in the index
12175     M, 32 bit number of slots in the hash table
12176
12177    Numbers are recorded using the byte order of the application binary.
12178
12179    The hash table has the same format as version 1.
12180    The parallel table of indices has the same format as version 1,
12181    except that the entries are origin-1 indices into the table of sections
12182    offsets and the table of section sizes.
12183
12184    The table of offsets begins immediately following the parallel table
12185    (at offset 16 + 12 * M from the beginning of the section).  The table is
12186    a two-dimensional array of 32-bit words (using the byte order of the
12187    application binary), with L columns and N+1 rows, in row-major order.
12188    Each row in the array is indexed starting from 0.  The first row provides
12189    a key to the remaining rows: each column in this row provides an identifier
12190    for a debug section, and the offsets in the same column of subsequent rows
12191    refer to that section.  The section identifiers are:
12192
12193     DW_SECT_INFO         1  .debug_info.dwo
12194     DW_SECT_TYPES        2  .debug_types.dwo
12195     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12196     DW_SECT_LINE         4  .debug_line.dwo
12197     DW_SECT_LOC          5  .debug_loc.dwo
12198     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12199     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12200     DW_SECT_MACRO        8  .debug_macro.dwo
12201
12202    The offsets provided by the CU and TU index sections are the base offsets
12203    for the contributions made by each CU or TU to the corresponding section
12204    in the package file.  Each CU and TU header contains an abbrev_offset
12205    field, used to find the abbreviations table for that CU or TU within the
12206    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12207    be interpreted as relative to the base offset given in the index section.
12208    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12209    should be interpreted as relative to the base offset for .debug_line.dwo,
12210    and offsets into other debug sections obtained from DWARF attributes should
12211    also be interpreted as relative to the corresponding base offset.
12212
12213    The table of sizes begins immediately following the table of offsets.
12214    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12215    with L columns and N rows, in row-major order.  Each row in the array is
12216    indexed starting from 1 (row 0 is shared by the two tables).
12217
12218    ---
12219
12220    Hash table lookup is handled the same in version 1 and 2:
12221
12222    We assume that N and M will not exceed 2^32 - 1.
12223    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12224
12225    Given a 64-bit compilation unit signature or a type signature S, an entry
12226    in the hash table is located as follows:
12227
12228    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12229       the low-order k bits all set to 1.
12230
12231    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12232
12233    3) If the hash table entry at index H matches the signature, use that
12234       entry.  If the hash table entry at index H is unused (all zeroes),
12235       terminate the search: the signature is not present in the table.
12236
12237    4) Let H = (H + H') modulo M. Repeat at Step 3.
12238
12239    Because M > N and H' and M are relatively prime, the search is guaranteed
12240    to stop at an unused slot or find the match.  */
12241
12242 /* Create a hash table to map DWO IDs to their CU/TU entry in
12243    .debug_{info,types}.dwo in DWP_FILE.
12244    Returns NULL if there isn't one.
12245    Note: This function processes DWP files only, not DWO files.  */
12246
12247 static struct dwp_hash_table *
12248 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12249                        struct dwp_file *dwp_file, int is_debug_types)
12250 {
12251   struct objfile *objfile = dwarf2_per_objfile->objfile;
12252   bfd *dbfd = dwp_file->dbfd;
12253   const gdb_byte *index_ptr, *index_end;
12254   struct dwarf2_section_info *index;
12255   uint32_t version, nr_columns, nr_units, nr_slots;
12256   struct dwp_hash_table *htab;
12257
12258   if (is_debug_types)
12259     index = &dwp_file->sections.tu_index;
12260   else
12261     index = &dwp_file->sections.cu_index;
12262
12263   if (dwarf2_section_empty_p (index))
12264     return NULL;
12265   dwarf2_read_section (objfile, index);
12266
12267   index_ptr = index->buffer;
12268   index_end = index_ptr + index->size;
12269
12270   version = read_4_bytes (dbfd, index_ptr);
12271   index_ptr += 4;
12272   if (version == 2)
12273     nr_columns = read_4_bytes (dbfd, index_ptr);
12274   else
12275     nr_columns = 0;
12276   index_ptr += 4;
12277   nr_units = read_4_bytes (dbfd, index_ptr);
12278   index_ptr += 4;
12279   nr_slots = read_4_bytes (dbfd, index_ptr);
12280   index_ptr += 4;
12281
12282   if (version != 1 && version != 2)
12283     {
12284       error (_("Dwarf Error: unsupported DWP file version (%s)"
12285                " [in module %s]"),
12286              pulongest (version), dwp_file->name);
12287     }
12288   if (nr_slots != (nr_slots & -nr_slots))
12289     {
12290       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12291                " is not power of 2 [in module %s]"),
12292              pulongest (nr_slots), dwp_file->name);
12293     }
12294
12295   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12296   htab->version = version;
12297   htab->nr_columns = nr_columns;
12298   htab->nr_units = nr_units;
12299   htab->nr_slots = nr_slots;
12300   htab->hash_table = index_ptr;
12301   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12302
12303   /* Exit early if the table is empty.  */
12304   if (nr_slots == 0 || nr_units == 0
12305       || (version == 2 && nr_columns == 0))
12306     {
12307       /* All must be zero.  */
12308       if (nr_slots != 0 || nr_units != 0
12309           || (version == 2 && nr_columns != 0))
12310         {
12311           complaint (&symfile_complaints,
12312                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
12313                        " all zero [in modules %s]"),
12314                      dwp_file->name);
12315         }
12316       return htab;
12317     }
12318
12319   if (version == 1)
12320     {
12321       htab->section_pool.v1.indices =
12322         htab->unit_table + sizeof (uint32_t) * nr_slots;
12323       /* It's harder to decide whether the section is too small in v1.
12324          V1 is deprecated anyway so we punt.  */
12325     }
12326   else
12327     {
12328       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12329       int *ids = htab->section_pool.v2.section_ids;
12330       /* Reverse map for error checking.  */
12331       int ids_seen[DW_SECT_MAX + 1];
12332       int i;
12333
12334       if (nr_columns < 2)
12335         {
12336           error (_("Dwarf Error: bad DWP hash table, too few columns"
12337                    " in section table [in module %s]"),
12338                  dwp_file->name);
12339         }
12340       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12341         {
12342           error (_("Dwarf Error: bad DWP hash table, too many columns"
12343                    " in section table [in module %s]"),
12344                  dwp_file->name);
12345         }
12346       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12347       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12348       for (i = 0; i < nr_columns; ++i)
12349         {
12350           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12351
12352           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12353             {
12354               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12355                        " in section table [in module %s]"),
12356                      id, dwp_file->name);
12357             }
12358           if (ids_seen[id] != -1)
12359             {
12360               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12361                        " id %d in section table [in module %s]"),
12362                      id, dwp_file->name);
12363             }
12364           ids_seen[id] = i;
12365           ids[i] = id;
12366         }
12367       /* Must have exactly one info or types section.  */
12368       if (((ids_seen[DW_SECT_INFO] != -1)
12369            + (ids_seen[DW_SECT_TYPES] != -1))
12370           != 1)
12371         {
12372           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12373                    " DWO info/types section [in module %s]"),
12374                  dwp_file->name);
12375         }
12376       /* Must have an abbrev section.  */
12377       if (ids_seen[DW_SECT_ABBREV] == -1)
12378         {
12379           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12380                    " section [in module %s]"),
12381                  dwp_file->name);
12382         }
12383       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12384       htab->section_pool.v2.sizes =
12385         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12386                                          * nr_units * nr_columns);
12387       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12388                                           * nr_units * nr_columns))
12389           > index_end)
12390         {
12391           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12392                    " [in module %s]"),
12393                  dwp_file->name);
12394         }
12395     }
12396
12397   return htab;
12398 }
12399
12400 /* Update SECTIONS with the data from SECTP.
12401
12402    This function is like the other "locate" section routines that are
12403    passed to bfd_map_over_sections, but in this context the sections to
12404    read comes from the DWP V1 hash table, not the full ELF section table.
12405
12406    The result is non-zero for success, or zero if an error was found.  */
12407
12408 static int
12409 locate_v1_virtual_dwo_sections (asection *sectp,
12410                                 struct virtual_v1_dwo_sections *sections)
12411 {
12412   const struct dwop_section_names *names = &dwop_section_names;
12413
12414   if (section_is_p (sectp->name, &names->abbrev_dwo))
12415     {
12416       /* There can be only one.  */
12417       if (sections->abbrev.s.section != NULL)
12418         return 0;
12419       sections->abbrev.s.section = sectp;
12420       sections->abbrev.size = bfd_get_section_size (sectp);
12421     }
12422   else if (section_is_p (sectp->name, &names->info_dwo)
12423            || section_is_p (sectp->name, &names->types_dwo))
12424     {
12425       /* There can be only one.  */
12426       if (sections->info_or_types.s.section != NULL)
12427         return 0;
12428       sections->info_or_types.s.section = sectp;
12429       sections->info_or_types.size = bfd_get_section_size (sectp);
12430     }
12431   else if (section_is_p (sectp->name, &names->line_dwo))
12432     {
12433       /* There can be only one.  */
12434       if (sections->line.s.section != NULL)
12435         return 0;
12436       sections->line.s.section = sectp;
12437       sections->line.size = bfd_get_section_size (sectp);
12438     }
12439   else if (section_is_p (sectp->name, &names->loc_dwo))
12440     {
12441       /* There can be only one.  */
12442       if (sections->loc.s.section != NULL)
12443         return 0;
12444       sections->loc.s.section = sectp;
12445       sections->loc.size = bfd_get_section_size (sectp);
12446     }
12447   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12448     {
12449       /* There can be only one.  */
12450       if (sections->macinfo.s.section != NULL)
12451         return 0;
12452       sections->macinfo.s.section = sectp;
12453       sections->macinfo.size = bfd_get_section_size (sectp);
12454     }
12455   else if (section_is_p (sectp->name, &names->macro_dwo))
12456     {
12457       /* There can be only one.  */
12458       if (sections->macro.s.section != NULL)
12459         return 0;
12460       sections->macro.s.section = sectp;
12461       sections->macro.size = bfd_get_section_size (sectp);
12462     }
12463   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12464     {
12465       /* There can be only one.  */
12466       if (sections->str_offsets.s.section != NULL)
12467         return 0;
12468       sections->str_offsets.s.section = sectp;
12469       sections->str_offsets.size = bfd_get_section_size (sectp);
12470     }
12471   else
12472     {
12473       /* No other kind of section is valid.  */
12474       return 0;
12475     }
12476
12477   return 1;
12478 }
12479
12480 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12481    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12482    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12483    This is for DWP version 1 files.  */
12484
12485 static struct dwo_unit *
12486 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12487                            struct dwp_file *dwp_file,
12488                            uint32_t unit_index,
12489                            const char *comp_dir,
12490                            ULONGEST signature, int is_debug_types)
12491 {
12492   struct objfile *objfile = dwarf2_per_objfile->objfile;
12493   const struct dwp_hash_table *dwp_htab =
12494     is_debug_types ? dwp_file->tus : dwp_file->cus;
12495   bfd *dbfd = dwp_file->dbfd;
12496   const char *kind = is_debug_types ? "TU" : "CU";
12497   struct dwo_file *dwo_file;
12498   struct dwo_unit *dwo_unit;
12499   struct virtual_v1_dwo_sections sections;
12500   void **dwo_file_slot;
12501   int i;
12502
12503   gdb_assert (dwp_file->version == 1);
12504
12505   if (dwarf_read_debug)
12506     {
12507       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12508                           kind,
12509                           pulongest (unit_index), hex_string (signature),
12510                           dwp_file->name);
12511     }
12512
12513   /* Fetch the sections of this DWO unit.
12514      Put a limit on the number of sections we look for so that bad data
12515      doesn't cause us to loop forever.  */
12516
12517 #define MAX_NR_V1_DWO_SECTIONS \
12518   (1 /* .debug_info or .debug_types */ \
12519    + 1 /* .debug_abbrev */ \
12520    + 1 /* .debug_line */ \
12521    + 1 /* .debug_loc */ \
12522    + 1 /* .debug_str_offsets */ \
12523    + 1 /* .debug_macro or .debug_macinfo */ \
12524    + 1 /* trailing zero */)
12525
12526   memset (&sections, 0, sizeof (sections));
12527
12528   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12529     {
12530       asection *sectp;
12531       uint32_t section_nr =
12532         read_4_bytes (dbfd,
12533                       dwp_htab->section_pool.v1.indices
12534                       + (unit_index + i) * sizeof (uint32_t));
12535
12536       if (section_nr == 0)
12537         break;
12538       if (section_nr >= dwp_file->num_sections)
12539         {
12540           error (_("Dwarf Error: bad DWP hash table, section number too large"
12541                    " [in module %s]"),
12542                  dwp_file->name);
12543         }
12544
12545       sectp = dwp_file->elf_sections[section_nr];
12546       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12547         {
12548           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12549                    " [in module %s]"),
12550                  dwp_file->name);
12551         }
12552     }
12553
12554   if (i < 2
12555       || dwarf2_section_empty_p (&sections.info_or_types)
12556       || dwarf2_section_empty_p (&sections.abbrev))
12557     {
12558       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12559                " [in module %s]"),
12560              dwp_file->name);
12561     }
12562   if (i == MAX_NR_V1_DWO_SECTIONS)
12563     {
12564       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12565                " [in module %s]"),
12566              dwp_file->name);
12567     }
12568
12569   /* It's easier for the rest of the code if we fake a struct dwo_file and
12570      have dwo_unit "live" in that.  At least for now.
12571
12572      The DWP file can be made up of a random collection of CUs and TUs.
12573      However, for each CU + set of TUs that came from the same original DWO
12574      file, we can combine them back into a virtual DWO file to save space
12575      (fewer struct dwo_file objects to allocate).  Remember that for really
12576      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12577
12578   std::string virtual_dwo_name =
12579     string_printf ("virtual-dwo/%d-%d-%d-%d",
12580                    get_section_id (&sections.abbrev),
12581                    get_section_id (&sections.line),
12582                    get_section_id (&sections.loc),
12583                    get_section_id (&sections.str_offsets));
12584   /* Can we use an existing virtual DWO file?  */
12585   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12586                                         virtual_dwo_name.c_str (),
12587                                         comp_dir);
12588   /* Create one if necessary.  */
12589   if (*dwo_file_slot == NULL)
12590     {
12591       if (dwarf_read_debug)
12592         {
12593           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12594                               virtual_dwo_name.c_str ());
12595         }
12596       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12597       dwo_file->dwo_name
12598         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12599                                         virtual_dwo_name.c_str (),
12600                                         virtual_dwo_name.size ());
12601       dwo_file->comp_dir = comp_dir;
12602       dwo_file->sections.abbrev = sections.abbrev;
12603       dwo_file->sections.line = sections.line;
12604       dwo_file->sections.loc = sections.loc;
12605       dwo_file->sections.macinfo = sections.macinfo;
12606       dwo_file->sections.macro = sections.macro;
12607       dwo_file->sections.str_offsets = sections.str_offsets;
12608       /* The "str" section is global to the entire DWP file.  */
12609       dwo_file->sections.str = dwp_file->sections.str;
12610       /* The info or types section is assigned below to dwo_unit,
12611          there's no need to record it in dwo_file.
12612          Also, we can't simply record type sections in dwo_file because
12613          we record a pointer into the vector in dwo_unit.  As we collect more
12614          types we'll grow the vector and eventually have to reallocate space
12615          for it, invalidating all copies of pointers into the previous
12616          contents.  */
12617       *dwo_file_slot = dwo_file;
12618     }
12619   else
12620     {
12621       if (dwarf_read_debug)
12622         {
12623           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12624                               virtual_dwo_name.c_str ());
12625         }
12626       dwo_file = (struct dwo_file *) *dwo_file_slot;
12627     }
12628
12629   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12630   dwo_unit->dwo_file = dwo_file;
12631   dwo_unit->signature = signature;
12632   dwo_unit->section =
12633     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12634   *dwo_unit->section = sections.info_or_types;
12635   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12636
12637   return dwo_unit;
12638 }
12639
12640 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12641    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12642    piece within that section used by a TU/CU, return a virtual section
12643    of just that piece.  */
12644
12645 static struct dwarf2_section_info
12646 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12647                        struct dwarf2_section_info *section,
12648                        bfd_size_type offset, bfd_size_type size)
12649 {
12650   struct dwarf2_section_info result;
12651   asection *sectp;
12652
12653   gdb_assert (section != NULL);
12654   gdb_assert (!section->is_virtual);
12655
12656   memset (&result, 0, sizeof (result));
12657   result.s.containing_section = section;
12658   result.is_virtual = 1;
12659
12660   if (size == 0)
12661     return result;
12662
12663   sectp = get_section_bfd_section (section);
12664
12665   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12666      bounds of the real section.  This is a pretty-rare event, so just
12667      flag an error (easier) instead of a warning and trying to cope.  */
12668   if (sectp == NULL
12669       || offset + size > bfd_get_section_size (sectp))
12670     {
12671       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12672                " in section %s [in module %s]"),
12673              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12674              objfile_name (dwarf2_per_objfile->objfile));
12675     }
12676
12677   result.virtual_offset = offset;
12678   result.size = size;
12679   return result;
12680 }
12681
12682 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12683    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12684    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12685    This is for DWP version 2 files.  */
12686
12687 static struct dwo_unit *
12688 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12689                            struct dwp_file *dwp_file,
12690                            uint32_t unit_index,
12691                            const char *comp_dir,
12692                            ULONGEST signature, int is_debug_types)
12693 {
12694   struct objfile *objfile = dwarf2_per_objfile->objfile;
12695   const struct dwp_hash_table *dwp_htab =
12696     is_debug_types ? dwp_file->tus : dwp_file->cus;
12697   bfd *dbfd = dwp_file->dbfd;
12698   const char *kind = is_debug_types ? "TU" : "CU";
12699   struct dwo_file *dwo_file;
12700   struct dwo_unit *dwo_unit;
12701   struct virtual_v2_dwo_sections sections;
12702   void **dwo_file_slot;
12703   int i;
12704
12705   gdb_assert (dwp_file->version == 2);
12706
12707   if (dwarf_read_debug)
12708     {
12709       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12710                           kind,
12711                           pulongest (unit_index), hex_string (signature),
12712                           dwp_file->name);
12713     }
12714
12715   /* Fetch the section offsets of this DWO unit.  */
12716
12717   memset (&sections, 0, sizeof (sections));
12718
12719   for (i = 0; i < dwp_htab->nr_columns; ++i)
12720     {
12721       uint32_t offset = read_4_bytes (dbfd,
12722                                       dwp_htab->section_pool.v2.offsets
12723                                       + (((unit_index - 1) * dwp_htab->nr_columns
12724                                           + i)
12725                                          * sizeof (uint32_t)));
12726       uint32_t size = read_4_bytes (dbfd,
12727                                     dwp_htab->section_pool.v2.sizes
12728                                     + (((unit_index - 1) * dwp_htab->nr_columns
12729                                         + i)
12730                                        * sizeof (uint32_t)));
12731
12732       switch (dwp_htab->section_pool.v2.section_ids[i])
12733         {
12734         case DW_SECT_INFO:
12735         case DW_SECT_TYPES:
12736           sections.info_or_types_offset = offset;
12737           sections.info_or_types_size = size;
12738           break;
12739         case DW_SECT_ABBREV:
12740           sections.abbrev_offset = offset;
12741           sections.abbrev_size = size;
12742           break;
12743         case DW_SECT_LINE:
12744           sections.line_offset = offset;
12745           sections.line_size = size;
12746           break;
12747         case DW_SECT_LOC:
12748           sections.loc_offset = offset;
12749           sections.loc_size = size;
12750           break;
12751         case DW_SECT_STR_OFFSETS:
12752           sections.str_offsets_offset = offset;
12753           sections.str_offsets_size = size;
12754           break;
12755         case DW_SECT_MACINFO:
12756           sections.macinfo_offset = offset;
12757           sections.macinfo_size = size;
12758           break;
12759         case DW_SECT_MACRO:
12760           sections.macro_offset = offset;
12761           sections.macro_size = size;
12762           break;
12763         }
12764     }
12765
12766   /* It's easier for the rest of the code if we fake a struct dwo_file and
12767      have dwo_unit "live" in that.  At least for now.
12768
12769      The DWP file can be made up of a random collection of CUs and TUs.
12770      However, for each CU + set of TUs that came from the same original DWO
12771      file, we can combine them back into a virtual DWO file to save space
12772      (fewer struct dwo_file objects to allocate).  Remember that for really
12773      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12774
12775   std::string virtual_dwo_name =
12776     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12777                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12778                    (long) (sections.line_size ? sections.line_offset : 0),
12779                    (long) (sections.loc_size ? sections.loc_offset : 0),
12780                    (long) (sections.str_offsets_size
12781                            ? sections.str_offsets_offset : 0));
12782   /* Can we use an existing virtual DWO file?  */
12783   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12784                                         virtual_dwo_name.c_str (),
12785                                         comp_dir);
12786   /* Create one if necessary.  */
12787   if (*dwo_file_slot == NULL)
12788     {
12789       if (dwarf_read_debug)
12790         {
12791           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12792                               virtual_dwo_name.c_str ());
12793         }
12794       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12795       dwo_file->dwo_name
12796         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12797                                         virtual_dwo_name.c_str (),
12798                                         virtual_dwo_name.size ());
12799       dwo_file->comp_dir = comp_dir;
12800       dwo_file->sections.abbrev =
12801         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12802                                sections.abbrev_offset, sections.abbrev_size);
12803       dwo_file->sections.line =
12804         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12805                                sections.line_offset, sections.line_size);
12806       dwo_file->sections.loc =
12807         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12808                                sections.loc_offset, sections.loc_size);
12809       dwo_file->sections.macinfo =
12810         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12811                                sections.macinfo_offset, sections.macinfo_size);
12812       dwo_file->sections.macro =
12813         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12814                                sections.macro_offset, sections.macro_size);
12815       dwo_file->sections.str_offsets =
12816         create_dwp_v2_section (dwarf2_per_objfile,
12817                                &dwp_file->sections.str_offsets,
12818                                sections.str_offsets_offset,
12819                                sections.str_offsets_size);
12820       /* The "str" section is global to the entire DWP file.  */
12821       dwo_file->sections.str = dwp_file->sections.str;
12822       /* The info or types section is assigned below to dwo_unit,
12823          there's no need to record it in dwo_file.
12824          Also, we can't simply record type sections in dwo_file because
12825          we record a pointer into the vector in dwo_unit.  As we collect more
12826          types we'll grow the vector and eventually have to reallocate space
12827          for it, invalidating all copies of pointers into the previous
12828          contents.  */
12829       *dwo_file_slot = dwo_file;
12830     }
12831   else
12832     {
12833       if (dwarf_read_debug)
12834         {
12835           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12836                               virtual_dwo_name.c_str ());
12837         }
12838       dwo_file = (struct dwo_file *) *dwo_file_slot;
12839     }
12840
12841   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12842   dwo_unit->dwo_file = dwo_file;
12843   dwo_unit->signature = signature;
12844   dwo_unit->section =
12845     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12846   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12847                                               is_debug_types
12848                                               ? &dwp_file->sections.types
12849                                               : &dwp_file->sections.info,
12850                                               sections.info_or_types_offset,
12851                                               sections.info_or_types_size);
12852   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12853
12854   return dwo_unit;
12855 }
12856
12857 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12858    Returns NULL if the signature isn't found.  */
12859
12860 static struct dwo_unit *
12861 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12862                         struct dwp_file *dwp_file, const char *comp_dir,
12863                         ULONGEST signature, int is_debug_types)
12864 {
12865   const struct dwp_hash_table *dwp_htab =
12866     is_debug_types ? dwp_file->tus : dwp_file->cus;
12867   bfd *dbfd = dwp_file->dbfd;
12868   uint32_t mask = dwp_htab->nr_slots - 1;
12869   uint32_t hash = signature & mask;
12870   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12871   unsigned int i;
12872   void **slot;
12873   struct dwo_unit find_dwo_cu;
12874
12875   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12876   find_dwo_cu.signature = signature;
12877   slot = htab_find_slot (is_debug_types
12878                          ? dwp_file->loaded_tus
12879                          : dwp_file->loaded_cus,
12880                          &find_dwo_cu, INSERT);
12881
12882   if (*slot != NULL)
12883     return (struct dwo_unit *) *slot;
12884
12885   /* Use a for loop so that we don't loop forever on bad debug info.  */
12886   for (i = 0; i < dwp_htab->nr_slots; ++i)
12887     {
12888       ULONGEST signature_in_table;
12889
12890       signature_in_table =
12891         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12892       if (signature_in_table == signature)
12893         {
12894           uint32_t unit_index =
12895             read_4_bytes (dbfd,
12896                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12897
12898           if (dwp_file->version == 1)
12899             {
12900               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12901                                                  dwp_file, unit_index,
12902                                                  comp_dir, signature,
12903                                                  is_debug_types);
12904             }
12905           else
12906             {
12907               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12908                                                  dwp_file, unit_index,
12909                                                  comp_dir, signature,
12910                                                  is_debug_types);
12911             }
12912           return (struct dwo_unit *) *slot;
12913         }
12914       if (signature_in_table == 0)
12915         return NULL;
12916       hash = (hash + hash2) & mask;
12917     }
12918
12919   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12920            " [in module %s]"),
12921          dwp_file->name);
12922 }
12923
12924 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12925    Open the file specified by FILE_NAME and hand it off to BFD for
12926    preliminary analysis.  Return a newly initialized bfd *, which
12927    includes a canonicalized copy of FILE_NAME.
12928    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12929    SEARCH_CWD is true if the current directory is to be searched.
12930    It will be searched before debug-file-directory.
12931    If successful, the file is added to the bfd include table of the
12932    objfile's bfd (see gdb_bfd_record_inclusion).
12933    If unable to find/open the file, return NULL.
12934    NOTE: This function is derived from symfile_bfd_open.  */
12935
12936 static gdb_bfd_ref_ptr
12937 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12938                     const char *file_name, int is_dwp, int search_cwd)
12939 {
12940   int desc, flags;
12941   char *absolute_name;
12942   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12943      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12944      to debug_file_directory.  */
12945   char *search_path;
12946   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12947
12948   if (search_cwd)
12949     {
12950       if (*debug_file_directory != '\0')
12951         search_path = concat (".", dirname_separator_string,
12952                               debug_file_directory, (char *) NULL);
12953       else
12954         search_path = xstrdup (".");
12955     }
12956   else
12957     search_path = xstrdup (debug_file_directory);
12958
12959   flags = OPF_RETURN_REALPATH;
12960   if (is_dwp)
12961     flags |= OPF_SEARCH_IN_PATH;
12962   desc = openp (search_path, flags, file_name,
12963                 O_RDONLY | O_BINARY, &absolute_name);
12964   xfree (search_path);
12965   if (desc < 0)
12966     return NULL;
12967
12968   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name, gnutarget, desc));
12969   xfree (absolute_name);
12970   if (sym_bfd == NULL)
12971     return NULL;
12972   bfd_set_cacheable (sym_bfd.get (), 1);
12973
12974   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12975     return NULL;
12976
12977   /* Success.  Record the bfd as having been included by the objfile's bfd.
12978      This is important because things like demangled_names_hash lives in the
12979      objfile's per_bfd space and may have references to things like symbol
12980      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12981   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12982
12983   return sym_bfd;
12984 }
12985
12986 /* Try to open DWO file FILE_NAME.
12987    COMP_DIR is the DW_AT_comp_dir attribute.
12988    The result is the bfd handle of the file.
12989    If there is a problem finding or opening the file, return NULL.
12990    Upon success, the canonicalized path of the file is stored in the bfd,
12991    same as symfile_bfd_open.  */
12992
12993 static gdb_bfd_ref_ptr
12994 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12995                const char *file_name, const char *comp_dir)
12996 {
12997   if (IS_ABSOLUTE_PATH (file_name))
12998     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12999                                0 /*is_dwp*/, 0 /*search_cwd*/);
13000
13001   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
13002
13003   if (comp_dir != NULL)
13004     {
13005       char *path_to_try = concat (comp_dir, SLASH_STRING,
13006                                   file_name, (char *) NULL);
13007
13008       /* NOTE: If comp_dir is a relative path, this will also try the
13009          search path, which seems useful.  */
13010       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
13011                                                 path_to_try,
13012                                                 0 /*is_dwp*/,
13013                                                 1 /*search_cwd*/));
13014       xfree (path_to_try);
13015       if (abfd != NULL)
13016         return abfd;
13017     }
13018
13019   /* That didn't work, try debug-file-directory, which, despite its name,
13020      is a list of paths.  */
13021
13022   if (*debug_file_directory == '\0')
13023     return NULL;
13024
13025   return try_open_dwop_file (dwarf2_per_objfile, file_name,
13026                              0 /*is_dwp*/, 1 /*search_cwd*/);
13027 }
13028
13029 /* This function is mapped across the sections and remembers the offset and
13030    size of each of the DWO debugging sections we are interested in.  */
13031
13032 static void
13033 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
13034 {
13035   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
13036   const struct dwop_section_names *names = &dwop_section_names;
13037
13038   if (section_is_p (sectp->name, &names->abbrev_dwo))
13039     {
13040       dwo_sections->abbrev.s.section = sectp;
13041       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
13042     }
13043   else if (section_is_p (sectp->name, &names->info_dwo))
13044     {
13045       dwo_sections->info.s.section = sectp;
13046       dwo_sections->info.size = bfd_get_section_size (sectp);
13047     }
13048   else if (section_is_p (sectp->name, &names->line_dwo))
13049     {
13050       dwo_sections->line.s.section = sectp;
13051       dwo_sections->line.size = bfd_get_section_size (sectp);
13052     }
13053   else if (section_is_p (sectp->name, &names->loc_dwo))
13054     {
13055       dwo_sections->loc.s.section = sectp;
13056       dwo_sections->loc.size = bfd_get_section_size (sectp);
13057     }
13058   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13059     {
13060       dwo_sections->macinfo.s.section = sectp;
13061       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
13062     }
13063   else if (section_is_p (sectp->name, &names->macro_dwo))
13064     {
13065       dwo_sections->macro.s.section = sectp;
13066       dwo_sections->macro.size = bfd_get_section_size (sectp);
13067     }
13068   else if (section_is_p (sectp->name, &names->str_dwo))
13069     {
13070       dwo_sections->str.s.section = sectp;
13071       dwo_sections->str.size = bfd_get_section_size (sectp);
13072     }
13073   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13074     {
13075       dwo_sections->str_offsets.s.section = sectp;
13076       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
13077     }
13078   else if (section_is_p (sectp->name, &names->types_dwo))
13079     {
13080       struct dwarf2_section_info type_section;
13081
13082       memset (&type_section, 0, sizeof (type_section));
13083       type_section.s.section = sectp;
13084       type_section.size = bfd_get_section_size (sectp);
13085       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
13086                      &type_section);
13087     }
13088 }
13089
13090 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
13091    by PER_CU.  This is for the non-DWP case.
13092    The result is NULL if DWO_NAME can't be found.  */
13093
13094 static struct dwo_file *
13095 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
13096                         const char *dwo_name, const char *comp_dir)
13097 {
13098   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
13099   struct objfile *objfile = dwarf2_per_objfile->objfile;
13100   struct dwo_file *dwo_file;
13101   struct cleanup *cleanups;
13102
13103   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
13104   if (dbfd == NULL)
13105     {
13106       if (dwarf_read_debug)
13107         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
13108       return NULL;
13109     }
13110   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
13111   dwo_file->dwo_name = dwo_name;
13112   dwo_file->comp_dir = comp_dir;
13113   dwo_file->dbfd = dbfd.release ();
13114
13115   free_dwo_file_cleanup_data *cleanup_data = XNEW (free_dwo_file_cleanup_data);
13116   cleanup_data->dwo_file = dwo_file;
13117   cleanup_data->dwarf2_per_objfile = dwarf2_per_objfile;
13118
13119   cleanups = make_cleanup (free_dwo_file_cleanup, cleanup_data);
13120
13121   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
13122                          &dwo_file->sections);
13123
13124   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13125                          dwo_file->cus);
13126
13127   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file,
13128                                  dwo_file->sections.types, dwo_file->tus);
13129
13130   discard_cleanups (cleanups);
13131
13132   if (dwarf_read_debug)
13133     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13134
13135   return dwo_file;
13136 }
13137
13138 /* This function is mapped across the sections and remembers the offset and
13139    size of each of the DWP debugging sections common to version 1 and 2 that
13140    we are interested in.  */
13141
13142 static void
13143 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13144                                    void *dwp_file_ptr)
13145 {
13146   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13147   const struct dwop_section_names *names = &dwop_section_names;
13148   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13149
13150   /* Record the ELF section number for later lookup: this is what the
13151      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13152   gdb_assert (elf_section_nr < dwp_file->num_sections);
13153   dwp_file->elf_sections[elf_section_nr] = sectp;
13154
13155   /* Look for specific sections that we need.  */
13156   if (section_is_p (sectp->name, &names->str_dwo))
13157     {
13158       dwp_file->sections.str.s.section = sectp;
13159       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13160     }
13161   else if (section_is_p (sectp->name, &names->cu_index))
13162     {
13163       dwp_file->sections.cu_index.s.section = sectp;
13164       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13165     }
13166   else if (section_is_p (sectp->name, &names->tu_index))
13167     {
13168       dwp_file->sections.tu_index.s.section = sectp;
13169       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13170     }
13171 }
13172
13173 /* This function is mapped across the sections and remembers the offset and
13174    size of each of the DWP version 2 debugging sections that we are interested
13175    in.  This is split into a separate function because we don't know if we
13176    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13177
13178 static void
13179 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13180 {
13181   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13182   const struct dwop_section_names *names = &dwop_section_names;
13183   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13184
13185   /* Record the ELF section number for later lookup: this is what the
13186      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13187   gdb_assert (elf_section_nr < dwp_file->num_sections);
13188   dwp_file->elf_sections[elf_section_nr] = sectp;
13189
13190   /* Look for specific sections that we need.  */
13191   if (section_is_p (sectp->name, &names->abbrev_dwo))
13192     {
13193       dwp_file->sections.abbrev.s.section = sectp;
13194       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13195     }
13196   else if (section_is_p (sectp->name, &names->info_dwo))
13197     {
13198       dwp_file->sections.info.s.section = sectp;
13199       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13200     }
13201   else if (section_is_p (sectp->name, &names->line_dwo))
13202     {
13203       dwp_file->sections.line.s.section = sectp;
13204       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13205     }
13206   else if (section_is_p (sectp->name, &names->loc_dwo))
13207     {
13208       dwp_file->sections.loc.s.section = sectp;
13209       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13210     }
13211   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13212     {
13213       dwp_file->sections.macinfo.s.section = sectp;
13214       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13215     }
13216   else if (section_is_p (sectp->name, &names->macro_dwo))
13217     {
13218       dwp_file->sections.macro.s.section = sectp;
13219       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13220     }
13221   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13222     {
13223       dwp_file->sections.str_offsets.s.section = sectp;
13224       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13225     }
13226   else if (section_is_p (sectp->name, &names->types_dwo))
13227     {
13228       dwp_file->sections.types.s.section = sectp;
13229       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13230     }
13231 }
13232
13233 /* Hash function for dwp_file loaded CUs/TUs.  */
13234
13235 static hashval_t
13236 hash_dwp_loaded_cutus (const void *item)
13237 {
13238   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13239
13240   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13241   return dwo_unit->signature;
13242 }
13243
13244 /* Equality function for dwp_file loaded CUs/TUs.  */
13245
13246 static int
13247 eq_dwp_loaded_cutus (const void *a, const void *b)
13248 {
13249   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13250   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13251
13252   return dua->signature == dub->signature;
13253 }
13254
13255 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13256
13257 static htab_t
13258 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13259 {
13260   return htab_create_alloc_ex (3,
13261                                hash_dwp_loaded_cutus,
13262                                eq_dwp_loaded_cutus,
13263                                NULL,
13264                                &objfile->objfile_obstack,
13265                                hashtab_obstack_allocate,
13266                                dummy_obstack_deallocate);
13267 }
13268
13269 /* Try to open DWP file FILE_NAME.
13270    The result is the bfd handle of the file.
13271    If there is a problem finding or opening the file, return NULL.
13272    Upon success, the canonicalized path of the file is stored in the bfd,
13273    same as symfile_bfd_open.  */
13274
13275 static gdb_bfd_ref_ptr
13276 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13277                const char *file_name)
13278 {
13279   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13280                                             1 /*is_dwp*/,
13281                                             1 /*search_cwd*/));
13282   if (abfd != NULL)
13283     return abfd;
13284
13285   /* Work around upstream bug 15652.
13286      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13287      [Whether that's a "bug" is debatable, but it is getting in our way.]
13288      We have no real idea where the dwp file is, because gdb's realpath-ing
13289      of the executable's path may have discarded the needed info.
13290      [IWBN if the dwp file name was recorded in the executable, akin to
13291      .gnu_debuglink, but that doesn't exist yet.]
13292      Strip the directory from FILE_NAME and search again.  */
13293   if (*debug_file_directory != '\0')
13294     {
13295       /* Don't implicitly search the current directory here.
13296          If the user wants to search "." to handle this case,
13297          it must be added to debug-file-directory.  */
13298       return try_open_dwop_file (dwarf2_per_objfile,
13299                                  lbasename (file_name), 1 /*is_dwp*/,
13300                                  0 /*search_cwd*/);
13301     }
13302
13303   return NULL;
13304 }
13305
13306 /* Initialize the use of the DWP file for the current objfile.
13307    By convention the name of the DWP file is ${objfile}.dwp.
13308    The result is NULL if it can't be found.  */
13309
13310 static struct dwp_file *
13311 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13312 {
13313   struct objfile *objfile = dwarf2_per_objfile->objfile;
13314   struct dwp_file *dwp_file;
13315
13316   /* Try to find first .dwp for the binary file before any symbolic links
13317      resolving.  */
13318
13319   /* If the objfile is a debug file, find the name of the real binary
13320      file and get the name of dwp file from there.  */
13321   std::string dwp_name;
13322   if (objfile->separate_debug_objfile_backlink != NULL)
13323     {
13324       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13325       const char *backlink_basename = lbasename (backlink->original_name);
13326
13327       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13328     }
13329   else
13330     dwp_name = objfile->original_name;
13331
13332   dwp_name += ".dwp";
13333
13334   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13335   if (dbfd == NULL
13336       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13337     {
13338       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13339       dwp_name = objfile_name (objfile);
13340       dwp_name += ".dwp";
13341       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13342     }
13343
13344   if (dbfd == NULL)
13345     {
13346       if (dwarf_read_debug)
13347         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13348       return NULL;
13349     }
13350   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
13351   dwp_file->name = bfd_get_filename (dbfd.get ());
13352   dwp_file->dbfd = dbfd.release ();
13353
13354   /* +1: section 0 is unused */
13355   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13356   dwp_file->elf_sections =
13357     OBSTACK_CALLOC (&objfile->objfile_obstack,
13358                     dwp_file->num_sections, asection *);
13359
13360   bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_common_dwp_sections,
13361                          dwp_file);
13362
13363   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file, 0);
13364
13365   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file, 1);
13366
13367   /* The DWP file version is stored in the hash table.  Oh well.  */
13368   if (dwp_file->cus && dwp_file->tus
13369       && dwp_file->cus->version != dwp_file->tus->version)
13370     {
13371       /* Technically speaking, we should try to limp along, but this is
13372          pretty bizarre.  We use pulongest here because that's the established
13373          portability solution (e.g, we cannot use %u for uint32_t).  */
13374       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13375                " TU version %s [in DWP file %s]"),
13376              pulongest (dwp_file->cus->version),
13377              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13378     }
13379
13380   if (dwp_file->cus)
13381     dwp_file->version = dwp_file->cus->version;
13382   else if (dwp_file->tus)
13383     dwp_file->version = dwp_file->tus->version;
13384   else
13385     dwp_file->version = 2;
13386
13387   if (dwp_file->version == 2)
13388     bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,
13389                            dwp_file);
13390
13391   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13392   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13393
13394   if (dwarf_read_debug)
13395     {
13396       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13397       fprintf_unfiltered (gdb_stdlog,
13398                           "    %s CUs, %s TUs\n",
13399                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13400                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13401     }
13402
13403   return dwp_file;
13404 }
13405
13406 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13407
13408 static struct dwp_file *
13409 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13410 {
13411   if (! dwarf2_per_objfile->dwp_checked)
13412     {
13413       dwarf2_per_objfile->dwp_file
13414         = open_and_init_dwp_file (dwarf2_per_objfile);
13415       dwarf2_per_objfile->dwp_checked = 1;
13416     }
13417   return dwarf2_per_objfile->dwp_file;
13418 }
13419
13420 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13421    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13422    or in the DWP file for the objfile, referenced by THIS_UNIT.
13423    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13424    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13425
13426    This is called, for example, when wanting to read a variable with a
13427    complex location.  Therefore we don't want to do file i/o for every call.
13428    Therefore we don't want to look for a DWO file on every call.
13429    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13430    then we check if we've already seen DWO_NAME, and only THEN do we check
13431    for a DWO file.
13432
13433    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13434    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13435
13436 static struct dwo_unit *
13437 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13438                  const char *dwo_name, const char *comp_dir,
13439                  ULONGEST signature, int is_debug_types)
13440 {
13441   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13442   struct objfile *objfile = dwarf2_per_objfile->objfile;
13443   const char *kind = is_debug_types ? "TU" : "CU";
13444   void **dwo_file_slot;
13445   struct dwo_file *dwo_file;
13446   struct dwp_file *dwp_file;
13447
13448   /* First see if there's a DWP file.
13449      If we have a DWP file but didn't find the DWO inside it, don't
13450      look for the original DWO file.  It makes gdb behave differently
13451      depending on whether one is debugging in the build tree.  */
13452
13453   dwp_file = get_dwp_file (dwarf2_per_objfile);
13454   if (dwp_file != NULL)
13455     {
13456       const struct dwp_hash_table *dwp_htab =
13457         is_debug_types ? dwp_file->tus : dwp_file->cus;
13458
13459       if (dwp_htab != NULL)
13460         {
13461           struct dwo_unit *dwo_cutu =
13462             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13463                                     signature, is_debug_types);
13464
13465           if (dwo_cutu != NULL)
13466             {
13467               if (dwarf_read_debug)
13468                 {
13469                   fprintf_unfiltered (gdb_stdlog,
13470                                       "Virtual DWO %s %s found: @%s\n",
13471                                       kind, hex_string (signature),
13472                                       host_address_to_string (dwo_cutu));
13473                 }
13474               return dwo_cutu;
13475             }
13476         }
13477     }
13478   else
13479     {
13480       /* No DWP file, look for the DWO file.  */
13481
13482       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13483                                             dwo_name, comp_dir);
13484       if (*dwo_file_slot == NULL)
13485         {
13486           /* Read in the file and build a table of the CUs/TUs it contains.  */
13487           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13488         }
13489       /* NOTE: This will be NULL if unable to open the file.  */
13490       dwo_file = (struct dwo_file *) *dwo_file_slot;
13491
13492       if (dwo_file != NULL)
13493         {
13494           struct dwo_unit *dwo_cutu = NULL;
13495
13496           if (is_debug_types && dwo_file->tus)
13497             {
13498               struct dwo_unit find_dwo_cutu;
13499
13500               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13501               find_dwo_cutu.signature = signature;
13502               dwo_cutu
13503                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13504             }
13505           else if (!is_debug_types && dwo_file->cus)
13506             {
13507               struct dwo_unit find_dwo_cutu;
13508
13509               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13510               find_dwo_cutu.signature = signature;
13511               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13512                                                        &find_dwo_cutu);
13513             }
13514
13515           if (dwo_cutu != NULL)
13516             {
13517               if (dwarf_read_debug)
13518                 {
13519                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13520                                       kind, dwo_name, hex_string (signature),
13521                                       host_address_to_string (dwo_cutu));
13522                 }
13523               return dwo_cutu;
13524             }
13525         }
13526     }
13527
13528   /* We didn't find it.  This could mean a dwo_id mismatch, or
13529      someone deleted the DWO/DWP file, or the search path isn't set up
13530      correctly to find the file.  */
13531
13532   if (dwarf_read_debug)
13533     {
13534       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13535                           kind, dwo_name, hex_string (signature));
13536     }
13537
13538   /* This is a warning and not a complaint because it can be caused by
13539      pilot error (e.g., user accidentally deleting the DWO).  */
13540   {
13541     /* Print the name of the DWP file if we looked there, helps the user
13542        better diagnose the problem.  */
13543     std::string dwp_text;
13544
13545     if (dwp_file != NULL)
13546       dwp_text = string_printf (" [in DWP file %s]",
13547                                 lbasename (dwp_file->name));
13548
13549     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
13550                " [in module %s]"),
13551              kind, dwo_name, hex_string (signature),
13552              dwp_text.c_str (),
13553              this_unit->is_debug_types ? "TU" : "CU",
13554              to_underlying (this_unit->sect_off), objfile_name (objfile));
13555   }
13556   return NULL;
13557 }
13558
13559 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13560    See lookup_dwo_cutu_unit for details.  */
13561
13562 static struct dwo_unit *
13563 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13564                       const char *dwo_name, const char *comp_dir,
13565                       ULONGEST signature)
13566 {
13567   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13568 }
13569
13570 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13571    See lookup_dwo_cutu_unit for details.  */
13572
13573 static struct dwo_unit *
13574 lookup_dwo_type_unit (struct signatured_type *this_tu,
13575                       const char *dwo_name, const char *comp_dir)
13576 {
13577   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13578 }
13579
13580 /* Traversal function for queue_and_load_all_dwo_tus.  */
13581
13582 static int
13583 queue_and_load_dwo_tu (void **slot, void *info)
13584 {
13585   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13586   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13587   ULONGEST signature = dwo_unit->signature;
13588   struct signatured_type *sig_type =
13589     lookup_dwo_signatured_type (per_cu->cu, signature);
13590
13591   if (sig_type != NULL)
13592     {
13593       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13594
13595       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13596          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13597          while processing PER_CU.  */
13598       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13599         load_full_type_unit (sig_cu);
13600       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13601     }
13602
13603   return 1;
13604 }
13605
13606 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13607    The DWO may have the only definition of the type, though it may not be
13608    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13609    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13610
13611 static void
13612 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13613 {
13614   struct dwo_unit *dwo_unit;
13615   struct dwo_file *dwo_file;
13616
13617   gdb_assert (!per_cu->is_debug_types);
13618   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13619   gdb_assert (per_cu->cu != NULL);
13620
13621   dwo_unit = per_cu->cu->dwo_unit;
13622   gdb_assert (dwo_unit != NULL);
13623
13624   dwo_file = dwo_unit->dwo_file;
13625   if (dwo_file->tus != NULL)
13626     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13627 }
13628
13629 /* Free all resources associated with DWO_FILE.
13630    Close the DWO file and munmap the sections.
13631    All memory should be on the objfile obstack.  */
13632
13633 static void
13634 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
13635 {
13636
13637   /* Note: dbfd is NULL for virtual DWO files.  */
13638   gdb_bfd_unref (dwo_file->dbfd);
13639
13640   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13641 }
13642
13643 /* Wrapper for free_dwo_file for use in cleanups.  */
13644
13645 static void
13646 free_dwo_file_cleanup (void *arg)
13647 {
13648   struct free_dwo_file_cleanup_data *data
13649     = (struct free_dwo_file_cleanup_data *) arg;
13650   struct objfile *objfile = data->dwarf2_per_objfile->objfile;
13651
13652   free_dwo_file (data->dwo_file, objfile);
13653
13654   xfree (data);
13655 }
13656
13657 /* Traversal function for free_dwo_files.  */
13658
13659 static int
13660 free_dwo_file_from_slot (void **slot, void *info)
13661 {
13662   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13663   struct objfile *objfile = (struct objfile *) info;
13664
13665   free_dwo_file (dwo_file, objfile);
13666
13667   return 1;
13668 }
13669
13670 /* Free all resources associated with DWO_FILES.  */
13671
13672 static void
13673 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13674 {
13675   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13676 }
13677 \f
13678 /* Read in various DIEs.  */
13679
13680 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13681    Inherit only the children of the DW_AT_abstract_origin DIE not being
13682    already referenced by DW_AT_abstract_origin from the children of the
13683    current DIE.  */
13684
13685 static void
13686 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13687 {
13688   struct die_info *child_die;
13689   sect_offset *offsetp;
13690   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13691   struct die_info *origin_die;
13692   /* Iterator of the ORIGIN_DIE children.  */
13693   struct die_info *origin_child_die;
13694   struct attribute *attr;
13695   struct dwarf2_cu *origin_cu;
13696   struct pending **origin_previous_list_in_scope;
13697
13698   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13699   if (!attr)
13700     return;
13701
13702   /* Note that following die references may follow to a die in a
13703      different cu.  */
13704
13705   origin_cu = cu;
13706   origin_die = follow_die_ref (die, attr, &origin_cu);
13707
13708   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13709      symbols in.  */
13710   origin_previous_list_in_scope = origin_cu->list_in_scope;
13711   origin_cu->list_in_scope = cu->list_in_scope;
13712
13713   if (die->tag != origin_die->tag
13714       && !(die->tag == DW_TAG_inlined_subroutine
13715            && origin_die->tag == DW_TAG_subprogram))
13716     complaint (&symfile_complaints,
13717                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
13718                to_underlying (die->sect_off),
13719                to_underlying (origin_die->sect_off));
13720
13721   std::vector<sect_offset> offsets;
13722
13723   for (child_die = die->child;
13724        child_die && child_die->tag;
13725        child_die = sibling_die (child_die))
13726     {
13727       struct die_info *child_origin_die;
13728       struct dwarf2_cu *child_origin_cu;
13729
13730       /* We are trying to process concrete instance entries:
13731          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13732          it's not relevant to our analysis here. i.e. detecting DIEs that are
13733          present in the abstract instance but not referenced in the concrete
13734          one.  */
13735       if (child_die->tag == DW_TAG_call_site
13736           || child_die->tag == DW_TAG_GNU_call_site)
13737         continue;
13738
13739       /* For each CHILD_DIE, find the corresponding child of
13740          ORIGIN_DIE.  If there is more than one layer of
13741          DW_AT_abstract_origin, follow them all; there shouldn't be,
13742          but GCC versions at least through 4.4 generate this (GCC PR
13743          40573).  */
13744       child_origin_die = child_die;
13745       child_origin_cu = cu;
13746       while (1)
13747         {
13748           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13749                               child_origin_cu);
13750           if (attr == NULL)
13751             break;
13752           child_origin_die = follow_die_ref (child_origin_die, attr,
13753                                              &child_origin_cu);
13754         }
13755
13756       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13757          counterpart may exist.  */
13758       if (child_origin_die != child_die)
13759         {
13760           if (child_die->tag != child_origin_die->tag
13761               && !(child_die->tag == DW_TAG_inlined_subroutine
13762                    && child_origin_die->tag == DW_TAG_subprogram))
13763             complaint (&symfile_complaints,
13764                        _("Child DIE 0x%x and its abstract origin 0x%x have "
13765                          "different tags"),
13766                        to_underlying (child_die->sect_off),
13767                        to_underlying (child_origin_die->sect_off));
13768           if (child_origin_die->parent != origin_die)
13769             complaint (&symfile_complaints,
13770                        _("Child DIE 0x%x and its abstract origin 0x%x have "
13771                          "different parents"),
13772                        to_underlying (child_die->sect_off),
13773                        to_underlying (child_origin_die->sect_off));
13774           else
13775             offsets.push_back (child_origin_die->sect_off);
13776         }
13777     }
13778   std::sort (offsets.begin (), offsets.end ());
13779   sect_offset *offsets_end = offsets.data () + offsets.size ();
13780   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13781     if (offsetp[-1] == *offsetp)
13782       complaint (&symfile_complaints,
13783                  _("Multiple children of DIE 0x%x refer "
13784                    "to DIE 0x%x as their abstract origin"),
13785                  to_underlying (die->sect_off), to_underlying (*offsetp));
13786
13787   offsetp = offsets.data ();
13788   origin_child_die = origin_die->child;
13789   while (origin_child_die && origin_child_die->tag)
13790     {
13791       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13792       while (offsetp < offsets_end
13793              && *offsetp < origin_child_die->sect_off)
13794         offsetp++;
13795       if (offsetp >= offsets_end
13796           || *offsetp > origin_child_die->sect_off)
13797         {
13798           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13799              Check whether we're already processing ORIGIN_CHILD_DIE.
13800              This can happen with mutually referenced abstract_origins.
13801              PR 16581.  */
13802           if (!origin_child_die->in_process)
13803             process_die (origin_child_die, origin_cu);
13804         }
13805       origin_child_die = sibling_die (origin_child_die);
13806     }
13807   origin_cu->list_in_scope = origin_previous_list_in_scope;
13808 }
13809
13810 static void
13811 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13812 {
13813   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13814   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13815   struct context_stack *newobj;
13816   CORE_ADDR lowpc;
13817   CORE_ADDR highpc;
13818   struct die_info *child_die;
13819   struct attribute *attr, *call_line, *call_file;
13820   const char *name;
13821   CORE_ADDR baseaddr;
13822   struct block *block;
13823   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13824   std::vector<struct symbol *> template_args;
13825   struct template_symbol *templ_func = NULL;
13826
13827   if (inlined_func)
13828     {
13829       /* If we do not have call site information, we can't show the
13830          caller of this inlined function.  That's too confusing, so
13831          only use the scope for local variables.  */
13832       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13833       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13834       if (call_line == NULL || call_file == NULL)
13835         {
13836           read_lexical_block_scope (die, cu);
13837           return;
13838         }
13839     }
13840
13841   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13842
13843   name = dwarf2_name (die, cu);
13844
13845   /* Ignore functions with missing or empty names.  These are actually
13846      illegal according to the DWARF standard.  */
13847   if (name == NULL)
13848     {
13849       complaint (&symfile_complaints,
13850                  _("missing name for subprogram DIE at %d"),
13851                  to_underlying (die->sect_off));
13852       return;
13853     }
13854
13855   /* Ignore functions with missing or invalid low and high pc attributes.  */
13856   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13857       <= PC_BOUNDS_INVALID)
13858     {
13859       attr = dwarf2_attr (die, DW_AT_external, cu);
13860       if (!attr || !DW_UNSND (attr))
13861         complaint (&symfile_complaints,
13862                    _("cannot get low and high bounds "
13863                      "for subprogram DIE at %d"),
13864                    to_underlying (die->sect_off));
13865       return;
13866     }
13867
13868   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13869   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13870
13871   /* If we have any template arguments, then we must allocate a
13872      different sort of symbol.  */
13873   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13874     {
13875       if (child_die->tag == DW_TAG_template_type_param
13876           || child_die->tag == DW_TAG_template_value_param)
13877         {
13878           templ_func = allocate_template_symbol (objfile);
13879           templ_func->subclass = SYMBOL_TEMPLATE;
13880           break;
13881         }
13882     }
13883
13884   newobj = push_context (0, lowpc);
13885   newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
13886                                (struct symbol *) templ_func);
13887
13888   /* If there is a location expression for DW_AT_frame_base, record
13889      it.  */
13890   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13891   if (attr)
13892     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13893
13894   /* If there is a location for the static link, record it.  */
13895   newobj->static_link = NULL;
13896   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13897   if (attr)
13898     {
13899       newobj->static_link
13900         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13901       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13902     }
13903
13904   cu->list_in_scope = &local_symbols;
13905
13906   if (die->child != NULL)
13907     {
13908       child_die = die->child;
13909       while (child_die && child_die->tag)
13910         {
13911           if (child_die->tag == DW_TAG_template_type_param
13912               || child_die->tag == DW_TAG_template_value_param)
13913             {
13914               struct symbol *arg = new_symbol (child_die, NULL, cu);
13915
13916               if (arg != NULL)
13917                 template_args.push_back (arg);
13918             }
13919           else
13920             process_die (child_die, cu);
13921           child_die = sibling_die (child_die);
13922         }
13923     }
13924
13925   inherit_abstract_dies (die, cu);
13926
13927   /* If we have a DW_AT_specification, we might need to import using
13928      directives from the context of the specification DIE.  See the
13929      comment in determine_prefix.  */
13930   if (cu->language == language_cplus
13931       && dwarf2_attr (die, DW_AT_specification, cu))
13932     {
13933       struct dwarf2_cu *spec_cu = cu;
13934       struct die_info *spec_die = die_specification (die, &spec_cu);
13935
13936       while (spec_die)
13937         {
13938           child_die = spec_die->child;
13939           while (child_die && child_die->tag)
13940             {
13941               if (child_die->tag == DW_TAG_imported_module)
13942                 process_die (child_die, spec_cu);
13943               child_die = sibling_die (child_die);
13944             }
13945
13946           /* In some cases, GCC generates specification DIEs that
13947              themselves contain DW_AT_specification attributes.  */
13948           spec_die = die_specification (spec_die, &spec_cu);
13949         }
13950     }
13951
13952   newobj = pop_context ();
13953   /* Make a block for the local symbols within.  */
13954   block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
13955                         newobj->static_link, lowpc, highpc);
13956
13957   /* For C++, set the block's scope.  */
13958   if ((cu->language == language_cplus
13959        || cu->language == language_fortran
13960        || cu->language == language_d
13961        || cu->language == language_rust)
13962       && cu->processing_has_namespace_info)
13963     block_set_scope (block, determine_prefix (die, cu),
13964                      &objfile->objfile_obstack);
13965
13966   /* If we have address ranges, record them.  */
13967   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13968
13969   gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
13970
13971   /* Attach template arguments to function.  */
13972   if (!template_args.empty ())
13973     {
13974       gdb_assert (templ_func != NULL);
13975
13976       templ_func->n_template_arguments = template_args.size ();
13977       templ_func->template_arguments
13978         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13979                      templ_func->n_template_arguments);
13980       memcpy (templ_func->template_arguments,
13981               template_args.data (),
13982               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13983     }
13984
13985   /* In C++, we can have functions nested inside functions (e.g., when
13986      a function declares a class that has methods).  This means that
13987      when we finish processing a function scope, we may need to go
13988      back to building a containing block's symbol lists.  */
13989   local_symbols = newobj->locals;
13990   local_using_directives = newobj->local_using_directives;
13991
13992   /* If we've finished processing a top-level function, subsequent
13993      symbols go in the file symbol list.  */
13994   if (outermost_context_p ())
13995     cu->list_in_scope = &file_symbols;
13996 }
13997
13998 /* Process all the DIES contained within a lexical block scope.  Start
13999    a new scope, process the dies, and then close the scope.  */
14000
14001 static void
14002 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
14003 {
14004   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14005   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14006   struct context_stack *newobj;
14007   CORE_ADDR lowpc, highpc;
14008   struct die_info *child_die;
14009   CORE_ADDR baseaddr;
14010
14011   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14012
14013   /* Ignore blocks with missing or invalid low and high pc attributes.  */
14014   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
14015      as multiple lexical blocks?  Handling children in a sane way would
14016      be nasty.  Might be easier to properly extend generic blocks to
14017      describe ranges.  */
14018   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
14019     {
14020     case PC_BOUNDS_NOT_PRESENT:
14021       /* DW_TAG_lexical_block has no attributes, process its children as if
14022          there was no wrapping by that DW_TAG_lexical_block.
14023          GCC does no longer produces such DWARF since GCC r224161.  */
14024       for (child_die = die->child;
14025            child_die != NULL && child_die->tag;
14026            child_die = sibling_die (child_die))
14027         process_die (child_die, cu);
14028       return;
14029     case PC_BOUNDS_INVALID:
14030       return;
14031     }
14032   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14033   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
14034
14035   push_context (0, lowpc);
14036   if (die->child != NULL)
14037     {
14038       child_die = die->child;
14039       while (child_die && child_die->tag)
14040         {
14041           process_die (child_die, cu);
14042           child_die = sibling_die (child_die);
14043         }
14044     }
14045   inherit_abstract_dies (die, cu);
14046   newobj = pop_context ();
14047
14048   if (local_symbols != NULL || local_using_directives != NULL)
14049     {
14050       struct block *block
14051         = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
14052                         newobj->start_addr, highpc);
14053
14054       /* Note that recording ranges after traversing children, as we
14055          do here, means that recording a parent's ranges entails
14056          walking across all its children's ranges as they appear in
14057          the address map, which is quadratic behavior.
14058
14059          It would be nicer to record the parent's ranges before
14060          traversing its children, simply overriding whatever you find
14061          there.  But since we don't even decide whether to create a
14062          block until after we've traversed its children, that's hard
14063          to do.  */
14064       dwarf2_record_block_ranges (die, block, baseaddr, cu);
14065     }
14066   local_symbols = newobj->locals;
14067   local_using_directives = newobj->local_using_directives;
14068 }
14069
14070 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
14071
14072 static void
14073 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
14074 {
14075   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14076   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14077   CORE_ADDR pc, baseaddr;
14078   struct attribute *attr;
14079   struct call_site *call_site, call_site_local;
14080   void **slot;
14081   int nparams;
14082   struct die_info *child_die;
14083
14084   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14085
14086   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
14087   if (attr == NULL)
14088     {
14089       /* This was a pre-DWARF-5 GNU extension alias
14090          for DW_AT_call_return_pc.  */
14091       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14092     }
14093   if (!attr)
14094     {
14095       complaint (&symfile_complaints,
14096                  _("missing DW_AT_call_return_pc for DW_TAG_call_site "
14097                    "DIE 0x%x [in module %s]"),
14098                  to_underlying (die->sect_off), objfile_name (objfile));
14099       return;
14100     }
14101   pc = attr_value_as_address (attr) + baseaddr;
14102   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
14103
14104   if (cu->call_site_htab == NULL)
14105     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
14106                                                NULL, &objfile->objfile_obstack,
14107                                                hashtab_obstack_allocate, NULL);
14108   call_site_local.pc = pc;
14109   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
14110   if (*slot != NULL)
14111     {
14112       complaint (&symfile_complaints,
14113                  _("Duplicate PC %s for DW_TAG_call_site "
14114                    "DIE 0x%x [in module %s]"),
14115                  paddress (gdbarch, pc), to_underlying (die->sect_off),
14116                  objfile_name (objfile));
14117       return;
14118     }
14119
14120   /* Count parameters at the caller.  */
14121
14122   nparams = 0;
14123   for (child_die = die->child; child_die && child_die->tag;
14124        child_die = sibling_die (child_die))
14125     {
14126       if (child_die->tag != DW_TAG_call_site_parameter
14127           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14128         {
14129           complaint (&symfile_complaints,
14130                      _("Tag %d is not DW_TAG_call_site_parameter in "
14131                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14132                      child_die->tag, to_underlying (child_die->sect_off),
14133                      objfile_name (objfile));
14134           continue;
14135         }
14136
14137       nparams++;
14138     }
14139
14140   call_site
14141     = ((struct call_site *)
14142        obstack_alloc (&objfile->objfile_obstack,
14143                       sizeof (*call_site)
14144                       + (sizeof (*call_site->parameter) * (nparams - 1))));
14145   *slot = call_site;
14146   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14147   call_site->pc = pc;
14148
14149   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14150       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14151     {
14152       struct die_info *func_die;
14153
14154       /* Skip also over DW_TAG_inlined_subroutine.  */
14155       for (func_die = die->parent;
14156            func_die && func_die->tag != DW_TAG_subprogram
14157            && func_die->tag != DW_TAG_subroutine_type;
14158            func_die = func_die->parent);
14159
14160       /* DW_AT_call_all_calls is a superset
14161          of DW_AT_call_all_tail_calls.  */
14162       if (func_die
14163           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14164           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14165           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14166           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14167         {
14168           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14169              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14170              both the initial caller containing the real return address PC and
14171              the final callee containing the current PC of a chain of tail
14172              calls do not need to have the tail call list complete.  But any
14173              function candidate for a virtual tail call frame searched via
14174              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14175              determined unambiguously.  */
14176         }
14177       else
14178         {
14179           struct type *func_type = NULL;
14180
14181           if (func_die)
14182             func_type = get_die_type (func_die, cu);
14183           if (func_type != NULL)
14184             {
14185               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14186
14187               /* Enlist this call site to the function.  */
14188               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14189               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14190             }
14191           else
14192             complaint (&symfile_complaints,
14193                        _("Cannot find function owning DW_TAG_call_site "
14194                          "DIE 0x%x [in module %s]"),
14195                        to_underlying (die->sect_off), objfile_name (objfile));
14196         }
14197     }
14198
14199   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14200   if (attr == NULL)
14201     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14202   if (attr == NULL)
14203     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14204   if (attr == NULL)
14205     {
14206       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14207       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14208     }
14209   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14210   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14211     /* Keep NULL DWARF_BLOCK.  */;
14212   else if (attr_form_is_block (attr))
14213     {
14214       struct dwarf2_locexpr_baton *dlbaton;
14215
14216       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14217       dlbaton->data = DW_BLOCK (attr)->data;
14218       dlbaton->size = DW_BLOCK (attr)->size;
14219       dlbaton->per_cu = cu->per_cu;
14220
14221       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14222     }
14223   else if (attr_form_is_ref (attr))
14224     {
14225       struct dwarf2_cu *target_cu = cu;
14226       struct die_info *target_die;
14227
14228       target_die = follow_die_ref (die, attr, &target_cu);
14229       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14230       if (die_is_declaration (target_die, target_cu))
14231         {
14232           const char *target_physname;
14233
14234           /* Prefer the mangled name; otherwise compute the demangled one.  */
14235           target_physname = dw2_linkage_name (target_die, target_cu);
14236           if (target_physname == NULL)
14237             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14238           if (target_physname == NULL)
14239             complaint (&symfile_complaints,
14240                        _("DW_AT_call_target target DIE has invalid "
14241                          "physname, for referencing DIE 0x%x [in module %s]"),
14242                        to_underlying (die->sect_off), objfile_name (objfile));
14243           else
14244             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14245         }
14246       else
14247         {
14248           CORE_ADDR lowpc;
14249
14250           /* DW_AT_entry_pc should be preferred.  */
14251           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14252               <= PC_BOUNDS_INVALID)
14253             complaint (&symfile_complaints,
14254                        _("DW_AT_call_target target DIE has invalid "
14255                          "low pc, for referencing DIE 0x%x [in module %s]"),
14256                        to_underlying (die->sect_off), objfile_name (objfile));
14257           else
14258             {
14259               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14260               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14261             }
14262         }
14263     }
14264   else
14265     complaint (&symfile_complaints,
14266                _("DW_TAG_call_site DW_AT_call_target is neither "
14267                  "block nor reference, for DIE 0x%x [in module %s]"),
14268                to_underlying (die->sect_off), objfile_name (objfile));
14269
14270   call_site->per_cu = cu->per_cu;
14271
14272   for (child_die = die->child;
14273        child_die && child_die->tag;
14274        child_die = sibling_die (child_die))
14275     {
14276       struct call_site_parameter *parameter;
14277       struct attribute *loc, *origin;
14278
14279       if (child_die->tag != DW_TAG_call_site_parameter
14280           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14281         {
14282           /* Already printed the complaint above.  */
14283           continue;
14284         }
14285
14286       gdb_assert (call_site->parameter_count < nparams);
14287       parameter = &call_site->parameter[call_site->parameter_count];
14288
14289       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14290          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14291          register is contained in DW_AT_call_value.  */
14292
14293       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14294       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14295       if (origin == NULL)
14296         {
14297           /* This was a pre-DWARF-5 GNU extension alias
14298              for DW_AT_call_parameter.  */
14299           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14300         }
14301       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14302         {
14303           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14304
14305           sect_offset sect_off
14306             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14307           if (!offset_in_cu_p (&cu->header, sect_off))
14308             {
14309               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14310                  binding can be done only inside one CU.  Such referenced DIE
14311                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14312               complaint (&symfile_complaints,
14313                          _("DW_AT_call_parameter offset is not in CU for "
14314                            "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14315                          to_underlying (child_die->sect_off),
14316                          objfile_name (objfile));
14317               continue;
14318             }
14319           parameter->u.param_cu_off
14320             = (cu_offset) (sect_off - cu->header.sect_off);
14321         }
14322       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14323         {
14324           complaint (&symfile_complaints,
14325                      _("No DW_FORM_block* DW_AT_location for "
14326                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14327                      to_underlying (child_die->sect_off), objfile_name (objfile));
14328           continue;
14329         }
14330       else
14331         {
14332           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14333             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14334           if (parameter->u.dwarf_reg != -1)
14335             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14336           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14337                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14338                                              &parameter->u.fb_offset))
14339             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14340           else
14341             {
14342               complaint (&symfile_complaints,
14343                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
14344                            "for DW_FORM_block* DW_AT_location is supported for "
14345                            "DW_TAG_call_site child DIE 0x%x "
14346                            "[in module %s]"),
14347                          to_underlying (child_die->sect_off),
14348                          objfile_name (objfile));
14349               continue;
14350             }
14351         }
14352
14353       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14354       if (attr == NULL)
14355         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14356       if (!attr_form_is_block (attr))
14357         {
14358           complaint (&symfile_complaints,
14359                      _("No DW_FORM_block* DW_AT_call_value for "
14360                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14361                      to_underlying (child_die->sect_off),
14362                      objfile_name (objfile));
14363           continue;
14364         }
14365       parameter->value = DW_BLOCK (attr)->data;
14366       parameter->value_size = DW_BLOCK (attr)->size;
14367
14368       /* Parameters are not pre-cleared by memset above.  */
14369       parameter->data_value = NULL;
14370       parameter->data_value_size = 0;
14371       call_site->parameter_count++;
14372
14373       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14374       if (attr == NULL)
14375         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14376       if (attr)
14377         {
14378           if (!attr_form_is_block (attr))
14379             complaint (&symfile_complaints,
14380                        _("No DW_FORM_block* DW_AT_call_data_value for "
14381                          "DW_TAG_call_site child DIE 0x%x [in module %s]"),
14382                        to_underlying (child_die->sect_off),
14383                        objfile_name (objfile));
14384           else
14385             {
14386               parameter->data_value = DW_BLOCK (attr)->data;
14387               parameter->data_value_size = DW_BLOCK (attr)->size;
14388             }
14389         }
14390     }
14391 }
14392
14393 /* Helper function for read_variable.  If DIE represents a virtual
14394    table, then return the type of the concrete object that is
14395    associated with the virtual table.  Otherwise, return NULL.  */
14396
14397 static struct type *
14398 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14399 {
14400   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14401   if (attr == NULL)
14402     return NULL;
14403
14404   /* Find the type DIE.  */
14405   struct die_info *type_die = NULL;
14406   struct dwarf2_cu *type_cu = cu;
14407
14408   if (attr_form_is_ref (attr))
14409     type_die = follow_die_ref (die, attr, &type_cu);
14410   if (type_die == NULL)
14411     return NULL;
14412
14413   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14414     return NULL;
14415   return die_containing_type (type_die, type_cu);
14416 }
14417
14418 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14419
14420 static void
14421 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14422 {
14423   struct rust_vtable_symbol *storage = NULL;
14424
14425   if (cu->language == language_rust)
14426     {
14427       struct type *containing_type = rust_containing_type (die, cu);
14428
14429       if (containing_type != NULL)
14430         {
14431           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14432
14433           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14434                                     struct rust_vtable_symbol);
14435           initialize_objfile_symbol (storage);
14436           storage->concrete_type = containing_type;
14437           storage->subclass = SYMBOL_RUST_VTABLE;
14438         }
14439     }
14440
14441   new_symbol_full (die, NULL, cu, storage);
14442 }
14443
14444 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14445    reading .debug_rnglists.
14446    Callback's type should be:
14447     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14448    Return true if the attributes are present and valid, otherwise,
14449    return false.  */
14450
14451 template <typename Callback>
14452 static bool
14453 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14454                          Callback &&callback)
14455 {
14456   struct dwarf2_per_objfile *dwarf2_per_objfile
14457     = cu->per_cu->dwarf2_per_objfile;
14458   struct objfile *objfile = dwarf2_per_objfile->objfile;
14459   bfd *obfd = objfile->obfd;
14460   /* Base address selection entry.  */
14461   CORE_ADDR base;
14462   int found_base;
14463   const gdb_byte *buffer;
14464   CORE_ADDR baseaddr;
14465   bool overflow = false;
14466
14467   found_base = cu->base_known;
14468   base = cu->base_address;
14469
14470   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14471   if (offset >= dwarf2_per_objfile->rnglists.size)
14472     {
14473       complaint (&symfile_complaints,
14474                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14475                  offset);
14476       return false;
14477     }
14478   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14479
14480   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14481
14482   while (1)
14483     {
14484       /* Initialize it due to a false compiler warning.  */
14485       CORE_ADDR range_beginning = 0, range_end = 0;
14486       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14487                                  + dwarf2_per_objfile->rnglists.size);
14488       unsigned int bytes_read;
14489
14490       if (buffer == buf_end)
14491         {
14492           overflow = true;
14493           break;
14494         }
14495       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14496       switch (rlet)
14497         {
14498         case DW_RLE_end_of_list:
14499           break;
14500         case DW_RLE_base_address:
14501           if (buffer + cu->header.addr_size > buf_end)
14502             {
14503               overflow = true;
14504               break;
14505             }
14506           base = read_address (obfd, buffer, cu, &bytes_read);
14507           found_base = 1;
14508           buffer += bytes_read;
14509           break;
14510         case DW_RLE_start_length:
14511           if (buffer + cu->header.addr_size > buf_end)
14512             {
14513               overflow = true;
14514               break;
14515             }
14516           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14517           buffer += bytes_read;
14518           range_end = (range_beginning
14519                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14520           buffer += bytes_read;
14521           if (buffer > buf_end)
14522             {
14523               overflow = true;
14524               break;
14525             }
14526           break;
14527         case DW_RLE_offset_pair:
14528           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14529           buffer += bytes_read;
14530           if (buffer > buf_end)
14531             {
14532               overflow = true;
14533               break;
14534             }
14535           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14536           buffer += bytes_read;
14537           if (buffer > buf_end)
14538             {
14539               overflow = true;
14540               break;
14541             }
14542           break;
14543         case DW_RLE_start_end:
14544           if (buffer + 2 * cu->header.addr_size > buf_end)
14545             {
14546               overflow = true;
14547               break;
14548             }
14549           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14550           buffer += bytes_read;
14551           range_end = read_address (obfd, buffer, cu, &bytes_read);
14552           buffer += bytes_read;
14553           break;
14554         default:
14555           complaint (&symfile_complaints,
14556                      _("Invalid .debug_rnglists data (no base address)"));
14557           return false;
14558         }
14559       if (rlet == DW_RLE_end_of_list || overflow)
14560         break;
14561       if (rlet == DW_RLE_base_address)
14562         continue;
14563
14564       if (!found_base)
14565         {
14566           /* We have no valid base address for the ranges
14567              data.  */
14568           complaint (&symfile_complaints,
14569                      _("Invalid .debug_rnglists data (no base address)"));
14570           return false;
14571         }
14572
14573       if (range_beginning > range_end)
14574         {
14575           /* Inverted range entries are invalid.  */
14576           complaint (&symfile_complaints,
14577                      _("Invalid .debug_rnglists data (inverted range)"));
14578           return false;
14579         }
14580
14581       /* Empty range entries have no effect.  */
14582       if (range_beginning == range_end)
14583         continue;
14584
14585       range_beginning += base;
14586       range_end += base;
14587
14588       /* A not-uncommon case of bad debug info.
14589          Don't pollute the addrmap with bad data.  */
14590       if (range_beginning + baseaddr == 0
14591           && !dwarf2_per_objfile->has_section_at_zero)
14592         {
14593           complaint (&symfile_complaints,
14594                      _(".debug_rnglists entry has start address of zero"
14595                        " [in module %s]"), objfile_name (objfile));
14596           continue;
14597         }
14598
14599       callback (range_beginning, range_end);
14600     }
14601
14602   if (overflow)
14603     {
14604       complaint (&symfile_complaints,
14605                  _("Offset %d is not terminated "
14606                    "for DW_AT_ranges attribute"),
14607                  offset);
14608       return false;
14609     }
14610
14611   return true;
14612 }
14613
14614 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14615    Callback's type should be:
14616     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14617    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14618
14619 template <typename Callback>
14620 static int
14621 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14622                        Callback &&callback)
14623 {
14624   struct dwarf2_per_objfile *dwarf2_per_objfile
14625       = cu->per_cu->dwarf2_per_objfile;
14626   struct objfile *objfile = dwarf2_per_objfile->objfile;
14627   struct comp_unit_head *cu_header = &cu->header;
14628   bfd *obfd = objfile->obfd;
14629   unsigned int addr_size = cu_header->addr_size;
14630   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14631   /* Base address selection entry.  */
14632   CORE_ADDR base;
14633   int found_base;
14634   unsigned int dummy;
14635   const gdb_byte *buffer;
14636   CORE_ADDR baseaddr;
14637
14638   if (cu_header->version >= 5)
14639     return dwarf2_rnglists_process (offset, cu, callback);
14640
14641   found_base = cu->base_known;
14642   base = cu->base_address;
14643
14644   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14645   if (offset >= dwarf2_per_objfile->ranges.size)
14646     {
14647       complaint (&symfile_complaints,
14648                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
14649                  offset);
14650       return 0;
14651     }
14652   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14653
14654   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14655
14656   while (1)
14657     {
14658       CORE_ADDR range_beginning, range_end;
14659
14660       range_beginning = read_address (obfd, buffer, cu, &dummy);
14661       buffer += addr_size;
14662       range_end = read_address (obfd, buffer, cu, &dummy);
14663       buffer += addr_size;
14664       offset += 2 * addr_size;
14665
14666       /* An end of list marker is a pair of zero addresses.  */
14667       if (range_beginning == 0 && range_end == 0)
14668         /* Found the end of list entry.  */
14669         break;
14670
14671       /* Each base address selection entry is a pair of 2 values.
14672          The first is the largest possible address, the second is
14673          the base address.  Check for a base address here.  */
14674       if ((range_beginning & mask) == mask)
14675         {
14676           /* If we found the largest possible address, then we already
14677              have the base address in range_end.  */
14678           base = range_end;
14679           found_base = 1;
14680           continue;
14681         }
14682
14683       if (!found_base)
14684         {
14685           /* We have no valid base address for the ranges
14686              data.  */
14687           complaint (&symfile_complaints,
14688                      _("Invalid .debug_ranges data (no base address)"));
14689           return 0;
14690         }
14691
14692       if (range_beginning > range_end)
14693         {
14694           /* Inverted range entries are invalid.  */
14695           complaint (&symfile_complaints,
14696                      _("Invalid .debug_ranges data (inverted range)"));
14697           return 0;
14698         }
14699
14700       /* Empty range entries have no effect.  */
14701       if (range_beginning == range_end)
14702         continue;
14703
14704       range_beginning += base;
14705       range_end += base;
14706
14707       /* A not-uncommon case of bad debug info.
14708          Don't pollute the addrmap with bad data.  */
14709       if (range_beginning + baseaddr == 0
14710           && !dwarf2_per_objfile->has_section_at_zero)
14711         {
14712           complaint (&symfile_complaints,
14713                      _(".debug_ranges entry has start address of zero"
14714                        " [in module %s]"), objfile_name (objfile));
14715           continue;
14716         }
14717
14718       callback (range_beginning, range_end);
14719     }
14720
14721   return 1;
14722 }
14723
14724 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14725    Return 1 if the attributes are present and valid, otherwise, return 0.
14726    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14727
14728 static int
14729 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14730                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14731                     struct partial_symtab *ranges_pst)
14732 {
14733   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14734   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14735   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14736                                        SECT_OFF_TEXT (objfile));
14737   int low_set = 0;
14738   CORE_ADDR low = 0;
14739   CORE_ADDR high = 0;
14740   int retval;
14741
14742   retval = dwarf2_ranges_process (offset, cu,
14743     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14744     {
14745       if (ranges_pst != NULL)
14746         {
14747           CORE_ADDR lowpc;
14748           CORE_ADDR highpc;
14749
14750           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14751                                               range_beginning + baseaddr);
14752           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
14753                                                range_end + baseaddr);
14754           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14755                              ranges_pst);
14756         }
14757
14758       /* FIXME: This is recording everything as a low-high
14759          segment of consecutive addresses.  We should have a
14760          data structure for discontiguous block ranges
14761          instead.  */
14762       if (! low_set)
14763         {
14764           low = range_beginning;
14765           high = range_end;
14766           low_set = 1;
14767         }
14768       else
14769         {
14770           if (range_beginning < low)
14771             low = range_beginning;
14772           if (range_end > high)
14773             high = range_end;
14774         }
14775     });
14776   if (!retval)
14777     return 0;
14778
14779   if (! low_set)
14780     /* If the first entry is an end-of-list marker, the range
14781        describes an empty scope, i.e. no instructions.  */
14782     return 0;
14783
14784   if (low_return)
14785     *low_return = low;
14786   if (high_return)
14787     *high_return = high;
14788   return 1;
14789 }
14790
14791 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14792    definition for the return value.  *LOWPC and *HIGHPC are set iff
14793    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14794
14795 static enum pc_bounds_kind
14796 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14797                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14798                       struct partial_symtab *pst)
14799 {
14800   struct dwarf2_per_objfile *dwarf2_per_objfile
14801     = cu->per_cu->dwarf2_per_objfile;
14802   struct attribute *attr;
14803   struct attribute *attr_high;
14804   CORE_ADDR low = 0;
14805   CORE_ADDR high = 0;
14806   enum pc_bounds_kind ret;
14807
14808   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14809   if (attr_high)
14810     {
14811       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14812       if (attr)
14813         {
14814           low = attr_value_as_address (attr);
14815           high = attr_value_as_address (attr_high);
14816           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14817             high += low;
14818         }
14819       else
14820         /* Found high w/o low attribute.  */
14821         return PC_BOUNDS_INVALID;
14822
14823       /* Found consecutive range of addresses.  */
14824       ret = PC_BOUNDS_HIGH_LOW;
14825     }
14826   else
14827     {
14828       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14829       if (attr != NULL)
14830         {
14831           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14832              We take advantage of the fact that DW_AT_ranges does not appear
14833              in DW_TAG_compile_unit of DWO files.  */
14834           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14835           unsigned int ranges_offset = (DW_UNSND (attr)
14836                                         + (need_ranges_base
14837                                            ? cu->ranges_base
14838                                            : 0));
14839
14840           /* Value of the DW_AT_ranges attribute is the offset in the
14841              .debug_ranges section.  */
14842           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14843             return PC_BOUNDS_INVALID;
14844           /* Found discontinuous range of addresses.  */
14845           ret = PC_BOUNDS_RANGES;
14846         }
14847       else
14848         return PC_BOUNDS_NOT_PRESENT;
14849     }
14850
14851   /* read_partial_die has also the strict LOW < HIGH requirement.  */
14852   if (high <= low)
14853     return PC_BOUNDS_INVALID;
14854
14855   /* When using the GNU linker, .gnu.linkonce. sections are used to
14856      eliminate duplicate copies of functions and vtables and such.
14857      The linker will arbitrarily choose one and discard the others.
14858      The AT_*_pc values for such functions refer to local labels in
14859      these sections.  If the section from that file was discarded, the
14860      labels are not in the output, so the relocs get a value of 0.
14861      If this is a discarded function, mark the pc bounds as invalid,
14862      so that GDB will ignore it.  */
14863   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14864     return PC_BOUNDS_INVALID;
14865
14866   *lowpc = low;
14867   if (highpc)
14868     *highpc = high;
14869   return ret;
14870 }
14871
14872 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14873    its low and high PC addresses.  Do nothing if these addresses could not
14874    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14875    and HIGHPC to the high address if greater than HIGHPC.  */
14876
14877 static void
14878 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14879                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14880                                  struct dwarf2_cu *cu)
14881 {
14882   CORE_ADDR low, high;
14883   struct die_info *child = die->child;
14884
14885   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14886     {
14887       *lowpc = std::min (*lowpc, low);
14888       *highpc = std::max (*highpc, high);
14889     }
14890
14891   /* If the language does not allow nested subprograms (either inside
14892      subprograms or lexical blocks), we're done.  */
14893   if (cu->language != language_ada)
14894     return;
14895
14896   /* Check all the children of the given DIE.  If it contains nested
14897      subprograms, then check their pc bounds.  Likewise, we need to
14898      check lexical blocks as well, as they may also contain subprogram
14899      definitions.  */
14900   while (child && child->tag)
14901     {
14902       if (child->tag == DW_TAG_subprogram
14903           || child->tag == DW_TAG_lexical_block)
14904         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14905       child = sibling_die (child);
14906     }
14907 }
14908
14909 /* Get the low and high pc's represented by the scope DIE, and store
14910    them in *LOWPC and *HIGHPC.  If the correct values can't be
14911    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14912
14913 static void
14914 get_scope_pc_bounds (struct die_info *die,
14915                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14916                      struct dwarf2_cu *cu)
14917 {
14918   CORE_ADDR best_low = (CORE_ADDR) -1;
14919   CORE_ADDR best_high = (CORE_ADDR) 0;
14920   CORE_ADDR current_low, current_high;
14921
14922   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14923       >= PC_BOUNDS_RANGES)
14924     {
14925       best_low = current_low;
14926       best_high = current_high;
14927     }
14928   else
14929     {
14930       struct die_info *child = die->child;
14931
14932       while (child && child->tag)
14933         {
14934           switch (child->tag) {
14935           case DW_TAG_subprogram:
14936             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14937             break;
14938           case DW_TAG_namespace:
14939           case DW_TAG_module:
14940             /* FIXME: carlton/2004-01-16: Should we do this for
14941                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14942                that current GCC's always emit the DIEs corresponding
14943                to definitions of methods of classes as children of a
14944                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14945                the DIEs giving the declarations, which could be
14946                anywhere).  But I don't see any reason why the
14947                standards says that they have to be there.  */
14948             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14949
14950             if (current_low != ((CORE_ADDR) -1))
14951               {
14952                 best_low = std::min (best_low, current_low);
14953                 best_high = std::max (best_high, current_high);
14954               }
14955             break;
14956           default:
14957             /* Ignore.  */
14958             break;
14959           }
14960
14961           child = sibling_die (child);
14962         }
14963     }
14964
14965   *lowpc = best_low;
14966   *highpc = best_high;
14967 }
14968
14969 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14970    in DIE.  */
14971
14972 static void
14973 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14974                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14975 {
14976   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14977   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14978   struct attribute *attr;
14979   struct attribute *attr_high;
14980
14981   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14982   if (attr_high)
14983     {
14984       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14985       if (attr)
14986         {
14987           CORE_ADDR low = attr_value_as_address (attr);
14988           CORE_ADDR high = attr_value_as_address (attr_high);
14989
14990           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14991             high += low;
14992
14993           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14994           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14995           record_block_range (block, low, high - 1);
14996         }
14997     }
14998
14999   attr = dwarf2_attr (die, DW_AT_ranges, cu);
15000   if (attr)
15001     {
15002       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
15003          We take advantage of the fact that DW_AT_ranges does not appear
15004          in DW_TAG_compile_unit of DWO files.  */
15005       int need_ranges_base = die->tag != DW_TAG_compile_unit;
15006
15007       /* The value of the DW_AT_ranges attribute is the offset of the
15008          address range list in the .debug_ranges section.  */
15009       unsigned long offset = (DW_UNSND (attr)
15010                               + (need_ranges_base ? cu->ranges_base : 0));
15011       const gdb_byte *buffer;
15012
15013       /* For some target architectures, but not others, the
15014          read_address function sign-extends the addresses it returns.
15015          To recognize base address selection entries, we need a
15016          mask.  */
15017       unsigned int addr_size = cu->header.addr_size;
15018       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
15019
15020       /* The base address, to which the next pair is relative.  Note
15021          that this 'base' is a DWARF concept: most entries in a range
15022          list are relative, to reduce the number of relocs against the
15023          debugging information.  This is separate from this function's
15024          'baseaddr' argument, which GDB uses to relocate debugging
15025          information from a shared library based on the address at
15026          which the library was loaded.  */
15027       CORE_ADDR base = cu->base_address;
15028       int base_known = cu->base_known;
15029
15030       dwarf2_ranges_process (offset, cu,
15031         [&] (CORE_ADDR start, CORE_ADDR end)
15032         {
15033           start += baseaddr;
15034           end += baseaddr;
15035           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
15036           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
15037           record_block_range (block, start, end - 1);
15038         });
15039     }
15040 }
15041
15042 /* Check whether the producer field indicates either of GCC < 4.6, or the
15043    Intel C/C++ compiler, and cache the result in CU.  */
15044
15045 static void
15046 check_producer (struct dwarf2_cu *cu)
15047 {
15048   int major, minor;
15049
15050   if (cu->producer == NULL)
15051     {
15052       /* For unknown compilers expect their behavior is DWARF version
15053          compliant.
15054
15055          GCC started to support .debug_types sections by -gdwarf-4 since
15056          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
15057          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
15058          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
15059          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
15060     }
15061   else if (producer_is_gcc (cu->producer, &major, &minor))
15062     {
15063       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
15064       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
15065     }
15066   else if (producer_is_icc (cu->producer, &major, &minor))
15067     cu->producer_is_icc_lt_14 = major < 14;
15068   else
15069     {
15070       /* For other non-GCC compilers, expect their behavior is DWARF version
15071          compliant.  */
15072     }
15073
15074   cu->checked_producer = 1;
15075 }
15076
15077 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
15078    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
15079    during 4.6.0 experimental.  */
15080
15081 static int
15082 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
15083 {
15084   if (!cu->checked_producer)
15085     check_producer (cu);
15086
15087   return cu->producer_is_gxx_lt_4_6;
15088 }
15089
15090 /* Return the default accessibility type if it is not overriden by
15091    DW_AT_accessibility.  */
15092
15093 static enum dwarf_access_attribute
15094 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
15095 {
15096   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
15097     {
15098       /* The default DWARF 2 accessibility for members is public, the default
15099          accessibility for inheritance is private.  */
15100
15101       if (die->tag != DW_TAG_inheritance)
15102         return DW_ACCESS_public;
15103       else
15104         return DW_ACCESS_private;
15105     }
15106   else
15107     {
15108       /* DWARF 3+ defines the default accessibility a different way.  The same
15109          rules apply now for DW_TAG_inheritance as for the members and it only
15110          depends on the container kind.  */
15111
15112       if (die->parent->tag == DW_TAG_class_type)
15113         return DW_ACCESS_private;
15114       else
15115         return DW_ACCESS_public;
15116     }
15117 }
15118
15119 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
15120    offset.  If the attribute was not found return 0, otherwise return
15121    1.  If it was found but could not properly be handled, set *OFFSET
15122    to 0.  */
15123
15124 static int
15125 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
15126                              LONGEST *offset)
15127 {
15128   struct attribute *attr;
15129
15130   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
15131   if (attr != NULL)
15132     {
15133       *offset = 0;
15134
15135       /* Note that we do not check for a section offset first here.
15136          This is because DW_AT_data_member_location is new in DWARF 4,
15137          so if we see it, we can assume that a constant form is really
15138          a constant and not a section offset.  */
15139       if (attr_form_is_constant (attr))
15140         *offset = dwarf2_get_attr_constant_value (attr, 0);
15141       else if (attr_form_is_section_offset (attr))
15142         dwarf2_complex_location_expr_complaint ();
15143       else if (attr_form_is_block (attr))
15144         *offset = decode_locdesc (DW_BLOCK (attr), cu);
15145       else
15146         dwarf2_complex_location_expr_complaint ();
15147
15148       return 1;
15149     }
15150
15151   return 0;
15152 }
15153
15154 /* Add an aggregate field to the field list.  */
15155
15156 static void
15157 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15158                   struct dwarf2_cu *cu)
15159 {
15160   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15161   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15162   struct nextfield *new_field;
15163   struct attribute *attr;
15164   struct field *fp;
15165   const char *fieldname = "";
15166
15167   /* Allocate a new field list entry and link it in.  */
15168   new_field = XNEW (struct nextfield);
15169   make_cleanup (xfree, new_field);
15170   memset (new_field, 0, sizeof (struct nextfield));
15171
15172   if (die->tag == DW_TAG_inheritance)
15173     {
15174       new_field->next = fip->baseclasses;
15175       fip->baseclasses = new_field;
15176     }
15177   else
15178     {
15179       new_field->next = fip->fields;
15180       fip->fields = new_field;
15181     }
15182   fip->nfields++;
15183
15184   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15185   if (attr)
15186     new_field->accessibility = DW_UNSND (attr);
15187   else
15188     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15189   if (new_field->accessibility != DW_ACCESS_public)
15190     fip->non_public_fields = 1;
15191
15192   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15193   if (attr)
15194     new_field->virtuality = DW_UNSND (attr);
15195   else
15196     new_field->virtuality = DW_VIRTUALITY_none;
15197
15198   fp = &new_field->field;
15199
15200   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15201     {
15202       LONGEST offset;
15203
15204       /* Data member other than a C++ static data member.  */
15205
15206       /* Get type of field.  */
15207       fp->type = die_type (die, cu);
15208
15209       SET_FIELD_BITPOS (*fp, 0);
15210
15211       /* Get bit size of field (zero if none).  */
15212       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15213       if (attr)
15214         {
15215           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15216         }
15217       else
15218         {
15219           FIELD_BITSIZE (*fp) = 0;
15220         }
15221
15222       /* Get bit offset of field.  */
15223       if (handle_data_member_location (die, cu, &offset))
15224         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15225       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15226       if (attr)
15227         {
15228           if (gdbarch_bits_big_endian (gdbarch))
15229             {
15230               /* For big endian bits, the DW_AT_bit_offset gives the
15231                  additional bit offset from the MSB of the containing
15232                  anonymous object to the MSB of the field.  We don't
15233                  have to do anything special since we don't need to
15234                  know the size of the anonymous object.  */
15235               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15236             }
15237           else
15238             {
15239               /* For little endian bits, compute the bit offset to the
15240                  MSB of the anonymous object, subtract off the number of
15241                  bits from the MSB of the field to the MSB of the
15242                  object, and then subtract off the number of bits of
15243                  the field itself.  The result is the bit offset of
15244                  the LSB of the field.  */
15245               int anonymous_size;
15246               int bit_offset = DW_UNSND (attr);
15247
15248               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15249               if (attr)
15250                 {
15251                   /* The size of the anonymous object containing
15252                      the bit field is explicit, so use the
15253                      indicated size (in bytes).  */
15254                   anonymous_size = DW_UNSND (attr);
15255                 }
15256               else
15257                 {
15258                   /* The size of the anonymous object containing
15259                      the bit field must be inferred from the type
15260                      attribute of the data member containing the
15261                      bit field.  */
15262                   anonymous_size = TYPE_LENGTH (fp->type);
15263                 }
15264               SET_FIELD_BITPOS (*fp,
15265                                 (FIELD_BITPOS (*fp)
15266                                  + anonymous_size * bits_per_byte
15267                                  - bit_offset - FIELD_BITSIZE (*fp)));
15268             }
15269         }
15270       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15271       if (attr != NULL)
15272         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15273                                 + dwarf2_get_attr_constant_value (attr, 0)));
15274
15275       /* Get name of field.  */
15276       fieldname = dwarf2_name (die, cu);
15277       if (fieldname == NULL)
15278         fieldname = "";
15279
15280       /* The name is already allocated along with this objfile, so we don't
15281          need to duplicate it for the type.  */
15282       fp->name = fieldname;
15283
15284       /* Change accessibility for artificial fields (e.g. virtual table
15285          pointer or virtual base class pointer) to private.  */
15286       if (dwarf2_attr (die, DW_AT_artificial, cu))
15287         {
15288           FIELD_ARTIFICIAL (*fp) = 1;
15289           new_field->accessibility = DW_ACCESS_private;
15290           fip->non_public_fields = 1;
15291         }
15292     }
15293   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15294     {
15295       /* C++ static member.  */
15296
15297       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15298          is a declaration, but all versions of G++ as of this writing
15299          (so through at least 3.2.1) incorrectly generate
15300          DW_TAG_variable tags.  */
15301
15302       const char *physname;
15303
15304       /* Get name of field.  */
15305       fieldname = dwarf2_name (die, cu);
15306       if (fieldname == NULL)
15307         return;
15308
15309       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15310       if (attr
15311           /* Only create a symbol if this is an external value.
15312              new_symbol checks this and puts the value in the global symbol
15313              table, which we want.  If it is not external, new_symbol
15314              will try to put the value in cu->list_in_scope which is wrong.  */
15315           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15316         {
15317           /* A static const member, not much different than an enum as far as
15318              we're concerned, except that we can support more types.  */
15319           new_symbol (die, NULL, cu);
15320         }
15321
15322       /* Get physical name.  */
15323       physname = dwarf2_physname (fieldname, die, cu);
15324
15325       /* The name is already allocated along with this objfile, so we don't
15326          need to duplicate it for the type.  */
15327       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15328       FIELD_TYPE (*fp) = die_type (die, cu);
15329       FIELD_NAME (*fp) = fieldname;
15330     }
15331   else if (die->tag == DW_TAG_inheritance)
15332     {
15333       LONGEST offset;
15334
15335       /* C++ base class field.  */
15336       if (handle_data_member_location (die, cu, &offset))
15337         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15338       FIELD_BITSIZE (*fp) = 0;
15339       FIELD_TYPE (*fp) = die_type (die, cu);
15340       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
15341       fip->nbaseclasses++;
15342     }
15343 }
15344
15345 /* Can the type given by DIE define another type?  */
15346
15347 static bool
15348 type_can_define_types (const struct die_info *die)
15349 {
15350   switch (die->tag)
15351     {
15352     case DW_TAG_typedef:
15353     case DW_TAG_class_type:
15354     case DW_TAG_structure_type:
15355     case DW_TAG_union_type:
15356     case DW_TAG_enumeration_type:
15357       return true;
15358
15359     default:
15360       return false;
15361     }
15362 }
15363
15364 /* Add a type definition defined in the scope of the FIP's class.  */
15365
15366 static void
15367 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15368                       struct dwarf2_cu *cu)
15369 {
15370   struct decl_field_list *new_field;
15371   struct decl_field *fp;
15372
15373   /* Allocate a new field list entry and link it in.  */
15374   new_field = XCNEW (struct decl_field_list);
15375   make_cleanup (xfree, new_field);
15376
15377   gdb_assert (type_can_define_types (die));
15378
15379   fp = &new_field->field;
15380
15381   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15382   fp->name = dwarf2_name (die, cu);
15383   fp->type = read_type_die (die, cu);
15384
15385   /* Save accessibility.  */
15386   enum dwarf_access_attribute accessibility;
15387   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15388   if (attr != NULL)
15389     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15390   else
15391     accessibility = dwarf2_default_access_attribute (die, cu);
15392   switch (accessibility)
15393     {
15394     case DW_ACCESS_public:
15395       /* The assumed value if neither private nor protected.  */
15396       break;
15397     case DW_ACCESS_private:
15398       fp->is_private = 1;
15399       break;
15400     case DW_ACCESS_protected:
15401       fp->is_protected = 1;
15402       break;
15403     default:
15404       complaint (&symfile_complaints,
15405                  _("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15406     }
15407
15408   if (die->tag == DW_TAG_typedef)
15409     {
15410       new_field->next = fip->typedef_field_list;
15411       fip->typedef_field_list = new_field;
15412       fip->typedef_field_list_count++;
15413     }
15414   else
15415     {
15416       new_field->next = fip->nested_types_list;
15417       fip->nested_types_list = new_field;
15418       fip->nested_types_list_count++;
15419     }
15420 }
15421
15422 /* Create the vector of fields, and attach it to the type.  */
15423
15424 static void
15425 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15426                               struct dwarf2_cu *cu)
15427 {
15428   int nfields = fip->nfields;
15429
15430   /* Record the field count, allocate space for the array of fields,
15431      and create blank accessibility bitfields if necessary.  */
15432   TYPE_NFIELDS (type) = nfields;
15433   TYPE_FIELDS (type) = (struct field *)
15434     TYPE_ALLOC (type, sizeof (struct field) * nfields);
15435   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
15436
15437   if (fip->non_public_fields && cu->language != language_ada)
15438     {
15439       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15440
15441       TYPE_FIELD_PRIVATE_BITS (type) =
15442         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15443       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15444
15445       TYPE_FIELD_PROTECTED_BITS (type) =
15446         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15447       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15448
15449       TYPE_FIELD_IGNORE_BITS (type) =
15450         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15451       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15452     }
15453
15454   /* If the type has baseclasses, allocate and clear a bit vector for
15455      TYPE_FIELD_VIRTUAL_BITS.  */
15456   if (fip->nbaseclasses && cu->language != language_ada)
15457     {
15458       int num_bytes = B_BYTES (fip->nbaseclasses);
15459       unsigned char *pointer;
15460
15461       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15462       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15463       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15464       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
15465       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
15466     }
15467
15468   /* Copy the saved-up fields into the field vector.  Start from the head of
15469      the list, adding to the tail of the field array, so that they end up in
15470      the same order in the array in which they were added to the list.  */
15471   while (nfields-- > 0)
15472     {
15473       struct nextfield *fieldp;
15474
15475       if (fip->fields)
15476         {
15477           fieldp = fip->fields;
15478           fip->fields = fieldp->next;
15479         }
15480       else
15481         {
15482           fieldp = fip->baseclasses;
15483           fip->baseclasses = fieldp->next;
15484         }
15485
15486       TYPE_FIELD (type, nfields) = fieldp->field;
15487       switch (fieldp->accessibility)
15488         {
15489         case DW_ACCESS_private:
15490           if (cu->language != language_ada)
15491             SET_TYPE_FIELD_PRIVATE (type, nfields);
15492           break;
15493
15494         case DW_ACCESS_protected:
15495           if (cu->language != language_ada)
15496             SET_TYPE_FIELD_PROTECTED (type, nfields);
15497           break;
15498
15499         case DW_ACCESS_public:
15500           break;
15501
15502         default:
15503           /* Unknown accessibility.  Complain and treat it as public.  */
15504           {
15505             complaint (&symfile_complaints, _("unsupported accessibility %d"),
15506                        fieldp->accessibility);
15507           }
15508           break;
15509         }
15510       if (nfields < fip->nbaseclasses)
15511         {
15512           switch (fieldp->virtuality)
15513             {
15514             case DW_VIRTUALITY_virtual:
15515             case DW_VIRTUALITY_pure_virtual:
15516               if (cu->language == language_ada)
15517                 error (_("unexpected virtuality in component of Ada type"));
15518               SET_TYPE_FIELD_VIRTUAL (type, nfields);
15519               break;
15520             }
15521         }
15522     }
15523 }
15524
15525 /* Return true if this member function is a constructor, false
15526    otherwise.  */
15527
15528 static int
15529 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15530 {
15531   const char *fieldname;
15532   const char *type_name;
15533   int len;
15534
15535   if (die->parent == NULL)
15536     return 0;
15537
15538   if (die->parent->tag != DW_TAG_structure_type
15539       && die->parent->tag != DW_TAG_union_type
15540       && die->parent->tag != DW_TAG_class_type)
15541     return 0;
15542
15543   fieldname = dwarf2_name (die, cu);
15544   type_name = dwarf2_name (die->parent, cu);
15545   if (fieldname == NULL || type_name == NULL)
15546     return 0;
15547
15548   len = strlen (fieldname);
15549   return (strncmp (fieldname, type_name, len) == 0
15550           && (type_name[len] == '\0' || type_name[len] == '<'));
15551 }
15552
15553 /* Add a member function to the proper fieldlist.  */
15554
15555 static void
15556 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15557                       struct type *type, struct dwarf2_cu *cu)
15558 {
15559   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15560   struct attribute *attr;
15561   struct fnfieldlist *flp;
15562   int i;
15563   struct fn_field *fnp;
15564   const char *fieldname;
15565   struct nextfnfield *new_fnfield;
15566   struct type *this_type;
15567   enum dwarf_access_attribute accessibility;
15568
15569   if (cu->language == language_ada)
15570     error (_("unexpected member function in Ada type"));
15571
15572   /* Get name of member function.  */
15573   fieldname = dwarf2_name (die, cu);
15574   if (fieldname == NULL)
15575     return;
15576
15577   /* Look up member function name in fieldlist.  */
15578   for (i = 0; i < fip->nfnfields; i++)
15579     {
15580       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15581         break;
15582     }
15583
15584   /* Create new list element if necessary.  */
15585   if (i < fip->nfnfields)
15586     flp = &fip->fnfieldlists[i];
15587   else
15588     {
15589       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
15590         {
15591           fip->fnfieldlists = (struct fnfieldlist *)
15592             xrealloc (fip->fnfieldlists,
15593                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
15594                       * sizeof (struct fnfieldlist));
15595           if (fip->nfnfields == 0)
15596             make_cleanup (free_current_contents, &fip->fnfieldlists);
15597         }
15598       flp = &fip->fnfieldlists[fip->nfnfields];
15599       flp->name = fieldname;
15600       flp->length = 0;
15601       flp->head = NULL;
15602       i = fip->nfnfields++;
15603     }
15604
15605   /* Create a new member function field and chain it to the field list
15606      entry.  */
15607   new_fnfield = XNEW (struct nextfnfield);
15608   make_cleanup (xfree, new_fnfield);
15609   memset (new_fnfield, 0, sizeof (struct nextfnfield));
15610   new_fnfield->next = flp->head;
15611   flp->head = new_fnfield;
15612   flp->length++;
15613
15614   /* Fill in the member function field info.  */
15615   fnp = &new_fnfield->fnfield;
15616
15617   /* Delay processing of the physname until later.  */
15618   if (cu->language == language_cplus)
15619     {
15620       add_to_method_list (type, i, flp->length - 1, fieldname,
15621                           die, cu);
15622     }
15623   else
15624     {
15625       const char *physname = dwarf2_physname (fieldname, die, cu);
15626       fnp->physname = physname ? physname : "";
15627     }
15628
15629   fnp->type = alloc_type (objfile);
15630   this_type = read_type_die (die, cu);
15631   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15632     {
15633       int nparams = TYPE_NFIELDS (this_type);
15634
15635       /* TYPE is the domain of this method, and THIS_TYPE is the type
15636            of the method itself (TYPE_CODE_METHOD).  */
15637       smash_to_method_type (fnp->type, type,
15638                             TYPE_TARGET_TYPE (this_type),
15639                             TYPE_FIELDS (this_type),
15640                             TYPE_NFIELDS (this_type),
15641                             TYPE_VARARGS (this_type));
15642
15643       /* Handle static member functions.
15644          Dwarf2 has no clean way to discern C++ static and non-static
15645          member functions.  G++ helps GDB by marking the first
15646          parameter for non-static member functions (which is the this
15647          pointer) as artificial.  We obtain this information from
15648          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15649       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15650         fnp->voffset = VOFFSET_STATIC;
15651     }
15652   else
15653     complaint (&symfile_complaints, _("member function type missing for '%s'"),
15654                dwarf2_full_name (fieldname, die, cu));
15655
15656   /* Get fcontext from DW_AT_containing_type if present.  */
15657   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15658     fnp->fcontext = die_containing_type (die, cu);
15659
15660   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15661      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15662
15663   /* Get accessibility.  */
15664   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15665   if (attr)
15666     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15667   else
15668     accessibility = dwarf2_default_access_attribute (die, cu);
15669   switch (accessibility)
15670     {
15671     case DW_ACCESS_private:
15672       fnp->is_private = 1;
15673       break;
15674     case DW_ACCESS_protected:
15675       fnp->is_protected = 1;
15676       break;
15677     }
15678
15679   /* Check for artificial methods.  */
15680   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15681   if (attr && DW_UNSND (attr) != 0)
15682     fnp->is_artificial = 1;
15683
15684   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15685
15686   /* Get index in virtual function table if it is a virtual member
15687      function.  For older versions of GCC, this is an offset in the
15688      appropriate virtual table, as specified by DW_AT_containing_type.
15689      For everyone else, it is an expression to be evaluated relative
15690      to the object address.  */
15691
15692   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15693   if (attr)
15694     {
15695       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15696         {
15697           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15698             {
15699               /* Old-style GCC.  */
15700               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15701             }
15702           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15703                    || (DW_BLOCK (attr)->size > 1
15704                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15705                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15706             {
15707               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15708               if ((fnp->voffset % cu->header.addr_size) != 0)
15709                 dwarf2_complex_location_expr_complaint ();
15710               else
15711                 fnp->voffset /= cu->header.addr_size;
15712               fnp->voffset += 2;
15713             }
15714           else
15715             dwarf2_complex_location_expr_complaint ();
15716
15717           if (!fnp->fcontext)
15718             {
15719               /* If there is no `this' field and no DW_AT_containing_type,
15720                  we cannot actually find a base class context for the
15721                  vtable!  */
15722               if (TYPE_NFIELDS (this_type) == 0
15723                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15724                 {
15725                   complaint (&symfile_complaints,
15726                              _("cannot determine context for virtual member "
15727                                "function \"%s\" (offset %d)"),
15728                              fieldname, to_underlying (die->sect_off));
15729                 }
15730               else
15731                 {
15732                   fnp->fcontext
15733                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15734                 }
15735             }
15736         }
15737       else if (attr_form_is_section_offset (attr))
15738         {
15739           dwarf2_complex_location_expr_complaint ();
15740         }
15741       else
15742         {
15743           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15744                                                  fieldname);
15745         }
15746     }
15747   else
15748     {
15749       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15750       if (attr && DW_UNSND (attr))
15751         {
15752           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15753           complaint (&symfile_complaints,
15754                      _("Member function \"%s\" (offset %d) is virtual "
15755                        "but the vtable offset is not specified"),
15756                      fieldname, to_underlying (die->sect_off));
15757           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15758           TYPE_CPLUS_DYNAMIC (type) = 1;
15759         }
15760     }
15761 }
15762
15763 /* Create the vector of member function fields, and attach it to the type.  */
15764
15765 static void
15766 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15767                                  struct dwarf2_cu *cu)
15768 {
15769   struct fnfieldlist *flp;
15770   int i;
15771
15772   if (cu->language == language_ada)
15773     error (_("unexpected member functions in Ada type"));
15774
15775   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15776   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15777     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
15778
15779   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
15780     {
15781       struct nextfnfield *nfp = flp->head;
15782       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15783       int k;
15784
15785       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
15786       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
15787       fn_flp->fn_fields = (struct fn_field *)
15788         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
15789       for (k = flp->length; (k--, nfp); nfp = nfp->next)
15790         fn_flp->fn_fields[k] = nfp->fnfield;
15791     }
15792
15793   TYPE_NFN_FIELDS (type) = fip->nfnfields;
15794 }
15795
15796 /* Returns non-zero if NAME is the name of a vtable member in CU's
15797    language, zero otherwise.  */
15798 static int
15799 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15800 {
15801   static const char vptr[] = "_vptr";
15802
15803   /* Look for the C++ form of the vtable.  */
15804   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15805     return 1;
15806
15807   return 0;
15808 }
15809
15810 /* GCC outputs unnamed structures that are really pointers to member
15811    functions, with the ABI-specified layout.  If TYPE describes
15812    such a structure, smash it into a member function type.
15813
15814    GCC shouldn't do this; it should just output pointer to member DIEs.
15815    This is GCC PR debug/28767.  */
15816
15817 static void
15818 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15819 {
15820   struct type *pfn_type, *self_type, *new_type;
15821
15822   /* Check for a structure with no name and two children.  */
15823   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15824     return;
15825
15826   /* Check for __pfn and __delta members.  */
15827   if (TYPE_FIELD_NAME (type, 0) == NULL
15828       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15829       || TYPE_FIELD_NAME (type, 1) == NULL
15830       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15831     return;
15832
15833   /* Find the type of the method.  */
15834   pfn_type = TYPE_FIELD_TYPE (type, 0);
15835   if (pfn_type == NULL
15836       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15837       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15838     return;
15839
15840   /* Look for the "this" argument.  */
15841   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15842   if (TYPE_NFIELDS (pfn_type) == 0
15843       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15844       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15845     return;
15846
15847   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15848   new_type = alloc_type (objfile);
15849   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15850                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15851                         TYPE_VARARGS (pfn_type));
15852   smash_to_methodptr_type (type, new_type);
15853 }
15854
15855
15856 /* Called when we find the DIE that starts a structure or union scope
15857    (definition) to create a type for the structure or union.  Fill in
15858    the type's name and general properties; the members will not be
15859    processed until process_structure_scope.  A symbol table entry for
15860    the type will also not be done until process_structure_scope (assuming
15861    the type has a name).
15862
15863    NOTE: we need to call these functions regardless of whether or not the
15864    DIE has a DW_AT_name attribute, since it might be an anonymous
15865    structure or union.  This gets the type entered into our set of
15866    user defined types.  */
15867
15868 static struct type *
15869 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15870 {
15871   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15872   struct type *type;
15873   struct attribute *attr;
15874   const char *name;
15875
15876   /* If the definition of this type lives in .debug_types, read that type.
15877      Don't follow DW_AT_specification though, that will take us back up
15878      the chain and we want to go down.  */
15879   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15880   if (attr)
15881     {
15882       type = get_DW_AT_signature_type (die, attr, cu);
15883
15884       /* The type's CU may not be the same as CU.
15885          Ensure TYPE is recorded with CU in die_type_hash.  */
15886       return set_die_type (die, type, cu);
15887     }
15888
15889   type = alloc_type (objfile);
15890   INIT_CPLUS_SPECIFIC (type);
15891
15892   name = dwarf2_name (die, cu);
15893   if (name != NULL)
15894     {
15895       if (cu->language == language_cplus
15896           || cu->language == language_d
15897           || cu->language == language_rust)
15898         {
15899           const char *full_name = dwarf2_full_name (name, die, cu);
15900
15901           /* dwarf2_full_name might have already finished building the DIE's
15902              type.  If so, there is no need to continue.  */
15903           if (get_die_type (die, cu) != NULL)
15904             return get_die_type (die, cu);
15905
15906           TYPE_TAG_NAME (type) = full_name;
15907           if (die->tag == DW_TAG_structure_type
15908               || die->tag == DW_TAG_class_type)
15909             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15910         }
15911       else
15912         {
15913           /* The name is already allocated along with this objfile, so
15914              we don't need to duplicate it for the type.  */
15915           TYPE_TAG_NAME (type) = name;
15916           if (die->tag == DW_TAG_class_type)
15917             TYPE_NAME (type) = TYPE_TAG_NAME (type);
15918         }
15919     }
15920
15921   if (die->tag == DW_TAG_structure_type)
15922     {
15923       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15924     }
15925   else if (die->tag == DW_TAG_union_type)
15926     {
15927       TYPE_CODE (type) = TYPE_CODE_UNION;
15928     }
15929   else
15930     {
15931       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15932     }
15933
15934   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15935     TYPE_DECLARED_CLASS (type) = 1;
15936
15937   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15938   if (attr)
15939     {
15940       if (attr_form_is_constant (attr))
15941         TYPE_LENGTH (type) = DW_UNSND (attr);
15942       else
15943         {
15944           /* For the moment, dynamic type sizes are not supported
15945              by GDB's struct type.  The actual size is determined
15946              on-demand when resolving the type of a given object,
15947              so set the type's length to zero for now.  Otherwise,
15948              we record an expression as the length, and that expression
15949              could lead to a very large value, which could eventually
15950              lead to us trying to allocate that much memory when creating
15951              a value of that type.  */
15952           TYPE_LENGTH (type) = 0;
15953         }
15954     }
15955   else
15956     {
15957       TYPE_LENGTH (type) = 0;
15958     }
15959
15960   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15961     {
15962       /* ICC<14 does not output the required DW_AT_declaration on
15963          incomplete types, but gives them a size of zero.  */
15964       TYPE_STUB (type) = 1;
15965     }
15966   else
15967     TYPE_STUB_SUPPORTED (type) = 1;
15968
15969   if (die_is_declaration (die, cu))
15970     TYPE_STUB (type) = 1;
15971   else if (attr == NULL && die->child == NULL
15972            && producer_is_realview (cu->producer))
15973     /* RealView does not output the required DW_AT_declaration
15974        on incomplete types.  */
15975     TYPE_STUB (type) = 1;
15976
15977   /* We need to add the type field to the die immediately so we don't
15978      infinitely recurse when dealing with pointers to the structure
15979      type within the structure itself.  */
15980   set_die_type (die, type, cu);
15981
15982   /* set_die_type should be already done.  */
15983   set_descriptive_type (type, die, cu);
15984
15985   return type;
15986 }
15987
15988 /* Finish creating a structure or union type, including filling in
15989    its members and creating a symbol for it.  */
15990
15991 static void
15992 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15993 {
15994   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15995   struct die_info *child_die;
15996   struct type *type;
15997
15998   type = get_die_type (die, cu);
15999   if (type == NULL)
16000     type = read_structure_type (die, cu);
16001
16002   if (die->child != NULL && ! die_is_declaration (die, cu))
16003     {
16004       struct field_info fi;
16005       std::vector<struct symbol *> template_args;
16006       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
16007
16008       memset (&fi, 0, sizeof (struct field_info));
16009
16010       child_die = die->child;
16011
16012       while (child_die && child_die->tag)
16013         {
16014           if (child_die->tag == DW_TAG_member
16015               || child_die->tag == DW_TAG_variable)
16016             {
16017               /* NOTE: carlton/2002-11-05: A C++ static data member
16018                  should be a DW_TAG_member that is a declaration, but
16019                  all versions of G++ as of this writing (so through at
16020                  least 3.2.1) incorrectly generate DW_TAG_variable
16021                  tags for them instead.  */
16022               dwarf2_add_field (&fi, child_die, cu);
16023             }
16024           else if (child_die->tag == DW_TAG_subprogram)
16025             {
16026               /* Rust doesn't have member functions in the C++ sense.
16027                  However, it does emit ordinary functions as children
16028                  of a struct DIE.  */
16029               if (cu->language == language_rust)
16030                 read_func_scope (child_die, cu);
16031               else
16032                 {
16033                   /* C++ member function.  */
16034                   dwarf2_add_member_fn (&fi, child_die, type, cu);
16035                 }
16036             }
16037           else if (child_die->tag == DW_TAG_inheritance)
16038             {
16039               /* C++ base class field.  */
16040               dwarf2_add_field (&fi, child_die, cu);
16041             }
16042           else if (type_can_define_types (child_die))
16043             dwarf2_add_type_defn (&fi, child_die, cu);
16044           else if (child_die->tag == DW_TAG_template_type_param
16045                    || child_die->tag == DW_TAG_template_value_param)
16046             {
16047               struct symbol *arg = new_symbol (child_die, NULL, cu);
16048
16049               if (arg != NULL)
16050                 template_args.push_back (arg);
16051             }
16052
16053           child_die = sibling_die (child_die);
16054         }
16055
16056       /* Attach template arguments to type.  */
16057       if (!template_args.empty ())
16058         {
16059           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16060           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16061           TYPE_TEMPLATE_ARGUMENTS (type)
16062             = XOBNEWVEC (&objfile->objfile_obstack,
16063                          struct symbol *,
16064                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16065           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16066                   template_args.data (),
16067                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16068                    * sizeof (struct symbol *)));
16069         }
16070
16071       /* Attach fields and member functions to the type.  */
16072       if (fi.nfields)
16073         dwarf2_attach_fields_to_type (&fi, type, cu);
16074       if (fi.nfnfields)
16075         {
16076           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16077
16078           /* Get the type which refers to the base class (possibly this
16079              class itself) which contains the vtable pointer for the current
16080              class from the DW_AT_containing_type attribute.  This use of
16081              DW_AT_containing_type is a GNU extension.  */
16082
16083           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16084             {
16085               struct type *t = die_containing_type (die, cu);
16086
16087               set_type_vptr_basetype (type, t);
16088               if (type == t)
16089                 {
16090                   int i;
16091
16092                   /* Our own class provides vtbl ptr.  */
16093                   for (i = TYPE_NFIELDS (t) - 1;
16094                        i >= TYPE_N_BASECLASSES (t);
16095                        --i)
16096                     {
16097                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16098
16099                       if (is_vtable_name (fieldname, cu))
16100                         {
16101                           set_type_vptr_fieldno (type, i);
16102                           break;
16103                         }
16104                     }
16105
16106                   /* Complain if virtual function table field not found.  */
16107                   if (i < TYPE_N_BASECLASSES (t))
16108                     complaint (&symfile_complaints,
16109                                _("virtual function table pointer "
16110                                  "not found when defining class '%s'"),
16111                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
16112                                "");
16113                 }
16114               else
16115                 {
16116                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16117                 }
16118             }
16119           else if (cu->producer
16120                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16121             {
16122               /* The IBM XLC compiler does not provide direct indication
16123                  of the containing type, but the vtable pointer is
16124                  always named __vfp.  */
16125
16126               int i;
16127
16128               for (i = TYPE_NFIELDS (type) - 1;
16129                    i >= TYPE_N_BASECLASSES (type);
16130                    --i)
16131                 {
16132                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16133                     {
16134                       set_type_vptr_fieldno (type, i);
16135                       set_type_vptr_basetype (type, type);
16136                       break;
16137                     }
16138                 }
16139             }
16140         }
16141
16142       /* Copy fi.typedef_field_list linked list elements content into the
16143          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16144       if (fi.typedef_field_list)
16145         {
16146           int i = fi.typedef_field_list_count;
16147
16148           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16149           TYPE_TYPEDEF_FIELD_ARRAY (type)
16150             = ((struct decl_field *)
16151                TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i));
16152           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
16153
16154           /* Reverse the list order to keep the debug info elements order.  */
16155           while (--i >= 0)
16156             {
16157               struct decl_field *dest, *src;
16158
16159               dest = &TYPE_TYPEDEF_FIELD (type, i);
16160               src = &fi.typedef_field_list->field;
16161               fi.typedef_field_list = fi.typedef_field_list->next;
16162               *dest = *src;
16163             }
16164         }
16165
16166       /* Copy fi.nested_types_list linked list elements content into the
16167          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16168       if (fi.nested_types_list != NULL && cu->language != language_ada)
16169         {
16170           int i = fi.nested_types_list_count;
16171
16172           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16173           TYPE_NESTED_TYPES_ARRAY (type)
16174             = ((struct decl_field *)
16175                TYPE_ALLOC (type, sizeof (struct decl_field) * i));
16176           TYPE_NESTED_TYPES_COUNT (type) = i;
16177
16178           /* Reverse the list order to keep the debug info elements order.  */
16179           while (--i >= 0)
16180             {
16181               struct decl_field *dest, *src;
16182
16183               dest = &TYPE_NESTED_TYPES_FIELD (type, i);
16184               src = &fi.nested_types_list->field;
16185               fi.nested_types_list = fi.nested_types_list->next;
16186               *dest = *src;
16187             }
16188         }
16189
16190       do_cleanups (back_to);
16191     }
16192
16193   quirk_gcc_member_function_pointer (type, objfile);
16194
16195   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16196      snapshots) has been known to create a die giving a declaration
16197      for a class that has, as a child, a die giving a definition for a
16198      nested class.  So we have to process our children even if the
16199      current die is a declaration.  Normally, of course, a declaration
16200      won't have any children at all.  */
16201
16202   child_die = die->child;
16203
16204   while (child_die != NULL && child_die->tag)
16205     {
16206       if (child_die->tag == DW_TAG_member
16207           || child_die->tag == DW_TAG_variable
16208           || child_die->tag == DW_TAG_inheritance
16209           || child_die->tag == DW_TAG_template_value_param
16210           || child_die->tag == DW_TAG_template_type_param)
16211         {
16212           /* Do nothing.  */
16213         }
16214       else
16215         process_die (child_die, cu);
16216
16217       child_die = sibling_die (child_die);
16218     }
16219
16220   /* Do not consider external references.  According to the DWARF standard,
16221      these DIEs are identified by the fact that they have no byte_size
16222      attribute, and a declaration attribute.  */
16223   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16224       || !die_is_declaration (die, cu))
16225     new_symbol (die, type, cu);
16226 }
16227
16228 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16229    update TYPE using some information only available in DIE's children.  */
16230
16231 static void
16232 update_enumeration_type_from_children (struct die_info *die,
16233                                        struct type *type,
16234                                        struct dwarf2_cu *cu)
16235 {
16236   struct die_info *child_die;
16237   int unsigned_enum = 1;
16238   int flag_enum = 1;
16239   ULONGEST mask = 0;
16240
16241   auto_obstack obstack;
16242
16243   for (child_die = die->child;
16244        child_die != NULL && child_die->tag;
16245        child_die = sibling_die (child_die))
16246     {
16247       struct attribute *attr;
16248       LONGEST value;
16249       const gdb_byte *bytes;
16250       struct dwarf2_locexpr_baton *baton;
16251       const char *name;
16252
16253       if (child_die->tag != DW_TAG_enumerator)
16254         continue;
16255
16256       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16257       if (attr == NULL)
16258         continue;
16259
16260       name = dwarf2_name (child_die, cu);
16261       if (name == NULL)
16262         name = "<anonymous enumerator>";
16263
16264       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16265                                &value, &bytes, &baton);
16266       if (value < 0)
16267         {
16268           unsigned_enum = 0;
16269           flag_enum = 0;
16270         }
16271       else if ((mask & value) != 0)
16272         flag_enum = 0;
16273       else
16274         mask |= value;
16275
16276       /* If we already know that the enum type is neither unsigned, nor
16277          a flag type, no need to look at the rest of the enumerates.  */
16278       if (!unsigned_enum && !flag_enum)
16279         break;
16280     }
16281
16282   if (unsigned_enum)
16283     TYPE_UNSIGNED (type) = 1;
16284   if (flag_enum)
16285     TYPE_FLAG_ENUM (type) = 1;
16286 }
16287
16288 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16289    complete the type's fields yet, or create any symbols.  */
16290
16291 static struct type *
16292 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16293 {
16294   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16295   struct type *type;
16296   struct attribute *attr;
16297   const char *name;
16298
16299   /* If the definition of this type lives in .debug_types, read that type.
16300      Don't follow DW_AT_specification though, that will take us back up
16301      the chain and we want to go down.  */
16302   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16303   if (attr)
16304     {
16305       type = get_DW_AT_signature_type (die, attr, cu);
16306
16307       /* The type's CU may not be the same as CU.
16308          Ensure TYPE is recorded with CU in die_type_hash.  */
16309       return set_die_type (die, type, cu);
16310     }
16311
16312   type = alloc_type (objfile);
16313
16314   TYPE_CODE (type) = TYPE_CODE_ENUM;
16315   name = dwarf2_full_name (NULL, die, cu);
16316   if (name != NULL)
16317     TYPE_TAG_NAME (type) = name;
16318
16319   attr = dwarf2_attr (die, DW_AT_type, cu);
16320   if (attr != NULL)
16321     {
16322       struct type *underlying_type = die_type (die, cu);
16323
16324       TYPE_TARGET_TYPE (type) = underlying_type;
16325     }
16326
16327   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16328   if (attr)
16329     {
16330       TYPE_LENGTH (type) = DW_UNSND (attr);
16331     }
16332   else
16333     {
16334       TYPE_LENGTH (type) = 0;
16335     }
16336
16337   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16338      declared as private in the package spec, and then defined only
16339      inside the package body.  Such types are known as Taft Amendment
16340      Types.  When another package uses such a type, an incomplete DIE
16341      may be generated by the compiler.  */
16342   if (die_is_declaration (die, cu))
16343     TYPE_STUB (type) = 1;
16344
16345   /* Finish the creation of this type by using the enum's children.
16346      We must call this even when the underlying type has been provided
16347      so that we can determine if we're looking at a "flag" enum.  */
16348   update_enumeration_type_from_children (die, type, cu);
16349
16350   /* If this type has an underlying type that is not a stub, then we
16351      may use its attributes.  We always use the "unsigned" attribute
16352      in this situation, because ordinarily we guess whether the type
16353      is unsigned -- but the guess can be wrong and the underlying type
16354      can tell us the reality.  However, we defer to a local size
16355      attribute if one exists, because this lets the compiler override
16356      the underlying type if needed.  */
16357   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16358     {
16359       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16360       if (TYPE_LENGTH (type) == 0)
16361         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16362     }
16363
16364   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16365
16366   return set_die_type (die, type, cu);
16367 }
16368
16369 /* Given a pointer to a die which begins an enumeration, process all
16370    the dies that define the members of the enumeration, and create the
16371    symbol for the enumeration type.
16372
16373    NOTE: We reverse the order of the element list.  */
16374
16375 static void
16376 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16377 {
16378   struct type *this_type;
16379
16380   this_type = get_die_type (die, cu);
16381   if (this_type == NULL)
16382     this_type = read_enumeration_type (die, cu);
16383
16384   if (die->child != NULL)
16385     {
16386       struct die_info *child_die;
16387       struct symbol *sym;
16388       struct field *fields = NULL;
16389       int num_fields = 0;
16390       const char *name;
16391
16392       child_die = die->child;
16393       while (child_die && child_die->tag)
16394         {
16395           if (child_die->tag != DW_TAG_enumerator)
16396             {
16397               process_die (child_die, cu);
16398             }
16399           else
16400             {
16401               name = dwarf2_name (child_die, cu);
16402               if (name)
16403                 {
16404                   sym = new_symbol (child_die, this_type, cu);
16405
16406                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16407                     {
16408                       fields = (struct field *)
16409                         xrealloc (fields,
16410                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16411                                   * sizeof (struct field));
16412                     }
16413
16414                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16415                   FIELD_TYPE (fields[num_fields]) = NULL;
16416                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16417                   FIELD_BITSIZE (fields[num_fields]) = 0;
16418
16419                   num_fields++;
16420                 }
16421             }
16422
16423           child_die = sibling_die (child_die);
16424         }
16425
16426       if (num_fields)
16427         {
16428           TYPE_NFIELDS (this_type) = num_fields;
16429           TYPE_FIELDS (this_type) = (struct field *)
16430             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16431           memcpy (TYPE_FIELDS (this_type), fields,
16432                   sizeof (struct field) * num_fields);
16433           xfree (fields);
16434         }
16435     }
16436
16437   /* If we are reading an enum from a .debug_types unit, and the enum
16438      is a declaration, and the enum is not the signatured type in the
16439      unit, then we do not want to add a symbol for it.  Adding a
16440      symbol would in some cases obscure the true definition of the
16441      enum, giving users an incomplete type when the definition is
16442      actually available.  Note that we do not want to do this for all
16443      enums which are just declarations, because C++0x allows forward
16444      enum declarations.  */
16445   if (cu->per_cu->is_debug_types
16446       && die_is_declaration (die, cu))
16447     {
16448       struct signatured_type *sig_type;
16449
16450       sig_type = (struct signatured_type *) cu->per_cu;
16451       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16452       if (sig_type->type_offset_in_section != die->sect_off)
16453         return;
16454     }
16455
16456   new_symbol (die, this_type, cu);
16457 }
16458
16459 /* Extract all information from a DW_TAG_array_type DIE and put it in
16460    the DIE's type field.  For now, this only handles one dimensional
16461    arrays.  */
16462
16463 static struct type *
16464 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16465 {
16466   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16467   struct die_info *child_die;
16468   struct type *type;
16469   struct type *element_type, *range_type, *index_type;
16470   struct attribute *attr;
16471   const char *name;
16472   struct dynamic_prop *byte_stride_prop = NULL;
16473   unsigned int bit_stride = 0;
16474
16475   element_type = die_type (die, cu);
16476
16477   /* The die_type call above may have already set the type for this DIE.  */
16478   type = get_die_type (die, cu);
16479   if (type)
16480     return type;
16481
16482   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16483   if (attr != NULL)
16484     {
16485       int stride_ok;
16486
16487       byte_stride_prop
16488         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16489       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16490       if (!stride_ok)
16491         {
16492           complaint (&symfile_complaints,
16493                      _("unable to read array DW_AT_byte_stride "
16494                        " - DIE at 0x%x [in module %s]"),
16495                      to_underlying (die->sect_off),
16496                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16497           /* Ignore this attribute.  We will likely not be able to print
16498              arrays of this type correctly, but there is little we can do
16499              to help if we cannot read the attribute's value.  */
16500           byte_stride_prop = NULL;
16501         }
16502     }
16503
16504   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16505   if (attr != NULL)
16506     bit_stride = DW_UNSND (attr);
16507
16508   /* Irix 6.2 native cc creates array types without children for
16509      arrays with unspecified length.  */
16510   if (die->child == NULL)
16511     {
16512       index_type = objfile_type (objfile)->builtin_int;
16513       range_type = create_static_range_type (NULL, index_type, 0, -1);
16514       type = create_array_type_with_stride (NULL, element_type, range_type,
16515                                             byte_stride_prop, bit_stride);
16516       return set_die_type (die, type, cu);
16517     }
16518
16519   std::vector<struct type *> range_types;
16520   child_die = die->child;
16521   while (child_die && child_die->tag)
16522     {
16523       if (child_die->tag == DW_TAG_subrange_type)
16524         {
16525           struct type *child_type = read_type_die (child_die, cu);
16526
16527           if (child_type != NULL)
16528             {
16529               /* The range type was succesfully read.  Save it for the
16530                  array type creation.  */
16531               range_types.push_back (child_type);
16532             }
16533         }
16534       child_die = sibling_die (child_die);
16535     }
16536
16537   /* Dwarf2 dimensions are output from left to right, create the
16538      necessary array types in backwards order.  */
16539
16540   type = element_type;
16541
16542   if (read_array_order (die, cu) == DW_ORD_col_major)
16543     {
16544       int i = 0;
16545
16546       while (i < range_types.size ())
16547         type = create_array_type_with_stride (NULL, type, range_types[i++],
16548                                               byte_stride_prop, bit_stride);
16549     }
16550   else
16551     {
16552       size_t ndim = range_types.size ();
16553       while (ndim-- > 0)
16554         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16555                                               byte_stride_prop, bit_stride);
16556     }
16557
16558   /* Understand Dwarf2 support for vector types (like they occur on
16559      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16560      array type.  This is not part of the Dwarf2/3 standard yet, but a
16561      custom vendor extension.  The main difference between a regular
16562      array and the vector variant is that vectors are passed by value
16563      to functions.  */
16564   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16565   if (attr)
16566     make_vector_type (type);
16567
16568   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16569      implementation may choose to implement triple vectors using this
16570      attribute.  */
16571   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16572   if (attr)
16573     {
16574       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16575         TYPE_LENGTH (type) = DW_UNSND (attr);
16576       else
16577         complaint (&symfile_complaints,
16578                    _("DW_AT_byte_size for array type smaller "
16579                      "than the total size of elements"));
16580     }
16581
16582   name = dwarf2_name (die, cu);
16583   if (name)
16584     TYPE_NAME (type) = name;
16585
16586   /* Install the type in the die.  */
16587   set_die_type (die, type, cu);
16588
16589   /* set_die_type should be already done.  */
16590   set_descriptive_type (type, die, cu);
16591
16592   return type;
16593 }
16594
16595 static enum dwarf_array_dim_ordering
16596 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16597 {
16598   struct attribute *attr;
16599
16600   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16601
16602   if (attr)
16603     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16604
16605   /* GNU F77 is a special case, as at 08/2004 array type info is the
16606      opposite order to the dwarf2 specification, but data is still
16607      laid out as per normal fortran.
16608
16609      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16610      version checking.  */
16611
16612   if (cu->language == language_fortran
16613       && cu->producer && strstr (cu->producer, "GNU F77"))
16614     {
16615       return DW_ORD_row_major;
16616     }
16617
16618   switch (cu->language_defn->la_array_ordering)
16619     {
16620     case array_column_major:
16621       return DW_ORD_col_major;
16622     case array_row_major:
16623     default:
16624       return DW_ORD_row_major;
16625     };
16626 }
16627
16628 /* Extract all information from a DW_TAG_set_type DIE and put it in
16629    the DIE's type field.  */
16630
16631 static struct type *
16632 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16633 {
16634   struct type *domain_type, *set_type;
16635   struct attribute *attr;
16636
16637   domain_type = die_type (die, cu);
16638
16639   /* The die_type call above may have already set the type for this DIE.  */
16640   set_type = get_die_type (die, cu);
16641   if (set_type)
16642     return set_type;
16643
16644   set_type = create_set_type (NULL, domain_type);
16645
16646   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16647   if (attr)
16648     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16649
16650   return set_die_type (die, set_type, cu);
16651 }
16652
16653 /* A helper for read_common_block that creates a locexpr baton.
16654    SYM is the symbol which we are marking as computed.
16655    COMMON_DIE is the DIE for the common block.
16656    COMMON_LOC is the location expression attribute for the common
16657    block itself.
16658    MEMBER_LOC is the location expression attribute for the particular
16659    member of the common block that we are processing.
16660    CU is the CU from which the above come.  */
16661
16662 static void
16663 mark_common_block_symbol_computed (struct symbol *sym,
16664                                    struct die_info *common_die,
16665                                    struct attribute *common_loc,
16666                                    struct attribute *member_loc,
16667                                    struct dwarf2_cu *cu)
16668 {
16669   struct dwarf2_per_objfile *dwarf2_per_objfile
16670     = cu->per_cu->dwarf2_per_objfile;
16671   struct objfile *objfile = dwarf2_per_objfile->objfile;
16672   struct dwarf2_locexpr_baton *baton;
16673   gdb_byte *ptr;
16674   unsigned int cu_off;
16675   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16676   LONGEST offset = 0;
16677
16678   gdb_assert (common_loc && member_loc);
16679   gdb_assert (attr_form_is_block (common_loc));
16680   gdb_assert (attr_form_is_block (member_loc)
16681               || attr_form_is_constant (member_loc));
16682
16683   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16684   baton->per_cu = cu->per_cu;
16685   gdb_assert (baton->per_cu);
16686
16687   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16688
16689   if (attr_form_is_constant (member_loc))
16690     {
16691       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16692       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16693     }
16694   else
16695     baton->size += DW_BLOCK (member_loc)->size;
16696
16697   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16698   baton->data = ptr;
16699
16700   *ptr++ = DW_OP_call4;
16701   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16702   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16703   ptr += 4;
16704
16705   if (attr_form_is_constant (member_loc))
16706     {
16707       *ptr++ = DW_OP_addr;
16708       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16709       ptr += cu->header.addr_size;
16710     }
16711   else
16712     {
16713       /* We have to copy the data here, because DW_OP_call4 will only
16714          use a DW_AT_location attribute.  */
16715       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16716       ptr += DW_BLOCK (member_loc)->size;
16717     }
16718
16719   *ptr++ = DW_OP_plus;
16720   gdb_assert (ptr - baton->data == baton->size);
16721
16722   SYMBOL_LOCATION_BATON (sym) = baton;
16723   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16724 }
16725
16726 /* Create appropriate locally-scoped variables for all the
16727    DW_TAG_common_block entries.  Also create a struct common_block
16728    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16729    is used to sepate the common blocks name namespace from regular
16730    variable names.  */
16731
16732 static void
16733 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16734 {
16735   struct attribute *attr;
16736
16737   attr = dwarf2_attr (die, DW_AT_location, cu);
16738   if (attr)
16739     {
16740       /* Support the .debug_loc offsets.  */
16741       if (attr_form_is_block (attr))
16742         {
16743           /* Ok.  */
16744         }
16745       else if (attr_form_is_section_offset (attr))
16746         {
16747           dwarf2_complex_location_expr_complaint ();
16748           attr = NULL;
16749         }
16750       else
16751         {
16752           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16753                                                  "common block member");
16754           attr = NULL;
16755         }
16756     }
16757
16758   if (die->child != NULL)
16759     {
16760       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16761       struct die_info *child_die;
16762       size_t n_entries = 0, size;
16763       struct common_block *common_block;
16764       struct symbol *sym;
16765
16766       for (child_die = die->child;
16767            child_die && child_die->tag;
16768            child_die = sibling_die (child_die))
16769         ++n_entries;
16770
16771       size = (sizeof (struct common_block)
16772               + (n_entries - 1) * sizeof (struct symbol *));
16773       common_block
16774         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16775                                                  size);
16776       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16777       common_block->n_entries = 0;
16778
16779       for (child_die = die->child;
16780            child_die && child_die->tag;
16781            child_die = sibling_die (child_die))
16782         {
16783           /* Create the symbol in the DW_TAG_common_block block in the current
16784              symbol scope.  */
16785           sym = new_symbol (child_die, NULL, cu);
16786           if (sym != NULL)
16787             {
16788               struct attribute *member_loc;
16789
16790               common_block->contents[common_block->n_entries++] = sym;
16791
16792               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16793                                         cu);
16794               if (member_loc)
16795                 {
16796                   /* GDB has handled this for a long time, but it is
16797                      not specified by DWARF.  It seems to have been
16798                      emitted by gfortran at least as recently as:
16799                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16800                   complaint (&symfile_complaints,
16801                              _("Variable in common block has "
16802                                "DW_AT_data_member_location "
16803                                "- DIE at 0x%x [in module %s]"),
16804                              to_underlying (child_die->sect_off),
16805                              objfile_name (objfile));
16806
16807                   if (attr_form_is_section_offset (member_loc))
16808                     dwarf2_complex_location_expr_complaint ();
16809                   else if (attr_form_is_constant (member_loc)
16810                            || attr_form_is_block (member_loc))
16811                     {
16812                       if (attr)
16813                         mark_common_block_symbol_computed (sym, die, attr,
16814                                                            member_loc, cu);
16815                     }
16816                   else
16817                     dwarf2_complex_location_expr_complaint ();
16818                 }
16819             }
16820         }
16821
16822       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16823       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16824     }
16825 }
16826
16827 /* Create a type for a C++ namespace.  */
16828
16829 static struct type *
16830 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16831 {
16832   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16833   const char *previous_prefix, *name;
16834   int is_anonymous;
16835   struct type *type;
16836
16837   /* For extensions, reuse the type of the original namespace.  */
16838   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16839     {
16840       struct die_info *ext_die;
16841       struct dwarf2_cu *ext_cu = cu;
16842
16843       ext_die = dwarf2_extension (die, &ext_cu);
16844       type = read_type_die (ext_die, ext_cu);
16845
16846       /* EXT_CU may not be the same as CU.
16847          Ensure TYPE is recorded with CU in die_type_hash.  */
16848       return set_die_type (die, type, cu);
16849     }
16850
16851   name = namespace_name (die, &is_anonymous, cu);
16852
16853   /* Now build the name of the current namespace.  */
16854
16855   previous_prefix = determine_prefix (die, cu);
16856   if (previous_prefix[0] != '\0')
16857     name = typename_concat (&objfile->objfile_obstack,
16858                             previous_prefix, name, 0, cu);
16859
16860   /* Create the type.  */
16861   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16862   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16863
16864   return set_die_type (die, type, cu);
16865 }
16866
16867 /* Read a namespace scope.  */
16868
16869 static void
16870 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16871 {
16872   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16873   int is_anonymous;
16874
16875   /* Add a symbol associated to this if we haven't seen the namespace
16876      before.  Also, add a using directive if it's an anonymous
16877      namespace.  */
16878
16879   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16880     {
16881       struct type *type;
16882
16883       type = read_type_die (die, cu);
16884       new_symbol (die, type, cu);
16885
16886       namespace_name (die, &is_anonymous, cu);
16887       if (is_anonymous)
16888         {
16889           const char *previous_prefix = determine_prefix (die, cu);
16890
16891           std::vector<const char *> excludes;
16892           add_using_directive (using_directives (cu->language),
16893                                previous_prefix, TYPE_NAME (type), NULL,
16894                                NULL, excludes, 0, &objfile->objfile_obstack);
16895         }
16896     }
16897
16898   if (die->child != NULL)
16899     {
16900       struct die_info *child_die = die->child;
16901
16902       while (child_die && child_die->tag)
16903         {
16904           process_die (child_die, cu);
16905           child_die = sibling_die (child_die);
16906         }
16907     }
16908 }
16909
16910 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16911    imported module.  Still we need that type as local Fortran "use ... only"
16912    declaration imports depend on the created type in determine_prefix.  */
16913
16914 static struct type *
16915 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16916 {
16917   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16918   const char *module_name;
16919   struct type *type;
16920
16921   module_name = dwarf2_name (die, cu);
16922   if (!module_name)
16923     complaint (&symfile_complaints,
16924                _("DW_TAG_module has no name, offset 0x%x"),
16925                to_underlying (die->sect_off));
16926   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16927
16928   /* determine_prefix uses TYPE_TAG_NAME.  */
16929   TYPE_TAG_NAME (type) = TYPE_NAME (type);
16930
16931   return set_die_type (die, type, cu);
16932 }
16933
16934 /* Read a Fortran module.  */
16935
16936 static void
16937 read_module (struct die_info *die, struct dwarf2_cu *cu)
16938 {
16939   struct die_info *child_die = die->child;
16940   struct type *type;
16941
16942   type = read_type_die (die, cu);
16943   new_symbol (die, type, cu);
16944
16945   while (child_die && child_die->tag)
16946     {
16947       process_die (child_die, cu);
16948       child_die = sibling_die (child_die);
16949     }
16950 }
16951
16952 /* Return the name of the namespace represented by DIE.  Set
16953    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16954    namespace.  */
16955
16956 static const char *
16957 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16958 {
16959   struct die_info *current_die;
16960   const char *name = NULL;
16961
16962   /* Loop through the extensions until we find a name.  */
16963
16964   for (current_die = die;
16965        current_die != NULL;
16966        current_die = dwarf2_extension (die, &cu))
16967     {
16968       /* We don't use dwarf2_name here so that we can detect the absence
16969          of a name -> anonymous namespace.  */
16970       name = dwarf2_string_attr (die, DW_AT_name, cu);
16971
16972       if (name != NULL)
16973         break;
16974     }
16975
16976   /* Is it an anonymous namespace?  */
16977
16978   *is_anonymous = (name == NULL);
16979   if (*is_anonymous)
16980     name = CP_ANONYMOUS_NAMESPACE_STR;
16981
16982   return name;
16983 }
16984
16985 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16986    the user defined type vector.  */
16987
16988 static struct type *
16989 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16990 {
16991   struct gdbarch *gdbarch
16992     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16993   struct comp_unit_head *cu_header = &cu->header;
16994   struct type *type;
16995   struct attribute *attr_byte_size;
16996   struct attribute *attr_address_class;
16997   int byte_size, addr_class;
16998   struct type *target_type;
16999
17000   target_type = die_type (die, cu);
17001
17002   /* The die_type call above may have already set the type for this DIE.  */
17003   type = get_die_type (die, cu);
17004   if (type)
17005     return type;
17006
17007   type = lookup_pointer_type (target_type);
17008
17009   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17010   if (attr_byte_size)
17011     byte_size = DW_UNSND (attr_byte_size);
17012   else
17013     byte_size = cu_header->addr_size;
17014
17015   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17016   if (attr_address_class)
17017     addr_class = DW_UNSND (attr_address_class);
17018   else
17019     addr_class = DW_ADDR_none;
17020
17021   /* If the pointer size or address class is different than the
17022      default, create a type variant marked as such and set the
17023      length accordingly.  */
17024   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
17025     {
17026       if (gdbarch_address_class_type_flags_p (gdbarch))
17027         {
17028           int type_flags;
17029
17030           type_flags = gdbarch_address_class_type_flags
17031                          (gdbarch, byte_size, addr_class);
17032           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17033                       == 0);
17034           type = make_type_with_address_space (type, type_flags);
17035         }
17036       else if (TYPE_LENGTH (type) != byte_size)
17037         {
17038           complaint (&symfile_complaints,
17039                      _("invalid pointer size %d"), byte_size);
17040         }
17041       else
17042         {
17043           /* Should we also complain about unhandled address classes?  */
17044         }
17045     }
17046
17047   TYPE_LENGTH (type) = byte_size;
17048   return set_die_type (die, type, cu);
17049 }
17050
17051 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17052    the user defined type vector.  */
17053
17054 static struct type *
17055 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17056 {
17057   struct type *type;
17058   struct type *to_type;
17059   struct type *domain;
17060
17061   to_type = die_type (die, cu);
17062   domain = die_containing_type (die, cu);
17063
17064   /* The calls above may have already set the type for this DIE.  */
17065   type = get_die_type (die, cu);
17066   if (type)
17067     return type;
17068
17069   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17070     type = lookup_methodptr_type (to_type);
17071   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17072     {
17073       struct type *new_type
17074         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17075
17076       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17077                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17078                             TYPE_VARARGS (to_type));
17079       type = lookup_methodptr_type (new_type);
17080     }
17081   else
17082     type = lookup_memberptr_type (to_type, domain);
17083
17084   return set_die_type (die, type, cu);
17085 }
17086
17087 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17088    the user defined type vector.  */
17089
17090 static struct type *
17091 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17092                           enum type_code refcode)
17093 {
17094   struct comp_unit_head *cu_header = &cu->header;
17095   struct type *type, *target_type;
17096   struct attribute *attr;
17097
17098   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17099
17100   target_type = die_type (die, cu);
17101
17102   /* The die_type call above may have already set the type for this DIE.  */
17103   type = get_die_type (die, cu);
17104   if (type)
17105     return type;
17106
17107   type = lookup_reference_type (target_type, refcode);
17108   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17109   if (attr)
17110     {
17111       TYPE_LENGTH (type) = DW_UNSND (attr);
17112     }
17113   else
17114     {
17115       TYPE_LENGTH (type) = cu_header->addr_size;
17116     }
17117   return set_die_type (die, type, cu);
17118 }
17119
17120 /* Add the given cv-qualifiers to the element type of the array.  GCC
17121    outputs DWARF type qualifiers that apply to an array, not the
17122    element type.  But GDB relies on the array element type to carry
17123    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17124    specification.  */
17125
17126 static struct type *
17127 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17128                    struct type *base_type, int cnst, int voltl)
17129 {
17130   struct type *el_type, *inner_array;
17131
17132   base_type = copy_type (base_type);
17133   inner_array = base_type;
17134
17135   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17136     {
17137       TYPE_TARGET_TYPE (inner_array) =
17138         copy_type (TYPE_TARGET_TYPE (inner_array));
17139       inner_array = TYPE_TARGET_TYPE (inner_array);
17140     }
17141
17142   el_type = TYPE_TARGET_TYPE (inner_array);
17143   cnst |= TYPE_CONST (el_type);
17144   voltl |= TYPE_VOLATILE (el_type);
17145   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17146
17147   return set_die_type (die, base_type, cu);
17148 }
17149
17150 static struct type *
17151 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17152 {
17153   struct type *base_type, *cv_type;
17154
17155   base_type = die_type (die, cu);
17156
17157   /* The die_type call above may have already set the type for this DIE.  */
17158   cv_type = get_die_type (die, cu);
17159   if (cv_type)
17160     return cv_type;
17161
17162   /* In case the const qualifier is applied to an array type, the element type
17163      is so qualified, not the array type (section 6.7.3 of C99).  */
17164   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17165     return add_array_cv_type (die, cu, base_type, 1, 0);
17166
17167   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17168   return set_die_type (die, cv_type, cu);
17169 }
17170
17171 static struct type *
17172 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17173 {
17174   struct type *base_type, *cv_type;
17175
17176   base_type = die_type (die, cu);
17177
17178   /* The die_type call above may have already set the type for this DIE.  */
17179   cv_type = get_die_type (die, cu);
17180   if (cv_type)
17181     return cv_type;
17182
17183   /* In case the volatile qualifier is applied to an array type, the
17184      element type is so qualified, not the array type (section 6.7.3
17185      of C99).  */
17186   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17187     return add_array_cv_type (die, cu, base_type, 0, 1);
17188
17189   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17190   return set_die_type (die, cv_type, cu);
17191 }
17192
17193 /* Handle DW_TAG_restrict_type.  */
17194
17195 static struct type *
17196 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17197 {
17198   struct type *base_type, *cv_type;
17199
17200   base_type = die_type (die, cu);
17201
17202   /* The die_type call above may have already set the type for this DIE.  */
17203   cv_type = get_die_type (die, cu);
17204   if (cv_type)
17205     return cv_type;
17206
17207   cv_type = make_restrict_type (base_type);
17208   return set_die_type (die, cv_type, cu);
17209 }
17210
17211 /* Handle DW_TAG_atomic_type.  */
17212
17213 static struct type *
17214 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17215 {
17216   struct type *base_type, *cv_type;
17217
17218   base_type = die_type (die, cu);
17219
17220   /* The die_type call above may have already set the type for this DIE.  */
17221   cv_type = get_die_type (die, cu);
17222   if (cv_type)
17223     return cv_type;
17224
17225   cv_type = make_atomic_type (base_type);
17226   return set_die_type (die, cv_type, cu);
17227 }
17228
17229 /* Extract all information from a DW_TAG_string_type DIE and add to
17230    the user defined type vector.  It isn't really a user defined type,
17231    but it behaves like one, with other DIE's using an AT_user_def_type
17232    attribute to reference it.  */
17233
17234 static struct type *
17235 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17236 {
17237   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17238   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17239   struct type *type, *range_type, *index_type, *char_type;
17240   struct attribute *attr;
17241   unsigned int length;
17242
17243   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17244   if (attr)
17245     {
17246       length = DW_UNSND (attr);
17247     }
17248   else
17249     {
17250       /* Check for the DW_AT_byte_size attribute.  */
17251       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17252       if (attr)
17253         {
17254           length = DW_UNSND (attr);
17255         }
17256       else
17257         {
17258           length = 1;
17259         }
17260     }
17261
17262   index_type = objfile_type (objfile)->builtin_int;
17263   range_type = create_static_range_type (NULL, index_type, 1, length);
17264   char_type = language_string_char_type (cu->language_defn, gdbarch);
17265   type = create_string_type (NULL, char_type, range_type);
17266
17267   return set_die_type (die, type, cu);
17268 }
17269
17270 /* Assuming that DIE corresponds to a function, returns nonzero
17271    if the function is prototyped.  */
17272
17273 static int
17274 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17275 {
17276   struct attribute *attr;
17277
17278   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17279   if (attr && (DW_UNSND (attr) != 0))
17280     return 1;
17281
17282   /* The DWARF standard implies that the DW_AT_prototyped attribute
17283      is only meaninful for C, but the concept also extends to other
17284      languages that allow unprototyped functions (Eg: Objective C).
17285      For all other languages, assume that functions are always
17286      prototyped.  */
17287   if (cu->language != language_c
17288       && cu->language != language_objc
17289       && cu->language != language_opencl)
17290     return 1;
17291
17292   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17293      prototyped and unprototyped functions; default to prototyped,
17294      since that is more common in modern code (and RealView warns
17295      about unprototyped functions).  */
17296   if (producer_is_realview (cu->producer))
17297     return 1;
17298
17299   return 0;
17300 }
17301
17302 /* Handle DIES due to C code like:
17303
17304    struct foo
17305    {
17306    int (*funcp)(int a, long l);
17307    int b;
17308    };
17309
17310    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17311
17312 static struct type *
17313 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17314 {
17315   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17316   struct type *type;            /* Type that this function returns.  */
17317   struct type *ftype;           /* Function that returns above type.  */
17318   struct attribute *attr;
17319
17320   type = die_type (die, cu);
17321
17322   /* The die_type call above may have already set the type for this DIE.  */
17323   ftype = get_die_type (die, cu);
17324   if (ftype)
17325     return ftype;
17326
17327   ftype = lookup_function_type (type);
17328
17329   if (prototyped_function_p (die, cu))
17330     TYPE_PROTOTYPED (ftype) = 1;
17331
17332   /* Store the calling convention in the type if it's available in
17333      the subroutine die.  Otherwise set the calling convention to
17334      the default value DW_CC_normal.  */
17335   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17336   if (attr)
17337     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17338   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17339     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17340   else
17341     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17342
17343   /* Record whether the function returns normally to its caller or not
17344      if the DWARF producer set that information.  */
17345   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17346   if (attr && (DW_UNSND (attr) != 0))
17347     TYPE_NO_RETURN (ftype) = 1;
17348
17349   /* We need to add the subroutine type to the die immediately so
17350      we don't infinitely recurse when dealing with parameters
17351      declared as the same subroutine type.  */
17352   set_die_type (die, ftype, cu);
17353
17354   if (die->child != NULL)
17355     {
17356       struct type *void_type = objfile_type (objfile)->builtin_void;
17357       struct die_info *child_die;
17358       int nparams, iparams;
17359
17360       /* Count the number of parameters.
17361          FIXME: GDB currently ignores vararg functions, but knows about
17362          vararg member functions.  */
17363       nparams = 0;
17364       child_die = die->child;
17365       while (child_die && child_die->tag)
17366         {
17367           if (child_die->tag == DW_TAG_formal_parameter)
17368             nparams++;
17369           else if (child_die->tag == DW_TAG_unspecified_parameters)
17370             TYPE_VARARGS (ftype) = 1;
17371           child_die = sibling_die (child_die);
17372         }
17373
17374       /* Allocate storage for parameters and fill them in.  */
17375       TYPE_NFIELDS (ftype) = nparams;
17376       TYPE_FIELDS (ftype) = (struct field *)
17377         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17378
17379       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17380          even if we error out during the parameters reading below.  */
17381       for (iparams = 0; iparams < nparams; iparams++)
17382         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17383
17384       iparams = 0;
17385       child_die = die->child;
17386       while (child_die && child_die->tag)
17387         {
17388           if (child_die->tag == DW_TAG_formal_parameter)
17389             {
17390               struct type *arg_type;
17391
17392               /* DWARF version 2 has no clean way to discern C++
17393                  static and non-static member functions.  G++ helps
17394                  GDB by marking the first parameter for non-static
17395                  member functions (which is the this pointer) as
17396                  artificial.  We pass this information to
17397                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17398
17399                  DWARF version 3 added DW_AT_object_pointer, which GCC
17400                  4.5 does not yet generate.  */
17401               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17402               if (attr)
17403                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17404               else
17405                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17406               arg_type = die_type (child_die, cu);
17407
17408               /* RealView does not mark THIS as const, which the testsuite
17409                  expects.  GCC marks THIS as const in method definitions,
17410                  but not in the class specifications (GCC PR 43053).  */
17411               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17412                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17413                 {
17414                   int is_this = 0;
17415                   struct dwarf2_cu *arg_cu = cu;
17416                   const char *name = dwarf2_name (child_die, cu);
17417
17418                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17419                   if (attr)
17420                     {
17421                       /* If the compiler emits this, use it.  */
17422                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17423                         is_this = 1;
17424                     }
17425                   else if (name && strcmp (name, "this") == 0)
17426                     /* Function definitions will have the argument names.  */
17427                     is_this = 1;
17428                   else if (name == NULL && iparams == 0)
17429                     /* Declarations may not have the names, so like
17430                        elsewhere in GDB, assume an artificial first
17431                        argument is "this".  */
17432                     is_this = 1;
17433
17434                   if (is_this)
17435                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17436                                              arg_type, 0);
17437                 }
17438
17439               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17440               iparams++;
17441             }
17442           child_die = sibling_die (child_die);
17443         }
17444     }
17445
17446   return ftype;
17447 }
17448
17449 static struct type *
17450 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17451 {
17452   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17453   const char *name = NULL;
17454   struct type *this_type, *target_type;
17455
17456   name = dwarf2_full_name (NULL, die, cu);
17457   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17458   TYPE_TARGET_STUB (this_type) = 1;
17459   set_die_type (die, this_type, cu);
17460   target_type = die_type (die, cu);
17461   if (target_type != this_type)
17462     TYPE_TARGET_TYPE (this_type) = target_type;
17463   else
17464     {
17465       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17466          spec and cause infinite loops in GDB.  */
17467       complaint (&symfile_complaints,
17468                  _("Self-referential DW_TAG_typedef "
17469                    "- DIE at 0x%x [in module %s]"),
17470                  to_underlying (die->sect_off), objfile_name (objfile));
17471       TYPE_TARGET_TYPE (this_type) = NULL;
17472     }
17473   return this_type;
17474 }
17475
17476 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17477    (which may be different from NAME) to the architecture back-end to allow
17478    it to guess the correct format if necessary.  */
17479
17480 static struct type *
17481 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17482                         const char *name_hint)
17483 {
17484   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17485   const struct floatformat **format;
17486   struct type *type;
17487
17488   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17489   if (format)
17490     type = init_float_type (objfile, bits, name, format);
17491   else
17492     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17493
17494   return type;
17495 }
17496
17497 /* Find a representation of a given base type and install
17498    it in the TYPE field of the die.  */
17499
17500 static struct type *
17501 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17502 {
17503   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17504   struct type *type;
17505   struct attribute *attr;
17506   int encoding = 0, bits = 0;
17507   const char *name;
17508
17509   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17510   if (attr)
17511     {
17512       encoding = DW_UNSND (attr);
17513     }
17514   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17515   if (attr)
17516     {
17517       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17518     }
17519   name = dwarf2_name (die, cu);
17520   if (!name)
17521     {
17522       complaint (&symfile_complaints,
17523                  _("DW_AT_name missing from DW_TAG_base_type"));
17524     }
17525
17526   switch (encoding)
17527     {
17528       case DW_ATE_address:
17529         /* Turn DW_ATE_address into a void * pointer.  */
17530         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17531         type = init_pointer_type (objfile, bits, name, type);
17532         break;
17533       case DW_ATE_boolean:
17534         type = init_boolean_type (objfile, bits, 1, name);
17535         break;
17536       case DW_ATE_complex_float:
17537         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17538         type = init_complex_type (objfile, name, type);
17539         break;
17540       case DW_ATE_decimal_float:
17541         type = init_decfloat_type (objfile, bits, name);
17542         break;
17543       case DW_ATE_float:
17544         type = dwarf2_init_float_type (objfile, bits, name, name);
17545         break;
17546       case DW_ATE_signed:
17547         type = init_integer_type (objfile, bits, 0, name);
17548         break;
17549       case DW_ATE_unsigned:
17550         if (cu->language == language_fortran
17551             && name
17552             && startswith (name, "character("))
17553           type = init_character_type (objfile, bits, 1, name);
17554         else
17555           type = init_integer_type (objfile, bits, 1, name);
17556         break;
17557       case DW_ATE_signed_char:
17558         if (cu->language == language_ada || cu->language == language_m2
17559             || cu->language == language_pascal
17560             || cu->language == language_fortran)
17561           type = init_character_type (objfile, bits, 0, name);
17562         else
17563           type = init_integer_type (objfile, bits, 0, name);
17564         break;
17565       case DW_ATE_unsigned_char:
17566         if (cu->language == language_ada || cu->language == language_m2
17567             || cu->language == language_pascal
17568             || cu->language == language_fortran
17569             || cu->language == language_rust)
17570           type = init_character_type (objfile, bits, 1, name);
17571         else
17572           type = init_integer_type (objfile, bits, 1, name);
17573         break;
17574       case DW_ATE_UTF:
17575         {
17576           gdbarch *arch = get_objfile_arch (objfile);
17577
17578           if (bits == 16)
17579             type = builtin_type (arch)->builtin_char16;
17580           else if (bits == 32)
17581             type = builtin_type (arch)->builtin_char32;
17582           else
17583             {
17584               complaint (&symfile_complaints,
17585                          _("unsupported DW_ATE_UTF bit size: '%d'"),
17586                          bits);
17587               type = init_integer_type (objfile, bits, 1, name);
17588             }
17589           return set_die_type (die, type, cu);
17590         }
17591         break;
17592
17593       default:
17594         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
17595                    dwarf_type_encoding_name (encoding));
17596         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17597         break;
17598     }
17599
17600   if (name && strcmp (name, "char") == 0)
17601     TYPE_NOSIGN (type) = 1;
17602
17603   return set_die_type (die, type, cu);
17604 }
17605
17606 /* Parse dwarf attribute if it's a block, reference or constant and put the
17607    resulting value of the attribute into struct bound_prop.
17608    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17609
17610 static int
17611 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17612                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17613 {
17614   struct dwarf2_property_baton *baton;
17615   struct obstack *obstack
17616     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17617
17618   if (attr == NULL || prop == NULL)
17619     return 0;
17620
17621   if (attr_form_is_block (attr))
17622     {
17623       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17624       baton->referenced_type = NULL;
17625       baton->locexpr.per_cu = cu->per_cu;
17626       baton->locexpr.size = DW_BLOCK (attr)->size;
17627       baton->locexpr.data = DW_BLOCK (attr)->data;
17628       prop->data.baton = baton;
17629       prop->kind = PROP_LOCEXPR;
17630       gdb_assert (prop->data.baton != NULL);
17631     }
17632   else if (attr_form_is_ref (attr))
17633     {
17634       struct dwarf2_cu *target_cu = cu;
17635       struct die_info *target_die;
17636       struct attribute *target_attr;
17637
17638       target_die = follow_die_ref (die, attr, &target_cu);
17639       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17640       if (target_attr == NULL)
17641         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17642                                    target_cu);
17643       if (target_attr == NULL)
17644         return 0;
17645
17646       switch (target_attr->name)
17647         {
17648           case DW_AT_location:
17649             if (attr_form_is_section_offset (target_attr))
17650               {
17651                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17652                 baton->referenced_type = die_type (target_die, target_cu);
17653                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17654                 prop->data.baton = baton;
17655                 prop->kind = PROP_LOCLIST;
17656                 gdb_assert (prop->data.baton != NULL);
17657               }
17658             else if (attr_form_is_block (target_attr))
17659               {
17660                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17661                 baton->referenced_type = die_type (target_die, target_cu);
17662                 baton->locexpr.per_cu = cu->per_cu;
17663                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17664                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17665                 prop->data.baton = baton;
17666                 prop->kind = PROP_LOCEXPR;
17667                 gdb_assert (prop->data.baton != NULL);
17668               }
17669             else
17670               {
17671                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17672                                                        "dynamic property");
17673                 return 0;
17674               }
17675             break;
17676           case DW_AT_data_member_location:
17677             {
17678               LONGEST offset;
17679
17680               if (!handle_data_member_location (target_die, target_cu,
17681                                                 &offset))
17682                 return 0;
17683
17684               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17685               baton->referenced_type = read_type_die (target_die->parent,
17686                                                       target_cu);
17687               baton->offset_info.offset = offset;
17688               baton->offset_info.type = die_type (target_die, target_cu);
17689               prop->data.baton = baton;
17690               prop->kind = PROP_ADDR_OFFSET;
17691               break;
17692             }
17693         }
17694     }
17695   else if (attr_form_is_constant (attr))
17696     {
17697       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17698       prop->kind = PROP_CONST;
17699     }
17700   else
17701     {
17702       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17703                                              dwarf2_name (die, cu));
17704       return 0;
17705     }
17706
17707   return 1;
17708 }
17709
17710 /* Read the given DW_AT_subrange DIE.  */
17711
17712 static struct type *
17713 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17714 {
17715   struct type *base_type, *orig_base_type;
17716   struct type *range_type;
17717   struct attribute *attr;
17718   struct dynamic_prop low, high;
17719   int low_default_is_valid;
17720   int high_bound_is_count = 0;
17721   const char *name;
17722   LONGEST negative_mask;
17723
17724   orig_base_type = die_type (die, cu);
17725   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17726      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17727      creating the range type, but we use the result of check_typedef
17728      when examining properties of the type.  */
17729   base_type = check_typedef (orig_base_type);
17730
17731   /* The die_type call above may have already set the type for this DIE.  */
17732   range_type = get_die_type (die, cu);
17733   if (range_type)
17734     return range_type;
17735
17736   low.kind = PROP_CONST;
17737   high.kind = PROP_CONST;
17738   high.data.const_val = 0;
17739
17740   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17741      omitting DW_AT_lower_bound.  */
17742   switch (cu->language)
17743     {
17744     case language_c:
17745     case language_cplus:
17746       low.data.const_val = 0;
17747       low_default_is_valid = 1;
17748       break;
17749     case language_fortran:
17750       low.data.const_val = 1;
17751       low_default_is_valid = 1;
17752       break;
17753     case language_d:
17754     case language_objc:
17755     case language_rust:
17756       low.data.const_val = 0;
17757       low_default_is_valid = (cu->header.version >= 4);
17758       break;
17759     case language_ada:
17760     case language_m2:
17761     case language_pascal:
17762       low.data.const_val = 1;
17763       low_default_is_valid = (cu->header.version >= 4);
17764       break;
17765     default:
17766       low.data.const_val = 0;
17767       low_default_is_valid = 0;
17768       break;
17769     }
17770
17771   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17772   if (attr)
17773     attr_to_dynamic_prop (attr, die, cu, &low);
17774   else if (!low_default_is_valid)
17775     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
17776                                       "- DIE at 0x%x [in module %s]"),
17777                to_underlying (die->sect_off),
17778                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17779
17780   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
17781   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17782     {
17783       attr = dwarf2_attr (die, DW_AT_count, cu);
17784       if (attr_to_dynamic_prop (attr, die, cu, &high))
17785         {
17786           /* If bounds are constant do the final calculation here.  */
17787           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17788             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17789           else
17790             high_bound_is_count = 1;
17791         }
17792     }
17793
17794   /* Dwarf-2 specifications explicitly allows to create subrange types
17795      without specifying a base type.
17796      In that case, the base type must be set to the type of
17797      the lower bound, upper bound or count, in that order, if any of these
17798      three attributes references an object that has a type.
17799      If no base type is found, the Dwarf-2 specifications say that
17800      a signed integer type of size equal to the size of an address should
17801      be used.
17802      For the following C code: `extern char gdb_int [];'
17803      GCC produces an empty range DIE.
17804      FIXME: muller/2010-05-28: Possible references to object for low bound,
17805      high bound or count are not yet handled by this code.  */
17806   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17807     {
17808       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17809       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17810       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17811       struct type *int_type = objfile_type (objfile)->builtin_int;
17812
17813       /* Test "int", "long int", and "long long int" objfile types,
17814          and select the first one having a size above or equal to the
17815          architecture address size.  */
17816       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17817         base_type = int_type;
17818       else
17819         {
17820           int_type = objfile_type (objfile)->builtin_long;
17821           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17822             base_type = int_type;
17823           else
17824             {
17825               int_type = objfile_type (objfile)->builtin_long_long;
17826               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17827                 base_type = int_type;
17828             }
17829         }
17830     }
17831
17832   /* Normally, the DWARF producers are expected to use a signed
17833      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17834      But this is unfortunately not always the case, as witnessed
17835      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17836      is used instead.  To work around that ambiguity, we treat
17837      the bounds as signed, and thus sign-extend their values, when
17838      the base type is signed.  */
17839   negative_mask =
17840     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17841   if (low.kind == PROP_CONST
17842       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17843     low.data.const_val |= negative_mask;
17844   if (high.kind == PROP_CONST
17845       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17846     high.data.const_val |= negative_mask;
17847
17848   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17849
17850   if (high_bound_is_count)
17851     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17852
17853   /* Ada expects an empty array on no boundary attributes.  */
17854   if (attr == NULL && cu->language != language_ada)
17855     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17856
17857   name = dwarf2_name (die, cu);
17858   if (name)
17859     TYPE_NAME (range_type) = name;
17860
17861   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17862   if (attr)
17863     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17864
17865   set_die_type (die, range_type, cu);
17866
17867   /* set_die_type should be already done.  */
17868   set_descriptive_type (range_type, die, cu);
17869
17870   return range_type;
17871 }
17872
17873 static struct type *
17874 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17875 {
17876   struct type *type;
17877
17878   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17879                     NULL);
17880   TYPE_NAME (type) = dwarf2_name (die, cu);
17881
17882   /* In Ada, an unspecified type is typically used when the description
17883      of the type is defered to a different unit.  When encountering
17884      such a type, we treat it as a stub, and try to resolve it later on,
17885      when needed.  */
17886   if (cu->language == language_ada)
17887     TYPE_STUB (type) = 1;
17888
17889   return set_die_type (die, type, cu);
17890 }
17891
17892 /* Read a single die and all its descendents.  Set the die's sibling
17893    field to NULL; set other fields in the die correctly, and set all
17894    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17895    location of the info_ptr after reading all of those dies.  PARENT
17896    is the parent of the die in question.  */
17897
17898 static struct die_info *
17899 read_die_and_children (const struct die_reader_specs *reader,
17900                        const gdb_byte *info_ptr,
17901                        const gdb_byte **new_info_ptr,
17902                        struct die_info *parent)
17903 {
17904   struct die_info *die;
17905   const gdb_byte *cur_ptr;
17906   int has_children;
17907
17908   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17909   if (die == NULL)
17910     {
17911       *new_info_ptr = cur_ptr;
17912       return NULL;
17913     }
17914   store_in_ref_table (die, reader->cu);
17915
17916   if (has_children)
17917     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17918   else
17919     {
17920       die->child = NULL;
17921       *new_info_ptr = cur_ptr;
17922     }
17923
17924   die->sibling = NULL;
17925   die->parent = parent;
17926   return die;
17927 }
17928
17929 /* Read a die, all of its descendents, and all of its siblings; set
17930    all of the fields of all of the dies correctly.  Arguments are as
17931    in read_die_and_children.  */
17932
17933 static struct die_info *
17934 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17935                          const gdb_byte *info_ptr,
17936                          const gdb_byte **new_info_ptr,
17937                          struct die_info *parent)
17938 {
17939   struct die_info *first_die, *last_sibling;
17940   const gdb_byte *cur_ptr;
17941
17942   cur_ptr = info_ptr;
17943   first_die = last_sibling = NULL;
17944
17945   while (1)
17946     {
17947       struct die_info *die
17948         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17949
17950       if (die == NULL)
17951         {
17952           *new_info_ptr = cur_ptr;
17953           return first_die;
17954         }
17955
17956       if (!first_die)
17957         first_die = die;
17958       else
17959         last_sibling->sibling = die;
17960
17961       last_sibling = die;
17962     }
17963 }
17964
17965 /* Read a die, all of its descendents, and all of its siblings; set
17966    all of the fields of all of the dies correctly.  Arguments are as
17967    in read_die_and_children.
17968    This the main entry point for reading a DIE and all its children.  */
17969
17970 static struct die_info *
17971 read_die_and_siblings (const struct die_reader_specs *reader,
17972                        const gdb_byte *info_ptr,
17973                        const gdb_byte **new_info_ptr,
17974                        struct die_info *parent)
17975 {
17976   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17977                                                   new_info_ptr, parent);
17978
17979   if (dwarf_die_debug)
17980     {
17981       fprintf_unfiltered (gdb_stdlog,
17982                           "Read die from %s@0x%x of %s:\n",
17983                           get_section_name (reader->die_section),
17984                           (unsigned) (info_ptr - reader->die_section->buffer),
17985                           bfd_get_filename (reader->abfd));
17986       dump_die (die, dwarf_die_debug);
17987     }
17988
17989   return die;
17990 }
17991
17992 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17993    attributes.
17994    The caller is responsible for filling in the extra attributes
17995    and updating (*DIEP)->num_attrs.
17996    Set DIEP to point to a newly allocated die with its information,
17997    except for its child, sibling, and parent fields.
17998    Set HAS_CHILDREN to tell whether the die has children or not.  */
17999
18000 static const gdb_byte *
18001 read_full_die_1 (const struct die_reader_specs *reader,
18002                  struct die_info **diep, const gdb_byte *info_ptr,
18003                  int *has_children, int num_extra_attrs)
18004 {
18005   unsigned int abbrev_number, bytes_read, i;
18006   struct abbrev_info *abbrev;
18007   struct die_info *die;
18008   struct dwarf2_cu *cu = reader->cu;
18009   bfd *abfd = reader->abfd;
18010
18011   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18012   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18013   info_ptr += bytes_read;
18014   if (!abbrev_number)
18015     {
18016       *diep = NULL;
18017       *has_children = 0;
18018       return info_ptr;
18019     }
18020
18021   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
18022   if (!abbrev)
18023     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18024            abbrev_number,
18025            bfd_get_filename (abfd));
18026
18027   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18028   die->sect_off = sect_off;
18029   die->tag = abbrev->tag;
18030   die->abbrev = abbrev_number;
18031
18032   /* Make the result usable.
18033      The caller needs to update num_attrs after adding the extra
18034      attributes.  */
18035   die->num_attrs = abbrev->num_attrs;
18036
18037   for (i = 0; i < abbrev->num_attrs; ++i)
18038     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18039                                info_ptr);
18040
18041   *diep = die;
18042   *has_children = abbrev->has_children;
18043   return info_ptr;
18044 }
18045
18046 /* Read a die and all its attributes.
18047    Set DIEP to point to a newly allocated die with its information,
18048    except for its child, sibling, and parent fields.
18049    Set HAS_CHILDREN to tell whether the die has children or not.  */
18050
18051 static const gdb_byte *
18052 read_full_die (const struct die_reader_specs *reader,
18053                struct die_info **diep, const gdb_byte *info_ptr,
18054                int *has_children)
18055 {
18056   const gdb_byte *result;
18057
18058   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18059
18060   if (dwarf_die_debug)
18061     {
18062       fprintf_unfiltered (gdb_stdlog,
18063                           "Read die from %s@0x%x of %s:\n",
18064                           get_section_name (reader->die_section),
18065                           (unsigned) (info_ptr - reader->die_section->buffer),
18066                           bfd_get_filename (reader->abfd));
18067       dump_die (*diep, dwarf_die_debug);
18068     }
18069
18070   return result;
18071 }
18072 \f
18073 /* Abbreviation tables.
18074
18075    In DWARF version 2, the description of the debugging information is
18076    stored in a separate .debug_abbrev section.  Before we read any
18077    dies from a section we read in all abbreviations and install them
18078    in a hash table.  */
18079
18080 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18081
18082 static struct abbrev_info *
18083 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
18084 {
18085   struct abbrev_info *abbrev;
18086
18087   abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
18088   memset (abbrev, 0, sizeof (struct abbrev_info));
18089
18090   return abbrev;
18091 }
18092
18093 /* Add an abbreviation to the table.  */
18094
18095 static void
18096 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
18097                          unsigned int abbrev_number,
18098                          struct abbrev_info *abbrev)
18099 {
18100   unsigned int hash_number;
18101
18102   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18103   abbrev->next = abbrev_table->abbrevs[hash_number];
18104   abbrev_table->abbrevs[hash_number] = abbrev;
18105 }
18106
18107 /* Look up an abbrev in the table.
18108    Returns NULL if the abbrev is not found.  */
18109
18110 static struct abbrev_info *
18111 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
18112                             unsigned int abbrev_number)
18113 {
18114   unsigned int hash_number;
18115   struct abbrev_info *abbrev;
18116
18117   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18118   abbrev = abbrev_table->abbrevs[hash_number];
18119
18120   while (abbrev)
18121     {
18122       if (abbrev->number == abbrev_number)
18123         return abbrev;
18124       abbrev = abbrev->next;
18125     }
18126   return NULL;
18127 }
18128
18129 /* Read in an abbrev table.  */
18130
18131 static struct abbrev_table *
18132 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18133                          struct dwarf2_section_info *section,
18134                          sect_offset sect_off)
18135 {
18136   struct objfile *objfile = dwarf2_per_objfile->objfile;
18137   bfd *abfd = get_section_bfd_owner (section);
18138   struct abbrev_table *abbrev_table;
18139   const gdb_byte *abbrev_ptr;
18140   struct abbrev_info *cur_abbrev;
18141   unsigned int abbrev_number, bytes_read, abbrev_name;
18142   unsigned int abbrev_form;
18143   struct attr_abbrev *cur_attrs;
18144   unsigned int allocated_attrs;
18145
18146   abbrev_table = XNEW (struct abbrev_table);
18147   abbrev_table->sect_off = sect_off;
18148   obstack_init (&abbrev_table->abbrev_obstack);
18149   abbrev_table->abbrevs =
18150     XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
18151                ABBREV_HASH_SIZE);
18152   memset (abbrev_table->abbrevs, 0,
18153           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
18154
18155   dwarf2_read_section (objfile, section);
18156   abbrev_ptr = section->buffer + to_underlying (sect_off);
18157   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18158   abbrev_ptr += bytes_read;
18159
18160   allocated_attrs = ATTR_ALLOC_CHUNK;
18161   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18162
18163   /* Loop until we reach an abbrev number of 0.  */
18164   while (abbrev_number)
18165     {
18166       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
18167
18168       /* read in abbrev header */
18169       cur_abbrev->number = abbrev_number;
18170       cur_abbrev->tag
18171         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18172       abbrev_ptr += bytes_read;
18173       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18174       abbrev_ptr += 1;
18175
18176       /* now read in declarations */
18177       for (;;)
18178         {
18179           LONGEST implicit_const;
18180
18181           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18182           abbrev_ptr += bytes_read;
18183           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18184           abbrev_ptr += bytes_read;
18185           if (abbrev_form == DW_FORM_implicit_const)
18186             {
18187               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18188                                                    &bytes_read);
18189               abbrev_ptr += bytes_read;
18190             }
18191           else
18192             {
18193               /* Initialize it due to a false compiler warning.  */
18194               implicit_const = -1;
18195             }
18196
18197           if (abbrev_name == 0)
18198             break;
18199
18200           if (cur_abbrev->num_attrs == allocated_attrs)
18201             {
18202               allocated_attrs += ATTR_ALLOC_CHUNK;
18203               cur_attrs
18204                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18205             }
18206
18207           cur_attrs[cur_abbrev->num_attrs].name
18208             = (enum dwarf_attribute) abbrev_name;
18209           cur_attrs[cur_abbrev->num_attrs].form
18210             = (enum dwarf_form) abbrev_form;
18211           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18212           ++cur_abbrev->num_attrs;
18213         }
18214
18215       cur_abbrev->attrs =
18216         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18217                    cur_abbrev->num_attrs);
18218       memcpy (cur_abbrev->attrs, cur_attrs,
18219               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18220
18221       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
18222
18223       /* Get next abbreviation.
18224          Under Irix6 the abbreviations for a compilation unit are not
18225          always properly terminated with an abbrev number of 0.
18226          Exit loop if we encounter an abbreviation which we have
18227          already read (which means we are about to read the abbreviations
18228          for the next compile unit) or if the end of the abbreviation
18229          table is reached.  */
18230       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18231         break;
18232       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18233       abbrev_ptr += bytes_read;
18234       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
18235         break;
18236     }
18237
18238   xfree (cur_attrs);
18239   return abbrev_table;
18240 }
18241
18242 /* Free the resources held by ABBREV_TABLE.  */
18243
18244 static void
18245 abbrev_table_free (struct abbrev_table *abbrev_table)
18246 {
18247   obstack_free (&abbrev_table->abbrev_obstack, NULL);
18248   xfree (abbrev_table);
18249 }
18250
18251 /* Same as abbrev_table_free but as a cleanup.
18252    We pass in a pointer to the pointer to the table so that we can
18253    set the pointer to NULL when we're done.  It also simplifies
18254    build_type_psymtabs_1.  */
18255
18256 static void
18257 abbrev_table_free_cleanup (void *table_ptr)
18258 {
18259   struct abbrev_table **abbrev_table_ptr = (struct abbrev_table **) table_ptr;
18260
18261   if (*abbrev_table_ptr != NULL)
18262     abbrev_table_free (*abbrev_table_ptr);
18263   *abbrev_table_ptr = NULL;
18264 }
18265
18266 /* Read the abbrev table for CU from ABBREV_SECTION.  */
18267
18268 static void
18269 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
18270                      struct dwarf2_section_info *abbrev_section)
18271 {
18272   cu->abbrev_table =
18273     abbrev_table_read_table (cu->per_cu->dwarf2_per_objfile, abbrev_section,
18274                              cu->header.abbrev_sect_off);
18275 }
18276
18277 /* Release the memory used by the abbrev table for a compilation unit.  */
18278
18279 static void
18280 dwarf2_free_abbrev_table (void *ptr_to_cu)
18281 {
18282   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr_to_cu;
18283
18284   if (cu->abbrev_table != NULL)
18285     abbrev_table_free (cu->abbrev_table);
18286   /* Set this to NULL so that we SEGV if we try to read it later,
18287      and also because free_comp_unit verifies this is NULL.  */
18288   cu->abbrev_table = NULL;
18289 }
18290 \f
18291 /* Returns nonzero if TAG represents a type that we might generate a partial
18292    symbol for.  */
18293
18294 static int
18295 is_type_tag_for_partial (int tag)
18296 {
18297   switch (tag)
18298     {
18299 #if 0
18300     /* Some types that would be reasonable to generate partial symbols for,
18301        that we don't at present.  */
18302     case DW_TAG_array_type:
18303     case DW_TAG_file_type:
18304     case DW_TAG_ptr_to_member_type:
18305     case DW_TAG_set_type:
18306     case DW_TAG_string_type:
18307     case DW_TAG_subroutine_type:
18308 #endif
18309     case DW_TAG_base_type:
18310     case DW_TAG_class_type:
18311     case DW_TAG_interface_type:
18312     case DW_TAG_enumeration_type:
18313     case DW_TAG_structure_type:
18314     case DW_TAG_subrange_type:
18315     case DW_TAG_typedef:
18316     case DW_TAG_union_type:
18317       return 1;
18318     default:
18319       return 0;
18320     }
18321 }
18322
18323 /* Load all DIEs that are interesting for partial symbols into memory.  */
18324
18325 static struct partial_die_info *
18326 load_partial_dies (const struct die_reader_specs *reader,
18327                    const gdb_byte *info_ptr, int building_psymtab)
18328 {
18329   struct dwarf2_cu *cu = reader->cu;
18330   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18331   struct partial_die_info *part_die;
18332   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18333   struct abbrev_info *abbrev;
18334   unsigned int bytes_read;
18335   unsigned int load_all = 0;
18336   int nesting_level = 1;
18337
18338   parent_die = NULL;
18339   last_die = NULL;
18340
18341   gdb_assert (cu->per_cu != NULL);
18342   if (cu->per_cu->load_all_dies)
18343     load_all = 1;
18344
18345   cu->partial_dies
18346     = htab_create_alloc_ex (cu->header.length / 12,
18347                             partial_die_hash,
18348                             partial_die_eq,
18349                             NULL,
18350                             &cu->comp_unit_obstack,
18351                             hashtab_obstack_allocate,
18352                             dummy_obstack_deallocate);
18353
18354   part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
18355
18356   while (1)
18357     {
18358       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
18359
18360       /* A NULL abbrev means the end of a series of children.  */
18361       if (abbrev == NULL)
18362         {
18363           if (--nesting_level == 0)
18364             {
18365               /* PART_DIE was probably the last thing allocated on the
18366                  comp_unit_obstack, so we could call obstack_free
18367                  here.  We don't do that because the waste is small,
18368                  and will be cleaned up when we're done with this
18369                  compilation unit.  This way, we're also more robust
18370                  against other users of the comp_unit_obstack.  */
18371               return first_die;
18372             }
18373           info_ptr += bytes_read;
18374           last_die = parent_die;
18375           parent_die = parent_die->die_parent;
18376           continue;
18377         }
18378
18379       /* Check for template arguments.  We never save these; if
18380          they're seen, we just mark the parent, and go on our way.  */
18381       if (parent_die != NULL
18382           && cu->language == language_cplus
18383           && (abbrev->tag == DW_TAG_template_type_param
18384               || abbrev->tag == DW_TAG_template_value_param))
18385         {
18386           parent_die->has_template_arguments = 1;
18387
18388           if (!load_all)
18389             {
18390               /* We don't need a partial DIE for the template argument.  */
18391               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18392               continue;
18393             }
18394         }
18395
18396       /* We only recurse into c++ subprograms looking for template arguments.
18397          Skip their other children.  */
18398       if (!load_all
18399           && cu->language == language_cplus
18400           && parent_die != NULL
18401           && parent_die->tag == DW_TAG_subprogram)
18402         {
18403           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18404           continue;
18405         }
18406
18407       /* Check whether this DIE is interesting enough to save.  Normally
18408          we would not be interested in members here, but there may be
18409          later variables referencing them via DW_AT_specification (for
18410          static members).  */
18411       if (!load_all
18412           && !is_type_tag_for_partial (abbrev->tag)
18413           && abbrev->tag != DW_TAG_constant
18414           && abbrev->tag != DW_TAG_enumerator
18415           && abbrev->tag != DW_TAG_subprogram
18416           && abbrev->tag != DW_TAG_inlined_subroutine
18417           && abbrev->tag != DW_TAG_lexical_block
18418           && abbrev->tag != DW_TAG_variable
18419           && abbrev->tag != DW_TAG_namespace
18420           && abbrev->tag != DW_TAG_module
18421           && abbrev->tag != DW_TAG_member
18422           && abbrev->tag != DW_TAG_imported_unit
18423           && abbrev->tag != DW_TAG_imported_declaration)
18424         {
18425           /* Otherwise we skip to the next sibling, if any.  */
18426           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18427           continue;
18428         }
18429
18430       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
18431                                    info_ptr);
18432
18433       /* This two-pass algorithm for processing partial symbols has a
18434          high cost in cache pressure.  Thus, handle some simple cases
18435          here which cover the majority of C partial symbols.  DIEs
18436          which neither have specification tags in them, nor could have
18437          specification tags elsewhere pointing at them, can simply be
18438          processed and discarded.
18439
18440          This segment is also optional; scan_partial_symbols and
18441          add_partial_symbol will handle these DIEs if we chain
18442          them in normally.  When compilers which do not emit large
18443          quantities of duplicate debug information are more common,
18444          this code can probably be removed.  */
18445
18446       /* Any complete simple types at the top level (pretty much all
18447          of them, for a language without namespaces), can be processed
18448          directly.  */
18449       if (parent_die == NULL
18450           && part_die->has_specification == 0
18451           && part_die->is_declaration == 0
18452           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
18453               || part_die->tag == DW_TAG_base_type
18454               || part_die->tag == DW_TAG_subrange_type))
18455         {
18456           if (building_psymtab && part_die->name != NULL)
18457             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
18458                                  VAR_DOMAIN, LOC_TYPEDEF,
18459                                  &objfile->static_psymbols,
18460                                  0, cu->language, objfile);
18461           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
18462           continue;
18463         }
18464
18465       /* The exception for DW_TAG_typedef with has_children above is
18466          a workaround of GCC PR debug/47510.  In the case of this complaint
18467          type_name_no_tag_or_error will error on such types later.
18468
18469          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18470          it could not find the child DIEs referenced later, this is checked
18471          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18472
18473       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
18474         complaint (&symfile_complaints,
18475                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18476                      "- DIE at 0x%x [in module %s]"),
18477                    to_underlying (part_die->sect_off), objfile_name (objfile));
18478
18479       /* If we're at the second level, and we're an enumerator, and
18480          our parent has no specification (meaning possibly lives in a
18481          namespace elsewhere), then we can add the partial symbol now
18482          instead of queueing it.  */
18483       if (part_die->tag == DW_TAG_enumerator
18484           && parent_die != NULL
18485           && parent_die->die_parent == NULL
18486           && parent_die->tag == DW_TAG_enumeration_type
18487           && parent_die->has_specification == 0)
18488         {
18489           if (part_die->name == NULL)
18490             complaint (&symfile_complaints,
18491                        _("malformed enumerator DIE ignored"));
18492           else if (building_psymtab)
18493             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
18494                                  VAR_DOMAIN, LOC_CONST,
18495                                  cu->language == language_cplus
18496                                  ? &objfile->global_psymbols
18497                                  : &objfile->static_psymbols,
18498                                  0, cu->language, objfile);
18499
18500           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
18501           continue;
18502         }
18503
18504       /* We'll save this DIE so link it in.  */
18505       part_die->die_parent = parent_die;
18506       part_die->die_sibling = NULL;
18507       part_die->die_child = NULL;
18508
18509       if (last_die && last_die == parent_die)
18510         last_die->die_child = part_die;
18511       else if (last_die)
18512         last_die->die_sibling = part_die;
18513
18514       last_die = part_die;
18515
18516       if (first_die == NULL)
18517         first_die = part_die;
18518
18519       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18520          find interesting need to be in the hash table, because we
18521          also have the parent/sibling/child chains; only those that we
18522          might refer to by offset later during partial symbol reading.
18523
18524          For now this means things that might have be the target of a
18525          DW_AT_specification, DW_AT_abstract_origin, or
18526          DW_AT_extension.  DW_AT_extension will refer only to
18527          namespaces; DW_AT_abstract_origin refers to functions (and
18528          many things under the function DIE, but we do not recurse
18529          into function DIEs during partial symbol reading) and
18530          possibly variables as well; DW_AT_specification refers to
18531          declarations.  Declarations ought to have the DW_AT_declaration
18532          flag.  It happens that GCC forgets to put it in sometimes, but
18533          only for functions, not for types.
18534
18535          Adding more things than necessary to the hash table is harmless
18536          except for the performance cost.  Adding too few will result in
18537          wasted time in find_partial_die, when we reread the compilation
18538          unit with load_all_dies set.  */
18539
18540       if (load_all
18541           || abbrev->tag == DW_TAG_constant
18542           || abbrev->tag == DW_TAG_subprogram
18543           || abbrev->tag == DW_TAG_variable
18544           || abbrev->tag == DW_TAG_namespace
18545           || part_die->is_declaration)
18546         {
18547           void **slot;
18548
18549           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18550                                            to_underlying (part_die->sect_off),
18551                                            INSERT);
18552           *slot = part_die;
18553         }
18554
18555       part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
18556
18557       /* For some DIEs we want to follow their children (if any).  For C
18558          we have no reason to follow the children of structures; for other
18559          languages we have to, so that we can get at method physnames
18560          to infer fully qualified class names, for DW_AT_specification,
18561          and for C++ template arguments.  For C++, we also look one level
18562          inside functions to find template arguments (if the name of the
18563          function does not already contain the template arguments).
18564
18565          For Ada, we need to scan the children of subprograms and lexical
18566          blocks as well because Ada allows the definition of nested
18567          entities that could be interesting for the debugger, such as
18568          nested subprograms for instance.  */
18569       if (last_die->has_children
18570           && (load_all
18571               || last_die->tag == DW_TAG_namespace
18572               || last_die->tag == DW_TAG_module
18573               || last_die->tag == DW_TAG_enumeration_type
18574               || (cu->language == language_cplus
18575                   && last_die->tag == DW_TAG_subprogram
18576                   && (last_die->name == NULL
18577                       || strchr (last_die->name, '<') == NULL))
18578               || (cu->language != language_c
18579                   && (last_die->tag == DW_TAG_class_type
18580                       || last_die->tag == DW_TAG_interface_type
18581                       || last_die->tag == DW_TAG_structure_type
18582                       || last_die->tag == DW_TAG_union_type))
18583               || (cu->language == language_ada
18584                   && (last_die->tag == DW_TAG_subprogram
18585                       || last_die->tag == DW_TAG_lexical_block))))
18586         {
18587           nesting_level++;
18588           parent_die = last_die;
18589           continue;
18590         }
18591
18592       /* Otherwise we skip to the next sibling, if any.  */
18593       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18594
18595       /* Back to the top, do it again.  */
18596     }
18597 }
18598
18599 /* Read a minimal amount of information into the minimal die structure.  */
18600
18601 static const gdb_byte *
18602 read_partial_die (const struct die_reader_specs *reader,
18603                   struct partial_die_info *part_die,
18604                   struct abbrev_info *abbrev, unsigned int abbrev_len,
18605                   const gdb_byte *info_ptr)
18606 {
18607   struct dwarf2_cu *cu = reader->cu;
18608   struct dwarf2_per_objfile *dwarf2_per_objfile
18609     = cu->per_cu->dwarf2_per_objfile;
18610   struct objfile *objfile = dwarf2_per_objfile->objfile;
18611   const gdb_byte *buffer = reader->buffer;
18612   unsigned int i;
18613   struct attribute attr;
18614   int has_low_pc_attr = 0;
18615   int has_high_pc_attr = 0;
18616   int high_pc_relative = 0;
18617
18618   memset (part_die, 0, sizeof (struct partial_die_info));
18619
18620   part_die->sect_off = (sect_offset) (info_ptr - buffer);
18621
18622   info_ptr += abbrev_len;
18623
18624   if (abbrev == NULL)
18625     return info_ptr;
18626
18627   part_die->tag = abbrev->tag;
18628   part_die->has_children = abbrev->has_children;
18629
18630   for (i = 0; i < abbrev->num_attrs; ++i)
18631     {
18632       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
18633
18634       /* Store the data if it is of an attribute we want to keep in a
18635          partial symbol table.  */
18636       switch (attr.name)
18637         {
18638         case DW_AT_name:
18639           switch (part_die->tag)
18640             {
18641             case DW_TAG_compile_unit:
18642             case DW_TAG_partial_unit:
18643             case DW_TAG_type_unit:
18644               /* Compilation units have a DW_AT_name that is a filename, not
18645                  a source language identifier.  */
18646             case DW_TAG_enumeration_type:
18647             case DW_TAG_enumerator:
18648               /* These tags always have simple identifiers already; no need
18649                  to canonicalize them.  */
18650               part_die->name = DW_STRING (&attr);
18651               break;
18652             default:
18653               part_die->name
18654                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18655                                             &objfile->per_bfd->storage_obstack);
18656               break;
18657             }
18658           break;
18659         case DW_AT_linkage_name:
18660         case DW_AT_MIPS_linkage_name:
18661           /* Note that both forms of linkage name might appear.  We
18662              assume they will be the same, and we only store the last
18663              one we see.  */
18664           if (cu->language == language_ada)
18665             part_die->name = DW_STRING (&attr);
18666           part_die->linkage_name = DW_STRING (&attr);
18667           break;
18668         case DW_AT_low_pc:
18669           has_low_pc_attr = 1;
18670           part_die->lowpc = attr_value_as_address (&attr);
18671           break;
18672         case DW_AT_high_pc:
18673           has_high_pc_attr = 1;
18674           part_die->highpc = attr_value_as_address (&attr);
18675           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18676                 high_pc_relative = 1;
18677           break;
18678         case DW_AT_location:
18679           /* Support the .debug_loc offsets.  */
18680           if (attr_form_is_block (&attr))
18681             {
18682                part_die->d.locdesc = DW_BLOCK (&attr);
18683             }
18684           else if (attr_form_is_section_offset (&attr))
18685             {
18686               dwarf2_complex_location_expr_complaint ();
18687             }
18688           else
18689             {
18690               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18691                                                      "partial symbol information");
18692             }
18693           break;
18694         case DW_AT_external:
18695           part_die->is_external = DW_UNSND (&attr);
18696           break;
18697         case DW_AT_declaration:
18698           part_die->is_declaration = DW_UNSND (&attr);
18699           break;
18700         case DW_AT_type:
18701           part_die->has_type = 1;
18702           break;
18703         case DW_AT_abstract_origin:
18704         case DW_AT_specification:
18705         case DW_AT_extension:
18706           part_die->has_specification = 1;
18707           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
18708           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18709                                    || cu->per_cu->is_dwz);
18710           break;
18711         case DW_AT_sibling:
18712           /* Ignore absolute siblings, they might point outside of
18713              the current compile unit.  */
18714           if (attr.form == DW_FORM_ref_addr)
18715             complaint (&symfile_complaints,
18716                        _("ignoring absolute DW_AT_sibling"));
18717           else
18718             {
18719               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18720               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18721
18722               if (sibling_ptr < info_ptr)
18723                 complaint (&symfile_complaints,
18724                            _("DW_AT_sibling points backwards"));
18725               else if (sibling_ptr > reader->buffer_end)
18726                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18727               else
18728                 part_die->sibling = sibling_ptr;
18729             }
18730           break;
18731         case DW_AT_byte_size:
18732           part_die->has_byte_size = 1;
18733           break;
18734         case DW_AT_const_value:
18735           part_die->has_const_value = 1;
18736           break;
18737         case DW_AT_calling_convention:
18738           /* DWARF doesn't provide a way to identify a program's source-level
18739              entry point.  DW_AT_calling_convention attributes are only meant
18740              to describe functions' calling conventions.
18741
18742              However, because it's a necessary piece of information in
18743              Fortran, and before DWARF 4 DW_CC_program was the only
18744              piece of debugging information whose definition refers to
18745              a 'main program' at all, several compilers marked Fortran
18746              main programs with DW_CC_program --- even when those
18747              functions use the standard calling conventions.
18748
18749              Although DWARF now specifies a way to provide this
18750              information, we support this practice for backward
18751              compatibility.  */
18752           if (DW_UNSND (&attr) == DW_CC_program
18753               && cu->language == language_fortran)
18754             part_die->main_subprogram = 1;
18755           break;
18756         case DW_AT_inline:
18757           if (DW_UNSND (&attr) == DW_INL_inlined
18758               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18759             part_die->may_be_inlined = 1;
18760           break;
18761
18762         case DW_AT_import:
18763           if (part_die->tag == DW_TAG_imported_unit)
18764             {
18765               part_die->d.sect_off = dwarf2_get_ref_die_offset (&attr);
18766               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18767                                   || cu->per_cu->is_dwz);
18768             }
18769           break;
18770
18771         case DW_AT_main_subprogram:
18772           part_die->main_subprogram = DW_UNSND (&attr);
18773           break;
18774
18775         default:
18776           break;
18777         }
18778     }
18779
18780   if (high_pc_relative)
18781     part_die->highpc += part_die->lowpc;
18782
18783   if (has_low_pc_attr && has_high_pc_attr)
18784     {
18785       /* When using the GNU linker, .gnu.linkonce. sections are used to
18786          eliminate duplicate copies of functions and vtables and such.
18787          The linker will arbitrarily choose one and discard the others.
18788          The AT_*_pc values for such functions refer to local labels in
18789          these sections.  If the section from that file was discarded, the
18790          labels are not in the output, so the relocs get a value of 0.
18791          If this is a discarded function, mark the pc bounds as invalid,
18792          so that GDB will ignore it.  */
18793       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18794         {
18795           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18796
18797           complaint (&symfile_complaints,
18798                      _("DW_AT_low_pc %s is zero "
18799                        "for DIE at 0x%x [in module %s]"),
18800                      paddress (gdbarch, part_die->lowpc),
18801                      to_underlying (part_die->sect_off), objfile_name (objfile));
18802         }
18803       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18804       else if (part_die->lowpc >= part_die->highpc)
18805         {
18806           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18807
18808           complaint (&symfile_complaints,
18809                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18810                        "for DIE at 0x%x [in module %s]"),
18811                      paddress (gdbarch, part_die->lowpc),
18812                      paddress (gdbarch, part_die->highpc),
18813                      to_underlying (part_die->sect_off),
18814                      objfile_name (objfile));
18815         }
18816       else
18817         part_die->has_pc_info = 1;
18818     }
18819
18820   return info_ptr;
18821 }
18822
18823 /* Find a cached partial DIE at OFFSET in CU.  */
18824
18825 static struct partial_die_info *
18826 find_partial_die_in_comp_unit (sect_offset sect_off, struct dwarf2_cu *cu)
18827 {
18828   struct partial_die_info *lookup_die = NULL;
18829   struct partial_die_info part_die;
18830
18831   part_die.sect_off = sect_off;
18832   lookup_die = ((struct partial_die_info *)
18833                 htab_find_with_hash (cu->partial_dies, &part_die,
18834                                      to_underlying (sect_off)));
18835
18836   return lookup_die;
18837 }
18838
18839 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18840    except in the case of .debug_types DIEs which do not reference
18841    outside their CU (they do however referencing other types via
18842    DW_FORM_ref_sig8).  */
18843
18844 static struct partial_die_info *
18845 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18846 {
18847   struct dwarf2_per_objfile *dwarf2_per_objfile
18848     = cu->per_cu->dwarf2_per_objfile;
18849   struct objfile *objfile = dwarf2_per_objfile->objfile;
18850   struct dwarf2_per_cu_data *per_cu = NULL;
18851   struct partial_die_info *pd = NULL;
18852
18853   if (offset_in_dwz == cu->per_cu->is_dwz
18854       && offset_in_cu_p (&cu->header, sect_off))
18855     {
18856       pd = find_partial_die_in_comp_unit (sect_off, cu);
18857       if (pd != NULL)
18858         return pd;
18859       /* We missed recording what we needed.
18860          Load all dies and try again.  */
18861       per_cu = cu->per_cu;
18862     }
18863   else
18864     {
18865       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18866       if (cu->per_cu->is_debug_types)
18867         {
18868           error (_("Dwarf Error: Type Unit at offset 0x%x contains"
18869                    " external reference to offset 0x%x [in module %s].\n"),
18870                  to_underlying (cu->header.sect_off), to_underlying (sect_off),
18871                  bfd_get_filename (objfile->obfd));
18872         }
18873       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18874                                                  dwarf2_per_objfile);
18875
18876       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18877         load_partial_comp_unit (per_cu);
18878
18879       per_cu->cu->last_used = 0;
18880       pd = find_partial_die_in_comp_unit (sect_off, per_cu->cu);
18881     }
18882
18883   /* If we didn't find it, and not all dies have been loaded,
18884      load them all and try again.  */
18885
18886   if (pd == NULL && per_cu->load_all_dies == 0)
18887     {
18888       per_cu->load_all_dies = 1;
18889
18890       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18891          THIS_CU->cu may already be in use.  So we can't just free it and
18892          replace its DIEs with the ones we read in.  Instead, we leave those
18893          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18894          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18895          set.  */
18896       load_partial_comp_unit (per_cu);
18897
18898       pd = find_partial_die_in_comp_unit (sect_off, per_cu->cu);
18899     }
18900
18901   if (pd == NULL)
18902     internal_error (__FILE__, __LINE__,
18903                     _("could not find partial DIE 0x%x "
18904                       "in cache [from module %s]\n"),
18905                     to_underlying (sect_off), bfd_get_filename (objfile->obfd));
18906   return pd;
18907 }
18908
18909 /* See if we can figure out if the class lives in a namespace.  We do
18910    this by looking for a member function; its demangled name will
18911    contain namespace info, if there is any.  */
18912
18913 static void
18914 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18915                                   struct dwarf2_cu *cu)
18916 {
18917   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18918      what template types look like, because the demangler
18919      frequently doesn't give the same name as the debug info.  We
18920      could fix this by only using the demangled name to get the
18921      prefix (but see comment in read_structure_type).  */
18922
18923   struct partial_die_info *real_pdi;
18924   struct partial_die_info *child_pdi;
18925
18926   /* If this DIE (this DIE's specification, if any) has a parent, then
18927      we should not do this.  We'll prepend the parent's fully qualified
18928      name when we create the partial symbol.  */
18929
18930   real_pdi = struct_pdi;
18931   while (real_pdi->has_specification)
18932     real_pdi = find_partial_die (real_pdi->spec_offset,
18933                                  real_pdi->spec_is_dwz, cu);
18934
18935   if (real_pdi->die_parent != NULL)
18936     return;
18937
18938   for (child_pdi = struct_pdi->die_child;
18939        child_pdi != NULL;
18940        child_pdi = child_pdi->die_sibling)
18941     {
18942       if (child_pdi->tag == DW_TAG_subprogram
18943           && child_pdi->linkage_name != NULL)
18944         {
18945           char *actual_class_name
18946             = language_class_name_from_physname (cu->language_defn,
18947                                                  child_pdi->linkage_name);
18948           if (actual_class_name != NULL)
18949             {
18950               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18951               struct_pdi->name
18952                 = ((const char *)
18953                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18954                                   actual_class_name,
18955                                   strlen (actual_class_name)));
18956               xfree (actual_class_name);
18957             }
18958           break;
18959         }
18960     }
18961 }
18962
18963 /* Adjust PART_DIE before generating a symbol for it.  This function
18964    may set the is_external flag or change the DIE's name.  */
18965
18966 static void
18967 fixup_partial_die (struct partial_die_info *part_die,
18968                    struct dwarf2_cu *cu)
18969 {
18970   /* Once we've fixed up a die, there's no point in doing so again.
18971      This also avoids a memory leak if we were to call
18972      guess_partial_die_structure_name multiple times.  */
18973   if (part_die->fixup_called)
18974     return;
18975
18976   /* If we found a reference attribute and the DIE has no name, try
18977      to find a name in the referred to DIE.  */
18978
18979   if (part_die->name == NULL && part_die->has_specification)
18980     {
18981       struct partial_die_info *spec_die;
18982
18983       spec_die = find_partial_die (part_die->spec_offset,
18984                                    part_die->spec_is_dwz, cu);
18985
18986       fixup_partial_die (spec_die, cu);
18987
18988       if (spec_die->name)
18989         {
18990           part_die->name = spec_die->name;
18991
18992           /* Copy DW_AT_external attribute if it is set.  */
18993           if (spec_die->is_external)
18994             part_die->is_external = spec_die->is_external;
18995         }
18996     }
18997
18998   /* Set default names for some unnamed DIEs.  */
18999
19000   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
19001     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
19002
19003   /* If there is no parent die to provide a namespace, and there are
19004      children, see if we can determine the namespace from their linkage
19005      name.  */
19006   if (cu->language == language_cplus
19007       && !VEC_empty (dwarf2_section_info_def,
19008                      cu->per_cu->dwarf2_per_objfile->types)
19009       && part_die->die_parent == NULL
19010       && part_die->has_children
19011       && (part_die->tag == DW_TAG_class_type
19012           || part_die->tag == DW_TAG_structure_type
19013           || part_die->tag == DW_TAG_union_type))
19014     guess_partial_die_structure_name (part_die, cu);
19015
19016   /* GCC might emit a nameless struct or union that has a linkage
19017      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19018   if (part_die->name == NULL
19019       && (part_die->tag == DW_TAG_class_type
19020           || part_die->tag == DW_TAG_interface_type
19021           || part_die->tag == DW_TAG_structure_type
19022           || part_die->tag == DW_TAG_union_type)
19023       && part_die->linkage_name != NULL)
19024     {
19025       char *demangled;
19026
19027       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
19028       if (demangled)
19029         {
19030           const char *base;
19031
19032           /* Strip any leading namespaces/classes, keep only the base name.
19033              DW_AT_name for named DIEs does not contain the prefixes.  */
19034           base = strrchr (demangled, ':');
19035           if (base && base > demangled && base[-1] == ':')
19036             base++;
19037           else
19038             base = demangled;
19039
19040           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19041           part_die->name
19042             = ((const char *)
19043                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19044                               base, strlen (base)));
19045           xfree (demangled);
19046         }
19047     }
19048
19049   part_die->fixup_called = 1;
19050 }
19051
19052 /* Read an attribute value described by an attribute form.  */
19053
19054 static const gdb_byte *
19055 read_attribute_value (const struct die_reader_specs *reader,
19056                       struct attribute *attr, unsigned form,
19057                       LONGEST implicit_const, const gdb_byte *info_ptr)
19058 {
19059   struct dwarf2_cu *cu = reader->cu;
19060   struct dwarf2_per_objfile *dwarf2_per_objfile
19061     = cu->per_cu->dwarf2_per_objfile;
19062   struct objfile *objfile = dwarf2_per_objfile->objfile;
19063   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19064   bfd *abfd = reader->abfd;
19065   struct comp_unit_head *cu_header = &cu->header;
19066   unsigned int bytes_read;
19067   struct dwarf_block *blk;
19068
19069   attr->form = (enum dwarf_form) form;
19070   switch (form)
19071     {
19072     case DW_FORM_ref_addr:
19073       if (cu->header.version == 2)
19074         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19075       else
19076         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19077                                        &cu->header, &bytes_read);
19078       info_ptr += bytes_read;
19079       break;
19080     case DW_FORM_GNU_ref_alt:
19081       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19082       info_ptr += bytes_read;
19083       break;
19084     case DW_FORM_addr:
19085       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19086       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19087       info_ptr += bytes_read;
19088       break;
19089     case DW_FORM_block2:
19090       blk = dwarf_alloc_block (cu);
19091       blk->size = read_2_bytes (abfd, info_ptr);
19092       info_ptr += 2;
19093       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19094       info_ptr += blk->size;
19095       DW_BLOCK (attr) = blk;
19096       break;
19097     case DW_FORM_block4:
19098       blk = dwarf_alloc_block (cu);
19099       blk->size = read_4_bytes (abfd, info_ptr);
19100       info_ptr += 4;
19101       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19102       info_ptr += blk->size;
19103       DW_BLOCK (attr) = blk;
19104       break;
19105     case DW_FORM_data2:
19106       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19107       info_ptr += 2;
19108       break;
19109     case DW_FORM_data4:
19110       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19111       info_ptr += 4;
19112       break;
19113     case DW_FORM_data8:
19114       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19115       info_ptr += 8;
19116       break;
19117     case DW_FORM_data16:
19118       blk = dwarf_alloc_block (cu);
19119       blk->size = 16;
19120       blk->data = read_n_bytes (abfd, info_ptr, 16);
19121       info_ptr += 16;
19122       DW_BLOCK (attr) = blk;
19123       break;
19124     case DW_FORM_sec_offset:
19125       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19126       info_ptr += bytes_read;
19127       break;
19128     case DW_FORM_string:
19129       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19130       DW_STRING_IS_CANONICAL (attr) = 0;
19131       info_ptr += bytes_read;
19132       break;
19133     case DW_FORM_strp:
19134       if (!cu->per_cu->is_dwz)
19135         {
19136           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19137                                                    abfd, info_ptr, cu_header,
19138                                                    &bytes_read);
19139           DW_STRING_IS_CANONICAL (attr) = 0;
19140           info_ptr += bytes_read;
19141           break;
19142         }
19143       /* FALLTHROUGH */
19144     case DW_FORM_line_strp:
19145       if (!cu->per_cu->is_dwz)
19146         {
19147           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19148                                                         abfd, info_ptr,
19149                                                         cu_header, &bytes_read);
19150           DW_STRING_IS_CANONICAL (attr) = 0;
19151           info_ptr += bytes_read;
19152           break;
19153         }
19154       /* FALLTHROUGH */
19155     case DW_FORM_GNU_strp_alt:
19156       {
19157         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19158         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19159                                           &bytes_read);
19160
19161         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19162                                                           dwz, str_offset);
19163         DW_STRING_IS_CANONICAL (attr) = 0;
19164         info_ptr += bytes_read;
19165       }
19166       break;
19167     case DW_FORM_exprloc:
19168     case DW_FORM_block:
19169       blk = dwarf_alloc_block (cu);
19170       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19171       info_ptr += bytes_read;
19172       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19173       info_ptr += blk->size;
19174       DW_BLOCK (attr) = blk;
19175       break;
19176     case DW_FORM_block1:
19177       blk = dwarf_alloc_block (cu);
19178       blk->size = read_1_byte (abfd, info_ptr);
19179       info_ptr += 1;
19180       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19181       info_ptr += blk->size;
19182       DW_BLOCK (attr) = blk;
19183       break;
19184     case DW_FORM_data1:
19185       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19186       info_ptr += 1;
19187       break;
19188     case DW_FORM_flag:
19189       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19190       info_ptr += 1;
19191       break;
19192     case DW_FORM_flag_present:
19193       DW_UNSND (attr) = 1;
19194       break;
19195     case DW_FORM_sdata:
19196       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19197       info_ptr += bytes_read;
19198       break;
19199     case DW_FORM_udata:
19200       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19201       info_ptr += bytes_read;
19202       break;
19203     case DW_FORM_ref1:
19204       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19205                          + read_1_byte (abfd, info_ptr));
19206       info_ptr += 1;
19207       break;
19208     case DW_FORM_ref2:
19209       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19210                          + read_2_bytes (abfd, info_ptr));
19211       info_ptr += 2;
19212       break;
19213     case DW_FORM_ref4:
19214       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19215                          + read_4_bytes (abfd, info_ptr));
19216       info_ptr += 4;
19217       break;
19218     case DW_FORM_ref8:
19219       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19220                          + read_8_bytes (abfd, info_ptr));
19221       info_ptr += 8;
19222       break;
19223     case DW_FORM_ref_sig8:
19224       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19225       info_ptr += 8;
19226       break;
19227     case DW_FORM_ref_udata:
19228       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19229                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19230       info_ptr += bytes_read;
19231       break;
19232     case DW_FORM_indirect:
19233       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19234       info_ptr += bytes_read;
19235       if (form == DW_FORM_implicit_const)
19236         {
19237           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19238           info_ptr += bytes_read;
19239         }
19240       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19241                                        info_ptr);
19242       break;
19243     case DW_FORM_implicit_const:
19244       DW_SND (attr) = implicit_const;
19245       break;
19246     case DW_FORM_GNU_addr_index:
19247       if (reader->dwo_file == NULL)
19248         {
19249           /* For now flag a hard error.
19250              Later we can turn this into a complaint.  */
19251           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19252                  dwarf_form_name (form),
19253                  bfd_get_filename (abfd));
19254         }
19255       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19256       info_ptr += bytes_read;
19257       break;
19258     case DW_FORM_GNU_str_index:
19259       if (reader->dwo_file == NULL)
19260         {
19261           /* For now flag a hard error.
19262              Later we can turn this into a complaint if warranted.  */
19263           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19264                  dwarf_form_name (form),
19265                  bfd_get_filename (abfd));
19266         }
19267       {
19268         ULONGEST str_index =
19269           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19270
19271         DW_STRING (attr) = read_str_index (reader, str_index);
19272         DW_STRING_IS_CANONICAL (attr) = 0;
19273         info_ptr += bytes_read;
19274       }
19275       break;
19276     default:
19277       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19278              dwarf_form_name (form),
19279              bfd_get_filename (abfd));
19280     }
19281
19282   /* Super hack.  */
19283   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19284     attr->form = DW_FORM_GNU_ref_alt;
19285
19286   /* We have seen instances where the compiler tried to emit a byte
19287      size attribute of -1 which ended up being encoded as an unsigned
19288      0xffffffff.  Although 0xffffffff is technically a valid size value,
19289      an object of this size seems pretty unlikely so we can relatively
19290      safely treat these cases as if the size attribute was invalid and
19291      treat them as zero by default.  */
19292   if (attr->name == DW_AT_byte_size
19293       && form == DW_FORM_data4
19294       && DW_UNSND (attr) >= 0xffffffff)
19295     {
19296       complaint
19297         (&symfile_complaints,
19298          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19299          hex_string (DW_UNSND (attr)));
19300       DW_UNSND (attr) = 0;
19301     }
19302
19303   return info_ptr;
19304 }
19305
19306 /* Read an attribute described by an abbreviated attribute.  */
19307
19308 static const gdb_byte *
19309 read_attribute (const struct die_reader_specs *reader,
19310                 struct attribute *attr, struct attr_abbrev *abbrev,
19311                 const gdb_byte *info_ptr)
19312 {
19313   attr->name = abbrev->name;
19314   return read_attribute_value (reader, attr, abbrev->form,
19315                                abbrev->implicit_const, info_ptr);
19316 }
19317
19318 /* Read dwarf information from a buffer.  */
19319
19320 static unsigned int
19321 read_1_byte (bfd *abfd, const gdb_byte *buf)
19322 {
19323   return bfd_get_8 (abfd, buf);
19324 }
19325
19326 static int
19327 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19328 {
19329   return bfd_get_signed_8 (abfd, buf);
19330 }
19331
19332 static unsigned int
19333 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19334 {
19335   return bfd_get_16 (abfd, buf);
19336 }
19337
19338 static int
19339 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19340 {
19341   return bfd_get_signed_16 (abfd, buf);
19342 }
19343
19344 static unsigned int
19345 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19346 {
19347   return bfd_get_32 (abfd, buf);
19348 }
19349
19350 static int
19351 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19352 {
19353   return bfd_get_signed_32 (abfd, buf);
19354 }
19355
19356 static ULONGEST
19357 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19358 {
19359   return bfd_get_64 (abfd, buf);
19360 }
19361
19362 static CORE_ADDR
19363 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19364               unsigned int *bytes_read)
19365 {
19366   struct comp_unit_head *cu_header = &cu->header;
19367   CORE_ADDR retval = 0;
19368
19369   if (cu_header->signed_addr_p)
19370     {
19371       switch (cu_header->addr_size)
19372         {
19373         case 2:
19374           retval = bfd_get_signed_16 (abfd, buf);
19375           break;
19376         case 4:
19377           retval = bfd_get_signed_32 (abfd, buf);
19378           break;
19379         case 8:
19380           retval = bfd_get_signed_64 (abfd, buf);
19381           break;
19382         default:
19383           internal_error (__FILE__, __LINE__,
19384                           _("read_address: bad switch, signed [in module %s]"),
19385                           bfd_get_filename (abfd));
19386         }
19387     }
19388   else
19389     {
19390       switch (cu_header->addr_size)
19391         {
19392         case 2:
19393           retval = bfd_get_16 (abfd, buf);
19394           break;
19395         case 4:
19396           retval = bfd_get_32 (abfd, buf);
19397           break;
19398         case 8:
19399           retval = bfd_get_64 (abfd, buf);
19400           break;
19401         default:
19402           internal_error (__FILE__, __LINE__,
19403                           _("read_address: bad switch, "
19404                             "unsigned [in module %s]"),
19405                           bfd_get_filename (abfd));
19406         }
19407     }
19408
19409   *bytes_read = cu_header->addr_size;
19410   return retval;
19411 }
19412
19413 /* Read the initial length from a section.  The (draft) DWARF 3
19414    specification allows the initial length to take up either 4 bytes
19415    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19416    bytes describe the length and all offsets will be 8 bytes in length
19417    instead of 4.
19418
19419    An older, non-standard 64-bit format is also handled by this
19420    function.  The older format in question stores the initial length
19421    as an 8-byte quantity without an escape value.  Lengths greater
19422    than 2^32 aren't very common which means that the initial 4 bytes
19423    is almost always zero.  Since a length value of zero doesn't make
19424    sense for the 32-bit format, this initial zero can be considered to
19425    be an escape value which indicates the presence of the older 64-bit
19426    format.  As written, the code can't detect (old format) lengths
19427    greater than 4GB.  If it becomes necessary to handle lengths
19428    somewhat larger than 4GB, we could allow other small values (such
19429    as the non-sensical values of 1, 2, and 3) to also be used as
19430    escape values indicating the presence of the old format.
19431
19432    The value returned via bytes_read should be used to increment the
19433    relevant pointer after calling read_initial_length().
19434
19435    [ Note:  read_initial_length() and read_offset() are based on the
19436      document entitled "DWARF Debugging Information Format", revision
19437      3, draft 8, dated November 19, 2001.  This document was obtained
19438      from:
19439
19440         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19441
19442      This document is only a draft and is subject to change.  (So beware.)
19443
19444      Details regarding the older, non-standard 64-bit format were
19445      determined empirically by examining 64-bit ELF files produced by
19446      the SGI toolchain on an IRIX 6.5 machine.
19447
19448      - Kevin, July 16, 2002
19449    ] */
19450
19451 static LONGEST
19452 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19453 {
19454   LONGEST length = bfd_get_32 (abfd, buf);
19455
19456   if (length == 0xffffffff)
19457     {
19458       length = bfd_get_64 (abfd, buf + 4);
19459       *bytes_read = 12;
19460     }
19461   else if (length == 0)
19462     {
19463       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19464       length = bfd_get_64 (abfd, buf);
19465       *bytes_read = 8;
19466     }
19467   else
19468     {
19469       *bytes_read = 4;
19470     }
19471
19472   return length;
19473 }
19474
19475 /* Cover function for read_initial_length.
19476    Returns the length of the object at BUF, and stores the size of the
19477    initial length in *BYTES_READ and stores the size that offsets will be in
19478    *OFFSET_SIZE.
19479    If the initial length size is not equivalent to that specified in
19480    CU_HEADER then issue a complaint.
19481    This is useful when reading non-comp-unit headers.  */
19482
19483 static LONGEST
19484 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19485                                         const struct comp_unit_head *cu_header,
19486                                         unsigned int *bytes_read,
19487                                         unsigned int *offset_size)
19488 {
19489   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19490
19491   gdb_assert (cu_header->initial_length_size == 4
19492               || cu_header->initial_length_size == 8
19493               || cu_header->initial_length_size == 12);
19494
19495   if (cu_header->initial_length_size != *bytes_read)
19496     complaint (&symfile_complaints,
19497                _("intermixed 32-bit and 64-bit DWARF sections"));
19498
19499   *offset_size = (*bytes_read == 4) ? 4 : 8;
19500   return length;
19501 }
19502
19503 /* Read an offset from the data stream.  The size of the offset is
19504    given by cu_header->offset_size.  */
19505
19506 static LONGEST
19507 read_offset (bfd *abfd, const gdb_byte *buf,
19508              const struct comp_unit_head *cu_header,
19509              unsigned int *bytes_read)
19510 {
19511   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19512
19513   *bytes_read = cu_header->offset_size;
19514   return offset;
19515 }
19516
19517 /* Read an offset from the data stream.  */
19518
19519 static LONGEST
19520 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19521 {
19522   LONGEST retval = 0;
19523
19524   switch (offset_size)
19525     {
19526     case 4:
19527       retval = bfd_get_32 (abfd, buf);
19528       break;
19529     case 8:
19530       retval = bfd_get_64 (abfd, buf);
19531       break;
19532     default:
19533       internal_error (__FILE__, __LINE__,
19534                       _("read_offset_1: bad switch [in module %s]"),
19535                       bfd_get_filename (abfd));
19536     }
19537
19538   return retval;
19539 }
19540
19541 static const gdb_byte *
19542 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19543 {
19544   /* If the size of a host char is 8 bits, we can return a pointer
19545      to the buffer, otherwise we have to copy the data to a buffer
19546      allocated on the temporary obstack.  */
19547   gdb_assert (HOST_CHAR_BIT == 8);
19548   return buf;
19549 }
19550
19551 static const char *
19552 read_direct_string (bfd *abfd, const gdb_byte *buf,
19553                     unsigned int *bytes_read_ptr)
19554 {
19555   /* If the size of a host char is 8 bits, we can return a pointer
19556      to the string, otherwise we have to copy the string to a buffer
19557      allocated on the temporary obstack.  */
19558   gdb_assert (HOST_CHAR_BIT == 8);
19559   if (*buf == '\0')
19560     {
19561       *bytes_read_ptr = 1;
19562       return NULL;
19563     }
19564   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19565   return (const char *) buf;
19566 }
19567
19568 /* Return pointer to string at section SECT offset STR_OFFSET with error
19569    reporting strings FORM_NAME and SECT_NAME.  */
19570
19571 static const char *
19572 read_indirect_string_at_offset_from (struct objfile *objfile,
19573                                      bfd *abfd, LONGEST str_offset,
19574                                      struct dwarf2_section_info *sect,
19575                                      const char *form_name,
19576                                      const char *sect_name)
19577 {
19578   dwarf2_read_section (objfile, sect);
19579   if (sect->buffer == NULL)
19580     error (_("%s used without %s section [in module %s]"),
19581            form_name, sect_name, bfd_get_filename (abfd));
19582   if (str_offset >= sect->size)
19583     error (_("%s pointing outside of %s section [in module %s]"),
19584            form_name, sect_name, bfd_get_filename (abfd));
19585   gdb_assert (HOST_CHAR_BIT == 8);
19586   if (sect->buffer[str_offset] == '\0')
19587     return NULL;
19588   return (const char *) (sect->buffer + str_offset);
19589 }
19590
19591 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19592
19593 static const char *
19594 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19595                                 bfd *abfd, LONGEST str_offset)
19596 {
19597   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19598                                               abfd, str_offset,
19599                                               &dwarf2_per_objfile->str,
19600                                               "DW_FORM_strp", ".debug_str");
19601 }
19602
19603 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19604
19605 static const char *
19606 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19607                                      bfd *abfd, LONGEST str_offset)
19608 {
19609   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19610                                               abfd, str_offset,
19611                                               &dwarf2_per_objfile->line_str,
19612                                               "DW_FORM_line_strp",
19613                                               ".debug_line_str");
19614 }
19615
19616 /* Read a string at offset STR_OFFSET in the .debug_str section from
19617    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19618    the string consists of a single NUL byte, return NULL; otherwise
19619    return a pointer to the string.  */
19620
19621 static const char *
19622 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19623                                LONGEST str_offset)
19624 {
19625   dwarf2_read_section (objfile, &dwz->str);
19626
19627   if (dwz->str.buffer == NULL)
19628     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19629              "section [in module %s]"),
19630            bfd_get_filename (dwz->dwz_bfd));
19631   if (str_offset >= dwz->str.size)
19632     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19633              ".debug_str section [in module %s]"),
19634            bfd_get_filename (dwz->dwz_bfd));
19635   gdb_assert (HOST_CHAR_BIT == 8);
19636   if (dwz->str.buffer[str_offset] == '\0')
19637     return NULL;
19638   return (const char *) (dwz->str.buffer + str_offset);
19639 }
19640
19641 /* Return pointer to string at .debug_str offset as read from BUF.
19642    BUF is assumed to be in a compilation unit described by CU_HEADER.
19643    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19644
19645 static const char *
19646 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19647                       const gdb_byte *buf,
19648                       const struct comp_unit_head *cu_header,
19649                       unsigned int *bytes_read_ptr)
19650 {
19651   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19652
19653   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19654 }
19655
19656 /* Return pointer to string at .debug_line_str offset as read from BUF.
19657    BUF is assumed to be in a compilation unit described by CU_HEADER.
19658    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19659
19660 static const char *
19661 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19662                            bfd *abfd, const gdb_byte *buf,
19663                            const struct comp_unit_head *cu_header,
19664                            unsigned int *bytes_read_ptr)
19665 {
19666   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19667
19668   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19669                                               str_offset);
19670 }
19671
19672 ULONGEST
19673 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19674                           unsigned int *bytes_read_ptr)
19675 {
19676   ULONGEST result;
19677   unsigned int num_read;
19678   int shift;
19679   unsigned char byte;
19680
19681   result = 0;
19682   shift = 0;
19683   num_read = 0;
19684   while (1)
19685     {
19686       byte = bfd_get_8 (abfd, buf);
19687       buf++;
19688       num_read++;
19689       result |= ((ULONGEST) (byte & 127) << shift);
19690       if ((byte & 128) == 0)
19691         {
19692           break;
19693         }
19694       shift += 7;
19695     }
19696   *bytes_read_ptr = num_read;
19697   return result;
19698 }
19699
19700 static LONGEST
19701 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19702                     unsigned int *bytes_read_ptr)
19703 {
19704   LONGEST result;
19705   int shift, num_read;
19706   unsigned char byte;
19707
19708   result = 0;
19709   shift = 0;
19710   num_read = 0;
19711   while (1)
19712     {
19713       byte = bfd_get_8 (abfd, buf);
19714       buf++;
19715       num_read++;
19716       result |= ((LONGEST) (byte & 127) << shift);
19717       shift += 7;
19718       if ((byte & 128) == 0)
19719         {
19720           break;
19721         }
19722     }
19723   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19724     result |= -(((LONGEST) 1) << shift);
19725   *bytes_read_ptr = num_read;
19726   return result;
19727 }
19728
19729 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19730    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19731    ADDR_SIZE is the size of addresses from the CU header.  */
19732
19733 static CORE_ADDR
19734 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19735                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19736 {
19737   struct objfile *objfile = dwarf2_per_objfile->objfile;
19738   bfd *abfd = objfile->obfd;
19739   const gdb_byte *info_ptr;
19740
19741   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19742   if (dwarf2_per_objfile->addr.buffer == NULL)
19743     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19744            objfile_name (objfile));
19745   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19746     error (_("DW_FORM_addr_index pointing outside of "
19747              ".debug_addr section [in module %s]"),
19748            objfile_name (objfile));
19749   info_ptr = (dwarf2_per_objfile->addr.buffer
19750               + addr_base + addr_index * addr_size);
19751   if (addr_size == 4)
19752     return bfd_get_32 (abfd, info_ptr);
19753   else
19754     return bfd_get_64 (abfd, info_ptr);
19755 }
19756
19757 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19758
19759 static CORE_ADDR
19760 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19761 {
19762   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19763                             cu->addr_base, cu->header.addr_size);
19764 }
19765
19766 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19767
19768 static CORE_ADDR
19769 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19770                              unsigned int *bytes_read)
19771 {
19772   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19773   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19774
19775   return read_addr_index (cu, addr_index);
19776 }
19777
19778 /* Data structure to pass results from dwarf2_read_addr_index_reader
19779    back to dwarf2_read_addr_index.  */
19780
19781 struct dwarf2_read_addr_index_data
19782 {
19783   ULONGEST addr_base;
19784   int addr_size;
19785 };
19786
19787 /* die_reader_func for dwarf2_read_addr_index.  */
19788
19789 static void
19790 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19791                                const gdb_byte *info_ptr,
19792                                struct die_info *comp_unit_die,
19793                                int has_children,
19794                                void *data)
19795 {
19796   struct dwarf2_cu *cu = reader->cu;
19797   struct dwarf2_read_addr_index_data *aidata =
19798     (struct dwarf2_read_addr_index_data *) data;
19799
19800   aidata->addr_base = cu->addr_base;
19801   aidata->addr_size = cu->header.addr_size;
19802 }
19803
19804 /* Given an index in .debug_addr, fetch the value.
19805    NOTE: This can be called during dwarf expression evaluation,
19806    long after the debug information has been read, and thus per_cu->cu
19807    may no longer exist.  */
19808
19809 CORE_ADDR
19810 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19811                         unsigned int addr_index)
19812 {
19813   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19814   struct objfile *objfile = dwarf2_per_objfile->objfile;
19815   struct dwarf2_cu *cu = per_cu->cu;
19816   ULONGEST addr_base;
19817   int addr_size;
19818
19819   /* We need addr_base and addr_size.
19820      If we don't have PER_CU->cu, we have to get it.
19821      Nasty, but the alternative is storing the needed info in PER_CU,
19822      which at this point doesn't seem justified: it's not clear how frequently
19823      it would get used and it would increase the size of every PER_CU.
19824      Entry points like dwarf2_per_cu_addr_size do a similar thing
19825      so we're not in uncharted territory here.
19826      Alas we need to be a bit more complicated as addr_base is contained
19827      in the DIE.
19828
19829      We don't need to read the entire CU(/TU).
19830      We just need the header and top level die.
19831
19832      IWBN to use the aging mechanism to let us lazily later discard the CU.
19833      For now we skip this optimization.  */
19834
19835   if (cu != NULL)
19836     {
19837       addr_base = cu->addr_base;
19838       addr_size = cu->header.addr_size;
19839     }
19840   else
19841     {
19842       struct dwarf2_read_addr_index_data aidata;
19843
19844       /* Note: We can't use init_cutu_and_read_dies_simple here,
19845          we need addr_base.  */
19846       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
19847                                dwarf2_read_addr_index_reader, &aidata);
19848       addr_base = aidata.addr_base;
19849       addr_size = aidata.addr_size;
19850     }
19851
19852   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19853                             addr_size);
19854 }
19855
19856 /* Given a DW_FORM_GNU_str_index, fetch the string.
19857    This is only used by the Fission support.  */
19858
19859 static const char *
19860 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19861 {
19862   struct dwarf2_cu *cu = reader->cu;
19863   struct dwarf2_per_objfile *dwarf2_per_objfile
19864     = cu->per_cu->dwarf2_per_objfile;
19865   struct objfile *objfile = dwarf2_per_objfile->objfile;
19866   const char *objf_name = objfile_name (objfile);
19867   bfd *abfd = objfile->obfd;
19868   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19869   struct dwarf2_section_info *str_offsets_section =
19870     &reader->dwo_file->sections.str_offsets;
19871   const gdb_byte *info_ptr;
19872   ULONGEST str_offset;
19873   static const char form_name[] = "DW_FORM_GNU_str_index";
19874
19875   dwarf2_read_section (objfile, str_section);
19876   dwarf2_read_section (objfile, str_offsets_section);
19877   if (str_section->buffer == NULL)
19878     error (_("%s used without .debug_str.dwo section"
19879              " in CU at offset 0x%x [in module %s]"),
19880            form_name, to_underlying (cu->header.sect_off), objf_name);
19881   if (str_offsets_section->buffer == NULL)
19882     error (_("%s used without .debug_str_offsets.dwo section"
19883              " in CU at offset 0x%x [in module %s]"),
19884            form_name, to_underlying (cu->header.sect_off), objf_name);
19885   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19886     error (_("%s pointing outside of .debug_str_offsets.dwo"
19887              " section in CU at offset 0x%x [in module %s]"),
19888            form_name, to_underlying (cu->header.sect_off), objf_name);
19889   info_ptr = (str_offsets_section->buffer
19890               + str_index * cu->header.offset_size);
19891   if (cu->header.offset_size == 4)
19892     str_offset = bfd_get_32 (abfd, info_ptr);
19893   else
19894     str_offset = bfd_get_64 (abfd, info_ptr);
19895   if (str_offset >= str_section->size)
19896     error (_("Offset from %s pointing outside of"
19897              " .debug_str.dwo section in CU at offset 0x%x [in module %s]"),
19898            form_name, to_underlying (cu->header.sect_off), objf_name);
19899   return (const char *) (str_section->buffer + str_offset);
19900 }
19901
19902 /* Return the length of an LEB128 number in BUF.  */
19903
19904 static int
19905 leb128_size (const gdb_byte *buf)
19906 {
19907   const gdb_byte *begin = buf;
19908   gdb_byte byte;
19909
19910   while (1)
19911     {
19912       byte = *buf++;
19913       if ((byte & 128) == 0)
19914         return buf - begin;
19915     }
19916 }
19917
19918 static void
19919 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19920 {
19921   switch (lang)
19922     {
19923     case DW_LANG_C89:
19924     case DW_LANG_C99:
19925     case DW_LANG_C11:
19926     case DW_LANG_C:
19927     case DW_LANG_UPC:
19928       cu->language = language_c;
19929       break;
19930     case DW_LANG_Java:
19931     case DW_LANG_C_plus_plus:
19932     case DW_LANG_C_plus_plus_11:
19933     case DW_LANG_C_plus_plus_14:
19934       cu->language = language_cplus;
19935       break;
19936     case DW_LANG_D:
19937       cu->language = language_d;
19938       break;
19939     case DW_LANG_Fortran77:
19940     case DW_LANG_Fortran90:
19941     case DW_LANG_Fortran95:
19942     case DW_LANG_Fortran03:
19943     case DW_LANG_Fortran08:
19944       cu->language = language_fortran;
19945       break;
19946     case DW_LANG_Go:
19947       cu->language = language_go;
19948       break;
19949     case DW_LANG_Mips_Assembler:
19950       cu->language = language_asm;
19951       break;
19952     case DW_LANG_Ada83:
19953     case DW_LANG_Ada95:
19954       cu->language = language_ada;
19955       break;
19956     case DW_LANG_Modula2:
19957       cu->language = language_m2;
19958       break;
19959     case DW_LANG_Pascal83:
19960       cu->language = language_pascal;
19961       break;
19962     case DW_LANG_ObjC:
19963       cu->language = language_objc;
19964       break;
19965     case DW_LANG_Rust:
19966     case DW_LANG_Rust_old:
19967       cu->language = language_rust;
19968       break;
19969     case DW_LANG_Cobol74:
19970     case DW_LANG_Cobol85:
19971     default:
19972       cu->language = language_minimal;
19973       break;
19974     }
19975   cu->language_defn = language_def (cu->language);
19976 }
19977
19978 /* Return the named attribute or NULL if not there.  */
19979
19980 static struct attribute *
19981 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19982 {
19983   for (;;)
19984     {
19985       unsigned int i;
19986       struct attribute *spec = NULL;
19987
19988       for (i = 0; i < die->num_attrs; ++i)
19989         {
19990           if (die->attrs[i].name == name)
19991             return &die->attrs[i];
19992           if (die->attrs[i].name == DW_AT_specification
19993               || die->attrs[i].name == DW_AT_abstract_origin)
19994             spec = &die->attrs[i];
19995         }
19996
19997       if (!spec)
19998         break;
19999
20000       die = follow_die_ref (die, spec, &cu);
20001     }
20002
20003   return NULL;
20004 }
20005
20006 /* Return the named attribute or NULL if not there,
20007    but do not follow DW_AT_specification, etc.
20008    This is for use in contexts where we're reading .debug_types dies.
20009    Following DW_AT_specification, DW_AT_abstract_origin will take us
20010    back up the chain, and we want to go down.  */
20011
20012 static struct attribute *
20013 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20014 {
20015   unsigned int i;
20016
20017   for (i = 0; i < die->num_attrs; ++i)
20018     if (die->attrs[i].name == name)
20019       return &die->attrs[i];
20020
20021   return NULL;
20022 }
20023
20024 /* Return the string associated with a string-typed attribute, or NULL if it
20025    is either not found or is of an incorrect type.  */
20026
20027 static const char *
20028 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20029 {
20030   struct attribute *attr;
20031   const char *str = NULL;
20032
20033   attr = dwarf2_attr (die, name, cu);
20034
20035   if (attr != NULL)
20036     {
20037       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20038           || attr->form == DW_FORM_string
20039           || attr->form == DW_FORM_GNU_str_index
20040           || attr->form == DW_FORM_GNU_strp_alt)
20041         str = DW_STRING (attr);
20042       else
20043         complaint (&symfile_complaints,
20044                    _("string type expected for attribute %s for "
20045                      "DIE at 0x%x in module %s"),
20046                    dwarf_attr_name (name), to_underlying (die->sect_off),
20047                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20048     }
20049
20050   return str;
20051 }
20052
20053 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20054    and holds a non-zero value.  This function should only be used for
20055    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20056
20057 static int
20058 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20059 {
20060   struct attribute *attr = dwarf2_attr (die, name, cu);
20061
20062   return (attr && DW_UNSND (attr));
20063 }
20064
20065 static int
20066 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20067 {
20068   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20069      which value is non-zero.  However, we have to be careful with
20070      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20071      (via dwarf2_flag_true_p) follows this attribute.  So we may
20072      end up accidently finding a declaration attribute that belongs
20073      to a different DIE referenced by the specification attribute,
20074      even though the given DIE does not have a declaration attribute.  */
20075   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20076           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20077 }
20078
20079 /* Return the die giving the specification for DIE, if there is
20080    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20081    containing the return value on output.  If there is no
20082    specification, but there is an abstract origin, that is
20083    returned.  */
20084
20085 static struct die_info *
20086 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20087 {
20088   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20089                                              *spec_cu);
20090
20091   if (spec_attr == NULL)
20092     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20093
20094   if (spec_attr == NULL)
20095     return NULL;
20096   else
20097     return follow_die_ref (die, spec_attr, spec_cu);
20098 }
20099
20100 /* Stub for free_line_header to match void * callback types.  */
20101
20102 static void
20103 free_line_header_voidp (void *arg)
20104 {
20105   struct line_header *lh = (struct line_header *) arg;
20106
20107   delete lh;
20108 }
20109
20110 void
20111 line_header::add_include_dir (const char *include_dir)
20112 {
20113   if (dwarf_line_debug >= 2)
20114     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20115                         include_dirs.size () + 1, include_dir);
20116
20117   include_dirs.push_back (include_dir);
20118 }
20119
20120 void
20121 line_header::add_file_name (const char *name,
20122                             dir_index d_index,
20123                             unsigned int mod_time,
20124                             unsigned int length)
20125 {
20126   if (dwarf_line_debug >= 2)
20127     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20128                         (unsigned) file_names.size () + 1, name);
20129
20130   file_names.emplace_back (name, d_index, mod_time, length);
20131 }
20132
20133 /* A convenience function to find the proper .debug_line section for a CU.  */
20134
20135 static struct dwarf2_section_info *
20136 get_debug_line_section (struct dwarf2_cu *cu)
20137 {
20138   struct dwarf2_section_info *section;
20139   struct dwarf2_per_objfile *dwarf2_per_objfile
20140     = cu->per_cu->dwarf2_per_objfile;
20141
20142   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20143      DWO file.  */
20144   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20145     section = &cu->dwo_unit->dwo_file->sections.line;
20146   else if (cu->per_cu->is_dwz)
20147     {
20148       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20149
20150       section = &dwz->line;
20151     }
20152   else
20153     section = &dwarf2_per_objfile->line;
20154
20155   return section;
20156 }
20157
20158 /* Read directory or file name entry format, starting with byte of
20159    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20160    entries count and the entries themselves in the described entry
20161    format.  */
20162
20163 static void
20164 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20165                         bfd *abfd, const gdb_byte **bufp,
20166                         struct line_header *lh,
20167                         const struct comp_unit_head *cu_header,
20168                         void (*callback) (struct line_header *lh,
20169                                           const char *name,
20170                                           dir_index d_index,
20171                                           unsigned int mod_time,
20172                                           unsigned int length))
20173 {
20174   gdb_byte format_count, formati;
20175   ULONGEST data_count, datai;
20176   const gdb_byte *buf = *bufp;
20177   const gdb_byte *format_header_data;
20178   unsigned int bytes_read;
20179
20180   format_count = read_1_byte (abfd, buf);
20181   buf += 1;
20182   format_header_data = buf;
20183   for (formati = 0; formati < format_count; formati++)
20184     {
20185       read_unsigned_leb128 (abfd, buf, &bytes_read);
20186       buf += bytes_read;
20187       read_unsigned_leb128 (abfd, buf, &bytes_read);
20188       buf += bytes_read;
20189     }
20190
20191   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20192   buf += bytes_read;
20193   for (datai = 0; datai < data_count; datai++)
20194     {
20195       const gdb_byte *format = format_header_data;
20196       struct file_entry fe;
20197
20198       for (formati = 0; formati < format_count; formati++)
20199         {
20200           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20201           format += bytes_read;
20202
20203           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20204           format += bytes_read;
20205
20206           gdb::optional<const char *> string;
20207           gdb::optional<unsigned int> uint;
20208
20209           switch (form)
20210             {
20211             case DW_FORM_string:
20212               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20213               buf += bytes_read;
20214               break;
20215
20216             case DW_FORM_line_strp:
20217               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20218                                                          abfd, buf,
20219                                                          cu_header,
20220                                                          &bytes_read));
20221               buf += bytes_read;
20222               break;
20223
20224             case DW_FORM_data1:
20225               uint.emplace (read_1_byte (abfd, buf));
20226               buf += 1;
20227               break;
20228
20229             case DW_FORM_data2:
20230               uint.emplace (read_2_bytes (abfd, buf));
20231               buf += 2;
20232               break;
20233
20234             case DW_FORM_data4:
20235               uint.emplace (read_4_bytes (abfd, buf));
20236               buf += 4;
20237               break;
20238
20239             case DW_FORM_data8:
20240               uint.emplace (read_8_bytes (abfd, buf));
20241               buf += 8;
20242               break;
20243
20244             case DW_FORM_udata:
20245               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20246               buf += bytes_read;
20247               break;
20248
20249             case DW_FORM_block:
20250               /* It is valid only for DW_LNCT_timestamp which is ignored by
20251                  current GDB.  */
20252               break;
20253             }
20254
20255           switch (content_type)
20256             {
20257             case DW_LNCT_path:
20258               if (string.has_value ())
20259                 fe.name = *string;
20260               break;
20261             case DW_LNCT_directory_index:
20262               if (uint.has_value ())
20263                 fe.d_index = (dir_index) *uint;
20264               break;
20265             case DW_LNCT_timestamp:
20266               if (uint.has_value ())
20267                 fe.mod_time = *uint;
20268               break;
20269             case DW_LNCT_size:
20270               if (uint.has_value ())
20271                 fe.length = *uint;
20272               break;
20273             case DW_LNCT_MD5:
20274               break;
20275             default:
20276               complaint (&symfile_complaints,
20277                          _("Unknown format content type %s"),
20278                          pulongest (content_type));
20279             }
20280         }
20281
20282       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20283     }
20284
20285   *bufp = buf;
20286 }
20287
20288 /* Read the statement program header starting at OFFSET in
20289    .debug_line, or .debug_line.dwo.  Return a pointer
20290    to a struct line_header, allocated using xmalloc.
20291    Returns NULL if there is a problem reading the header, e.g., if it
20292    has a version we don't understand.
20293
20294    NOTE: the strings in the include directory and file name tables of
20295    the returned object point into the dwarf line section buffer,
20296    and must not be freed.  */
20297
20298 static line_header_up
20299 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20300 {
20301   const gdb_byte *line_ptr;
20302   unsigned int bytes_read, offset_size;
20303   int i;
20304   const char *cur_dir, *cur_file;
20305   struct dwarf2_section_info *section;
20306   bfd *abfd;
20307   struct dwarf2_per_objfile *dwarf2_per_objfile
20308     = cu->per_cu->dwarf2_per_objfile;
20309
20310   section = get_debug_line_section (cu);
20311   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20312   if (section->buffer == NULL)
20313     {
20314       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20315         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
20316       else
20317         complaint (&symfile_complaints, _("missing .debug_line section"));
20318       return 0;
20319     }
20320
20321   /* We can't do this until we know the section is non-empty.
20322      Only then do we know we have such a section.  */
20323   abfd = get_section_bfd_owner (section);
20324
20325   /* Make sure that at least there's room for the total_length field.
20326      That could be 12 bytes long, but we're just going to fudge that.  */
20327   if (to_underlying (sect_off) + 4 >= section->size)
20328     {
20329       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20330       return 0;
20331     }
20332
20333   line_header_up lh (new line_header ());
20334
20335   lh->sect_off = sect_off;
20336   lh->offset_in_dwz = cu->per_cu->is_dwz;
20337
20338   line_ptr = section->buffer + to_underlying (sect_off);
20339
20340   /* Read in the header.  */
20341   lh->total_length =
20342     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20343                                             &bytes_read, &offset_size);
20344   line_ptr += bytes_read;
20345   if (line_ptr + lh->total_length > (section->buffer + section->size))
20346     {
20347       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20348       return 0;
20349     }
20350   lh->statement_program_end = line_ptr + lh->total_length;
20351   lh->version = read_2_bytes (abfd, line_ptr);
20352   line_ptr += 2;
20353   if (lh->version > 5)
20354     {
20355       /* This is a version we don't understand.  The format could have
20356          changed in ways we don't handle properly so just punt.  */
20357       complaint (&symfile_complaints,
20358                  _("unsupported version in .debug_line section"));
20359       return NULL;
20360     }
20361   if (lh->version >= 5)
20362     {
20363       gdb_byte segment_selector_size;
20364
20365       /* Skip address size.  */
20366       read_1_byte (abfd, line_ptr);
20367       line_ptr += 1;
20368
20369       segment_selector_size = read_1_byte (abfd, line_ptr);
20370       line_ptr += 1;
20371       if (segment_selector_size != 0)
20372         {
20373           complaint (&symfile_complaints,
20374                      _("unsupported segment selector size %u "
20375                        "in .debug_line section"),
20376                      segment_selector_size);
20377           return NULL;
20378         }
20379     }
20380   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20381   line_ptr += offset_size;
20382   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20383   line_ptr += 1;
20384   if (lh->version >= 4)
20385     {
20386       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20387       line_ptr += 1;
20388     }
20389   else
20390     lh->maximum_ops_per_instruction = 1;
20391
20392   if (lh->maximum_ops_per_instruction == 0)
20393     {
20394       lh->maximum_ops_per_instruction = 1;
20395       complaint (&symfile_complaints,
20396                  _("invalid maximum_ops_per_instruction "
20397                    "in `.debug_line' section"));
20398     }
20399
20400   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20401   line_ptr += 1;
20402   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20403   line_ptr += 1;
20404   lh->line_range = read_1_byte (abfd, line_ptr);
20405   line_ptr += 1;
20406   lh->opcode_base = read_1_byte (abfd, line_ptr);
20407   line_ptr += 1;
20408   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20409
20410   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20411   for (i = 1; i < lh->opcode_base; ++i)
20412     {
20413       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20414       line_ptr += 1;
20415     }
20416
20417   if (lh->version >= 5)
20418     {
20419       /* Read directory table.  */
20420       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20421                               &cu->header,
20422                               [] (struct line_header *lh, const char *name,
20423                                   dir_index d_index, unsigned int mod_time,
20424                                   unsigned int length)
20425         {
20426           lh->add_include_dir (name);
20427         });
20428
20429       /* Read file name table.  */
20430       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20431                               &cu->header,
20432                               [] (struct line_header *lh, const char *name,
20433                                   dir_index d_index, unsigned int mod_time,
20434                                   unsigned int length)
20435         {
20436           lh->add_file_name (name, d_index, mod_time, length);
20437         });
20438     }
20439   else
20440     {
20441       /* Read directory table.  */
20442       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20443         {
20444           line_ptr += bytes_read;
20445           lh->add_include_dir (cur_dir);
20446         }
20447       line_ptr += bytes_read;
20448
20449       /* Read file name table.  */
20450       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20451         {
20452           unsigned int mod_time, length;
20453           dir_index d_index;
20454
20455           line_ptr += bytes_read;
20456           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20457           line_ptr += bytes_read;
20458           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20459           line_ptr += bytes_read;
20460           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20461           line_ptr += bytes_read;
20462
20463           lh->add_file_name (cur_file, d_index, mod_time, length);
20464         }
20465       line_ptr += bytes_read;
20466     }
20467   lh->statement_program_start = line_ptr;
20468
20469   if (line_ptr > (section->buffer + section->size))
20470     complaint (&symfile_complaints,
20471                _("line number info header doesn't "
20472                  "fit in `.debug_line' section"));
20473
20474   return lh;
20475 }
20476
20477 /* Subroutine of dwarf_decode_lines to simplify it.
20478    Return the file name of the psymtab for included file FILE_INDEX
20479    in line header LH of PST.
20480    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20481    If space for the result is malloc'd, it will be freed by a cleanup.
20482    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
20483
20484    The function creates dangling cleanup registration.  */
20485
20486 static const char *
20487 psymtab_include_file_name (const struct line_header *lh, int file_index,
20488                            const struct partial_symtab *pst,
20489                            const char *comp_dir)
20490 {
20491   const file_entry &fe = lh->file_names[file_index];
20492   const char *include_name = fe.name;
20493   const char *include_name_to_compare = include_name;
20494   const char *pst_filename;
20495   char *copied_name = NULL;
20496   int file_is_pst;
20497
20498   const char *dir_name = fe.include_dir (lh);
20499
20500   if (!IS_ABSOLUTE_PATH (include_name)
20501       && (dir_name != NULL || comp_dir != NULL))
20502     {
20503       /* Avoid creating a duplicate psymtab for PST.
20504          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20505          Before we do the comparison, however, we need to account
20506          for DIR_NAME and COMP_DIR.
20507          First prepend dir_name (if non-NULL).  If we still don't
20508          have an absolute path prepend comp_dir (if non-NULL).
20509          However, the directory we record in the include-file's
20510          psymtab does not contain COMP_DIR (to match the
20511          corresponding symtab(s)).
20512
20513          Example:
20514
20515          bash$ cd /tmp
20516          bash$ gcc -g ./hello.c
20517          include_name = "hello.c"
20518          dir_name = "."
20519          DW_AT_comp_dir = comp_dir = "/tmp"
20520          DW_AT_name = "./hello.c"
20521
20522       */
20523
20524       if (dir_name != NULL)
20525         {
20526           char *tem = concat (dir_name, SLASH_STRING,
20527                               include_name, (char *)NULL);
20528
20529           make_cleanup (xfree, tem);
20530           include_name = tem;
20531           include_name_to_compare = include_name;
20532         }
20533       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20534         {
20535           char *tem = concat (comp_dir, SLASH_STRING,
20536                               include_name, (char *)NULL);
20537
20538           make_cleanup (xfree, tem);
20539           include_name_to_compare = tem;
20540         }
20541     }
20542
20543   pst_filename = pst->filename;
20544   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20545     {
20546       copied_name = concat (pst->dirname, SLASH_STRING,
20547                             pst_filename, (char *)NULL);
20548       pst_filename = copied_name;
20549     }
20550
20551   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20552
20553   if (copied_name != NULL)
20554     xfree (copied_name);
20555
20556   if (file_is_pst)
20557     return NULL;
20558   return include_name;
20559 }
20560
20561 /* State machine to track the state of the line number program.  */
20562
20563 class lnp_state_machine
20564 {
20565 public:
20566   /* Initialize a machine state for the start of a line number
20567      program.  */
20568   lnp_state_machine (gdbarch *arch, line_header *lh, bool record_lines_p);
20569
20570   file_entry *current_file ()
20571   {
20572     /* lh->file_names is 0-based, but the file name numbers in the
20573        statement program are 1-based.  */
20574     return m_line_header->file_name_at (m_file);
20575   }
20576
20577   /* Record the line in the state machine.  END_SEQUENCE is true if
20578      we're processing the end of a sequence.  */
20579   void record_line (bool end_sequence);
20580
20581   /* Check address and if invalid nop-out the rest of the lines in this
20582      sequence.  */
20583   void check_line_address (struct dwarf2_cu *cu,
20584                            const gdb_byte *line_ptr,
20585                            CORE_ADDR lowpc, CORE_ADDR address);
20586
20587   void handle_set_discriminator (unsigned int discriminator)
20588   {
20589     m_discriminator = discriminator;
20590     m_line_has_non_zero_discriminator |= discriminator != 0;
20591   }
20592
20593   /* Handle DW_LNE_set_address.  */
20594   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20595   {
20596     m_op_index = 0;
20597     address += baseaddr;
20598     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20599   }
20600
20601   /* Handle DW_LNS_advance_pc.  */
20602   void handle_advance_pc (CORE_ADDR adjust);
20603
20604   /* Handle a special opcode.  */
20605   void handle_special_opcode (unsigned char op_code);
20606
20607   /* Handle DW_LNS_advance_line.  */
20608   void handle_advance_line (int line_delta)
20609   {
20610     advance_line (line_delta);
20611   }
20612
20613   /* Handle DW_LNS_set_file.  */
20614   void handle_set_file (file_name_index file);
20615
20616   /* Handle DW_LNS_negate_stmt.  */
20617   void handle_negate_stmt ()
20618   {
20619     m_is_stmt = !m_is_stmt;
20620   }
20621
20622   /* Handle DW_LNS_const_add_pc.  */
20623   void handle_const_add_pc ();
20624
20625   /* Handle DW_LNS_fixed_advance_pc.  */
20626   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20627   {
20628     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20629     m_op_index = 0;
20630   }
20631
20632   /* Handle DW_LNS_copy.  */
20633   void handle_copy ()
20634   {
20635     record_line (false);
20636     m_discriminator = 0;
20637   }
20638
20639   /* Handle DW_LNE_end_sequence.  */
20640   void handle_end_sequence ()
20641   {
20642     m_record_line_callback = ::record_line;
20643   }
20644
20645 private:
20646   /* Advance the line by LINE_DELTA.  */
20647   void advance_line (int line_delta)
20648   {
20649     m_line += line_delta;
20650
20651     if (line_delta != 0)
20652       m_line_has_non_zero_discriminator = m_discriminator != 0;
20653   }
20654
20655   gdbarch *m_gdbarch;
20656
20657   /* True if we're recording lines.
20658      Otherwise we're building partial symtabs and are just interested in
20659      finding include files mentioned by the line number program.  */
20660   bool m_record_lines_p;
20661
20662   /* The line number header.  */
20663   line_header *m_line_header;
20664
20665   /* These are part of the standard DWARF line number state machine,
20666      and initialized according to the DWARF spec.  */
20667
20668   unsigned char m_op_index = 0;
20669   /* The line table index (1-based) of the current file.  */
20670   file_name_index m_file = (file_name_index) 1;
20671   unsigned int m_line = 1;
20672
20673   /* These are initialized in the constructor.  */
20674
20675   CORE_ADDR m_address;
20676   bool m_is_stmt;
20677   unsigned int m_discriminator;
20678
20679   /* Additional bits of state we need to track.  */
20680
20681   /* The last file that we called dwarf2_start_subfile for.
20682      This is only used for TLLs.  */
20683   unsigned int m_last_file = 0;
20684   /* The last file a line number was recorded for.  */
20685   struct subfile *m_last_subfile = NULL;
20686
20687   /* The function to call to record a line.  */
20688   record_line_ftype *m_record_line_callback = NULL;
20689
20690   /* The last line number that was recorded, used to coalesce
20691      consecutive entries for the same line.  This can happen, for
20692      example, when discriminators are present.  PR 17276.  */
20693   unsigned int m_last_line = 0;
20694   bool m_line_has_non_zero_discriminator = false;
20695 };
20696
20697 void
20698 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20699 {
20700   CORE_ADDR addr_adj = (((m_op_index + adjust)
20701                          / m_line_header->maximum_ops_per_instruction)
20702                         * m_line_header->minimum_instruction_length);
20703   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20704   m_op_index = ((m_op_index + adjust)
20705                 % m_line_header->maximum_ops_per_instruction);
20706 }
20707
20708 void
20709 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20710 {
20711   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20712   CORE_ADDR addr_adj = (((m_op_index
20713                           + (adj_opcode / m_line_header->line_range))
20714                          / m_line_header->maximum_ops_per_instruction)
20715                         * m_line_header->minimum_instruction_length);
20716   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20717   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20718                 % m_line_header->maximum_ops_per_instruction);
20719
20720   int line_delta = (m_line_header->line_base
20721                     + (adj_opcode % m_line_header->line_range));
20722   advance_line (line_delta);
20723   record_line (false);
20724   m_discriminator = 0;
20725 }
20726
20727 void
20728 lnp_state_machine::handle_set_file (file_name_index file)
20729 {
20730   m_file = file;
20731
20732   const file_entry *fe = current_file ();
20733   if (fe == NULL)
20734     dwarf2_debug_line_missing_file_complaint ();
20735   else if (m_record_lines_p)
20736     {
20737       const char *dir = fe->include_dir (m_line_header);
20738
20739       m_last_subfile = current_subfile;
20740       m_line_has_non_zero_discriminator = m_discriminator != 0;
20741       dwarf2_start_subfile (fe->name, dir);
20742     }
20743 }
20744
20745 void
20746 lnp_state_machine::handle_const_add_pc ()
20747 {
20748   CORE_ADDR adjust
20749     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20750
20751   CORE_ADDR addr_adj
20752     = (((m_op_index + adjust)
20753         / m_line_header->maximum_ops_per_instruction)
20754        * m_line_header->minimum_instruction_length);
20755
20756   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20757   m_op_index = ((m_op_index + adjust)
20758                 % m_line_header->maximum_ops_per_instruction);
20759 }
20760
20761 /* Ignore this record_line request.  */
20762
20763 static void
20764 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
20765 {
20766   return;
20767 }
20768
20769 /* Return non-zero if we should add LINE to the line number table.
20770    LINE is the line to add, LAST_LINE is the last line that was added,
20771    LAST_SUBFILE is the subfile for LAST_LINE.
20772    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20773    had a non-zero discriminator.
20774
20775    We have to be careful in the presence of discriminators.
20776    E.g., for this line:
20777
20778      for (i = 0; i < 100000; i++);
20779
20780    clang can emit four line number entries for that one line,
20781    each with a different discriminator.
20782    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20783
20784    However, we want gdb to coalesce all four entries into one.
20785    Otherwise the user could stepi into the middle of the line and
20786    gdb would get confused about whether the pc really was in the
20787    middle of the line.
20788
20789    Things are further complicated by the fact that two consecutive
20790    line number entries for the same line is a heuristic used by gcc
20791    to denote the end of the prologue.  So we can't just discard duplicate
20792    entries, we have to be selective about it.  The heuristic we use is
20793    that we only collapse consecutive entries for the same line if at least
20794    one of those entries has a non-zero discriminator.  PR 17276.
20795
20796    Note: Addresses in the line number state machine can never go backwards
20797    within one sequence, thus this coalescing is ok.  */
20798
20799 static int
20800 dwarf_record_line_p (unsigned int line, unsigned int last_line,
20801                      int line_has_non_zero_discriminator,
20802                      struct subfile *last_subfile)
20803 {
20804   if (current_subfile != last_subfile)
20805     return 1;
20806   if (line != last_line)
20807     return 1;
20808   /* Same line for the same file that we've seen already.
20809      As a last check, for pr 17276, only record the line if the line
20810      has never had a non-zero discriminator.  */
20811   if (!line_has_non_zero_discriminator)
20812     return 1;
20813   return 0;
20814 }
20815
20816 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
20817    in the line table of subfile SUBFILE.  */
20818
20819 static void
20820 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20821                      unsigned int line, CORE_ADDR address,
20822                      record_line_ftype p_record_line)
20823 {
20824   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20825
20826   if (dwarf_line_debug)
20827     {
20828       fprintf_unfiltered (gdb_stdlog,
20829                           "Recording line %u, file %s, address %s\n",
20830                           line, lbasename (subfile->name),
20831                           paddress (gdbarch, address));
20832     }
20833
20834   (*p_record_line) (subfile, line, addr);
20835 }
20836
20837 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20838    Mark the end of a set of line number records.
20839    The arguments are the same as for dwarf_record_line_1.
20840    If SUBFILE is NULL the request is ignored.  */
20841
20842 static void
20843 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20844                    CORE_ADDR address, record_line_ftype p_record_line)
20845 {
20846   if (subfile == NULL)
20847     return;
20848
20849   if (dwarf_line_debug)
20850     {
20851       fprintf_unfiltered (gdb_stdlog,
20852                           "Finishing current line, file %s, address %s\n",
20853                           lbasename (subfile->name),
20854                           paddress (gdbarch, address));
20855     }
20856
20857   dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
20858 }
20859
20860 void
20861 lnp_state_machine::record_line (bool end_sequence)
20862 {
20863   if (dwarf_line_debug)
20864     {
20865       fprintf_unfiltered (gdb_stdlog,
20866                           "Processing actual line %u: file %u,"
20867                           " address %s, is_stmt %u, discrim %u\n",
20868                           m_line, to_underlying (m_file),
20869                           paddress (m_gdbarch, m_address),
20870                           m_is_stmt, m_discriminator);
20871     }
20872
20873   file_entry *fe = current_file ();
20874
20875   if (fe == NULL)
20876     dwarf2_debug_line_missing_file_complaint ();
20877   /* For now we ignore lines not starting on an instruction boundary.
20878      But not when processing end_sequence for compatibility with the
20879      previous version of the code.  */
20880   else if (m_op_index == 0 || end_sequence)
20881     {
20882       fe->included_p = 1;
20883       if (m_record_lines_p && m_is_stmt)
20884         {
20885           if (m_last_subfile != current_subfile || end_sequence)
20886             {
20887               dwarf_finish_line (m_gdbarch, m_last_subfile,
20888                                  m_address, m_record_line_callback);
20889             }
20890
20891           if (!end_sequence)
20892             {
20893               if (dwarf_record_line_p (m_line, m_last_line,
20894                                        m_line_has_non_zero_discriminator,
20895                                        m_last_subfile))
20896                 {
20897                   dwarf_record_line_1 (m_gdbarch, current_subfile,
20898                                        m_line, m_address,
20899                                        m_record_line_callback);
20900                 }
20901               m_last_subfile = current_subfile;
20902               m_last_line = m_line;
20903             }
20904         }
20905     }
20906 }
20907
20908 lnp_state_machine::lnp_state_machine (gdbarch *arch, line_header *lh,
20909                                       bool record_lines_p)
20910 {
20911   m_gdbarch = arch;
20912   m_record_lines_p = record_lines_p;
20913   m_line_header = lh;
20914
20915   m_record_line_callback = ::record_line;
20916
20917   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20918      was a line entry for it so that the backend has a chance to adjust it
20919      and also record it in case it needs it.  This is currently used by MIPS
20920      code, cf. `mips_adjust_dwarf2_line'.  */
20921   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20922   m_is_stmt = lh->default_is_stmt;
20923   m_discriminator = 0;
20924 }
20925
20926 void
20927 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20928                                        const gdb_byte *line_ptr,
20929                                        CORE_ADDR lowpc, CORE_ADDR address)
20930 {
20931   /* If address < lowpc then it's not a usable value, it's outside the
20932      pc range of the CU.  However, we restrict the test to only address
20933      values of zero to preserve GDB's previous behaviour which is to
20934      handle the specific case of a function being GC'd by the linker.  */
20935
20936   if (address == 0 && address < lowpc)
20937     {
20938       /* This line table is for a function which has been
20939          GCd by the linker.  Ignore it.  PR gdb/12528 */
20940
20941       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20942       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20943
20944       complaint (&symfile_complaints,
20945                  _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20946                  line_offset, objfile_name (objfile));
20947       m_record_line_callback = noop_record_line;
20948       /* Note: record_line_callback is left as noop_record_line until
20949          we see DW_LNE_end_sequence.  */
20950     }
20951 }
20952
20953 /* Subroutine of dwarf_decode_lines to simplify it.
20954    Process the line number information in LH.
20955    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20956    program in order to set included_p for every referenced header.  */
20957
20958 static void
20959 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20960                       const int decode_for_pst_p, CORE_ADDR lowpc)
20961 {
20962   const gdb_byte *line_ptr, *extended_end;
20963   const gdb_byte *line_end;
20964   unsigned int bytes_read, extended_len;
20965   unsigned char op_code, extended_op;
20966   CORE_ADDR baseaddr;
20967   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20968   bfd *abfd = objfile->obfd;
20969   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20970   /* True if we're recording line info (as opposed to building partial
20971      symtabs and just interested in finding include files mentioned by
20972      the line number program).  */
20973   bool record_lines_p = !decode_for_pst_p;
20974
20975   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20976
20977   line_ptr = lh->statement_program_start;
20978   line_end = lh->statement_program_end;
20979
20980   /* Read the statement sequences until there's nothing left.  */
20981   while (line_ptr < line_end)
20982     {
20983       /* The DWARF line number program state machine.  Reset the state
20984          machine at the start of each sequence.  */
20985       lnp_state_machine state_machine (gdbarch, lh, record_lines_p);
20986       bool end_sequence = false;
20987
20988       if (record_lines_p)
20989         {
20990           /* Start a subfile for the current file of the state
20991              machine.  */
20992           const file_entry *fe = state_machine.current_file ();
20993
20994           if (fe != NULL)
20995             dwarf2_start_subfile (fe->name, fe->include_dir (lh));
20996         }
20997
20998       /* Decode the table.  */
20999       while (line_ptr < line_end && !end_sequence)
21000         {
21001           op_code = read_1_byte (abfd, line_ptr);
21002           line_ptr += 1;
21003
21004           if (op_code >= lh->opcode_base)
21005             {
21006               /* Special opcode.  */
21007               state_machine.handle_special_opcode (op_code);
21008             }
21009           else switch (op_code)
21010             {
21011             case DW_LNS_extended_op:
21012               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21013                                                    &bytes_read);
21014               line_ptr += bytes_read;
21015               extended_end = line_ptr + extended_len;
21016               extended_op = read_1_byte (abfd, line_ptr);
21017               line_ptr += 1;
21018               switch (extended_op)
21019                 {
21020                 case DW_LNE_end_sequence:
21021                   state_machine.handle_end_sequence ();
21022                   end_sequence = true;
21023                   break;
21024                 case DW_LNE_set_address:
21025                   {
21026                     CORE_ADDR address
21027                       = read_address (abfd, line_ptr, cu, &bytes_read);
21028                     line_ptr += bytes_read;
21029
21030                     state_machine.check_line_address (cu, line_ptr,
21031                                                       lowpc, address);
21032                     state_machine.handle_set_address (baseaddr, address);
21033                   }
21034                   break;
21035                 case DW_LNE_define_file:
21036                   {
21037                     const char *cur_file;
21038                     unsigned int mod_time, length;
21039                     dir_index dindex;
21040
21041                     cur_file = read_direct_string (abfd, line_ptr,
21042                                                    &bytes_read);
21043                     line_ptr += bytes_read;
21044                     dindex = (dir_index)
21045                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21046                     line_ptr += bytes_read;
21047                     mod_time =
21048                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21049                     line_ptr += bytes_read;
21050                     length =
21051                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21052                     line_ptr += bytes_read;
21053                     lh->add_file_name (cur_file, dindex, mod_time, length);
21054                   }
21055                   break;
21056                 case DW_LNE_set_discriminator:
21057                   {
21058                     /* The discriminator is not interesting to the
21059                        debugger; just ignore it.  We still need to
21060                        check its value though:
21061                        if there are consecutive entries for the same
21062                        (non-prologue) line we want to coalesce them.
21063                        PR 17276.  */
21064                     unsigned int discr
21065                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21066                     line_ptr += bytes_read;
21067
21068                     state_machine.handle_set_discriminator (discr);
21069                   }
21070                   break;
21071                 default:
21072                   complaint (&symfile_complaints,
21073                              _("mangled .debug_line section"));
21074                   return;
21075                 }
21076               /* Make sure that we parsed the extended op correctly.  If e.g.
21077                  we expected a different address size than the producer used,
21078                  we may have read the wrong number of bytes.  */
21079               if (line_ptr != extended_end)
21080                 {
21081                   complaint (&symfile_complaints,
21082                              _("mangled .debug_line section"));
21083                   return;
21084                 }
21085               break;
21086             case DW_LNS_copy:
21087               state_machine.handle_copy ();
21088               break;
21089             case DW_LNS_advance_pc:
21090               {
21091                 CORE_ADDR adjust
21092                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21093                 line_ptr += bytes_read;
21094
21095                 state_machine.handle_advance_pc (adjust);
21096               }
21097               break;
21098             case DW_LNS_advance_line:
21099               {
21100                 int line_delta
21101                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21102                 line_ptr += bytes_read;
21103
21104                 state_machine.handle_advance_line (line_delta);
21105               }
21106               break;
21107             case DW_LNS_set_file:
21108               {
21109                 file_name_index file
21110                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21111                                                             &bytes_read);
21112                 line_ptr += bytes_read;
21113
21114                 state_machine.handle_set_file (file);
21115               }
21116               break;
21117             case DW_LNS_set_column:
21118               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21119               line_ptr += bytes_read;
21120               break;
21121             case DW_LNS_negate_stmt:
21122               state_machine.handle_negate_stmt ();
21123               break;
21124             case DW_LNS_set_basic_block:
21125               break;
21126             /* Add to the address register of the state machine the
21127                address increment value corresponding to special opcode
21128                255.  I.e., this value is scaled by the minimum
21129                instruction length since special opcode 255 would have
21130                scaled the increment.  */
21131             case DW_LNS_const_add_pc:
21132               state_machine.handle_const_add_pc ();
21133               break;
21134             case DW_LNS_fixed_advance_pc:
21135               {
21136                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21137                 line_ptr += 2;
21138
21139                 state_machine.handle_fixed_advance_pc (addr_adj);
21140               }
21141               break;
21142             default:
21143               {
21144                 /* Unknown standard opcode, ignore it.  */
21145                 int i;
21146
21147                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21148                   {
21149                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21150                     line_ptr += bytes_read;
21151                   }
21152               }
21153             }
21154         }
21155
21156       if (!end_sequence)
21157         dwarf2_debug_line_missing_end_sequence_complaint ();
21158
21159       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21160          in which case we still finish recording the last line).  */
21161       state_machine.record_line (true);
21162     }
21163 }
21164
21165 /* Decode the Line Number Program (LNP) for the given line_header
21166    structure and CU.  The actual information extracted and the type
21167    of structures created from the LNP depends on the value of PST.
21168
21169    1. If PST is NULL, then this procedure uses the data from the program
21170       to create all necessary symbol tables, and their linetables.
21171
21172    2. If PST is not NULL, this procedure reads the program to determine
21173       the list of files included by the unit represented by PST, and
21174       builds all the associated partial symbol tables.
21175
21176    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21177    It is used for relative paths in the line table.
21178    NOTE: When processing partial symtabs (pst != NULL),
21179    comp_dir == pst->dirname.
21180
21181    NOTE: It is important that psymtabs have the same file name (via strcmp)
21182    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21183    symtab we don't use it in the name of the psymtabs we create.
21184    E.g. expand_line_sal requires this when finding psymtabs to expand.
21185    A good testcase for this is mb-inline.exp.
21186
21187    LOWPC is the lowest address in CU (or 0 if not known).
21188
21189    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21190    for its PC<->lines mapping information.  Otherwise only the filename
21191    table is read in.  */
21192
21193 static void
21194 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21195                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21196                     CORE_ADDR lowpc, int decode_mapping)
21197 {
21198   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21199   const int decode_for_pst_p = (pst != NULL);
21200
21201   if (decode_mapping)
21202     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21203
21204   if (decode_for_pst_p)
21205     {
21206       int file_index;
21207
21208       /* Now that we're done scanning the Line Header Program, we can
21209          create the psymtab of each included file.  */
21210       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21211         if (lh->file_names[file_index].included_p == 1)
21212           {
21213             const char *include_name =
21214               psymtab_include_file_name (lh, file_index, pst, comp_dir);
21215             if (include_name != NULL)
21216               dwarf2_create_include_psymtab (include_name, pst, objfile);
21217           }
21218     }
21219   else
21220     {
21221       /* Make sure a symtab is created for every file, even files
21222          which contain only variables (i.e. no code with associated
21223          line numbers).  */
21224       struct compunit_symtab *cust = buildsym_compunit_symtab ();
21225       int i;
21226
21227       for (i = 0; i < lh->file_names.size (); i++)
21228         {
21229           file_entry &fe = lh->file_names[i];
21230
21231           dwarf2_start_subfile (fe.name, fe.include_dir (lh));
21232
21233           if (current_subfile->symtab == NULL)
21234             {
21235               current_subfile->symtab
21236                 = allocate_symtab (cust, current_subfile->name);
21237             }
21238           fe.symtab = current_subfile->symtab;
21239         }
21240     }
21241 }
21242
21243 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21244    DIRNAME the name of the source directory which contains FILENAME
21245    or NULL if not known.
21246    This routine tries to keep line numbers from identical absolute and
21247    relative file names in a common subfile.
21248
21249    Using the `list' example from the GDB testsuite, which resides in
21250    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21251    of /srcdir/list0.c yields the following debugging information for list0.c:
21252
21253    DW_AT_name:          /srcdir/list0.c
21254    DW_AT_comp_dir:      /compdir
21255    files.files[0].name: list0.h
21256    files.files[0].dir:  /srcdir
21257    files.files[1].name: list0.c
21258    files.files[1].dir:  /srcdir
21259
21260    The line number information for list0.c has to end up in a single
21261    subfile, so that `break /srcdir/list0.c:1' works as expected.
21262    start_subfile will ensure that this happens provided that we pass the
21263    concatenation of files.files[1].dir and files.files[1].name as the
21264    subfile's name.  */
21265
21266 static void
21267 dwarf2_start_subfile (const char *filename, const char *dirname)
21268 {
21269   char *copy = NULL;
21270
21271   /* In order not to lose the line information directory,
21272      we concatenate it to the filename when it makes sense.
21273      Note that the Dwarf3 standard says (speaking of filenames in line
21274      information): ``The directory index is ignored for file names
21275      that represent full path names''.  Thus ignoring dirname in the
21276      `else' branch below isn't an issue.  */
21277
21278   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21279     {
21280       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21281       filename = copy;
21282     }
21283
21284   start_subfile (filename);
21285
21286   if (copy != NULL)
21287     xfree (copy);
21288 }
21289
21290 /* Start a symtab for DWARF.
21291    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
21292
21293 static struct compunit_symtab *
21294 dwarf2_start_symtab (struct dwarf2_cu *cu,
21295                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21296 {
21297   struct compunit_symtab *cust
21298     = start_symtab (cu->per_cu->dwarf2_per_objfile->objfile, name, comp_dir,
21299                     low_pc, cu->language);
21300
21301   record_debugformat ("DWARF 2");
21302   record_producer (cu->producer);
21303
21304   /* We assume that we're processing GCC output.  */
21305   processing_gcc_compilation = 2;
21306
21307   cu->processing_has_namespace_info = 0;
21308
21309   return cust;
21310 }
21311
21312 static void
21313 var_decode_location (struct attribute *attr, struct symbol *sym,
21314                      struct dwarf2_cu *cu)
21315 {
21316   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21317   struct comp_unit_head *cu_header = &cu->header;
21318
21319   /* NOTE drow/2003-01-30: There used to be a comment and some special
21320      code here to turn a symbol with DW_AT_external and a
21321      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21322      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21323      with some versions of binutils) where shared libraries could have
21324      relocations against symbols in their debug information - the
21325      minimal symbol would have the right address, but the debug info
21326      would not.  It's no longer necessary, because we will explicitly
21327      apply relocations when we read in the debug information now.  */
21328
21329   /* A DW_AT_location attribute with no contents indicates that a
21330      variable has been optimized away.  */
21331   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21332     {
21333       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21334       return;
21335     }
21336
21337   /* Handle one degenerate form of location expression specially, to
21338      preserve GDB's previous behavior when section offsets are
21339      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21340      then mark this symbol as LOC_STATIC.  */
21341
21342   if (attr_form_is_block (attr)
21343       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21344            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21345           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21346               && (DW_BLOCK (attr)->size
21347                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21348     {
21349       unsigned int dummy;
21350
21351       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21352         SYMBOL_VALUE_ADDRESS (sym) =
21353           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21354       else
21355         SYMBOL_VALUE_ADDRESS (sym) =
21356           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21357       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21358       fixup_symbol_section (sym, objfile);
21359       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21360                                               SYMBOL_SECTION (sym));
21361       return;
21362     }
21363
21364   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21365      expression evaluator, and use LOC_COMPUTED only when necessary
21366      (i.e. when the value of a register or memory location is
21367      referenced, or a thread-local block, etc.).  Then again, it might
21368      not be worthwhile.  I'm assuming that it isn't unless performance
21369      or memory numbers show me otherwise.  */
21370
21371   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21372
21373   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21374     cu->has_loclist = 1;
21375 }
21376
21377 /* Given a pointer to a DWARF information entry, figure out if we need
21378    to make a symbol table entry for it, and if so, create a new entry
21379    and return a pointer to it.
21380    If TYPE is NULL, determine symbol type from the die, otherwise
21381    used the passed type.
21382    If SPACE is not NULL, use it to hold the new symbol.  If it is
21383    NULL, allocate a new symbol on the objfile's obstack.  */
21384
21385 static struct symbol *
21386 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21387                  struct symbol *space)
21388 {
21389   struct dwarf2_per_objfile *dwarf2_per_objfile
21390     = cu->per_cu->dwarf2_per_objfile;
21391   struct objfile *objfile = dwarf2_per_objfile->objfile;
21392   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21393   struct symbol *sym = NULL;
21394   const char *name;
21395   struct attribute *attr = NULL;
21396   struct attribute *attr2 = NULL;
21397   CORE_ADDR baseaddr;
21398   struct pending **list_to_add = NULL;
21399
21400   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21401
21402   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21403
21404   name = dwarf2_name (die, cu);
21405   if (name)
21406     {
21407       const char *linkagename;
21408       int suppress_add = 0;
21409
21410       if (space)
21411         sym = space;
21412       else
21413         sym = allocate_symbol (objfile);
21414       OBJSTAT (objfile, n_syms++);
21415
21416       /* Cache this symbol's name and the name's demangled form (if any).  */
21417       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21418       linkagename = dwarf2_physname (name, die, cu);
21419       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21420
21421       /* Fortran does not have mangling standard and the mangling does differ
21422          between gfortran, iFort etc.  */
21423       if (cu->language == language_fortran
21424           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21425         symbol_set_demangled_name (&(sym->ginfo),
21426                                    dwarf2_full_name (name, die, cu),
21427                                    NULL);
21428
21429       /* Default assumptions.
21430          Use the passed type or decode it from the die.  */
21431       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21432       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21433       if (type != NULL)
21434         SYMBOL_TYPE (sym) = type;
21435       else
21436         SYMBOL_TYPE (sym) = die_type (die, cu);
21437       attr = dwarf2_attr (die,
21438                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21439                           cu);
21440       if (attr)
21441         {
21442           SYMBOL_LINE (sym) = DW_UNSND (attr);
21443         }
21444
21445       attr = dwarf2_attr (die,
21446                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21447                           cu);
21448       if (attr)
21449         {
21450           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21451           struct file_entry *fe;
21452
21453           if (cu->line_header != NULL)
21454             fe = cu->line_header->file_name_at (file_index);
21455           else
21456             fe = NULL;
21457
21458           if (fe == NULL)
21459             complaint (&symfile_complaints,
21460                        _("file index out of range"));
21461           else
21462             symbol_set_symtab (sym, fe->symtab);
21463         }
21464
21465       switch (die->tag)
21466         {
21467         case DW_TAG_label:
21468           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21469           if (attr)
21470             {
21471               CORE_ADDR addr;
21472
21473               addr = attr_value_as_address (attr);
21474               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21475               SYMBOL_VALUE_ADDRESS (sym) = addr;
21476             }
21477           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21478           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21479           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21480           add_symbol_to_list (sym, cu->list_in_scope);
21481           break;
21482         case DW_TAG_subprogram:
21483           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21484              finish_block.  */
21485           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21486           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21487           if ((attr2 && (DW_UNSND (attr2) != 0))
21488               || cu->language == language_ada)
21489             {
21490               /* Subprograms marked external are stored as a global symbol.
21491                  Ada subprograms, whether marked external or not, are always
21492                  stored as a global symbol, because we want to be able to
21493                  access them globally.  For instance, we want to be able
21494                  to break on a nested subprogram without having to
21495                  specify the context.  */
21496               list_to_add = &global_symbols;
21497             }
21498           else
21499             {
21500               list_to_add = cu->list_in_scope;
21501             }
21502           break;
21503         case DW_TAG_inlined_subroutine:
21504           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21505              finish_block.  */
21506           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21507           SYMBOL_INLINED (sym) = 1;
21508           list_to_add = cu->list_in_scope;
21509           break;
21510         case DW_TAG_template_value_param:
21511           suppress_add = 1;
21512           /* Fall through.  */
21513         case DW_TAG_constant:
21514         case DW_TAG_variable:
21515         case DW_TAG_member:
21516           /* Compilation with minimal debug info may result in
21517              variables with missing type entries.  Change the
21518              misleading `void' type to something sensible.  */
21519           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21520             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21521
21522           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21523           /* In the case of DW_TAG_member, we should only be called for
21524              static const members.  */
21525           if (die->tag == DW_TAG_member)
21526             {
21527               /* dwarf2_add_field uses die_is_declaration,
21528                  so we do the same.  */
21529               gdb_assert (die_is_declaration (die, cu));
21530               gdb_assert (attr);
21531             }
21532           if (attr)
21533             {
21534               dwarf2_const_value (attr, sym, cu);
21535               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21536               if (!suppress_add)
21537                 {
21538                   if (attr2 && (DW_UNSND (attr2) != 0))
21539                     list_to_add = &global_symbols;
21540                   else
21541                     list_to_add = cu->list_in_scope;
21542                 }
21543               break;
21544             }
21545           attr = dwarf2_attr (die, DW_AT_location, cu);
21546           if (attr)
21547             {
21548               var_decode_location (attr, sym, cu);
21549               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21550
21551               /* Fortran explicitly imports any global symbols to the local
21552                  scope by DW_TAG_common_block.  */
21553               if (cu->language == language_fortran && die->parent
21554                   && die->parent->tag == DW_TAG_common_block)
21555                 attr2 = NULL;
21556
21557               if (SYMBOL_CLASS (sym) == LOC_STATIC
21558                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21559                   && !dwarf2_per_objfile->has_section_at_zero)
21560                 {
21561                   /* When a static variable is eliminated by the linker,
21562                      the corresponding debug information is not stripped
21563                      out, but the variable address is set to null;
21564                      do not add such variables into symbol table.  */
21565                 }
21566               else if (attr2 && (DW_UNSND (attr2) != 0))
21567                 {
21568                   /* Workaround gfortran PR debug/40040 - it uses
21569                      DW_AT_location for variables in -fPIC libraries which may
21570                      get overriden by other libraries/executable and get
21571                      a different address.  Resolve it by the minimal symbol
21572                      which may come from inferior's executable using copy
21573                      relocation.  Make this workaround only for gfortran as for
21574                      other compilers GDB cannot guess the minimal symbol
21575                      Fortran mangling kind.  */
21576                   if (cu->language == language_fortran && die->parent
21577                       && die->parent->tag == DW_TAG_module
21578                       && cu->producer
21579                       && startswith (cu->producer, "GNU Fortran"))
21580                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21581
21582                   /* A variable with DW_AT_external is never static,
21583                      but it may be block-scoped.  */
21584                   list_to_add = (cu->list_in_scope == &file_symbols
21585                                  ? &global_symbols : cu->list_in_scope);
21586                 }
21587               else
21588                 list_to_add = cu->list_in_scope;
21589             }
21590           else
21591             {
21592               /* We do not know the address of this symbol.
21593                  If it is an external symbol and we have type information
21594                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21595                  The address of the variable will then be determined from
21596                  the minimal symbol table whenever the variable is
21597                  referenced.  */
21598               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21599
21600               /* Fortran explicitly imports any global symbols to the local
21601                  scope by DW_TAG_common_block.  */
21602               if (cu->language == language_fortran && die->parent
21603                   && die->parent->tag == DW_TAG_common_block)
21604                 {
21605                   /* SYMBOL_CLASS doesn't matter here because
21606                      read_common_block is going to reset it.  */
21607                   if (!suppress_add)
21608                     list_to_add = cu->list_in_scope;
21609                 }
21610               else if (attr2 && (DW_UNSND (attr2) != 0)
21611                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21612                 {
21613                   /* A variable with DW_AT_external is never static, but it
21614                      may be block-scoped.  */
21615                   list_to_add = (cu->list_in_scope == &file_symbols
21616                                  ? &global_symbols : cu->list_in_scope);
21617
21618                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21619                 }
21620               else if (!die_is_declaration (die, cu))
21621                 {
21622                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21623                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21624                   if (!suppress_add)
21625                     list_to_add = cu->list_in_scope;
21626                 }
21627             }
21628           break;
21629         case DW_TAG_formal_parameter:
21630           /* If we are inside a function, mark this as an argument.  If
21631              not, we might be looking at an argument to an inlined function
21632              when we do not have enough information to show inlined frames;
21633              pretend it's a local variable in that case so that the user can
21634              still see it.  */
21635           if (context_stack_depth > 0
21636               && context_stack[context_stack_depth - 1].name != NULL)
21637             SYMBOL_IS_ARGUMENT (sym) = 1;
21638           attr = dwarf2_attr (die, DW_AT_location, cu);
21639           if (attr)
21640             {
21641               var_decode_location (attr, sym, cu);
21642             }
21643           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21644           if (attr)
21645             {
21646               dwarf2_const_value (attr, sym, cu);
21647             }
21648
21649           list_to_add = cu->list_in_scope;
21650           break;
21651         case DW_TAG_unspecified_parameters:
21652           /* From varargs functions; gdb doesn't seem to have any
21653              interest in this information, so just ignore it for now.
21654              (FIXME?) */
21655           break;
21656         case DW_TAG_template_type_param:
21657           suppress_add = 1;
21658           /* Fall through.  */
21659         case DW_TAG_class_type:
21660         case DW_TAG_interface_type:
21661         case DW_TAG_structure_type:
21662         case DW_TAG_union_type:
21663         case DW_TAG_set_type:
21664         case DW_TAG_enumeration_type:
21665           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21666           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21667
21668           {
21669             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21670                really ever be static objects: otherwise, if you try
21671                to, say, break of a class's method and you're in a file
21672                which doesn't mention that class, it won't work unless
21673                the check for all static symbols in lookup_symbol_aux
21674                saves you.  See the OtherFileClass tests in
21675                gdb.c++/namespace.exp.  */
21676
21677             if (!suppress_add)
21678               {
21679                 list_to_add = (cu->list_in_scope == &file_symbols
21680                                && cu->language == language_cplus
21681                                ? &global_symbols : cu->list_in_scope);
21682
21683                 /* The semantics of C++ state that "struct foo {
21684                    ... }" also defines a typedef for "foo".  */
21685                 if (cu->language == language_cplus
21686                     || cu->language == language_ada
21687                     || cu->language == language_d
21688                     || cu->language == language_rust)
21689                   {
21690                     /* The symbol's name is already allocated along
21691                        with this objfile, so we don't need to
21692                        duplicate it for the type.  */
21693                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21694                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21695                   }
21696               }
21697           }
21698           break;
21699         case DW_TAG_typedef:
21700           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21701           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21702           list_to_add = cu->list_in_scope;
21703           break;
21704         case DW_TAG_base_type:
21705         case DW_TAG_subrange_type:
21706           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21707           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21708           list_to_add = cu->list_in_scope;
21709           break;
21710         case DW_TAG_enumerator:
21711           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21712           if (attr)
21713             {
21714               dwarf2_const_value (attr, sym, cu);
21715             }
21716           {
21717             /* NOTE: carlton/2003-11-10: See comment above in the
21718                DW_TAG_class_type, etc. block.  */
21719
21720             list_to_add = (cu->list_in_scope == &file_symbols
21721                            && cu->language == language_cplus
21722                            ? &global_symbols : cu->list_in_scope);
21723           }
21724           break;
21725         case DW_TAG_imported_declaration:
21726         case DW_TAG_namespace:
21727           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21728           list_to_add = &global_symbols;
21729           break;
21730         case DW_TAG_module:
21731           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21732           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21733           list_to_add = &global_symbols;
21734           break;
21735         case DW_TAG_common_block:
21736           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21737           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21738           add_symbol_to_list (sym, cu->list_in_scope);
21739           break;
21740         default:
21741           /* Not a tag we recognize.  Hopefully we aren't processing
21742              trash data, but since we must specifically ignore things
21743              we don't recognize, there is nothing else we should do at
21744              this point.  */
21745           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
21746                      dwarf_tag_name (die->tag));
21747           break;
21748         }
21749
21750       if (suppress_add)
21751         {
21752           sym->hash_next = objfile->template_symbols;
21753           objfile->template_symbols = sym;
21754           list_to_add = NULL;
21755         }
21756
21757       if (list_to_add != NULL)
21758         add_symbol_to_list (sym, list_to_add);
21759
21760       /* For the benefit of old versions of GCC, check for anonymous
21761          namespaces based on the demangled name.  */
21762       if (!cu->processing_has_namespace_info
21763           && cu->language == language_cplus)
21764         cp_scan_for_anonymous_namespaces (sym, objfile);
21765     }
21766   return (sym);
21767 }
21768
21769 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
21770
21771 static struct symbol *
21772 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21773 {
21774   return new_symbol_full (die, type, cu, NULL);
21775 }
21776
21777 /* Given an attr with a DW_FORM_dataN value in host byte order,
21778    zero-extend it as appropriate for the symbol's type.  The DWARF
21779    standard (v4) is not entirely clear about the meaning of using
21780    DW_FORM_dataN for a constant with a signed type, where the type is
21781    wider than the data.  The conclusion of a discussion on the DWARF
21782    list was that this is unspecified.  We choose to always zero-extend
21783    because that is the interpretation long in use by GCC.  */
21784
21785 static gdb_byte *
21786 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21787                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21788 {
21789   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21790   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21791                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21792   LONGEST l = DW_UNSND (attr);
21793
21794   if (bits < sizeof (*value) * 8)
21795     {
21796       l &= ((LONGEST) 1 << bits) - 1;
21797       *value = l;
21798     }
21799   else if (bits == sizeof (*value) * 8)
21800     *value = l;
21801   else
21802     {
21803       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21804       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21805       return bytes;
21806     }
21807
21808   return NULL;
21809 }
21810
21811 /* Read a constant value from an attribute.  Either set *VALUE, or if
21812    the value does not fit in *VALUE, set *BYTES - either already
21813    allocated on the objfile obstack, or newly allocated on OBSTACK,
21814    or, set *BATON, if we translated the constant to a location
21815    expression.  */
21816
21817 static void
21818 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21819                          const char *name, struct obstack *obstack,
21820                          struct dwarf2_cu *cu,
21821                          LONGEST *value, const gdb_byte **bytes,
21822                          struct dwarf2_locexpr_baton **baton)
21823 {
21824   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21825   struct comp_unit_head *cu_header = &cu->header;
21826   struct dwarf_block *blk;
21827   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21828                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21829
21830   *value = 0;
21831   *bytes = NULL;
21832   *baton = NULL;
21833
21834   switch (attr->form)
21835     {
21836     case DW_FORM_addr:
21837     case DW_FORM_GNU_addr_index:
21838       {
21839         gdb_byte *data;
21840
21841         if (TYPE_LENGTH (type) != cu_header->addr_size)
21842           dwarf2_const_value_length_mismatch_complaint (name,
21843                                                         cu_header->addr_size,
21844                                                         TYPE_LENGTH (type));
21845         /* Symbols of this form are reasonably rare, so we just
21846            piggyback on the existing location code rather than writing
21847            a new implementation of symbol_computed_ops.  */
21848         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21849         (*baton)->per_cu = cu->per_cu;
21850         gdb_assert ((*baton)->per_cu);
21851
21852         (*baton)->size = 2 + cu_header->addr_size;
21853         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21854         (*baton)->data = data;
21855
21856         data[0] = DW_OP_addr;
21857         store_unsigned_integer (&data[1], cu_header->addr_size,
21858                                 byte_order, DW_ADDR (attr));
21859         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21860       }
21861       break;
21862     case DW_FORM_string:
21863     case DW_FORM_strp:
21864     case DW_FORM_GNU_str_index:
21865     case DW_FORM_GNU_strp_alt:
21866       /* DW_STRING is already allocated on the objfile obstack, point
21867          directly to it.  */
21868       *bytes = (const gdb_byte *) DW_STRING (attr);
21869       break;
21870     case DW_FORM_block1:
21871     case DW_FORM_block2:
21872     case DW_FORM_block4:
21873     case DW_FORM_block:
21874     case DW_FORM_exprloc:
21875     case DW_FORM_data16:
21876       blk = DW_BLOCK (attr);
21877       if (TYPE_LENGTH (type) != blk->size)
21878         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21879                                                       TYPE_LENGTH (type));
21880       *bytes = blk->data;
21881       break;
21882
21883       /* The DW_AT_const_value attributes are supposed to carry the
21884          symbol's value "represented as it would be on the target
21885          architecture."  By the time we get here, it's already been
21886          converted to host endianness, so we just need to sign- or
21887          zero-extend it as appropriate.  */
21888     case DW_FORM_data1:
21889       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21890       break;
21891     case DW_FORM_data2:
21892       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21893       break;
21894     case DW_FORM_data4:
21895       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21896       break;
21897     case DW_FORM_data8:
21898       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21899       break;
21900
21901     case DW_FORM_sdata:
21902     case DW_FORM_implicit_const:
21903       *value = DW_SND (attr);
21904       break;
21905
21906     case DW_FORM_udata:
21907       *value = DW_UNSND (attr);
21908       break;
21909
21910     default:
21911       complaint (&symfile_complaints,
21912                  _("unsupported const value attribute form: '%s'"),
21913                  dwarf_form_name (attr->form));
21914       *value = 0;
21915       break;
21916     }
21917 }
21918
21919
21920 /* Copy constant value from an attribute to a symbol.  */
21921
21922 static void
21923 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21924                     struct dwarf2_cu *cu)
21925 {
21926   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21927   LONGEST value;
21928   const gdb_byte *bytes;
21929   struct dwarf2_locexpr_baton *baton;
21930
21931   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21932                            SYMBOL_PRINT_NAME (sym),
21933                            &objfile->objfile_obstack, cu,
21934                            &value, &bytes, &baton);
21935
21936   if (baton != NULL)
21937     {
21938       SYMBOL_LOCATION_BATON (sym) = baton;
21939       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21940     }
21941   else if (bytes != NULL)
21942      {
21943       SYMBOL_VALUE_BYTES (sym) = bytes;
21944       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21945     }
21946   else
21947     {
21948       SYMBOL_VALUE (sym) = value;
21949       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21950     }
21951 }
21952
21953 /* Return the type of the die in question using its DW_AT_type attribute.  */
21954
21955 static struct type *
21956 die_type (struct die_info *die, struct dwarf2_cu *cu)
21957 {
21958   struct attribute *type_attr;
21959
21960   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21961   if (!type_attr)
21962     {
21963       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21964       /* A missing DW_AT_type represents a void type.  */
21965       return objfile_type (objfile)->builtin_void;
21966     }
21967
21968   return lookup_die_type (die, type_attr, cu);
21969 }
21970
21971 /* True iff CU's producer generates GNAT Ada auxiliary information
21972    that allows to find parallel types through that information instead
21973    of having to do expensive parallel lookups by type name.  */
21974
21975 static int
21976 need_gnat_info (struct dwarf2_cu *cu)
21977 {
21978   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
21979      of GNAT produces this auxiliary information, without any indication
21980      that it is produced.  Part of enhancing the FSF version of GNAT
21981      to produce that information will be to put in place an indicator
21982      that we can use in order to determine whether the descriptive type
21983      info is available or not.  One suggestion that has been made is
21984      to use a new attribute, attached to the CU die.  For now, assume
21985      that the descriptive type info is not available.  */
21986   return 0;
21987 }
21988
21989 /* Return the auxiliary type of the die in question using its
21990    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21991    attribute is not present.  */
21992
21993 static struct type *
21994 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21995 {
21996   struct attribute *type_attr;
21997
21998   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21999   if (!type_attr)
22000     return NULL;
22001
22002   return lookup_die_type (die, type_attr, cu);
22003 }
22004
22005 /* If DIE has a descriptive_type attribute, then set the TYPE's
22006    descriptive type accordingly.  */
22007
22008 static void
22009 set_descriptive_type (struct type *type, struct die_info *die,
22010                       struct dwarf2_cu *cu)
22011 {
22012   struct type *descriptive_type = die_descriptive_type (die, cu);
22013
22014   if (descriptive_type)
22015     {
22016       ALLOCATE_GNAT_AUX_TYPE (type);
22017       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22018     }
22019 }
22020
22021 /* Return the containing type of the die in question using its
22022    DW_AT_containing_type attribute.  */
22023
22024 static struct type *
22025 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22026 {
22027   struct attribute *type_attr;
22028   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22029
22030   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22031   if (!type_attr)
22032     error (_("Dwarf Error: Problem turning containing type into gdb type "
22033              "[in module %s]"), objfile_name (objfile));
22034
22035   return lookup_die_type (die, type_attr, cu);
22036 }
22037
22038 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22039
22040 static struct type *
22041 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22042 {
22043   struct dwarf2_per_objfile *dwarf2_per_objfile
22044     = cu->per_cu->dwarf2_per_objfile;
22045   struct objfile *objfile = dwarf2_per_objfile->objfile;
22046   char *message, *saved;
22047
22048   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
22049                         objfile_name (objfile),
22050                         to_underlying (cu->header.sect_off),
22051                         to_underlying (die->sect_off));
22052   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22053                                   message, strlen (message));
22054   xfree (message);
22055
22056   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22057 }
22058
22059 /* Look up the type of DIE in CU using its type attribute ATTR.
22060    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22061    DW_AT_containing_type.
22062    If there is no type substitute an error marker.  */
22063
22064 static struct type *
22065 lookup_die_type (struct die_info *die, const struct attribute *attr,
22066                  struct dwarf2_cu *cu)
22067 {
22068   struct dwarf2_per_objfile *dwarf2_per_objfile
22069     = cu->per_cu->dwarf2_per_objfile;
22070   struct objfile *objfile = dwarf2_per_objfile->objfile;
22071   struct type *this_type;
22072
22073   gdb_assert (attr->name == DW_AT_type
22074               || attr->name == DW_AT_GNAT_descriptive_type
22075               || attr->name == DW_AT_containing_type);
22076
22077   /* First see if we have it cached.  */
22078
22079   if (attr->form == DW_FORM_GNU_ref_alt)
22080     {
22081       struct dwarf2_per_cu_data *per_cu;
22082       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22083
22084       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22085                                                  dwarf2_per_objfile);
22086       this_type = get_die_type_at_offset (sect_off, per_cu);
22087     }
22088   else if (attr_form_is_ref (attr))
22089     {
22090       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22091
22092       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22093     }
22094   else if (attr->form == DW_FORM_ref_sig8)
22095     {
22096       ULONGEST signature = DW_SIGNATURE (attr);
22097
22098       return get_signatured_type (die, signature, cu);
22099     }
22100   else
22101     {
22102       complaint (&symfile_complaints,
22103                  _("Dwarf Error: Bad type attribute %s in DIE"
22104                    " at 0x%x [in module %s]"),
22105                  dwarf_attr_name (attr->name), to_underlying (die->sect_off),
22106                  objfile_name (objfile));
22107       return build_error_marker_type (cu, die);
22108     }
22109
22110   /* If not cached we need to read it in.  */
22111
22112   if (this_type == NULL)
22113     {
22114       struct die_info *type_die = NULL;
22115       struct dwarf2_cu *type_cu = cu;
22116
22117       if (attr_form_is_ref (attr))
22118         type_die = follow_die_ref (die, attr, &type_cu);
22119       if (type_die == NULL)
22120         return build_error_marker_type (cu, die);
22121       /* If we find the type now, it's probably because the type came
22122          from an inter-CU reference and the type's CU got expanded before
22123          ours.  */
22124       this_type = read_type_die (type_die, type_cu);
22125     }
22126
22127   /* If we still don't have a type use an error marker.  */
22128
22129   if (this_type == NULL)
22130     return build_error_marker_type (cu, die);
22131
22132   return this_type;
22133 }
22134
22135 /* Return the type in DIE, CU.
22136    Returns NULL for invalid types.
22137
22138    This first does a lookup in die_type_hash,
22139    and only reads the die in if necessary.
22140
22141    NOTE: This can be called when reading in partial or full symbols.  */
22142
22143 static struct type *
22144 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22145 {
22146   struct type *this_type;
22147
22148   this_type = get_die_type (die, cu);
22149   if (this_type)
22150     return this_type;
22151
22152   return read_type_die_1 (die, cu);
22153 }
22154
22155 /* Read the type in DIE, CU.
22156    Returns NULL for invalid types.  */
22157
22158 static struct type *
22159 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22160 {
22161   struct type *this_type = NULL;
22162
22163   switch (die->tag)
22164     {
22165     case DW_TAG_class_type:
22166     case DW_TAG_interface_type:
22167     case DW_TAG_structure_type:
22168     case DW_TAG_union_type:
22169       this_type = read_structure_type (die, cu);
22170       break;
22171     case DW_TAG_enumeration_type:
22172       this_type = read_enumeration_type (die, cu);
22173       break;
22174     case DW_TAG_subprogram:
22175     case DW_TAG_subroutine_type:
22176     case DW_TAG_inlined_subroutine:
22177       this_type = read_subroutine_type (die, cu);
22178       break;
22179     case DW_TAG_array_type:
22180       this_type = read_array_type (die, cu);
22181       break;
22182     case DW_TAG_set_type:
22183       this_type = read_set_type (die, cu);
22184       break;
22185     case DW_TAG_pointer_type:
22186       this_type = read_tag_pointer_type (die, cu);
22187       break;
22188     case DW_TAG_ptr_to_member_type:
22189       this_type = read_tag_ptr_to_member_type (die, cu);
22190       break;
22191     case DW_TAG_reference_type:
22192       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22193       break;
22194     case DW_TAG_rvalue_reference_type:
22195       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22196       break;
22197     case DW_TAG_const_type:
22198       this_type = read_tag_const_type (die, cu);
22199       break;
22200     case DW_TAG_volatile_type:
22201       this_type = read_tag_volatile_type (die, cu);
22202       break;
22203     case DW_TAG_restrict_type:
22204       this_type = read_tag_restrict_type (die, cu);
22205       break;
22206     case DW_TAG_string_type:
22207       this_type = read_tag_string_type (die, cu);
22208       break;
22209     case DW_TAG_typedef:
22210       this_type = read_typedef (die, cu);
22211       break;
22212     case DW_TAG_subrange_type:
22213       this_type = read_subrange_type (die, cu);
22214       break;
22215     case DW_TAG_base_type:
22216       this_type = read_base_type (die, cu);
22217       break;
22218     case DW_TAG_unspecified_type:
22219       this_type = read_unspecified_type (die, cu);
22220       break;
22221     case DW_TAG_namespace:
22222       this_type = read_namespace_type (die, cu);
22223       break;
22224     case DW_TAG_module:
22225       this_type = read_module_type (die, cu);
22226       break;
22227     case DW_TAG_atomic_type:
22228       this_type = read_tag_atomic_type (die, cu);
22229       break;
22230     default:
22231       complaint (&symfile_complaints,
22232                  _("unexpected tag in read_type_die: '%s'"),
22233                  dwarf_tag_name (die->tag));
22234       break;
22235     }
22236
22237   return this_type;
22238 }
22239
22240 /* See if we can figure out if the class lives in a namespace.  We do
22241    this by looking for a member function; its demangled name will
22242    contain namespace info, if there is any.
22243    Return the computed name or NULL.
22244    Space for the result is allocated on the objfile's obstack.
22245    This is the full-die version of guess_partial_die_structure_name.
22246    In this case we know DIE has no useful parent.  */
22247
22248 static char *
22249 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22250 {
22251   struct die_info *spec_die;
22252   struct dwarf2_cu *spec_cu;
22253   struct die_info *child;
22254   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22255
22256   spec_cu = cu;
22257   spec_die = die_specification (die, &spec_cu);
22258   if (spec_die != NULL)
22259     {
22260       die = spec_die;
22261       cu = spec_cu;
22262     }
22263
22264   for (child = die->child;
22265        child != NULL;
22266        child = child->sibling)
22267     {
22268       if (child->tag == DW_TAG_subprogram)
22269         {
22270           const char *linkage_name = dw2_linkage_name (child, cu);
22271
22272           if (linkage_name != NULL)
22273             {
22274               char *actual_name
22275                 = language_class_name_from_physname (cu->language_defn,
22276                                                      linkage_name);
22277               char *name = NULL;
22278
22279               if (actual_name != NULL)
22280                 {
22281                   const char *die_name = dwarf2_name (die, cu);
22282
22283                   if (die_name != NULL
22284                       && strcmp (die_name, actual_name) != 0)
22285                     {
22286                       /* Strip off the class name from the full name.
22287                          We want the prefix.  */
22288                       int die_name_len = strlen (die_name);
22289                       int actual_name_len = strlen (actual_name);
22290
22291                       /* Test for '::' as a sanity check.  */
22292                       if (actual_name_len > die_name_len + 2
22293                           && actual_name[actual_name_len
22294                                          - die_name_len - 1] == ':')
22295                         name = (char *) obstack_copy0 (
22296                           &objfile->per_bfd->storage_obstack,
22297                           actual_name, actual_name_len - die_name_len - 2);
22298                     }
22299                 }
22300               xfree (actual_name);
22301               return name;
22302             }
22303         }
22304     }
22305
22306   return NULL;
22307 }
22308
22309 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22310    prefix part in such case.  See
22311    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22312
22313 static const char *
22314 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22315 {
22316   struct attribute *attr;
22317   const char *base;
22318
22319   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22320       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22321     return NULL;
22322
22323   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22324     return NULL;
22325
22326   attr = dw2_linkage_name_attr (die, cu);
22327   if (attr == NULL || DW_STRING (attr) == NULL)
22328     return NULL;
22329
22330   /* dwarf2_name had to be already called.  */
22331   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22332
22333   /* Strip the base name, keep any leading namespaces/classes.  */
22334   base = strrchr (DW_STRING (attr), ':');
22335   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22336     return "";
22337
22338   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22339   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22340                                  DW_STRING (attr),
22341                                  &base[-1] - DW_STRING (attr));
22342 }
22343
22344 /* Return the name of the namespace/class that DIE is defined within,
22345    or "" if we can't tell.  The caller should not xfree the result.
22346
22347    For example, if we're within the method foo() in the following
22348    code:
22349
22350    namespace N {
22351      class C {
22352        void foo () {
22353        }
22354      };
22355    }
22356
22357    then determine_prefix on foo's die will return "N::C".  */
22358
22359 static const char *
22360 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22361 {
22362   struct dwarf2_per_objfile *dwarf2_per_objfile
22363     = cu->per_cu->dwarf2_per_objfile;
22364   struct die_info *parent, *spec_die;
22365   struct dwarf2_cu *spec_cu;
22366   struct type *parent_type;
22367   const char *retval;
22368
22369   if (cu->language != language_cplus
22370       && cu->language != language_fortran && cu->language != language_d
22371       && cu->language != language_rust)
22372     return "";
22373
22374   retval = anonymous_struct_prefix (die, cu);
22375   if (retval)
22376     return retval;
22377
22378   /* We have to be careful in the presence of DW_AT_specification.
22379      For example, with GCC 3.4, given the code
22380
22381      namespace N {
22382        void foo() {
22383          // Definition of N::foo.
22384        }
22385      }
22386
22387      then we'll have a tree of DIEs like this:
22388
22389      1: DW_TAG_compile_unit
22390        2: DW_TAG_namespace        // N
22391          3: DW_TAG_subprogram     // declaration of N::foo
22392        4: DW_TAG_subprogram       // definition of N::foo
22393             DW_AT_specification   // refers to die #3
22394
22395      Thus, when processing die #4, we have to pretend that we're in
22396      the context of its DW_AT_specification, namely the contex of die
22397      #3.  */
22398   spec_cu = cu;
22399   spec_die = die_specification (die, &spec_cu);
22400   if (spec_die == NULL)
22401     parent = die->parent;
22402   else
22403     {
22404       parent = spec_die->parent;
22405       cu = spec_cu;
22406     }
22407
22408   if (parent == NULL)
22409     return "";
22410   else if (parent->building_fullname)
22411     {
22412       const char *name;
22413       const char *parent_name;
22414
22415       /* It has been seen on RealView 2.2 built binaries,
22416          DW_TAG_template_type_param types actually _defined_ as
22417          children of the parent class:
22418
22419          enum E {};
22420          template class <class Enum> Class{};
22421          Class<enum E> class_e;
22422
22423          1: DW_TAG_class_type (Class)
22424            2: DW_TAG_enumeration_type (E)
22425              3: DW_TAG_enumerator (enum1:0)
22426              3: DW_TAG_enumerator (enum2:1)
22427              ...
22428            2: DW_TAG_template_type_param
22429               DW_AT_type  DW_FORM_ref_udata (E)
22430
22431          Besides being broken debug info, it can put GDB into an
22432          infinite loop.  Consider:
22433
22434          When we're building the full name for Class<E>, we'll start
22435          at Class, and go look over its template type parameters,
22436          finding E.  We'll then try to build the full name of E, and
22437          reach here.  We're now trying to build the full name of E,
22438          and look over the parent DIE for containing scope.  In the
22439          broken case, if we followed the parent DIE of E, we'd again
22440          find Class, and once again go look at its template type
22441          arguments, etc., etc.  Simply don't consider such parent die
22442          as source-level parent of this die (it can't be, the language
22443          doesn't allow it), and break the loop here.  */
22444       name = dwarf2_name (die, cu);
22445       parent_name = dwarf2_name (parent, cu);
22446       complaint (&symfile_complaints,
22447                  _("template param type '%s' defined within parent '%s'"),
22448                  name ? name : "<unknown>",
22449                  parent_name ? parent_name : "<unknown>");
22450       return "";
22451     }
22452   else
22453     switch (parent->tag)
22454       {
22455       case DW_TAG_namespace:
22456         parent_type = read_type_die (parent, cu);
22457         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22458            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22459            Work around this problem here.  */
22460         if (cu->language == language_cplus
22461             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
22462           return "";
22463         /* We give a name to even anonymous namespaces.  */
22464         return TYPE_TAG_NAME (parent_type);
22465       case DW_TAG_class_type:
22466       case DW_TAG_interface_type:
22467       case DW_TAG_structure_type:
22468       case DW_TAG_union_type:
22469       case DW_TAG_module:
22470         parent_type = read_type_die (parent, cu);
22471         if (TYPE_TAG_NAME (parent_type) != NULL)
22472           return TYPE_TAG_NAME (parent_type);
22473         else
22474           /* An anonymous structure is only allowed non-static data
22475              members; no typedefs, no member functions, et cetera.
22476              So it does not need a prefix.  */
22477           return "";
22478       case DW_TAG_compile_unit:
22479       case DW_TAG_partial_unit:
22480         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22481         if (cu->language == language_cplus
22482             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22483             && die->child != NULL
22484             && (die->tag == DW_TAG_class_type
22485                 || die->tag == DW_TAG_structure_type
22486                 || die->tag == DW_TAG_union_type))
22487           {
22488             char *name = guess_full_die_structure_name (die, cu);
22489             if (name != NULL)
22490               return name;
22491           }
22492         return "";
22493       case DW_TAG_enumeration_type:
22494         parent_type = read_type_die (parent, cu);
22495         if (TYPE_DECLARED_CLASS (parent_type))
22496           {
22497             if (TYPE_TAG_NAME (parent_type) != NULL)
22498               return TYPE_TAG_NAME (parent_type);
22499             return "";
22500           }
22501         /* Fall through.  */
22502       default:
22503         return determine_prefix (parent, cu);
22504       }
22505 }
22506
22507 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22508    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22509    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22510    an obconcat, otherwise allocate storage for the result.  The CU argument is
22511    used to determine the language and hence, the appropriate separator.  */
22512
22513 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22514
22515 static char *
22516 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22517                  int physname, struct dwarf2_cu *cu)
22518 {
22519   const char *lead = "";
22520   const char *sep;
22521
22522   if (suffix == NULL || suffix[0] == '\0'
22523       || prefix == NULL || prefix[0] == '\0')
22524     sep = "";
22525   else if (cu->language == language_d)
22526     {
22527       /* For D, the 'main' function could be defined in any module, but it
22528          should never be prefixed.  */
22529       if (strcmp (suffix, "D main") == 0)
22530         {
22531           prefix = "";
22532           sep = "";
22533         }
22534       else
22535         sep = ".";
22536     }
22537   else if (cu->language == language_fortran && physname)
22538     {
22539       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22540          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22541
22542       lead = "__";
22543       sep = "_MOD_";
22544     }
22545   else
22546     sep = "::";
22547
22548   if (prefix == NULL)
22549     prefix = "";
22550   if (suffix == NULL)
22551     suffix = "";
22552
22553   if (obs == NULL)
22554     {
22555       char *retval
22556         = ((char *)
22557            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22558
22559       strcpy (retval, lead);
22560       strcat (retval, prefix);
22561       strcat (retval, sep);
22562       strcat (retval, suffix);
22563       return retval;
22564     }
22565   else
22566     {
22567       /* We have an obstack.  */
22568       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22569     }
22570 }
22571
22572 /* Return sibling of die, NULL if no sibling.  */
22573
22574 static struct die_info *
22575 sibling_die (struct die_info *die)
22576 {
22577   return die->sibling;
22578 }
22579
22580 /* Get name of a die, return NULL if not found.  */
22581
22582 static const char *
22583 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22584                           struct obstack *obstack)
22585 {
22586   if (name && cu->language == language_cplus)
22587     {
22588       std::string canon_name = cp_canonicalize_string (name);
22589
22590       if (!canon_name.empty ())
22591         {
22592           if (canon_name != name)
22593             name = (const char *) obstack_copy0 (obstack,
22594                                                  canon_name.c_str (),
22595                                                  canon_name.length ());
22596         }
22597     }
22598
22599   return name;
22600 }
22601
22602 /* Get name of a die, return NULL if not found.
22603    Anonymous namespaces are converted to their magic string.  */
22604
22605 static const char *
22606 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22607 {
22608   struct attribute *attr;
22609   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22610
22611   attr = dwarf2_attr (die, DW_AT_name, cu);
22612   if ((!attr || !DW_STRING (attr))
22613       && die->tag != DW_TAG_namespace
22614       && die->tag != DW_TAG_class_type
22615       && die->tag != DW_TAG_interface_type
22616       && die->tag != DW_TAG_structure_type
22617       && die->tag != DW_TAG_union_type)
22618     return NULL;
22619
22620   switch (die->tag)
22621     {
22622     case DW_TAG_compile_unit:
22623     case DW_TAG_partial_unit:
22624       /* Compilation units have a DW_AT_name that is a filename, not
22625          a source language identifier.  */
22626     case DW_TAG_enumeration_type:
22627     case DW_TAG_enumerator:
22628       /* These tags always have simple identifiers already; no need
22629          to canonicalize them.  */
22630       return DW_STRING (attr);
22631
22632     case DW_TAG_namespace:
22633       if (attr != NULL && DW_STRING (attr) != NULL)
22634         return DW_STRING (attr);
22635       return CP_ANONYMOUS_NAMESPACE_STR;
22636
22637     case DW_TAG_class_type:
22638     case DW_TAG_interface_type:
22639     case DW_TAG_structure_type:
22640     case DW_TAG_union_type:
22641       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22642          structures or unions.  These were of the form "._%d" in GCC 4.1,
22643          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22644          and GCC 4.4.  We work around this problem by ignoring these.  */
22645       if (attr && DW_STRING (attr)
22646           && (startswith (DW_STRING (attr), "._")
22647               || startswith (DW_STRING (attr), "<anonymous")))
22648         return NULL;
22649
22650       /* GCC might emit a nameless typedef that has a linkage name.  See
22651          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22652       if (!attr || DW_STRING (attr) == NULL)
22653         {
22654           char *demangled = NULL;
22655
22656           attr = dw2_linkage_name_attr (die, cu);
22657           if (attr == NULL || DW_STRING (attr) == NULL)
22658             return NULL;
22659
22660           /* Avoid demangling DW_STRING (attr) the second time on a second
22661              call for the same DIE.  */
22662           if (!DW_STRING_IS_CANONICAL (attr))
22663             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22664
22665           if (demangled)
22666             {
22667               const char *base;
22668
22669               /* FIXME: we already did this for the partial symbol... */
22670               DW_STRING (attr)
22671                 = ((const char *)
22672                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22673                                   demangled, strlen (demangled)));
22674               DW_STRING_IS_CANONICAL (attr) = 1;
22675               xfree (demangled);
22676
22677               /* Strip any leading namespaces/classes, keep only the base name.
22678                  DW_AT_name for named DIEs does not contain the prefixes.  */
22679               base = strrchr (DW_STRING (attr), ':');
22680               if (base && base > DW_STRING (attr) && base[-1] == ':')
22681                 return &base[1];
22682               else
22683                 return DW_STRING (attr);
22684             }
22685         }
22686       break;
22687
22688     default:
22689       break;
22690     }
22691
22692   if (!DW_STRING_IS_CANONICAL (attr))
22693     {
22694       DW_STRING (attr)
22695         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22696                                     &objfile->per_bfd->storage_obstack);
22697       DW_STRING_IS_CANONICAL (attr) = 1;
22698     }
22699   return DW_STRING (attr);
22700 }
22701
22702 /* Return the die that this die in an extension of, or NULL if there
22703    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22704    containing the return value on output.  */
22705
22706 static struct die_info *
22707 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22708 {
22709   struct attribute *attr;
22710
22711   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22712   if (attr == NULL)
22713     return NULL;
22714
22715   return follow_die_ref (die, attr, ext_cu);
22716 }
22717
22718 /* Convert a DIE tag into its string name.  */
22719
22720 static const char *
22721 dwarf_tag_name (unsigned tag)
22722 {
22723   const char *name = get_DW_TAG_name (tag);
22724
22725   if (name == NULL)
22726     return "DW_TAG_<unknown>";
22727
22728   return name;
22729 }
22730
22731 /* Convert a DWARF attribute code into its string name.  */
22732
22733 static const char *
22734 dwarf_attr_name (unsigned attr)
22735 {
22736   const char *name;
22737
22738 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22739   if (attr == DW_AT_MIPS_fde)
22740     return "DW_AT_MIPS_fde";
22741 #else
22742   if (attr == DW_AT_HP_block_index)
22743     return "DW_AT_HP_block_index";
22744 #endif
22745
22746   name = get_DW_AT_name (attr);
22747
22748   if (name == NULL)
22749     return "DW_AT_<unknown>";
22750
22751   return name;
22752 }
22753
22754 /* Convert a DWARF value form code into its string name.  */
22755
22756 static const char *
22757 dwarf_form_name (unsigned form)
22758 {
22759   const char *name = get_DW_FORM_name (form);
22760
22761   if (name == NULL)
22762     return "DW_FORM_<unknown>";
22763
22764   return name;
22765 }
22766
22767 static const char *
22768 dwarf_bool_name (unsigned mybool)
22769 {
22770   if (mybool)
22771     return "TRUE";
22772   else
22773     return "FALSE";
22774 }
22775
22776 /* Convert a DWARF type code into its string name.  */
22777
22778 static const char *
22779 dwarf_type_encoding_name (unsigned enc)
22780 {
22781   const char *name = get_DW_ATE_name (enc);
22782
22783   if (name == NULL)
22784     return "DW_ATE_<unknown>";
22785
22786   return name;
22787 }
22788
22789 static void
22790 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22791 {
22792   unsigned int i;
22793
22794   print_spaces (indent, f);
22795   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
22796                       dwarf_tag_name (die->tag), die->abbrev,
22797                       to_underlying (die->sect_off));
22798
22799   if (die->parent != NULL)
22800     {
22801       print_spaces (indent, f);
22802       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
22803                           to_underlying (die->parent->sect_off));
22804     }
22805
22806   print_spaces (indent, f);
22807   fprintf_unfiltered (f, "  has children: %s\n",
22808            dwarf_bool_name (die->child != NULL));
22809
22810   print_spaces (indent, f);
22811   fprintf_unfiltered (f, "  attributes:\n");
22812
22813   for (i = 0; i < die->num_attrs; ++i)
22814     {
22815       print_spaces (indent, f);
22816       fprintf_unfiltered (f, "    %s (%s) ",
22817                dwarf_attr_name (die->attrs[i].name),
22818                dwarf_form_name (die->attrs[i].form));
22819
22820       switch (die->attrs[i].form)
22821         {
22822         case DW_FORM_addr:
22823         case DW_FORM_GNU_addr_index:
22824           fprintf_unfiltered (f, "address: ");
22825           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22826           break;
22827         case DW_FORM_block2:
22828         case DW_FORM_block4:
22829         case DW_FORM_block:
22830         case DW_FORM_block1:
22831           fprintf_unfiltered (f, "block: size %s",
22832                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22833           break;
22834         case DW_FORM_exprloc:
22835           fprintf_unfiltered (f, "expression: size %s",
22836                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22837           break;
22838         case DW_FORM_data16:
22839           fprintf_unfiltered (f, "constant of 16 bytes");
22840           break;
22841         case DW_FORM_ref_addr:
22842           fprintf_unfiltered (f, "ref address: ");
22843           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22844           break;
22845         case DW_FORM_GNU_ref_alt:
22846           fprintf_unfiltered (f, "alt ref address: ");
22847           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22848           break;
22849         case DW_FORM_ref1:
22850         case DW_FORM_ref2:
22851         case DW_FORM_ref4:
22852         case DW_FORM_ref8:
22853         case DW_FORM_ref_udata:
22854           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22855                               (long) (DW_UNSND (&die->attrs[i])));
22856           break;
22857         case DW_FORM_data1:
22858         case DW_FORM_data2:
22859         case DW_FORM_data4:
22860         case DW_FORM_data8:
22861         case DW_FORM_udata:
22862         case DW_FORM_sdata:
22863           fprintf_unfiltered (f, "constant: %s",
22864                               pulongest (DW_UNSND (&die->attrs[i])));
22865           break;
22866         case DW_FORM_sec_offset:
22867           fprintf_unfiltered (f, "section offset: %s",
22868                               pulongest (DW_UNSND (&die->attrs[i])));
22869           break;
22870         case DW_FORM_ref_sig8:
22871           fprintf_unfiltered (f, "signature: %s",
22872                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22873           break;
22874         case DW_FORM_string:
22875         case DW_FORM_strp:
22876         case DW_FORM_line_strp:
22877         case DW_FORM_GNU_str_index:
22878         case DW_FORM_GNU_strp_alt:
22879           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22880                    DW_STRING (&die->attrs[i])
22881                    ? DW_STRING (&die->attrs[i]) : "",
22882                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22883           break;
22884         case DW_FORM_flag:
22885           if (DW_UNSND (&die->attrs[i]))
22886             fprintf_unfiltered (f, "flag: TRUE");
22887           else
22888             fprintf_unfiltered (f, "flag: FALSE");
22889           break;
22890         case DW_FORM_flag_present:
22891           fprintf_unfiltered (f, "flag: TRUE");
22892           break;
22893         case DW_FORM_indirect:
22894           /* The reader will have reduced the indirect form to
22895              the "base form" so this form should not occur.  */
22896           fprintf_unfiltered (f, 
22897                               "unexpected attribute form: DW_FORM_indirect");
22898           break;
22899         case DW_FORM_implicit_const:
22900           fprintf_unfiltered (f, "constant: %s",
22901                               plongest (DW_SND (&die->attrs[i])));
22902           break;
22903         default:
22904           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22905                    die->attrs[i].form);
22906           break;
22907         }
22908       fprintf_unfiltered (f, "\n");
22909     }
22910 }
22911
22912 static void
22913 dump_die_for_error (struct die_info *die)
22914 {
22915   dump_die_shallow (gdb_stderr, 0, die);
22916 }
22917
22918 static void
22919 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22920 {
22921   int indent = level * 4;
22922
22923   gdb_assert (die != NULL);
22924
22925   if (level >= max_level)
22926     return;
22927
22928   dump_die_shallow (f, indent, die);
22929
22930   if (die->child != NULL)
22931     {
22932       print_spaces (indent, f);
22933       fprintf_unfiltered (f, "  Children:");
22934       if (level + 1 < max_level)
22935         {
22936           fprintf_unfiltered (f, "\n");
22937           dump_die_1 (f, level + 1, max_level, die->child);
22938         }
22939       else
22940         {
22941           fprintf_unfiltered (f,
22942                               " [not printed, max nesting level reached]\n");
22943         }
22944     }
22945
22946   if (die->sibling != NULL && level > 0)
22947     {
22948       dump_die_1 (f, level, max_level, die->sibling);
22949     }
22950 }
22951
22952 /* This is called from the pdie macro in gdbinit.in.
22953    It's not static so gcc will keep a copy callable from gdb.  */
22954
22955 void
22956 dump_die (struct die_info *die, int max_level)
22957 {
22958   dump_die_1 (gdb_stdlog, 0, max_level, die);
22959 }
22960
22961 static void
22962 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22963 {
22964   void **slot;
22965
22966   slot = htab_find_slot_with_hash (cu->die_hash, die,
22967                                    to_underlying (die->sect_off),
22968                                    INSERT);
22969
22970   *slot = die;
22971 }
22972
22973 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22974    required kind.  */
22975
22976 static sect_offset
22977 dwarf2_get_ref_die_offset (const struct attribute *attr)
22978 {
22979   if (attr_form_is_ref (attr))
22980     return (sect_offset) DW_UNSND (attr);
22981
22982   complaint (&symfile_complaints,
22983              _("unsupported die ref attribute form: '%s'"),
22984              dwarf_form_name (attr->form));
22985   return {};
22986 }
22987
22988 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22989  * the value held by the attribute is not constant.  */
22990
22991 static LONGEST
22992 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22993 {
22994   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22995     return DW_SND (attr);
22996   else if (attr->form == DW_FORM_udata
22997            || attr->form == DW_FORM_data1
22998            || attr->form == DW_FORM_data2
22999            || attr->form == DW_FORM_data4
23000            || attr->form == DW_FORM_data8)
23001     return DW_UNSND (attr);
23002   else
23003     {
23004       /* For DW_FORM_data16 see attr_form_is_constant.  */
23005       complaint (&symfile_complaints,
23006                  _("Attribute value is not a constant (%s)"),
23007                  dwarf_form_name (attr->form));
23008       return default_value;
23009     }
23010 }
23011
23012 /* Follow reference or signature attribute ATTR of SRC_DIE.
23013    On entry *REF_CU is the CU of SRC_DIE.
23014    On exit *REF_CU is the CU of the result.  */
23015
23016 static struct die_info *
23017 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23018                        struct dwarf2_cu **ref_cu)
23019 {
23020   struct die_info *die;
23021
23022   if (attr_form_is_ref (attr))
23023     die = follow_die_ref (src_die, attr, ref_cu);
23024   else if (attr->form == DW_FORM_ref_sig8)
23025     die = follow_die_sig (src_die, attr, ref_cu);
23026   else
23027     {
23028       dump_die_for_error (src_die);
23029       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23030              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23031     }
23032
23033   return die;
23034 }
23035
23036 /* Follow reference OFFSET.
23037    On entry *REF_CU is the CU of the source die referencing OFFSET.
23038    On exit *REF_CU is the CU of the result.
23039    Returns NULL if OFFSET is invalid.  */
23040
23041 static struct die_info *
23042 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23043                    struct dwarf2_cu **ref_cu)
23044 {
23045   struct die_info temp_die;
23046   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23047   struct dwarf2_per_objfile *dwarf2_per_objfile
23048     = cu->per_cu->dwarf2_per_objfile;
23049   struct objfile *objfile = dwarf2_per_objfile->objfile;
23050
23051   gdb_assert (cu->per_cu != NULL);
23052
23053   target_cu = cu;
23054
23055   if (cu->per_cu->is_debug_types)
23056     {
23057       /* .debug_types CUs cannot reference anything outside their CU.
23058          If they need to, they have to reference a signatured type via
23059          DW_FORM_ref_sig8.  */
23060       if (!offset_in_cu_p (&cu->header, sect_off))
23061         return NULL;
23062     }
23063   else if (offset_in_dwz != cu->per_cu->is_dwz
23064            || !offset_in_cu_p (&cu->header, sect_off))
23065     {
23066       struct dwarf2_per_cu_data *per_cu;
23067
23068       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23069                                                  dwarf2_per_objfile);
23070
23071       /* If necessary, add it to the queue and load its DIEs.  */
23072       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23073         load_full_comp_unit (per_cu, cu->language);
23074
23075       target_cu = per_cu->cu;
23076     }
23077   else if (cu->dies == NULL)
23078     {
23079       /* We're loading full DIEs during partial symbol reading.  */
23080       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23081       load_full_comp_unit (cu->per_cu, language_minimal);
23082     }
23083
23084   *ref_cu = target_cu;
23085   temp_die.sect_off = sect_off;
23086   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23087                                                   &temp_die,
23088                                                   to_underlying (sect_off));
23089 }
23090
23091 /* Follow reference attribute ATTR of SRC_DIE.
23092    On entry *REF_CU is the CU of SRC_DIE.
23093    On exit *REF_CU is the CU of the result.  */
23094
23095 static struct die_info *
23096 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23097                 struct dwarf2_cu **ref_cu)
23098 {
23099   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23100   struct dwarf2_cu *cu = *ref_cu;
23101   struct die_info *die;
23102
23103   die = follow_die_offset (sect_off,
23104                            (attr->form == DW_FORM_GNU_ref_alt
23105                             || cu->per_cu->is_dwz),
23106                            ref_cu);
23107   if (!die)
23108     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
23109            "at 0x%x [in module %s]"),
23110            to_underlying (sect_off), to_underlying (src_die->sect_off),
23111            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23112
23113   return die;
23114 }
23115
23116 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23117    Returned value is intended for DW_OP_call*.  Returned
23118    dwarf2_locexpr_baton->data has lifetime of
23119    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23120
23121 struct dwarf2_locexpr_baton
23122 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23123                                struct dwarf2_per_cu_data *per_cu,
23124                                CORE_ADDR (*get_frame_pc) (void *baton),
23125                                void *baton)
23126 {
23127   struct dwarf2_cu *cu;
23128   struct die_info *die;
23129   struct attribute *attr;
23130   struct dwarf2_locexpr_baton retval;
23131   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23132   struct dwarf2_per_objfile *dwarf2_per_objfile
23133     = get_dwarf2_per_objfile (objfile);
23134
23135   if (per_cu->cu == NULL)
23136     load_cu (per_cu);
23137   cu = per_cu->cu;
23138   if (cu == NULL)
23139     {
23140       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23141          Instead just throw an error, not much else we can do.  */
23142       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
23143              to_underlying (sect_off), objfile_name (objfile));
23144     }
23145
23146   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23147   if (!die)
23148     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
23149            to_underlying (sect_off), objfile_name (objfile));
23150
23151   attr = dwarf2_attr (die, DW_AT_location, cu);
23152   if (!attr)
23153     {
23154       /* DWARF: "If there is no such attribute, then there is no effect.".
23155          DATA is ignored if SIZE is 0.  */
23156
23157       retval.data = NULL;
23158       retval.size = 0;
23159     }
23160   else if (attr_form_is_section_offset (attr))
23161     {
23162       struct dwarf2_loclist_baton loclist_baton;
23163       CORE_ADDR pc = (*get_frame_pc) (baton);
23164       size_t size;
23165
23166       fill_in_loclist_baton (cu, &loclist_baton, attr);
23167
23168       retval.data = dwarf2_find_location_expression (&loclist_baton,
23169                                                      &size, pc);
23170       retval.size = size;
23171     }
23172   else
23173     {
23174       if (!attr_form_is_block (attr))
23175         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
23176                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23177                to_underlying (sect_off), objfile_name (objfile));
23178
23179       retval.data = DW_BLOCK (attr)->data;
23180       retval.size = DW_BLOCK (attr)->size;
23181     }
23182   retval.per_cu = cu->per_cu;
23183
23184   age_cached_comp_units (dwarf2_per_objfile);
23185
23186   return retval;
23187 }
23188
23189 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23190    offset.  */
23191
23192 struct dwarf2_locexpr_baton
23193 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23194                              struct dwarf2_per_cu_data *per_cu,
23195                              CORE_ADDR (*get_frame_pc) (void *baton),
23196                              void *baton)
23197 {
23198   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23199
23200   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23201 }
23202
23203 /* Write a constant of a given type as target-ordered bytes into
23204    OBSTACK.  */
23205
23206 static const gdb_byte *
23207 write_constant_as_bytes (struct obstack *obstack,
23208                          enum bfd_endian byte_order,
23209                          struct type *type,
23210                          ULONGEST value,
23211                          LONGEST *len)
23212 {
23213   gdb_byte *result;
23214
23215   *len = TYPE_LENGTH (type);
23216   result = (gdb_byte *) obstack_alloc (obstack, *len);
23217   store_unsigned_integer (result, *len, byte_order, value);
23218
23219   return result;
23220 }
23221
23222 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23223    pointer to the constant bytes and set LEN to the length of the
23224    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23225    does not have a DW_AT_const_value, return NULL.  */
23226
23227 const gdb_byte *
23228 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23229                              struct dwarf2_per_cu_data *per_cu,
23230                              struct obstack *obstack,
23231                              LONGEST *len)
23232 {
23233   struct dwarf2_cu *cu;
23234   struct die_info *die;
23235   struct attribute *attr;
23236   const gdb_byte *result = NULL;
23237   struct type *type;
23238   LONGEST value;
23239   enum bfd_endian byte_order;
23240   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23241
23242   if (per_cu->cu == NULL)
23243     load_cu (per_cu);
23244   cu = per_cu->cu;
23245   if (cu == NULL)
23246     {
23247       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23248          Instead just throw an error, not much else we can do.  */
23249       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
23250              to_underlying (sect_off), objfile_name (objfile));
23251     }
23252
23253   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23254   if (!die)
23255     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
23256            to_underlying (sect_off), objfile_name (objfile));
23257
23258
23259   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23260   if (attr == NULL)
23261     return NULL;
23262
23263   byte_order = (bfd_big_endian (objfile->obfd)
23264                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23265
23266   switch (attr->form)
23267     {
23268     case DW_FORM_addr:
23269     case DW_FORM_GNU_addr_index:
23270       {
23271         gdb_byte *tem;
23272
23273         *len = cu->header.addr_size;
23274         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23275         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23276         result = tem;
23277       }
23278       break;
23279     case DW_FORM_string:
23280     case DW_FORM_strp:
23281     case DW_FORM_GNU_str_index:
23282     case DW_FORM_GNU_strp_alt:
23283       /* DW_STRING is already allocated on the objfile obstack, point
23284          directly to it.  */
23285       result = (const gdb_byte *) DW_STRING (attr);
23286       *len = strlen (DW_STRING (attr));
23287       break;
23288     case DW_FORM_block1:
23289     case DW_FORM_block2:
23290     case DW_FORM_block4:
23291     case DW_FORM_block:
23292     case DW_FORM_exprloc:
23293     case DW_FORM_data16:
23294       result = DW_BLOCK (attr)->data;
23295       *len = DW_BLOCK (attr)->size;
23296       break;
23297
23298       /* The DW_AT_const_value attributes are supposed to carry the
23299          symbol's value "represented as it would be on the target
23300          architecture."  By the time we get here, it's already been
23301          converted to host endianness, so we just need to sign- or
23302          zero-extend it as appropriate.  */
23303     case DW_FORM_data1:
23304       type = die_type (die, cu);
23305       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23306       if (result == NULL)
23307         result = write_constant_as_bytes (obstack, byte_order,
23308                                           type, value, len);
23309       break;
23310     case DW_FORM_data2:
23311       type = die_type (die, cu);
23312       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23313       if (result == NULL)
23314         result = write_constant_as_bytes (obstack, byte_order,
23315                                           type, value, len);
23316       break;
23317     case DW_FORM_data4:
23318       type = die_type (die, cu);
23319       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23320       if (result == NULL)
23321         result = write_constant_as_bytes (obstack, byte_order,
23322                                           type, value, len);
23323       break;
23324     case DW_FORM_data8:
23325       type = die_type (die, cu);
23326       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23327       if (result == NULL)
23328         result = write_constant_as_bytes (obstack, byte_order,
23329                                           type, value, len);
23330       break;
23331
23332     case DW_FORM_sdata:
23333     case DW_FORM_implicit_const:
23334       type = die_type (die, cu);
23335       result = write_constant_as_bytes (obstack, byte_order,
23336                                         type, DW_SND (attr), len);
23337       break;
23338
23339     case DW_FORM_udata:
23340       type = die_type (die, cu);
23341       result = write_constant_as_bytes (obstack, byte_order,
23342                                         type, DW_UNSND (attr), len);
23343       break;
23344
23345     default:
23346       complaint (&symfile_complaints,
23347                  _("unsupported const value attribute form: '%s'"),
23348                  dwarf_form_name (attr->form));
23349       break;
23350     }
23351
23352   return result;
23353 }
23354
23355 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23356    valid type for this die is found.  */
23357
23358 struct type *
23359 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23360                                 struct dwarf2_per_cu_data *per_cu)
23361 {
23362   struct dwarf2_cu *cu;
23363   struct die_info *die;
23364
23365   if (per_cu->cu == NULL)
23366     load_cu (per_cu);
23367   cu = per_cu->cu;
23368   if (!cu)
23369     return NULL;
23370
23371   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23372   if (!die)
23373     return NULL;
23374
23375   return die_type (die, cu);
23376 }
23377
23378 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23379    PER_CU.  */
23380
23381 struct type *
23382 dwarf2_get_die_type (cu_offset die_offset,
23383                      struct dwarf2_per_cu_data *per_cu)
23384 {
23385   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23386   return get_die_type_at_offset (die_offset_sect, per_cu);
23387 }
23388
23389 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23390    On entry *REF_CU is the CU of SRC_DIE.
23391    On exit *REF_CU is the CU of the result.
23392    Returns NULL if the referenced DIE isn't found.  */
23393
23394 static struct die_info *
23395 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23396                   struct dwarf2_cu **ref_cu)
23397 {
23398   struct die_info temp_die;
23399   struct dwarf2_cu *sig_cu;
23400   struct die_info *die;
23401
23402   /* While it might be nice to assert sig_type->type == NULL here,
23403      we can get here for DW_AT_imported_declaration where we need
23404      the DIE not the type.  */
23405
23406   /* If necessary, add it to the queue and load its DIEs.  */
23407
23408   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23409     read_signatured_type (sig_type);
23410
23411   sig_cu = sig_type->per_cu.cu;
23412   gdb_assert (sig_cu != NULL);
23413   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23414   temp_die.sect_off = sig_type->type_offset_in_section;
23415   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23416                                                  to_underlying (temp_die.sect_off));
23417   if (die)
23418     {
23419       struct dwarf2_per_objfile *dwarf2_per_objfile
23420         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23421
23422       /* For .gdb_index version 7 keep track of included TUs.
23423          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23424       if (dwarf2_per_objfile->index_table != NULL
23425           && dwarf2_per_objfile->index_table->version <= 7)
23426         {
23427           VEC_safe_push (dwarf2_per_cu_ptr,
23428                          (*ref_cu)->per_cu->imported_symtabs,
23429                          sig_cu->per_cu);
23430         }
23431
23432       *ref_cu = sig_cu;
23433       return die;
23434     }
23435
23436   return NULL;
23437 }
23438
23439 /* Follow signatured type referenced by ATTR in SRC_DIE.
23440    On entry *REF_CU is the CU of SRC_DIE.
23441    On exit *REF_CU is the CU of the result.
23442    The result is the DIE of the type.
23443    If the referenced type cannot be found an error is thrown.  */
23444
23445 static struct die_info *
23446 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23447                 struct dwarf2_cu **ref_cu)
23448 {
23449   ULONGEST signature = DW_SIGNATURE (attr);
23450   struct signatured_type *sig_type;
23451   struct die_info *die;
23452
23453   gdb_assert (attr->form == DW_FORM_ref_sig8);
23454
23455   sig_type = lookup_signatured_type (*ref_cu, signature);
23456   /* sig_type will be NULL if the signatured type is missing from
23457      the debug info.  */
23458   if (sig_type == NULL)
23459     {
23460       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23461                " from DIE at 0x%x [in module %s]"),
23462              hex_string (signature), to_underlying (src_die->sect_off),
23463              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23464     }
23465
23466   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23467   if (die == NULL)
23468     {
23469       dump_die_for_error (src_die);
23470       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23471                " from DIE at 0x%x [in module %s]"),
23472              hex_string (signature), to_underlying (src_die->sect_off),
23473              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23474     }
23475
23476   return die;
23477 }
23478
23479 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23480    reading in and processing the type unit if necessary.  */
23481
23482 static struct type *
23483 get_signatured_type (struct die_info *die, ULONGEST signature,
23484                      struct dwarf2_cu *cu)
23485 {
23486   struct dwarf2_per_objfile *dwarf2_per_objfile
23487     = cu->per_cu->dwarf2_per_objfile;
23488   struct signatured_type *sig_type;
23489   struct dwarf2_cu *type_cu;
23490   struct die_info *type_die;
23491   struct type *type;
23492
23493   sig_type = lookup_signatured_type (cu, signature);
23494   /* sig_type will be NULL if the signatured type is missing from
23495      the debug info.  */
23496   if (sig_type == NULL)
23497     {
23498       complaint (&symfile_complaints,
23499                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
23500                    " from DIE at 0x%x [in module %s]"),
23501                  hex_string (signature), to_underlying (die->sect_off),
23502                  objfile_name (dwarf2_per_objfile->objfile));
23503       return build_error_marker_type (cu, die);
23504     }
23505
23506   /* If we already know the type we're done.  */
23507   if (sig_type->type != NULL)
23508     return sig_type->type;
23509
23510   type_cu = cu;
23511   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23512   if (type_die != NULL)
23513     {
23514       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23515          is created.  This is important, for example, because for c++ classes
23516          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23517       type = read_type_die (type_die, type_cu);
23518       if (type == NULL)
23519         {
23520           complaint (&symfile_complaints,
23521                      _("Dwarf Error: Cannot build signatured type %s"
23522                        " referenced from DIE at 0x%x [in module %s]"),
23523                      hex_string (signature), to_underlying (die->sect_off),
23524                      objfile_name (dwarf2_per_objfile->objfile));
23525           type = build_error_marker_type (cu, die);
23526         }
23527     }
23528   else
23529     {
23530       complaint (&symfile_complaints,
23531                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
23532                    " from DIE at 0x%x [in module %s]"),
23533                  hex_string (signature), to_underlying (die->sect_off),
23534                  objfile_name (dwarf2_per_objfile->objfile));
23535       type = build_error_marker_type (cu, die);
23536     }
23537   sig_type->type = type;
23538
23539   return type;
23540 }
23541
23542 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23543    reading in and processing the type unit if necessary.  */
23544
23545 static struct type *
23546 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23547                           struct dwarf2_cu *cu) /* ARI: editCase function */
23548 {
23549   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23550   if (attr_form_is_ref (attr))
23551     {
23552       struct dwarf2_cu *type_cu = cu;
23553       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23554
23555       return read_type_die (type_die, type_cu);
23556     }
23557   else if (attr->form == DW_FORM_ref_sig8)
23558     {
23559       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23560     }
23561   else
23562     {
23563       struct dwarf2_per_objfile *dwarf2_per_objfile
23564         = cu->per_cu->dwarf2_per_objfile;
23565
23566       complaint (&symfile_complaints,
23567                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23568                    " at 0x%x [in module %s]"),
23569                  dwarf_form_name (attr->form), to_underlying (die->sect_off),
23570                  objfile_name (dwarf2_per_objfile->objfile));
23571       return build_error_marker_type (cu, die);
23572     }
23573 }
23574
23575 /* Load the DIEs associated with type unit PER_CU into memory.  */
23576
23577 static void
23578 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23579 {
23580   struct signatured_type *sig_type;
23581
23582   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23583   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23584
23585   /* We have the per_cu, but we need the signatured_type.
23586      Fortunately this is an easy translation.  */
23587   gdb_assert (per_cu->is_debug_types);
23588   sig_type = (struct signatured_type *) per_cu;
23589
23590   gdb_assert (per_cu->cu == NULL);
23591
23592   read_signatured_type (sig_type);
23593
23594   gdb_assert (per_cu->cu != NULL);
23595 }
23596
23597 /* die_reader_func for read_signatured_type.
23598    This is identical to load_full_comp_unit_reader,
23599    but is kept separate for now.  */
23600
23601 static void
23602 read_signatured_type_reader (const struct die_reader_specs *reader,
23603                              const gdb_byte *info_ptr,
23604                              struct die_info *comp_unit_die,
23605                              int has_children,
23606                              void *data)
23607 {
23608   struct dwarf2_cu *cu = reader->cu;
23609
23610   gdb_assert (cu->die_hash == NULL);
23611   cu->die_hash =
23612     htab_create_alloc_ex (cu->header.length / 12,
23613                           die_hash,
23614                           die_eq,
23615                           NULL,
23616                           &cu->comp_unit_obstack,
23617                           hashtab_obstack_allocate,
23618                           dummy_obstack_deallocate);
23619
23620   if (has_children)
23621     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23622                                                   &info_ptr, comp_unit_die);
23623   cu->dies = comp_unit_die;
23624   /* comp_unit_die is not stored in die_hash, no need.  */
23625
23626   /* We try not to read any attributes in this function, because not
23627      all CUs needed for references have been loaded yet, and symbol
23628      table processing isn't initialized.  But we have to set the CU language,
23629      or we won't be able to build types correctly.
23630      Similarly, if we do not read the producer, we can not apply
23631      producer-specific interpretation.  */
23632   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23633 }
23634
23635 /* Read in a signatured type and build its CU and DIEs.
23636    If the type is a stub for the real type in a DWO file,
23637    read in the real type from the DWO file as well.  */
23638
23639 static void
23640 read_signatured_type (struct signatured_type *sig_type)
23641 {
23642   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23643
23644   gdb_assert (per_cu->is_debug_types);
23645   gdb_assert (per_cu->cu == NULL);
23646
23647   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
23648                            read_signatured_type_reader, NULL);
23649   sig_type->per_cu.tu_read = 1;
23650 }
23651
23652 /* Decode simple location descriptions.
23653    Given a pointer to a dwarf block that defines a location, compute
23654    the location and return the value.
23655
23656    NOTE drow/2003-11-18: This function is called in two situations
23657    now: for the address of static or global variables (partial symbols
23658    only) and for offsets into structures which are expected to be
23659    (more or less) constant.  The partial symbol case should go away,
23660    and only the constant case should remain.  That will let this
23661    function complain more accurately.  A few special modes are allowed
23662    without complaint for global variables (for instance, global
23663    register values and thread-local values).
23664
23665    A location description containing no operations indicates that the
23666    object is optimized out.  The return value is 0 for that case.
23667    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23668    callers will only want a very basic result and this can become a
23669    complaint.
23670
23671    Note that stack[0] is unused except as a default error return.  */
23672
23673 static CORE_ADDR
23674 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23675 {
23676   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23677   size_t i;
23678   size_t size = blk->size;
23679   const gdb_byte *data = blk->data;
23680   CORE_ADDR stack[64];
23681   int stacki;
23682   unsigned int bytes_read, unsnd;
23683   gdb_byte op;
23684
23685   i = 0;
23686   stacki = 0;
23687   stack[stacki] = 0;
23688   stack[++stacki] = 0;
23689
23690   while (i < size)
23691     {
23692       op = data[i++];
23693       switch (op)
23694         {
23695         case DW_OP_lit0:
23696         case DW_OP_lit1:
23697         case DW_OP_lit2:
23698         case DW_OP_lit3:
23699         case DW_OP_lit4:
23700         case DW_OP_lit5:
23701         case DW_OP_lit6:
23702         case DW_OP_lit7:
23703         case DW_OP_lit8:
23704         case DW_OP_lit9:
23705         case DW_OP_lit10:
23706         case DW_OP_lit11:
23707         case DW_OP_lit12:
23708         case DW_OP_lit13:
23709         case DW_OP_lit14:
23710         case DW_OP_lit15:
23711         case DW_OP_lit16:
23712         case DW_OP_lit17:
23713         case DW_OP_lit18:
23714         case DW_OP_lit19:
23715         case DW_OP_lit20:
23716         case DW_OP_lit21:
23717         case DW_OP_lit22:
23718         case DW_OP_lit23:
23719         case DW_OP_lit24:
23720         case DW_OP_lit25:
23721         case DW_OP_lit26:
23722         case DW_OP_lit27:
23723         case DW_OP_lit28:
23724         case DW_OP_lit29:
23725         case DW_OP_lit30:
23726         case DW_OP_lit31:
23727           stack[++stacki] = op - DW_OP_lit0;
23728           break;
23729
23730         case DW_OP_reg0:
23731         case DW_OP_reg1:
23732         case DW_OP_reg2:
23733         case DW_OP_reg3:
23734         case DW_OP_reg4:
23735         case DW_OP_reg5:
23736         case DW_OP_reg6:
23737         case DW_OP_reg7:
23738         case DW_OP_reg8:
23739         case DW_OP_reg9:
23740         case DW_OP_reg10:
23741         case DW_OP_reg11:
23742         case DW_OP_reg12:
23743         case DW_OP_reg13:
23744         case DW_OP_reg14:
23745         case DW_OP_reg15:
23746         case DW_OP_reg16:
23747         case DW_OP_reg17:
23748         case DW_OP_reg18:
23749         case DW_OP_reg19:
23750         case DW_OP_reg20:
23751         case DW_OP_reg21:
23752         case DW_OP_reg22:
23753         case DW_OP_reg23:
23754         case DW_OP_reg24:
23755         case DW_OP_reg25:
23756         case DW_OP_reg26:
23757         case DW_OP_reg27:
23758         case DW_OP_reg28:
23759         case DW_OP_reg29:
23760         case DW_OP_reg30:
23761         case DW_OP_reg31:
23762           stack[++stacki] = op - DW_OP_reg0;
23763           if (i < size)
23764             dwarf2_complex_location_expr_complaint ();
23765           break;
23766
23767         case DW_OP_regx:
23768           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23769           i += bytes_read;
23770           stack[++stacki] = unsnd;
23771           if (i < size)
23772             dwarf2_complex_location_expr_complaint ();
23773           break;
23774
23775         case DW_OP_addr:
23776           stack[++stacki] = read_address (objfile->obfd, &data[i],
23777                                           cu, &bytes_read);
23778           i += bytes_read;
23779           break;
23780
23781         case DW_OP_const1u:
23782           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23783           i += 1;
23784           break;
23785
23786         case DW_OP_const1s:
23787           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23788           i += 1;
23789           break;
23790
23791         case DW_OP_const2u:
23792           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23793           i += 2;
23794           break;
23795
23796         case DW_OP_const2s:
23797           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23798           i += 2;
23799           break;
23800
23801         case DW_OP_const4u:
23802           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23803           i += 4;
23804           break;
23805
23806         case DW_OP_const4s:
23807           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23808           i += 4;
23809           break;
23810
23811         case DW_OP_const8u:
23812           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23813           i += 8;
23814           break;
23815
23816         case DW_OP_constu:
23817           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23818                                                   &bytes_read);
23819           i += bytes_read;
23820           break;
23821
23822         case DW_OP_consts:
23823           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23824           i += bytes_read;
23825           break;
23826
23827         case DW_OP_dup:
23828           stack[stacki + 1] = stack[stacki];
23829           stacki++;
23830           break;
23831
23832         case DW_OP_plus:
23833           stack[stacki - 1] += stack[stacki];
23834           stacki--;
23835           break;
23836
23837         case DW_OP_plus_uconst:
23838           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23839                                                  &bytes_read);
23840           i += bytes_read;
23841           break;
23842
23843         case DW_OP_minus:
23844           stack[stacki - 1] -= stack[stacki];
23845           stacki--;
23846           break;
23847
23848         case DW_OP_deref:
23849           /* If we're not the last op, then we definitely can't encode
23850              this using GDB's address_class enum.  This is valid for partial
23851              global symbols, although the variable's address will be bogus
23852              in the psymtab.  */
23853           if (i < size)
23854             dwarf2_complex_location_expr_complaint ();
23855           break;
23856
23857         case DW_OP_GNU_push_tls_address:
23858         case DW_OP_form_tls_address:
23859           /* The top of the stack has the offset from the beginning
23860              of the thread control block at which the variable is located.  */
23861           /* Nothing should follow this operator, so the top of stack would
23862              be returned.  */
23863           /* This is valid for partial global symbols, but the variable's
23864              address will be bogus in the psymtab.  Make it always at least
23865              non-zero to not look as a variable garbage collected by linker
23866              which have DW_OP_addr 0.  */
23867           if (i < size)
23868             dwarf2_complex_location_expr_complaint ();
23869           stack[stacki]++;
23870           break;
23871
23872         case DW_OP_GNU_uninit:
23873           break;
23874
23875         case DW_OP_GNU_addr_index:
23876         case DW_OP_GNU_const_index:
23877           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23878                                                          &bytes_read);
23879           i += bytes_read;
23880           break;
23881
23882         default:
23883           {
23884             const char *name = get_DW_OP_name (op);
23885
23886             if (name)
23887               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
23888                          name);
23889             else
23890               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
23891                          op);
23892           }
23893
23894           return (stack[stacki]);
23895         }
23896
23897       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23898          outside of the allocated space.  Also enforce minimum>0.  */
23899       if (stacki >= ARRAY_SIZE (stack) - 1)
23900         {
23901           complaint (&symfile_complaints,
23902                      _("location description stack overflow"));
23903           return 0;
23904         }
23905
23906       if (stacki <= 0)
23907         {
23908           complaint (&symfile_complaints,
23909                      _("location description stack underflow"));
23910           return 0;
23911         }
23912     }
23913   return (stack[stacki]);
23914 }
23915
23916 /* memory allocation interface */
23917
23918 static struct dwarf_block *
23919 dwarf_alloc_block (struct dwarf2_cu *cu)
23920 {
23921   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23922 }
23923
23924 static struct die_info *
23925 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23926 {
23927   struct die_info *die;
23928   size_t size = sizeof (struct die_info);
23929
23930   if (num_attrs > 1)
23931     size += (num_attrs - 1) * sizeof (struct attribute);
23932
23933   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23934   memset (die, 0, sizeof (struct die_info));
23935   return (die);
23936 }
23937
23938 \f
23939 /* Macro support.  */
23940
23941 /* Return file name relative to the compilation directory of file number I in
23942    *LH's file name table.  The result is allocated using xmalloc; the caller is
23943    responsible for freeing it.  */
23944
23945 static char *
23946 file_file_name (int file, struct line_header *lh)
23947 {
23948   /* Is the file number a valid index into the line header's file name
23949      table?  Remember that file numbers start with one, not zero.  */
23950   if (1 <= file && file <= lh->file_names.size ())
23951     {
23952       const file_entry &fe = lh->file_names[file - 1];
23953
23954       if (!IS_ABSOLUTE_PATH (fe.name))
23955         {
23956           const char *dir = fe.include_dir (lh);
23957           if (dir != NULL)
23958             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23959         }
23960       return xstrdup (fe.name);
23961     }
23962   else
23963     {
23964       /* The compiler produced a bogus file number.  We can at least
23965          record the macro definitions made in the file, even if we
23966          won't be able to find the file by name.  */
23967       char fake_name[80];
23968
23969       xsnprintf (fake_name, sizeof (fake_name),
23970                  "<bad macro file number %d>", file);
23971
23972       complaint (&symfile_complaints,
23973                  _("bad file number in macro information (%d)"),
23974                  file);
23975
23976       return xstrdup (fake_name);
23977     }
23978 }
23979
23980 /* Return the full name of file number I in *LH's file name table.
23981    Use COMP_DIR as the name of the current directory of the
23982    compilation.  The result is allocated using xmalloc; the caller is
23983    responsible for freeing it.  */
23984 static char *
23985 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23986 {
23987   /* Is the file number a valid index into the line header's file name
23988      table?  Remember that file numbers start with one, not zero.  */
23989   if (1 <= file && file <= lh->file_names.size ())
23990     {
23991       char *relative = file_file_name (file, lh);
23992
23993       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23994         return relative;
23995       return reconcat (relative, comp_dir, SLASH_STRING,
23996                        relative, (char *) NULL);
23997     }
23998   else
23999     return file_file_name (file, lh);
24000 }
24001
24002
24003 static struct macro_source_file *
24004 macro_start_file (int file, int line,
24005                   struct macro_source_file *current_file,
24006                   struct line_header *lh)
24007 {
24008   /* File name relative to the compilation directory of this source file.  */
24009   char *file_name = file_file_name (file, lh);
24010
24011   if (! current_file)
24012     {
24013       /* Note: We don't create a macro table for this compilation unit
24014          at all until we actually get a filename.  */
24015       struct macro_table *macro_table = get_macro_table ();
24016
24017       /* If we have no current file, then this must be the start_file
24018          directive for the compilation unit's main source file.  */
24019       current_file = macro_set_main (macro_table, file_name);
24020       macro_define_special (macro_table);
24021     }
24022   else
24023     current_file = macro_include (current_file, line, file_name);
24024
24025   xfree (file_name);
24026
24027   return current_file;
24028 }
24029
24030 static const char *
24031 consume_improper_spaces (const char *p, const char *body)
24032 {
24033   if (*p == ' ')
24034     {
24035       complaint (&symfile_complaints,
24036                  _("macro definition contains spaces "
24037                    "in formal argument list:\n`%s'"),
24038                  body);
24039
24040       while (*p == ' ')
24041         p++;
24042     }
24043
24044   return p;
24045 }
24046
24047
24048 static void
24049 parse_macro_definition (struct macro_source_file *file, int line,
24050                         const char *body)
24051 {
24052   const char *p;
24053
24054   /* The body string takes one of two forms.  For object-like macro
24055      definitions, it should be:
24056
24057         <macro name> " " <definition>
24058
24059      For function-like macro definitions, it should be:
24060
24061         <macro name> "() " <definition>
24062      or
24063         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24064
24065      Spaces may appear only where explicitly indicated, and in the
24066      <definition>.
24067
24068      The Dwarf 2 spec says that an object-like macro's name is always
24069      followed by a space, but versions of GCC around March 2002 omit
24070      the space when the macro's definition is the empty string.
24071
24072      The Dwarf 2 spec says that there should be no spaces between the
24073      formal arguments in a function-like macro's formal argument list,
24074      but versions of GCC around March 2002 include spaces after the
24075      commas.  */
24076
24077
24078   /* Find the extent of the macro name.  The macro name is terminated
24079      by either a space or null character (for an object-like macro) or
24080      an opening paren (for a function-like macro).  */
24081   for (p = body; *p; p++)
24082     if (*p == ' ' || *p == '(')
24083       break;
24084
24085   if (*p == ' ' || *p == '\0')
24086     {
24087       /* It's an object-like macro.  */
24088       int name_len = p - body;
24089       char *name = savestring (body, name_len);
24090       const char *replacement;
24091
24092       if (*p == ' ')
24093         replacement = body + name_len + 1;
24094       else
24095         {
24096           dwarf2_macro_malformed_definition_complaint (body);
24097           replacement = body + name_len;
24098         }
24099
24100       macro_define_object (file, line, name, replacement);
24101
24102       xfree (name);
24103     }
24104   else if (*p == '(')
24105     {
24106       /* It's a function-like macro.  */
24107       char *name = savestring (body, p - body);
24108       int argc = 0;
24109       int argv_size = 1;
24110       char **argv = XNEWVEC (char *, argv_size);
24111
24112       p++;
24113
24114       p = consume_improper_spaces (p, body);
24115
24116       /* Parse the formal argument list.  */
24117       while (*p && *p != ')')
24118         {
24119           /* Find the extent of the current argument name.  */
24120           const char *arg_start = p;
24121
24122           while (*p && *p != ',' && *p != ')' && *p != ' ')
24123             p++;
24124
24125           if (! *p || p == arg_start)
24126             dwarf2_macro_malformed_definition_complaint (body);
24127           else
24128             {
24129               /* Make sure argv has room for the new argument.  */
24130               if (argc >= argv_size)
24131                 {
24132                   argv_size *= 2;
24133                   argv = XRESIZEVEC (char *, argv, argv_size);
24134                 }
24135
24136               argv[argc++] = savestring (arg_start, p - arg_start);
24137             }
24138
24139           p = consume_improper_spaces (p, body);
24140
24141           /* Consume the comma, if present.  */
24142           if (*p == ',')
24143             {
24144               p++;
24145
24146               p = consume_improper_spaces (p, body);
24147             }
24148         }
24149
24150       if (*p == ')')
24151         {
24152           p++;
24153
24154           if (*p == ' ')
24155             /* Perfectly formed definition, no complaints.  */
24156             macro_define_function (file, line, name,
24157                                    argc, (const char **) argv,
24158                                    p + 1);
24159           else if (*p == '\0')
24160             {
24161               /* Complain, but do define it.  */
24162               dwarf2_macro_malformed_definition_complaint (body);
24163               macro_define_function (file, line, name,
24164                                      argc, (const char **) argv,
24165                                      p);
24166             }
24167           else
24168             /* Just complain.  */
24169             dwarf2_macro_malformed_definition_complaint (body);
24170         }
24171       else
24172         /* Just complain.  */
24173         dwarf2_macro_malformed_definition_complaint (body);
24174
24175       xfree (name);
24176       {
24177         int i;
24178
24179         for (i = 0; i < argc; i++)
24180           xfree (argv[i]);
24181       }
24182       xfree (argv);
24183     }
24184   else
24185     dwarf2_macro_malformed_definition_complaint (body);
24186 }
24187
24188 /* Skip some bytes from BYTES according to the form given in FORM.
24189    Returns the new pointer.  */
24190
24191 static const gdb_byte *
24192 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24193                  enum dwarf_form form,
24194                  unsigned int offset_size,
24195                  struct dwarf2_section_info *section)
24196 {
24197   unsigned int bytes_read;
24198
24199   switch (form)
24200     {
24201     case DW_FORM_data1:
24202     case DW_FORM_flag:
24203       ++bytes;
24204       break;
24205
24206     case DW_FORM_data2:
24207       bytes += 2;
24208       break;
24209
24210     case DW_FORM_data4:
24211       bytes += 4;
24212       break;
24213
24214     case DW_FORM_data8:
24215       bytes += 8;
24216       break;
24217
24218     case DW_FORM_data16:
24219       bytes += 16;
24220       break;
24221
24222     case DW_FORM_string:
24223       read_direct_string (abfd, bytes, &bytes_read);
24224       bytes += bytes_read;
24225       break;
24226
24227     case DW_FORM_sec_offset:
24228     case DW_FORM_strp:
24229     case DW_FORM_GNU_strp_alt:
24230       bytes += offset_size;
24231       break;
24232
24233     case DW_FORM_block:
24234       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24235       bytes += bytes_read;
24236       break;
24237
24238     case DW_FORM_block1:
24239       bytes += 1 + read_1_byte (abfd, bytes);
24240       break;
24241     case DW_FORM_block2:
24242       bytes += 2 + read_2_bytes (abfd, bytes);
24243       break;
24244     case DW_FORM_block4:
24245       bytes += 4 + read_4_bytes (abfd, bytes);
24246       break;
24247
24248     case DW_FORM_sdata:
24249     case DW_FORM_udata:
24250     case DW_FORM_GNU_addr_index:
24251     case DW_FORM_GNU_str_index:
24252       bytes = gdb_skip_leb128 (bytes, buffer_end);
24253       if (bytes == NULL)
24254         {
24255           dwarf2_section_buffer_overflow_complaint (section);
24256           return NULL;
24257         }
24258       break;
24259
24260     case DW_FORM_implicit_const:
24261       break;
24262
24263     default:
24264       {
24265         complaint (&symfile_complaints,
24266                    _("invalid form 0x%x in `%s'"),
24267                    form, get_section_name (section));
24268         return NULL;
24269       }
24270     }
24271
24272   return bytes;
24273 }
24274
24275 /* A helper for dwarf_decode_macros that handles skipping an unknown
24276    opcode.  Returns an updated pointer to the macro data buffer; or,
24277    on error, issues a complaint and returns NULL.  */
24278
24279 static const gdb_byte *
24280 skip_unknown_opcode (unsigned int opcode,
24281                      const gdb_byte **opcode_definitions,
24282                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24283                      bfd *abfd,
24284                      unsigned int offset_size,
24285                      struct dwarf2_section_info *section)
24286 {
24287   unsigned int bytes_read, i;
24288   unsigned long arg;
24289   const gdb_byte *defn;
24290
24291   if (opcode_definitions[opcode] == NULL)
24292     {
24293       complaint (&symfile_complaints,
24294                  _("unrecognized DW_MACFINO opcode 0x%x"),
24295                  opcode);
24296       return NULL;
24297     }
24298
24299   defn = opcode_definitions[opcode];
24300   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24301   defn += bytes_read;
24302
24303   for (i = 0; i < arg; ++i)
24304     {
24305       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24306                                  (enum dwarf_form) defn[i], offset_size,
24307                                  section);
24308       if (mac_ptr == NULL)
24309         {
24310           /* skip_form_bytes already issued the complaint.  */
24311           return NULL;
24312         }
24313     }
24314
24315   return mac_ptr;
24316 }
24317
24318 /* A helper function which parses the header of a macro section.
24319    If the macro section is the extended (for now called "GNU") type,
24320    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24321    the header, or issues a complaint and returns NULL on error.  */
24322
24323 static const gdb_byte *
24324 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24325                           bfd *abfd,
24326                           const gdb_byte *mac_ptr,
24327                           unsigned int *offset_size,
24328                           int section_is_gnu)
24329 {
24330   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24331
24332   if (section_is_gnu)
24333     {
24334       unsigned int version, flags;
24335
24336       version = read_2_bytes (abfd, mac_ptr);
24337       if (version != 4 && version != 5)
24338         {
24339           complaint (&symfile_complaints,
24340                      _("unrecognized version `%d' in .debug_macro section"),
24341                      version);
24342           return NULL;
24343         }
24344       mac_ptr += 2;
24345
24346       flags = read_1_byte (abfd, mac_ptr);
24347       ++mac_ptr;
24348       *offset_size = (flags & 1) ? 8 : 4;
24349
24350       if ((flags & 2) != 0)
24351         /* We don't need the line table offset.  */
24352         mac_ptr += *offset_size;
24353
24354       /* Vendor opcode descriptions.  */
24355       if ((flags & 4) != 0)
24356         {
24357           unsigned int i, count;
24358
24359           count = read_1_byte (abfd, mac_ptr);
24360           ++mac_ptr;
24361           for (i = 0; i < count; ++i)
24362             {
24363               unsigned int opcode, bytes_read;
24364               unsigned long arg;
24365
24366               opcode = read_1_byte (abfd, mac_ptr);
24367               ++mac_ptr;
24368               opcode_definitions[opcode] = mac_ptr;
24369               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24370               mac_ptr += bytes_read;
24371               mac_ptr += arg;
24372             }
24373         }
24374     }
24375
24376   return mac_ptr;
24377 }
24378
24379 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24380    including DW_MACRO_import.  */
24381
24382 static void
24383 dwarf_decode_macro_bytes (struct dwarf2_per_objfile *dwarf2_per_objfile,
24384                           bfd *abfd,
24385                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24386                           struct macro_source_file *current_file,
24387                           struct line_header *lh,
24388                           struct dwarf2_section_info *section,
24389                           int section_is_gnu, int section_is_dwz,
24390                           unsigned int offset_size,
24391                           htab_t include_hash)
24392 {
24393   struct objfile *objfile = dwarf2_per_objfile->objfile;
24394   enum dwarf_macro_record_type macinfo_type;
24395   int at_commandline;
24396   const gdb_byte *opcode_definitions[256];
24397
24398   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24399                                       &offset_size, section_is_gnu);
24400   if (mac_ptr == NULL)
24401     {
24402       /* We already issued a complaint.  */
24403       return;
24404     }
24405
24406   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24407      GDB is still reading the definitions from command line.  First
24408      DW_MACINFO_start_file will need to be ignored as it was already executed
24409      to create CURRENT_FILE for the main source holding also the command line
24410      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24411      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24412
24413   at_commandline = 1;
24414
24415   do
24416     {
24417       /* Do we at least have room for a macinfo type byte?  */
24418       if (mac_ptr >= mac_end)
24419         {
24420           dwarf2_section_buffer_overflow_complaint (section);
24421           break;
24422         }
24423
24424       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24425       mac_ptr++;
24426
24427       /* Note that we rely on the fact that the corresponding GNU and
24428          DWARF constants are the same.  */
24429       DIAGNOSTIC_PUSH
24430       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24431       switch (macinfo_type)
24432         {
24433           /* A zero macinfo type indicates the end of the macro
24434              information.  */
24435         case 0:
24436           break;
24437
24438         case DW_MACRO_define:
24439         case DW_MACRO_undef:
24440         case DW_MACRO_define_strp:
24441         case DW_MACRO_undef_strp:
24442         case DW_MACRO_define_sup:
24443         case DW_MACRO_undef_sup:
24444           {
24445             unsigned int bytes_read;
24446             int line;
24447             const char *body;
24448             int is_define;
24449
24450             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24451             mac_ptr += bytes_read;
24452
24453             if (macinfo_type == DW_MACRO_define
24454                 || macinfo_type == DW_MACRO_undef)
24455               {
24456                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24457                 mac_ptr += bytes_read;
24458               }
24459             else
24460               {
24461                 LONGEST str_offset;
24462
24463                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24464                 mac_ptr += offset_size;
24465
24466                 if (macinfo_type == DW_MACRO_define_sup
24467                     || macinfo_type == DW_MACRO_undef_sup
24468                     || section_is_dwz)
24469                   {
24470                     struct dwz_file *dwz
24471                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24472
24473                     body = read_indirect_string_from_dwz (objfile,
24474                                                           dwz, str_offset);
24475                   }
24476                 else
24477                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24478                                                          abfd, str_offset);
24479               }
24480
24481             is_define = (macinfo_type == DW_MACRO_define
24482                          || macinfo_type == DW_MACRO_define_strp
24483                          || macinfo_type == DW_MACRO_define_sup);
24484             if (! current_file)
24485               {
24486                 /* DWARF violation as no main source is present.  */
24487                 complaint (&symfile_complaints,
24488                            _("debug info with no main source gives macro %s "
24489                              "on line %d: %s"),
24490                            is_define ? _("definition") : _("undefinition"),
24491                            line, body);
24492                 break;
24493               }
24494             if ((line == 0 && !at_commandline)
24495                 || (line != 0 && at_commandline))
24496               complaint (&symfile_complaints,
24497                          _("debug info gives %s macro %s with %s line %d: %s"),
24498                          at_commandline ? _("command-line") : _("in-file"),
24499                          is_define ? _("definition") : _("undefinition"),
24500                          line == 0 ? _("zero") : _("non-zero"), line, body);
24501
24502             if (is_define)
24503               parse_macro_definition (current_file, line, body);
24504             else
24505               {
24506                 gdb_assert (macinfo_type == DW_MACRO_undef
24507                             || macinfo_type == DW_MACRO_undef_strp
24508                             || macinfo_type == DW_MACRO_undef_sup);
24509                 macro_undef (current_file, line, body);
24510               }
24511           }
24512           break;
24513
24514         case DW_MACRO_start_file:
24515           {
24516             unsigned int bytes_read;
24517             int line, file;
24518
24519             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24520             mac_ptr += bytes_read;
24521             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24522             mac_ptr += bytes_read;
24523
24524             if ((line == 0 && !at_commandline)
24525                 || (line != 0 && at_commandline))
24526               complaint (&symfile_complaints,
24527                          _("debug info gives source %d included "
24528                            "from %s at %s line %d"),
24529                          file, at_commandline ? _("command-line") : _("file"),
24530                          line == 0 ? _("zero") : _("non-zero"), line);
24531
24532             if (at_commandline)
24533               {
24534                 /* This DW_MACRO_start_file was executed in the
24535                    pass one.  */
24536                 at_commandline = 0;
24537               }
24538             else
24539               current_file = macro_start_file (file, line, current_file, lh);
24540           }
24541           break;
24542
24543         case DW_MACRO_end_file:
24544           if (! current_file)
24545             complaint (&symfile_complaints,
24546                        _("macro debug info has an unmatched "
24547                          "`close_file' directive"));
24548           else
24549             {
24550               current_file = current_file->included_by;
24551               if (! current_file)
24552                 {
24553                   enum dwarf_macro_record_type next_type;
24554
24555                   /* GCC circa March 2002 doesn't produce the zero
24556                      type byte marking the end of the compilation
24557                      unit.  Complain if it's not there, but exit no
24558                      matter what.  */
24559
24560                   /* Do we at least have room for a macinfo type byte?  */
24561                   if (mac_ptr >= mac_end)
24562                     {
24563                       dwarf2_section_buffer_overflow_complaint (section);
24564                       return;
24565                     }
24566
24567                   /* We don't increment mac_ptr here, so this is just
24568                      a look-ahead.  */
24569                   next_type
24570                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24571                                                                   mac_ptr);
24572                   if (next_type != 0)
24573                     complaint (&symfile_complaints,
24574                                _("no terminating 0-type entry for "
24575                                  "macros in `.debug_macinfo' section"));
24576
24577                   return;
24578                 }
24579             }
24580           break;
24581
24582         case DW_MACRO_import:
24583         case DW_MACRO_import_sup:
24584           {
24585             LONGEST offset;
24586             void **slot;
24587             bfd *include_bfd = abfd;
24588             struct dwarf2_section_info *include_section = section;
24589             const gdb_byte *include_mac_end = mac_end;
24590             int is_dwz = section_is_dwz;
24591             const gdb_byte *new_mac_ptr;
24592
24593             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24594             mac_ptr += offset_size;
24595
24596             if (macinfo_type == DW_MACRO_import_sup)
24597               {
24598                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24599
24600                 dwarf2_read_section (objfile, &dwz->macro);
24601
24602                 include_section = &dwz->macro;
24603                 include_bfd = get_section_bfd_owner (include_section);
24604                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24605                 is_dwz = 1;
24606               }
24607
24608             new_mac_ptr = include_section->buffer + offset;
24609             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24610
24611             if (*slot != NULL)
24612               {
24613                 /* This has actually happened; see
24614                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24615                 complaint (&symfile_complaints,
24616                            _("recursive DW_MACRO_import in "
24617                              ".debug_macro section"));
24618               }
24619             else
24620               {
24621                 *slot = (void *) new_mac_ptr;
24622
24623                 dwarf_decode_macro_bytes (dwarf2_per_objfile,
24624                                           include_bfd, new_mac_ptr,
24625                                           include_mac_end, current_file, lh,
24626                                           section, section_is_gnu, is_dwz,
24627                                           offset_size, include_hash);
24628
24629                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24630               }
24631           }
24632           break;
24633
24634         case DW_MACINFO_vendor_ext:
24635           if (!section_is_gnu)
24636             {
24637               unsigned int bytes_read;
24638
24639               /* This reads the constant, but since we don't recognize
24640                  any vendor extensions, we ignore it.  */
24641               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24642               mac_ptr += bytes_read;
24643               read_direct_string (abfd, mac_ptr, &bytes_read);
24644               mac_ptr += bytes_read;
24645
24646               /* We don't recognize any vendor extensions.  */
24647               break;
24648             }
24649           /* FALLTHROUGH */
24650
24651         default:
24652           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24653                                          mac_ptr, mac_end, abfd, offset_size,
24654                                          section);
24655           if (mac_ptr == NULL)
24656             return;
24657           break;
24658         }
24659       DIAGNOSTIC_POP
24660     } while (macinfo_type != 0);
24661 }
24662
24663 static void
24664 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24665                      int section_is_gnu)
24666 {
24667   struct dwarf2_per_objfile *dwarf2_per_objfile
24668     = cu->per_cu->dwarf2_per_objfile;
24669   struct objfile *objfile = dwarf2_per_objfile->objfile;
24670   struct line_header *lh = cu->line_header;
24671   bfd *abfd;
24672   const gdb_byte *mac_ptr, *mac_end;
24673   struct macro_source_file *current_file = 0;
24674   enum dwarf_macro_record_type macinfo_type;
24675   unsigned int offset_size = cu->header.offset_size;
24676   const gdb_byte *opcode_definitions[256];
24677   void **slot;
24678   struct dwarf2_section_info *section;
24679   const char *section_name;
24680
24681   if (cu->dwo_unit != NULL)
24682     {
24683       if (section_is_gnu)
24684         {
24685           section = &cu->dwo_unit->dwo_file->sections.macro;
24686           section_name = ".debug_macro.dwo";
24687         }
24688       else
24689         {
24690           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24691           section_name = ".debug_macinfo.dwo";
24692         }
24693     }
24694   else
24695     {
24696       if (section_is_gnu)
24697         {
24698           section = &dwarf2_per_objfile->macro;
24699           section_name = ".debug_macro";
24700         }
24701       else
24702         {
24703           section = &dwarf2_per_objfile->macinfo;
24704           section_name = ".debug_macinfo";
24705         }
24706     }
24707
24708   dwarf2_read_section (objfile, section);
24709   if (section->buffer == NULL)
24710     {
24711       complaint (&symfile_complaints, _("missing %s section"), section_name);
24712       return;
24713     }
24714   abfd = get_section_bfd_owner (section);
24715
24716   /* First pass: Find the name of the base filename.
24717      This filename is needed in order to process all macros whose definition
24718      (or undefinition) comes from the command line.  These macros are defined
24719      before the first DW_MACINFO_start_file entry, and yet still need to be
24720      associated to the base file.
24721
24722      To determine the base file name, we scan the macro definitions until we
24723      reach the first DW_MACINFO_start_file entry.  We then initialize
24724      CURRENT_FILE accordingly so that any macro definition found before the
24725      first DW_MACINFO_start_file can still be associated to the base file.  */
24726
24727   mac_ptr = section->buffer + offset;
24728   mac_end = section->buffer + section->size;
24729
24730   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24731                                       &offset_size, section_is_gnu);
24732   if (mac_ptr == NULL)
24733     {
24734       /* We already issued a complaint.  */
24735       return;
24736     }
24737
24738   do
24739     {
24740       /* Do we at least have room for a macinfo type byte?  */
24741       if (mac_ptr >= mac_end)
24742         {
24743           /* Complaint is printed during the second pass as GDB will probably
24744              stop the first pass earlier upon finding
24745              DW_MACINFO_start_file.  */
24746           break;
24747         }
24748
24749       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24750       mac_ptr++;
24751
24752       /* Note that we rely on the fact that the corresponding GNU and
24753          DWARF constants are the same.  */
24754       DIAGNOSTIC_PUSH
24755       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24756       switch (macinfo_type)
24757         {
24758           /* A zero macinfo type indicates the end of the macro
24759              information.  */
24760         case 0:
24761           break;
24762
24763         case DW_MACRO_define:
24764         case DW_MACRO_undef:
24765           /* Only skip the data by MAC_PTR.  */
24766           {
24767             unsigned int bytes_read;
24768
24769             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24770             mac_ptr += bytes_read;
24771             read_direct_string (abfd, mac_ptr, &bytes_read);
24772             mac_ptr += bytes_read;
24773           }
24774           break;
24775
24776         case DW_MACRO_start_file:
24777           {
24778             unsigned int bytes_read;
24779             int line, file;
24780
24781             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24782             mac_ptr += bytes_read;
24783             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24784             mac_ptr += bytes_read;
24785
24786             current_file = macro_start_file (file, line, current_file, lh);
24787           }
24788           break;
24789
24790         case DW_MACRO_end_file:
24791           /* No data to skip by MAC_PTR.  */
24792           break;
24793
24794         case DW_MACRO_define_strp:
24795         case DW_MACRO_undef_strp:
24796         case DW_MACRO_define_sup:
24797         case DW_MACRO_undef_sup:
24798           {
24799             unsigned int bytes_read;
24800
24801             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24802             mac_ptr += bytes_read;
24803             mac_ptr += offset_size;
24804           }
24805           break;
24806
24807         case DW_MACRO_import:
24808         case DW_MACRO_import_sup:
24809           /* Note that, according to the spec, a transparent include
24810              chain cannot call DW_MACRO_start_file.  So, we can just
24811              skip this opcode.  */
24812           mac_ptr += offset_size;
24813           break;
24814
24815         case DW_MACINFO_vendor_ext:
24816           /* Only skip the data by MAC_PTR.  */
24817           if (!section_is_gnu)
24818             {
24819               unsigned int bytes_read;
24820
24821               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24822               mac_ptr += bytes_read;
24823               read_direct_string (abfd, mac_ptr, &bytes_read);
24824               mac_ptr += bytes_read;
24825             }
24826           /* FALLTHROUGH */
24827
24828         default:
24829           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24830                                          mac_ptr, mac_end, abfd, offset_size,
24831                                          section);
24832           if (mac_ptr == NULL)
24833             return;
24834           break;
24835         }
24836       DIAGNOSTIC_POP
24837     } while (macinfo_type != 0 && current_file == NULL);
24838
24839   /* Second pass: Process all entries.
24840
24841      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24842      command-line macro definitions/undefinitions.  This flag is unset when we
24843      reach the first DW_MACINFO_start_file entry.  */
24844
24845   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24846                                            htab_eq_pointer,
24847                                            NULL, xcalloc, xfree));
24848   mac_ptr = section->buffer + offset;
24849   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24850   *slot = (void *) mac_ptr;
24851   dwarf_decode_macro_bytes (dwarf2_per_objfile,
24852                             abfd, mac_ptr, mac_end,
24853                             current_file, lh, section,
24854                             section_is_gnu, 0, offset_size,
24855                             include_hash.get ());
24856 }
24857
24858 /* Check if the attribute's form is a DW_FORM_block*
24859    if so return true else false.  */
24860
24861 static int
24862 attr_form_is_block (const struct attribute *attr)
24863 {
24864   return (attr == NULL ? 0 :
24865       attr->form == DW_FORM_block1
24866       || attr->form == DW_FORM_block2
24867       || attr->form == DW_FORM_block4
24868       || attr->form == DW_FORM_block
24869       || attr->form == DW_FORM_exprloc);
24870 }
24871
24872 /* Return non-zero if ATTR's value is a section offset --- classes
24873    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24874    You may use DW_UNSND (attr) to retrieve such offsets.
24875
24876    Section 7.5.4, "Attribute Encodings", explains that no attribute
24877    may have a value that belongs to more than one of these classes; it
24878    would be ambiguous if we did, because we use the same forms for all
24879    of them.  */
24880
24881 static int
24882 attr_form_is_section_offset (const struct attribute *attr)
24883 {
24884   return (attr->form == DW_FORM_data4
24885           || attr->form == DW_FORM_data8
24886           || attr->form == DW_FORM_sec_offset);
24887 }
24888
24889 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24890    zero otherwise.  When this function returns true, you can apply
24891    dwarf2_get_attr_constant_value to it.
24892
24893    However, note that for some attributes you must check
24894    attr_form_is_section_offset before using this test.  DW_FORM_data4
24895    and DW_FORM_data8 are members of both the constant class, and of
24896    the classes that contain offsets into other debug sections
24897    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24898    that, if an attribute's can be either a constant or one of the
24899    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24900    taken as section offsets, not constants.
24901
24902    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24903    cannot handle that.  */
24904
24905 static int
24906 attr_form_is_constant (const struct attribute *attr)
24907 {
24908   switch (attr->form)
24909     {
24910     case DW_FORM_sdata:
24911     case DW_FORM_udata:
24912     case DW_FORM_data1:
24913     case DW_FORM_data2:
24914     case DW_FORM_data4:
24915     case DW_FORM_data8:
24916     case DW_FORM_implicit_const:
24917       return 1;
24918     default:
24919       return 0;
24920     }
24921 }
24922
24923
24924 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24925    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24926
24927 static int
24928 attr_form_is_ref (const struct attribute *attr)
24929 {
24930   switch (attr->form)
24931     {
24932     case DW_FORM_ref_addr:
24933     case DW_FORM_ref1:
24934     case DW_FORM_ref2:
24935     case DW_FORM_ref4:
24936     case DW_FORM_ref8:
24937     case DW_FORM_ref_udata:
24938     case DW_FORM_GNU_ref_alt:
24939       return 1;
24940     default:
24941       return 0;
24942     }
24943 }
24944
24945 /* Return the .debug_loc section to use for CU.
24946    For DWO files use .debug_loc.dwo.  */
24947
24948 static struct dwarf2_section_info *
24949 cu_debug_loc_section (struct dwarf2_cu *cu)
24950 {
24951   struct dwarf2_per_objfile *dwarf2_per_objfile
24952     = cu->per_cu->dwarf2_per_objfile;
24953
24954   if (cu->dwo_unit)
24955     {
24956       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24957       
24958       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24959     }
24960   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24961                                   : &dwarf2_per_objfile->loc);
24962 }
24963
24964 /* A helper function that fills in a dwarf2_loclist_baton.  */
24965
24966 static void
24967 fill_in_loclist_baton (struct dwarf2_cu *cu,
24968                        struct dwarf2_loclist_baton *baton,
24969                        const struct attribute *attr)
24970 {
24971   struct dwarf2_per_objfile *dwarf2_per_objfile
24972     = cu->per_cu->dwarf2_per_objfile;
24973   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24974
24975   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24976
24977   baton->per_cu = cu->per_cu;
24978   gdb_assert (baton->per_cu);
24979   /* We don't know how long the location list is, but make sure we
24980      don't run off the edge of the section.  */
24981   baton->size = section->size - DW_UNSND (attr);
24982   baton->data = section->buffer + DW_UNSND (attr);
24983   baton->base_address = cu->base_address;
24984   baton->from_dwo = cu->dwo_unit != NULL;
24985 }
24986
24987 static void
24988 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24989                              struct dwarf2_cu *cu, int is_block)
24990 {
24991   struct dwarf2_per_objfile *dwarf2_per_objfile
24992     = cu->per_cu->dwarf2_per_objfile;
24993   struct objfile *objfile = dwarf2_per_objfile->objfile;
24994   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24995
24996   if (attr_form_is_section_offset (attr)
24997       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24998          the section.  If so, fall through to the complaint in the
24999          other branch.  */
25000       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25001     {
25002       struct dwarf2_loclist_baton *baton;
25003
25004       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25005
25006       fill_in_loclist_baton (cu, baton, attr);
25007
25008       if (cu->base_known == 0)
25009         complaint (&symfile_complaints,
25010                    _("Location list used without "
25011                      "specifying the CU base address."));
25012
25013       SYMBOL_ACLASS_INDEX (sym) = (is_block
25014                                    ? dwarf2_loclist_block_index
25015                                    : dwarf2_loclist_index);
25016       SYMBOL_LOCATION_BATON (sym) = baton;
25017     }
25018   else
25019     {
25020       struct dwarf2_locexpr_baton *baton;
25021
25022       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25023       baton->per_cu = cu->per_cu;
25024       gdb_assert (baton->per_cu);
25025
25026       if (attr_form_is_block (attr))
25027         {
25028           /* Note that we're just copying the block's data pointer
25029              here, not the actual data.  We're still pointing into the
25030              info_buffer for SYM's objfile; right now we never release
25031              that buffer, but when we do clean up properly this may
25032              need to change.  */
25033           baton->size = DW_BLOCK (attr)->size;
25034           baton->data = DW_BLOCK (attr)->data;
25035         }
25036       else
25037         {
25038           dwarf2_invalid_attrib_class_complaint ("location description",
25039                                                  SYMBOL_NATURAL_NAME (sym));
25040           baton->size = 0;
25041         }
25042
25043       SYMBOL_ACLASS_INDEX (sym) = (is_block
25044                                    ? dwarf2_locexpr_block_index
25045                                    : dwarf2_locexpr_index);
25046       SYMBOL_LOCATION_BATON (sym) = baton;
25047     }
25048 }
25049
25050 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25051    came from a separate debuginfo file, then the master objfile is
25052    returned.  */
25053
25054 struct objfile *
25055 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25056 {
25057   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25058
25059   /* Return the master objfile, so that we can report and look up the
25060      correct file containing this variable.  */
25061   if (objfile->separate_debug_objfile_backlink)
25062     objfile = objfile->separate_debug_objfile_backlink;
25063
25064   return objfile;
25065 }
25066
25067 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25068    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25069    CU_HEADERP first.  */
25070
25071 static const struct comp_unit_head *
25072 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25073                        struct dwarf2_per_cu_data *per_cu)
25074 {
25075   const gdb_byte *info_ptr;
25076
25077   if (per_cu->cu)
25078     return &per_cu->cu->header;
25079
25080   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25081
25082   memset (cu_headerp, 0, sizeof (*cu_headerp));
25083   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25084                        rcuh_kind::COMPILE);
25085
25086   return cu_headerp;
25087 }
25088
25089 /* Return the address size given in the compilation unit header for CU.  */
25090
25091 int
25092 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25093 {
25094   struct comp_unit_head cu_header_local;
25095   const struct comp_unit_head *cu_headerp;
25096
25097   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25098
25099   return cu_headerp->addr_size;
25100 }
25101
25102 /* Return the offset size given in the compilation unit header for CU.  */
25103
25104 int
25105 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25106 {
25107   struct comp_unit_head cu_header_local;
25108   const struct comp_unit_head *cu_headerp;
25109
25110   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25111
25112   return cu_headerp->offset_size;
25113 }
25114
25115 /* See its dwarf2loc.h declaration.  */
25116
25117 int
25118 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25119 {
25120   struct comp_unit_head cu_header_local;
25121   const struct comp_unit_head *cu_headerp;
25122
25123   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25124
25125   if (cu_headerp->version == 2)
25126     return cu_headerp->addr_size;
25127   else
25128     return cu_headerp->offset_size;
25129 }
25130
25131 /* Return the text offset of the CU.  The returned offset comes from
25132    this CU's objfile.  If this objfile came from a separate debuginfo
25133    file, then the offset may be different from the corresponding
25134    offset in the parent objfile.  */
25135
25136 CORE_ADDR
25137 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25138 {
25139   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25140
25141   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25142 }
25143
25144 /* Return DWARF version number of PER_CU.  */
25145
25146 short
25147 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25148 {
25149   return per_cu->dwarf_version;
25150 }
25151
25152 /* Locate the .debug_info compilation unit from CU's objfile which contains
25153    the DIE at OFFSET.  Raises an error on failure.  */
25154
25155 static struct dwarf2_per_cu_data *
25156 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25157                                   unsigned int offset_in_dwz,
25158                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25159 {
25160   struct dwarf2_per_cu_data *this_cu;
25161   int low, high;
25162   const sect_offset *cu_off;
25163
25164   low = 0;
25165   high = dwarf2_per_objfile->n_comp_units - 1;
25166   while (high > low)
25167     {
25168       struct dwarf2_per_cu_data *mid_cu;
25169       int mid = low + (high - low) / 2;
25170
25171       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25172       cu_off = &mid_cu->sect_off;
25173       if (mid_cu->is_dwz > offset_in_dwz
25174           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25175         high = mid;
25176       else
25177         low = mid + 1;
25178     }
25179   gdb_assert (low == high);
25180   this_cu = dwarf2_per_objfile->all_comp_units[low];
25181   cu_off = &this_cu->sect_off;
25182   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25183     {
25184       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25185         error (_("Dwarf Error: could not find partial DIE containing "
25186                "offset 0x%x [in module %s]"),
25187                to_underlying (sect_off),
25188                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25189
25190       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25191                   <= sect_off);
25192       return dwarf2_per_objfile->all_comp_units[low-1];
25193     }
25194   else
25195     {
25196       this_cu = dwarf2_per_objfile->all_comp_units[low];
25197       if (low == dwarf2_per_objfile->n_comp_units - 1
25198           && sect_off >= this_cu->sect_off + this_cu->length)
25199         error (_("invalid dwarf2 offset %u"), to_underlying (sect_off));
25200       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25201       return this_cu;
25202     }
25203 }
25204
25205 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25206
25207 static void
25208 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
25209 {
25210   memset (cu, 0, sizeof (*cu));
25211   per_cu->cu = cu;
25212   cu->per_cu = per_cu;
25213   obstack_init (&cu->comp_unit_obstack);
25214 }
25215
25216 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25217
25218 static void
25219 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25220                        enum language pretend_language)
25221 {
25222   struct attribute *attr;
25223
25224   /* Set the language we're debugging.  */
25225   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25226   if (attr)
25227     set_cu_language (DW_UNSND (attr), cu);
25228   else
25229     {
25230       cu->language = pretend_language;
25231       cu->language_defn = language_def (cu->language);
25232     }
25233
25234   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25235 }
25236
25237 /* Release one cached compilation unit, CU.  We unlink it from the tree
25238    of compilation units, but we don't remove it from the read_in_chain;
25239    the caller is responsible for that.
25240    NOTE: DATA is a void * because this function is also used as a
25241    cleanup routine.  */
25242
25243 static void
25244 free_heap_comp_unit (void *data)
25245 {
25246   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
25247
25248   gdb_assert (cu->per_cu != NULL);
25249   cu->per_cu->cu = NULL;
25250   cu->per_cu = NULL;
25251
25252   obstack_free (&cu->comp_unit_obstack, NULL);
25253
25254   xfree (cu);
25255 }
25256
25257 /* This cleanup function is passed the address of a dwarf2_cu on the stack
25258    when we're finished with it.  We can't free the pointer itself, but be
25259    sure to unlink it from the cache.  Also release any associated storage.  */
25260
25261 static void
25262 free_stack_comp_unit (void *data)
25263 {
25264   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
25265
25266   gdb_assert (cu->per_cu != NULL);
25267   cu->per_cu->cu = NULL;
25268   cu->per_cu = NULL;
25269
25270   obstack_free (&cu->comp_unit_obstack, NULL);
25271   cu->partial_dies = NULL;
25272 }
25273
25274 /* Free all cached compilation units.  */
25275
25276 static void
25277 free_cached_comp_units (void *data)
25278 {
25279   struct dwarf2_per_objfile *dwarf2_per_objfile
25280     = (struct dwarf2_per_objfile *) data;
25281
25282   dwarf2_per_objfile->free_cached_comp_units ();
25283 }
25284
25285 /* Increase the age counter on each cached compilation unit, and free
25286    any that are too old.  */
25287
25288 static void
25289 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25290 {
25291   struct dwarf2_per_cu_data *per_cu, **last_chain;
25292
25293   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25294   per_cu = dwarf2_per_objfile->read_in_chain;
25295   while (per_cu != NULL)
25296     {
25297       per_cu->cu->last_used ++;
25298       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25299         dwarf2_mark (per_cu->cu);
25300       per_cu = per_cu->cu->read_in_chain;
25301     }
25302
25303   per_cu = dwarf2_per_objfile->read_in_chain;
25304   last_chain = &dwarf2_per_objfile->read_in_chain;
25305   while (per_cu != NULL)
25306     {
25307       struct dwarf2_per_cu_data *next_cu;
25308
25309       next_cu = per_cu->cu->read_in_chain;
25310
25311       if (!per_cu->cu->mark)
25312         {
25313           free_heap_comp_unit (per_cu->cu);
25314           *last_chain = next_cu;
25315         }
25316       else
25317         last_chain = &per_cu->cu->read_in_chain;
25318
25319       per_cu = next_cu;
25320     }
25321 }
25322
25323 /* Remove a single compilation unit from the cache.  */
25324
25325 static void
25326 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25327 {
25328   struct dwarf2_per_cu_data *per_cu, **last_chain;
25329   struct dwarf2_per_objfile *dwarf2_per_objfile
25330     = target_per_cu->dwarf2_per_objfile;
25331
25332   per_cu = dwarf2_per_objfile->read_in_chain;
25333   last_chain = &dwarf2_per_objfile->read_in_chain;
25334   while (per_cu != NULL)
25335     {
25336       struct dwarf2_per_cu_data *next_cu;
25337
25338       next_cu = per_cu->cu->read_in_chain;
25339
25340       if (per_cu == target_per_cu)
25341         {
25342           free_heap_comp_unit (per_cu->cu);
25343           per_cu->cu = NULL;
25344           *last_chain = next_cu;
25345           break;
25346         }
25347       else
25348         last_chain = &per_cu->cu->read_in_chain;
25349
25350       per_cu = next_cu;
25351     }
25352 }
25353
25354 /* Release all extra memory associated with OBJFILE.  */
25355
25356 void
25357 dwarf2_free_objfile (struct objfile *objfile)
25358 {
25359   struct dwarf2_per_objfile *dwarf2_per_objfile
25360     = get_dwarf2_per_objfile (objfile);
25361
25362   if (dwarf2_per_objfile == NULL)
25363     return;
25364
25365   dwarf2_per_objfile->~dwarf2_per_objfile ();
25366 }
25367
25368 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25369    We store these in a hash table separate from the DIEs, and preserve them
25370    when the DIEs are flushed out of cache.
25371
25372    The CU "per_cu" pointer is needed because offset alone is not enough to
25373    uniquely identify the type.  A file may have multiple .debug_types sections,
25374    or the type may come from a DWO file.  Furthermore, while it's more logical
25375    to use per_cu->section+offset, with Fission the section with the data is in
25376    the DWO file but we don't know that section at the point we need it.
25377    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25378    because we can enter the lookup routine, get_die_type_at_offset, from
25379    outside this file, and thus won't necessarily have PER_CU->cu.
25380    Fortunately, PER_CU is stable for the life of the objfile.  */
25381
25382 struct dwarf2_per_cu_offset_and_type
25383 {
25384   const struct dwarf2_per_cu_data *per_cu;
25385   sect_offset sect_off;
25386   struct type *type;
25387 };
25388
25389 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25390
25391 static hashval_t
25392 per_cu_offset_and_type_hash (const void *item)
25393 {
25394   const struct dwarf2_per_cu_offset_and_type *ofs
25395     = (const struct dwarf2_per_cu_offset_and_type *) item;
25396
25397   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25398 }
25399
25400 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25401
25402 static int
25403 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25404 {
25405   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25406     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25407   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25408     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25409
25410   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25411           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25412 }
25413
25414 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25415    table if necessary.  For convenience, return TYPE.
25416
25417    The DIEs reading must have careful ordering to:
25418     * Not cause infite loops trying to read in DIEs as a prerequisite for
25419       reading current DIE.
25420     * Not trying to dereference contents of still incompletely read in types
25421       while reading in other DIEs.
25422     * Enable referencing still incompletely read in types just by a pointer to
25423       the type without accessing its fields.
25424
25425    Therefore caller should follow these rules:
25426      * Try to fetch any prerequisite types we may need to build this DIE type
25427        before building the type and calling set_die_type.
25428      * After building type call set_die_type for current DIE as soon as
25429        possible before fetching more types to complete the current type.
25430      * Make the type as complete as possible before fetching more types.  */
25431
25432 static struct type *
25433 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25434 {
25435   struct dwarf2_per_objfile *dwarf2_per_objfile
25436     = cu->per_cu->dwarf2_per_objfile;
25437   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25438   struct objfile *objfile = dwarf2_per_objfile->objfile;
25439   struct attribute *attr;
25440   struct dynamic_prop prop;
25441
25442   /* For Ada types, make sure that the gnat-specific data is always
25443      initialized (if not already set).  There are a few types where
25444      we should not be doing so, because the type-specific area is
25445      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25446      where the type-specific area is used to store the floatformat).
25447      But this is not a problem, because the gnat-specific information
25448      is actually not needed for these types.  */
25449   if (need_gnat_info (cu)
25450       && TYPE_CODE (type) != TYPE_CODE_FUNC
25451       && TYPE_CODE (type) != TYPE_CODE_FLT
25452       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25453       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25454       && TYPE_CODE (type) != TYPE_CODE_METHOD
25455       && !HAVE_GNAT_AUX_INFO (type))
25456     INIT_GNAT_SPECIFIC (type);
25457
25458   /* Read DW_AT_allocated and set in type.  */
25459   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25460   if (attr_form_is_block (attr))
25461     {
25462       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25463         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
25464     }
25465   else if (attr != NULL)
25466     {
25467       complaint (&symfile_complaints,
25468                  _("DW_AT_allocated has the wrong form (%s) at DIE 0x%x"),
25469                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25470                  to_underlying (die->sect_off));
25471     }
25472
25473   /* Read DW_AT_associated and set in type.  */
25474   attr = dwarf2_attr (die, DW_AT_associated, cu);
25475   if (attr_form_is_block (attr))
25476     {
25477       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25478         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
25479     }
25480   else if (attr != NULL)
25481     {
25482       complaint (&symfile_complaints,
25483                  _("DW_AT_associated has the wrong form (%s) at DIE 0x%x"),
25484                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25485                  to_underlying (die->sect_off));
25486     }
25487
25488   /* Read DW_AT_data_location and set in type.  */
25489   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25490   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25491     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
25492
25493   if (dwarf2_per_objfile->die_type_hash == NULL)
25494     {
25495       dwarf2_per_objfile->die_type_hash =
25496         htab_create_alloc_ex (127,
25497                               per_cu_offset_and_type_hash,
25498                               per_cu_offset_and_type_eq,
25499                               NULL,
25500                               &objfile->objfile_obstack,
25501                               hashtab_obstack_allocate,
25502                               dummy_obstack_deallocate);
25503     }
25504
25505   ofs.per_cu = cu->per_cu;
25506   ofs.sect_off = die->sect_off;
25507   ofs.type = type;
25508   slot = (struct dwarf2_per_cu_offset_and_type **)
25509     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25510   if (*slot)
25511     complaint (&symfile_complaints,
25512                _("A problem internal to GDB: DIE 0x%x has type already set"),
25513                to_underlying (die->sect_off));
25514   *slot = XOBNEW (&objfile->objfile_obstack,
25515                   struct dwarf2_per_cu_offset_and_type);
25516   **slot = ofs;
25517   return type;
25518 }
25519
25520 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25521    or return NULL if the die does not have a saved type.  */
25522
25523 static struct type *
25524 get_die_type_at_offset (sect_offset sect_off,
25525                         struct dwarf2_per_cu_data *per_cu)
25526 {
25527   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25528   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25529
25530   if (dwarf2_per_objfile->die_type_hash == NULL)
25531     return NULL;
25532
25533   ofs.per_cu = per_cu;
25534   ofs.sect_off = sect_off;
25535   slot = ((struct dwarf2_per_cu_offset_and_type *)
25536           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25537   if (slot)
25538     return slot->type;
25539   else
25540     return NULL;
25541 }
25542
25543 /* Look up the type for DIE in CU in die_type_hash,
25544    or return NULL if DIE does not have a saved type.  */
25545
25546 static struct type *
25547 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25548 {
25549   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25550 }
25551
25552 /* Add a dependence relationship from CU to REF_PER_CU.  */
25553
25554 static void
25555 dwarf2_add_dependence (struct dwarf2_cu *cu,
25556                        struct dwarf2_per_cu_data *ref_per_cu)
25557 {
25558   void **slot;
25559
25560   if (cu->dependencies == NULL)
25561     cu->dependencies
25562       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25563                               NULL, &cu->comp_unit_obstack,
25564                               hashtab_obstack_allocate,
25565                               dummy_obstack_deallocate);
25566
25567   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25568   if (*slot == NULL)
25569     *slot = ref_per_cu;
25570 }
25571
25572 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25573    Set the mark field in every compilation unit in the
25574    cache that we must keep because we are keeping CU.  */
25575
25576 static int
25577 dwarf2_mark_helper (void **slot, void *data)
25578 {
25579   struct dwarf2_per_cu_data *per_cu;
25580
25581   per_cu = (struct dwarf2_per_cu_data *) *slot;
25582
25583   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25584      reading of the chain.  As such dependencies remain valid it is not much
25585      useful to track and undo them during QUIT cleanups.  */
25586   if (per_cu->cu == NULL)
25587     return 1;
25588
25589   if (per_cu->cu->mark)
25590     return 1;
25591   per_cu->cu->mark = 1;
25592
25593   if (per_cu->cu->dependencies != NULL)
25594     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25595
25596   return 1;
25597 }
25598
25599 /* Set the mark field in CU and in every other compilation unit in the
25600    cache that we must keep because we are keeping CU.  */
25601
25602 static void
25603 dwarf2_mark (struct dwarf2_cu *cu)
25604 {
25605   if (cu->mark)
25606     return;
25607   cu->mark = 1;
25608   if (cu->dependencies != NULL)
25609     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25610 }
25611
25612 static void
25613 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25614 {
25615   while (per_cu)
25616     {
25617       per_cu->cu->mark = 0;
25618       per_cu = per_cu->cu->read_in_chain;
25619     }
25620 }
25621
25622 /* Trivial hash function for partial_die_info: the hash value of a DIE
25623    is its offset in .debug_info for this objfile.  */
25624
25625 static hashval_t
25626 partial_die_hash (const void *item)
25627 {
25628   const struct partial_die_info *part_die
25629     = (const struct partial_die_info *) item;
25630
25631   return to_underlying (part_die->sect_off);
25632 }
25633
25634 /* Trivial comparison function for partial_die_info structures: two DIEs
25635    are equal if they have the same offset.  */
25636
25637 static int
25638 partial_die_eq (const void *item_lhs, const void *item_rhs)
25639 {
25640   const struct partial_die_info *part_die_lhs
25641     = (const struct partial_die_info *) item_lhs;
25642   const struct partial_die_info *part_die_rhs
25643     = (const struct partial_die_info *) item_rhs;
25644
25645   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25646 }
25647
25648 static struct cmd_list_element *set_dwarf_cmdlist;
25649 static struct cmd_list_element *show_dwarf_cmdlist;
25650
25651 static void
25652 set_dwarf_cmd (const char *args, int from_tty)
25653 {
25654   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25655              gdb_stdout);
25656 }
25657
25658 static void
25659 show_dwarf_cmd (const char *args, int from_tty)
25660 {
25661   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25662 }
25663
25664 /* Free data associated with OBJFILE, if necessary.  */
25665
25666 static void
25667 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
25668 {
25669   struct dwarf2_per_objfile *data = (struct dwarf2_per_objfile *) d;
25670   int ix;
25671
25672   for (ix = 0; ix < data->n_comp_units; ++ix)
25673    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
25674
25675   for (ix = 0; ix < data->n_type_units; ++ix)
25676     VEC_free (dwarf2_per_cu_ptr,
25677               data->all_type_units[ix]->per_cu.imported_symtabs);
25678   xfree (data->all_type_units);
25679
25680   VEC_free (dwarf2_section_info_def, data->types);
25681
25682   if (data->dwo_files)
25683     free_dwo_files (data->dwo_files, objfile);
25684   if (data->dwp_file)
25685     gdb_bfd_unref (data->dwp_file->dbfd);
25686
25687   if (data->dwz_file && data->dwz_file->dwz_bfd)
25688     gdb_bfd_unref (data->dwz_file->dwz_bfd);
25689
25690   if (data->index_table != NULL)
25691     data->index_table->~mapped_index ();
25692 }
25693
25694 \f
25695 /* The "save gdb-index" command.  */
25696
25697 /* Write SIZE bytes from the buffer pointed to by DATA to FILE, with
25698    error checking.  */
25699
25700 static void
25701 file_write (FILE *file, const void *data, size_t size)
25702 {
25703   if (fwrite (data, 1, size, file) != size)
25704     error (_("couldn't data write to file"));
25705 }
25706
25707 /* Write the contents of VEC to FILE, with error checking.  */
25708
25709 template<typename Elem, typename Alloc>
25710 static void
25711 file_write (FILE *file, const std::vector<Elem, Alloc> &vec)
25712 {
25713   file_write (file, vec.data (), vec.size () * sizeof (vec[0]));
25714 }
25715
25716 /* In-memory buffer to prepare data to be written later to a file.  */
25717 class data_buf
25718 {
25719 public:
25720   /* Copy DATA to the end of the buffer.  */
25721   template<typename T>
25722   void append_data (const T &data)
25723   {
25724     std::copy (reinterpret_cast<const gdb_byte *> (&data),
25725                reinterpret_cast<const gdb_byte *> (&data + 1),
25726                grow (sizeof (data)));
25727   }
25728
25729   /* Copy CSTR (a zero-terminated string) to the end of buffer.  The
25730      terminating zero is appended too.  */
25731   void append_cstr0 (const char *cstr)
25732   {
25733     const size_t size = strlen (cstr) + 1;
25734     std::copy (cstr, cstr + size, grow (size));
25735   }
25736
25737   /* Store INPUT as ULEB128 to the end of buffer.  */
25738   void append_unsigned_leb128 (ULONGEST input)
25739   {
25740     for (;;)
25741       {
25742         gdb_byte output = input & 0x7f;
25743         input >>= 7;
25744         if (input)
25745           output |= 0x80;
25746         append_data (output);
25747         if (input == 0)
25748           break;
25749       }
25750   }
25751
25752   /* Accept a host-format integer in VAL and append it to the buffer
25753      as a target-format integer which is LEN bytes long.  */
25754   void append_uint (size_t len, bfd_endian byte_order, ULONGEST val)
25755   {
25756     ::store_unsigned_integer (grow (len), len, byte_order, val);
25757   }
25758
25759   /* Return the size of the buffer.  */
25760   size_t size () const
25761   {
25762     return m_vec.size ();
25763   }
25764
25765   /* Return true iff the buffer is empty.  */
25766   bool empty () const
25767   {
25768     return m_vec.empty ();
25769   }
25770
25771   /* Write the buffer to FILE.  */
25772   void file_write (FILE *file) const
25773   {
25774     ::file_write (file, m_vec);
25775   }
25776
25777 private:
25778   /* Grow SIZE bytes at the end of the buffer.  Returns a pointer to
25779      the start of the new block.  */
25780   gdb_byte *grow (size_t size)
25781   {
25782     m_vec.resize (m_vec.size () + size);
25783     return &*m_vec.end () - size;
25784   }
25785
25786   gdb::byte_vector m_vec;
25787 };
25788
25789 /* An entry in the symbol table.  */
25790 struct symtab_index_entry
25791 {
25792   /* The name of the symbol.  */
25793   const char *name;
25794   /* The offset of the name in the constant pool.  */
25795   offset_type index_offset;
25796   /* A sorted vector of the indices of all the CUs that hold an object
25797      of this name.  */
25798   std::vector<offset_type> cu_indices;
25799 };
25800
25801 /* The symbol table.  This is a power-of-2-sized hash table.  */
25802 struct mapped_symtab
25803 {
25804   mapped_symtab ()
25805   {
25806     data.resize (1024);
25807   }
25808
25809   offset_type n_elements = 0;
25810   std::vector<symtab_index_entry> data;
25811 };
25812
25813 /* Find a slot in SYMTAB for the symbol NAME.  Returns a reference to
25814    the slot.
25815    
25816    Function is used only during write_hash_table so no index format backward
25817    compatibility is needed.  */
25818
25819 static symtab_index_entry &
25820 find_slot (struct mapped_symtab *symtab, const char *name)
25821 {
25822   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
25823
25824   index = hash & (symtab->data.size () - 1);
25825   step = ((hash * 17) & (symtab->data.size () - 1)) | 1;
25826
25827   for (;;)
25828     {
25829       if (symtab->data[index].name == NULL
25830           || strcmp (name, symtab->data[index].name) == 0)
25831         return symtab->data[index];
25832       index = (index + step) & (symtab->data.size () - 1);
25833     }
25834 }
25835
25836 /* Expand SYMTAB's hash table.  */
25837
25838 static void
25839 hash_expand (struct mapped_symtab *symtab)
25840 {
25841   auto old_entries = std::move (symtab->data);
25842
25843   symtab->data.clear ();
25844   symtab->data.resize (old_entries.size () * 2);
25845
25846   for (auto &it : old_entries)
25847     if (it.name != NULL)
25848       {
25849         auto &ref = find_slot (symtab, it.name);
25850         ref = std::move (it);
25851       }
25852 }
25853
25854 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
25855    CU_INDEX is the index of the CU in which the symbol appears.
25856    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
25857
25858 static void
25859 add_index_entry (struct mapped_symtab *symtab, const char *name,
25860                  int is_static, gdb_index_symbol_kind kind,
25861                  offset_type cu_index)
25862 {
25863   offset_type cu_index_and_attrs;
25864
25865   ++symtab->n_elements;
25866   if (4 * symtab->n_elements / 3 >= symtab->data.size ())
25867     hash_expand (symtab);
25868
25869   symtab_index_entry &slot = find_slot (symtab, name);
25870   if (slot.name == NULL)
25871     {
25872       slot.name = name;
25873       /* index_offset is set later.  */
25874     }
25875
25876   cu_index_and_attrs = 0;
25877   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
25878   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
25879   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
25880
25881   /* We don't want to record an index value twice as we want to avoid the
25882      duplication.
25883      We process all global symbols and then all static symbols
25884      (which would allow us to avoid the duplication by only having to check
25885      the last entry pushed), but a symbol could have multiple kinds in one CU.
25886      To keep things simple we don't worry about the duplication here and
25887      sort and uniqufy the list after we've processed all symbols.  */
25888   slot.cu_indices.push_back (cu_index_and_attrs);
25889 }
25890
25891 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
25892
25893 static void
25894 uniquify_cu_indices (struct mapped_symtab *symtab)
25895 {
25896   for (auto &entry : symtab->data)
25897     {
25898       if (entry.name != NULL && !entry.cu_indices.empty ())
25899         {
25900           auto &cu_indices = entry.cu_indices;
25901           std::sort (cu_indices.begin (), cu_indices.end ());
25902           auto from = std::unique (cu_indices.begin (), cu_indices.end ());
25903           cu_indices.erase (from, cu_indices.end ());
25904         }
25905     }
25906 }
25907
25908 /* A form of 'const char *' suitable for container keys.  Only the
25909    pointer is stored.  The strings themselves are compared, not the
25910    pointers.  */
25911 class c_str_view
25912 {
25913 public:
25914   c_str_view (const char *cstr)
25915     : m_cstr (cstr)
25916   {}
25917
25918   bool operator== (const c_str_view &other) const
25919   {
25920     return strcmp (m_cstr, other.m_cstr) == 0;
25921   }
25922
25923   /* Return the underlying C string.  Note, the returned string is
25924      only a reference with lifetime of this object.  */
25925   const char *c_str () const
25926   {
25927     return m_cstr;
25928   }
25929
25930 private:
25931   friend class c_str_view_hasher;
25932   const char *const m_cstr;
25933 };
25934
25935 /* A std::unordered_map::hasher for c_str_view that uses the right
25936    hash function for strings in a mapped index.  */
25937 class c_str_view_hasher
25938 {
25939 public:
25940   size_t operator () (const c_str_view &x) const
25941   {
25942     return mapped_index_string_hash (INT_MAX, x.m_cstr);
25943   }
25944 };
25945
25946 /* A std::unordered_map::hasher for std::vector<>.  */
25947 template<typename T>
25948 class vector_hasher
25949 {
25950 public:
25951   size_t operator () (const std::vector<T> &key) const
25952   {
25953     return iterative_hash (key.data (),
25954                            sizeof (key.front ()) * key.size (), 0);
25955   }
25956 };
25957
25958 /* Write the mapped hash table SYMTAB to the data buffer OUTPUT, with
25959    constant pool entries going into the data buffer CPOOL.  */
25960
25961 static void
25962 write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
25963 {
25964   {
25965     /* Elements are sorted vectors of the indices of all the CUs that
25966        hold an object of this name.  */
25967     std::unordered_map<std::vector<offset_type>, offset_type,
25968                        vector_hasher<offset_type>>
25969       symbol_hash_table;
25970
25971     /* We add all the index vectors to the constant pool first, to
25972        ensure alignment is ok.  */
25973     for (symtab_index_entry &entry : symtab->data)
25974       {
25975         if (entry.name == NULL)
25976           continue;
25977         gdb_assert (entry.index_offset == 0);
25978
25979         /* Finding before inserting is faster than always trying to
25980            insert, because inserting always allocates a node, does the
25981            lookup, and then destroys the new node if another node
25982            already had the same key.  C++17 try_emplace will avoid
25983            this.  */
25984         const auto found
25985           = symbol_hash_table.find (entry.cu_indices);
25986         if (found != symbol_hash_table.end ())
25987           {
25988             entry.index_offset = found->second;
25989             continue;
25990           }
25991
25992         symbol_hash_table.emplace (entry.cu_indices, cpool.size ());
25993         entry.index_offset = cpool.size ();
25994         cpool.append_data (MAYBE_SWAP (entry.cu_indices.size ()));
25995         for (const auto index : entry.cu_indices)
25996           cpool.append_data (MAYBE_SWAP (index));
25997       }
25998   }
25999
26000   /* Now write out the hash table.  */
26001   std::unordered_map<c_str_view, offset_type, c_str_view_hasher> str_table;
26002   for (const auto &entry : symtab->data)
26003     {
26004       offset_type str_off, vec_off;
26005
26006       if (entry.name != NULL)
26007         {
26008           const auto insertpair = str_table.emplace (entry.name, cpool.size ());
26009           if (insertpair.second)
26010             cpool.append_cstr0 (entry.name);
26011           str_off = insertpair.first->second;
26012           vec_off = entry.index_offset;
26013         }
26014       else
26015         {
26016           /* While 0 is a valid constant pool index, it is not valid
26017              to have 0 for both offsets.  */
26018           str_off = 0;
26019           vec_off = 0;
26020         }
26021
26022       output.append_data (MAYBE_SWAP (str_off));
26023       output.append_data (MAYBE_SWAP (vec_off));
26024     }
26025 }
26026
26027 typedef std::unordered_map<partial_symtab *, unsigned int> psym_index_map;
26028
26029 /* Helper struct for building the address table.  */
26030 struct addrmap_index_data
26031 {
26032   addrmap_index_data (data_buf &addr_vec_, psym_index_map &cu_index_htab_)
26033     : addr_vec (addr_vec_), cu_index_htab (cu_index_htab_)
26034   {}
26035
26036   struct objfile *objfile;
26037   data_buf &addr_vec;
26038   psym_index_map &cu_index_htab;
26039
26040   /* Non-zero if the previous_* fields are valid.
26041      We can't write an entry until we see the next entry (since it is only then
26042      that we know the end of the entry).  */
26043   int previous_valid;
26044   /* Index of the CU in the table of all CUs in the index file.  */
26045   unsigned int previous_cu_index;
26046   /* Start address of the CU.  */
26047   CORE_ADDR previous_cu_start;
26048 };
26049
26050 /* Write an address entry to ADDR_VEC.  */
26051
26052 static void
26053 add_address_entry (struct objfile *objfile, data_buf &addr_vec,
26054                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
26055 {
26056   CORE_ADDR baseaddr;
26057
26058   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
26059
26060   addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, start - baseaddr);
26061   addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, end - baseaddr);
26062   addr_vec.append_data (MAYBE_SWAP (cu_index));
26063 }
26064
26065 /* Worker function for traversing an addrmap to build the address table.  */
26066
26067 static int
26068 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
26069 {
26070   struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
26071   struct partial_symtab *pst = (struct partial_symtab *) obj;
26072
26073   if (data->previous_valid)
26074     add_address_entry (data->objfile, data->addr_vec,
26075                        data->previous_cu_start, start_addr,
26076                        data->previous_cu_index);
26077
26078   data->previous_cu_start = start_addr;
26079   if (pst != NULL)
26080     {
26081       const auto it = data->cu_index_htab.find (pst);
26082       gdb_assert (it != data->cu_index_htab.cend ());
26083       data->previous_cu_index = it->second;
26084       data->previous_valid = 1;
26085     }
26086   else
26087     data->previous_valid = 0;
26088
26089   return 0;
26090 }
26091
26092 /* Write OBJFILE's address map to ADDR_VEC.
26093    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
26094    in the index file.  */
26095
26096 static void
26097 write_address_map (struct objfile *objfile, data_buf &addr_vec,
26098                    psym_index_map &cu_index_htab)
26099 {
26100   struct addrmap_index_data addrmap_index_data (addr_vec, cu_index_htab);
26101
26102   /* When writing the address table, we have to cope with the fact that
26103      the addrmap iterator only provides the start of a region; we have to
26104      wait until the next invocation to get the start of the next region.  */
26105
26106   addrmap_index_data.objfile = objfile;
26107   addrmap_index_data.previous_valid = 0;
26108
26109   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
26110                    &addrmap_index_data);
26111
26112   /* It's highly unlikely the last entry (end address = 0xff...ff)
26113      is valid, but we should still handle it.
26114      The end address is recorded as the start of the next region, but that
26115      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
26116      anyway.  */
26117   if (addrmap_index_data.previous_valid)
26118     add_address_entry (objfile, addr_vec,
26119                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
26120                        addrmap_index_data.previous_cu_index);
26121 }
26122
26123 /* Return the symbol kind of PSYM.  */
26124
26125 static gdb_index_symbol_kind
26126 symbol_kind (struct partial_symbol *psym)
26127 {
26128   domain_enum domain = PSYMBOL_DOMAIN (psym);
26129   enum address_class aclass = PSYMBOL_CLASS (psym);
26130
26131   switch (domain)
26132     {
26133     case VAR_DOMAIN:
26134       switch (aclass)
26135         {
26136         case LOC_BLOCK:
26137           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
26138         case LOC_TYPEDEF:
26139           return GDB_INDEX_SYMBOL_KIND_TYPE;
26140         case LOC_COMPUTED:
26141         case LOC_CONST_BYTES:
26142         case LOC_OPTIMIZED_OUT:
26143         case LOC_STATIC:
26144           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
26145         case LOC_CONST:
26146           /* Note: It's currently impossible to recognize psyms as enum values
26147              short of reading the type info.  For now punt.  */
26148           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
26149         default:
26150           /* There are other LOC_FOO values that one might want to classify
26151              as variables, but dwarf2read.c doesn't currently use them.  */
26152           return GDB_INDEX_SYMBOL_KIND_OTHER;
26153         }
26154     case STRUCT_DOMAIN:
26155       return GDB_INDEX_SYMBOL_KIND_TYPE;
26156     default:
26157       return GDB_INDEX_SYMBOL_KIND_OTHER;
26158     }
26159 }
26160
26161 /* Add a list of partial symbols to SYMTAB.  */
26162
26163 static void
26164 write_psymbols (struct mapped_symtab *symtab,
26165                 std::unordered_set<partial_symbol *> &psyms_seen,
26166                 struct partial_symbol **psymp,
26167                 int count,
26168                 offset_type cu_index,
26169                 int is_static)
26170 {
26171   for (; count-- > 0; ++psymp)
26172     {
26173       struct partial_symbol *psym = *psymp;
26174
26175       if (SYMBOL_LANGUAGE (psym) == language_ada)
26176         error (_("Ada is not currently supported by the index"));
26177
26178       /* Only add a given psymbol once.  */
26179       if (psyms_seen.insert (psym).second)
26180         {
26181           gdb_index_symbol_kind kind = symbol_kind (psym);
26182
26183           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
26184                            is_static, kind, cu_index);
26185         }
26186     }
26187 }
26188
26189 /* A helper struct used when iterating over debug_types.  */
26190 struct signatured_type_index_data
26191 {
26192   signatured_type_index_data (data_buf &types_list_,
26193                               std::unordered_set<partial_symbol *> &psyms_seen_)
26194     : types_list (types_list_), psyms_seen (psyms_seen_)
26195   {}
26196
26197   struct objfile *objfile;
26198   struct mapped_symtab *symtab;
26199   data_buf &types_list;
26200   std::unordered_set<partial_symbol *> &psyms_seen;
26201   int cu_index;
26202 };
26203
26204 /* A helper function that writes a single signatured_type to an
26205    obstack.  */
26206
26207 static int
26208 write_one_signatured_type (void **slot, void *d)
26209 {
26210   struct signatured_type_index_data *info
26211     = (struct signatured_type_index_data *) d;
26212   struct signatured_type *entry = (struct signatured_type *) *slot;
26213   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
26214
26215   write_psymbols (info->symtab,
26216                   info->psyms_seen,
26217                   &info->objfile->global_psymbols[psymtab->globals_offset],
26218                   psymtab->n_global_syms, info->cu_index,
26219                   0);
26220   write_psymbols (info->symtab,
26221                   info->psyms_seen,
26222                   &info->objfile->static_psymbols[psymtab->statics_offset],
26223                   psymtab->n_static_syms, info->cu_index,
26224                   1);
26225
26226   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
26227                                 to_underlying (entry->per_cu.sect_off));
26228   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
26229                                 to_underlying (entry->type_offset_in_tu));
26230   info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, entry->signature);
26231
26232   ++info->cu_index;
26233
26234   return 1;
26235 }
26236
26237 /* Recurse into all "included" dependencies and count their symbols as
26238    if they appeared in this psymtab.  */
26239
26240 static void
26241 recursively_count_psymbols (struct partial_symtab *psymtab,
26242                             size_t &psyms_seen)
26243 {
26244   for (int i = 0; i < psymtab->number_of_dependencies; ++i)
26245     if (psymtab->dependencies[i]->user != NULL)
26246       recursively_count_psymbols (psymtab->dependencies[i],
26247                                   psyms_seen);
26248
26249   psyms_seen += psymtab->n_global_syms;
26250   psyms_seen += psymtab->n_static_syms;
26251 }
26252
26253 /* Recurse into all "included" dependencies and write their symbols as
26254    if they appeared in this psymtab.  */
26255
26256 static void
26257 recursively_write_psymbols (struct objfile *objfile,
26258                             struct partial_symtab *psymtab,
26259                             struct mapped_symtab *symtab,
26260                             std::unordered_set<partial_symbol *> &psyms_seen,
26261                             offset_type cu_index)
26262 {
26263   int i;
26264
26265   for (i = 0; i < psymtab->number_of_dependencies; ++i)
26266     if (psymtab->dependencies[i]->user != NULL)
26267       recursively_write_psymbols (objfile, psymtab->dependencies[i],
26268                                   symtab, psyms_seen, cu_index);
26269
26270   write_psymbols (symtab,
26271                   psyms_seen,
26272                   &objfile->global_psymbols[psymtab->globals_offset],
26273                   psymtab->n_global_syms, cu_index,
26274                   0);
26275   write_psymbols (symtab,
26276                   psyms_seen,
26277                   &objfile->static_psymbols[psymtab->statics_offset],
26278                   psymtab->n_static_syms, cu_index,
26279                   1);
26280 }
26281
26282 /* DWARF-5 .debug_names builder.  */
26283 class debug_names
26284 {
26285 public:
26286   debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile, bool is_dwarf64,
26287                bfd_endian dwarf5_byte_order)
26288     : m_dwarf5_byte_order (dwarf5_byte_order),
26289       m_dwarf32 (dwarf5_byte_order),
26290       m_dwarf64 (dwarf5_byte_order),
26291       m_dwarf (is_dwarf64
26292                ? static_cast<dwarf &> (m_dwarf64)
26293                : static_cast<dwarf &> (m_dwarf32)),
26294       m_name_table_string_offs (m_dwarf.name_table_string_offs),
26295       m_name_table_entry_offs (m_dwarf.name_table_entry_offs),
26296       m_debugstrlookup (dwarf2_per_objfile)
26297   {}
26298
26299   int dwarf5_offset_size () const
26300   {
26301     const bool dwarf5_is_dwarf64 = &m_dwarf == &m_dwarf64;
26302     return dwarf5_is_dwarf64 ? 8 : 4;
26303   }
26304
26305   /* Is this symbol from DW_TAG_compile_unit or DW_TAG_type_unit?  */
26306   enum class unit_kind { cu, tu };
26307
26308   /* Insert one symbol.  */
26309   void insert (const partial_symbol *psym, int cu_index, bool is_static,
26310                unit_kind kind)
26311   {
26312     const int dwarf_tag = psymbol_tag (psym);
26313     if (dwarf_tag == 0)
26314       return;
26315     const char *const name = SYMBOL_SEARCH_NAME (psym);
26316     const auto insertpair
26317       = m_name_to_value_set.emplace (c_str_view (name),
26318                                      std::set<symbol_value> ());
26319     std::set<symbol_value> &value_set = insertpair.first->second;
26320     value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static, kind));
26321   }
26322
26323   /* Build all the tables.  All symbols must be already inserted.
26324      This function does not call file_write, caller has to do it
26325      afterwards.  */
26326   void build ()
26327   {
26328     /* Verify the build method has not be called twice.  */
26329     gdb_assert (m_abbrev_table.empty ());
26330     const size_t name_count = m_name_to_value_set.size ();
26331     m_bucket_table.resize
26332       (std::pow (2, std::ceil (std::log2 (name_count * 4 / 3))));
26333     m_hash_table.reserve (name_count);
26334     m_name_table_string_offs.reserve (name_count);
26335     m_name_table_entry_offs.reserve (name_count);
26336
26337     /* Map each hash of symbol to its name and value.  */
26338     struct hash_it_pair
26339     {
26340       uint32_t hash;
26341       decltype (m_name_to_value_set)::const_iterator it;
26342     };
26343     std::vector<std::forward_list<hash_it_pair>> bucket_hash;
26344     bucket_hash.resize (m_bucket_table.size ());
26345     for (decltype (m_name_to_value_set)::const_iterator it
26346            = m_name_to_value_set.cbegin ();
26347          it != m_name_to_value_set.cend ();
26348          ++it)
26349       {
26350         const char *const name = it->first.c_str ();
26351         const uint32_t hash = dwarf5_djb_hash (name);
26352         hash_it_pair hashitpair;
26353         hashitpair.hash = hash;
26354         hashitpair.it = it;
26355         auto &slot = bucket_hash[hash % bucket_hash.size()];
26356         slot.push_front (std::move (hashitpair));
26357       }
26358     for (size_t bucket_ix = 0; bucket_ix < bucket_hash.size (); ++bucket_ix)
26359       {
26360         const std::forward_list<hash_it_pair> &hashitlist
26361           = bucket_hash[bucket_ix];
26362         if (hashitlist.empty ())
26363           continue;
26364         uint32_t &bucket_slot = m_bucket_table[bucket_ix];
26365         /* The hashes array is indexed starting at 1.  */
26366         store_unsigned_integer (reinterpret_cast<gdb_byte *> (&bucket_slot),
26367                                 sizeof (bucket_slot), m_dwarf5_byte_order,
26368                                 m_hash_table.size () + 1);
26369         for (const hash_it_pair &hashitpair : hashitlist)
26370           {
26371             m_hash_table.push_back (0);
26372             store_unsigned_integer (reinterpret_cast<gdb_byte *>
26373                                                         (&m_hash_table.back ()),
26374                                     sizeof (m_hash_table.back ()),
26375                                     m_dwarf5_byte_order, hashitpair.hash);
26376             const c_str_view &name = hashitpair.it->first;
26377             const std::set<symbol_value> &value_set = hashitpair.it->second;
26378             m_name_table_string_offs.push_back_reorder
26379               (m_debugstrlookup.lookup (name.c_str ()));
26380             m_name_table_entry_offs.push_back_reorder (m_entry_pool.size ());
26381             gdb_assert (!value_set.empty ());
26382             for (const symbol_value &value : value_set)
26383               {
26384                 int &idx = m_indexkey_to_idx[index_key (value.dwarf_tag,
26385                                                         value.is_static,
26386                                                         value.kind)];
26387                 if (idx == 0)
26388                   {
26389                     idx = m_idx_next++;
26390                     m_abbrev_table.append_unsigned_leb128 (idx);
26391                     m_abbrev_table.append_unsigned_leb128 (value.dwarf_tag);
26392                     m_abbrev_table.append_unsigned_leb128
26393                               (value.kind == unit_kind::cu ? DW_IDX_compile_unit
26394                                                            : DW_IDX_type_unit);
26395                     m_abbrev_table.append_unsigned_leb128 (DW_FORM_udata);
26396                     m_abbrev_table.append_unsigned_leb128 (value.is_static
26397                                                            ? DW_IDX_GNU_internal
26398                                                            : DW_IDX_GNU_external);
26399                     m_abbrev_table.append_unsigned_leb128 (DW_FORM_flag_present);
26400
26401                     /* Terminate attributes list.  */
26402                     m_abbrev_table.append_unsigned_leb128 (0);
26403                     m_abbrev_table.append_unsigned_leb128 (0);
26404                   }
26405
26406                 m_entry_pool.append_unsigned_leb128 (idx);
26407                 m_entry_pool.append_unsigned_leb128 (value.cu_index);
26408               }
26409
26410             /* Terminate the list of CUs.  */
26411             m_entry_pool.append_unsigned_leb128 (0);
26412           }
26413       }
26414     gdb_assert (m_hash_table.size () == name_count);
26415
26416     /* Terminate tags list.  */
26417     m_abbrev_table.append_unsigned_leb128 (0);
26418   }
26419
26420   /* Return .debug_names bucket count.  This must be called only after
26421      calling the build method.  */
26422   uint32_t bucket_count () const
26423   {
26424     /* Verify the build method has been already called.  */
26425     gdb_assert (!m_abbrev_table.empty ());
26426     const uint32_t retval = m_bucket_table.size ();
26427
26428     /* Check for overflow.  */
26429     gdb_assert (retval == m_bucket_table.size ());
26430     return retval;
26431   }
26432
26433   /* Return .debug_names names count.  This must be called only after
26434      calling the build method.  */
26435   uint32_t name_count () const
26436   {
26437     /* Verify the build method has been already called.  */
26438     gdb_assert (!m_abbrev_table.empty ());
26439     const uint32_t retval = m_hash_table.size ();
26440
26441     /* Check for overflow.  */
26442     gdb_assert (retval == m_hash_table.size ());
26443     return retval;
26444   }
26445
26446   /* Return number of bytes of .debug_names abbreviation table.  This
26447      must be called only after calling the build method.  */
26448   uint32_t abbrev_table_bytes () const
26449   {
26450     gdb_assert (!m_abbrev_table.empty ());
26451     return m_abbrev_table.size ();
26452   }
26453
26454   /* Recurse into all "included" dependencies and store their symbols
26455      as if they appeared in this psymtab.  */
26456   void recursively_write_psymbols
26457     (struct objfile *objfile,
26458      struct partial_symtab *psymtab,
26459      std::unordered_set<partial_symbol *> &psyms_seen,
26460      int cu_index)
26461   {
26462     for (int i = 0; i < psymtab->number_of_dependencies; ++i)
26463       if (psymtab->dependencies[i]->user != NULL)
26464         recursively_write_psymbols (objfile, psymtab->dependencies[i],
26465                                     psyms_seen, cu_index);
26466
26467     write_psymbols (psyms_seen,
26468                     &objfile->global_psymbols[psymtab->globals_offset],
26469                     psymtab->n_global_syms, cu_index, false, unit_kind::cu);
26470     write_psymbols (psyms_seen,
26471                     &objfile->static_psymbols[psymtab->statics_offset],
26472                     psymtab->n_static_syms, cu_index, true, unit_kind::cu);
26473   }
26474
26475   /* Return number of bytes the .debug_names section will have.  This
26476      must be called only after calling the build method.  */
26477   size_t bytes () const
26478   {
26479     /* Verify the build method has been already called.  */
26480     gdb_assert (!m_abbrev_table.empty ());
26481     size_t expected_bytes = 0;
26482     expected_bytes += m_bucket_table.size () * sizeof (m_bucket_table[0]);
26483     expected_bytes += m_hash_table.size () * sizeof (m_hash_table[0]);
26484     expected_bytes += m_name_table_string_offs.bytes ();
26485     expected_bytes += m_name_table_entry_offs.bytes ();
26486     expected_bytes += m_abbrev_table.size ();
26487     expected_bytes += m_entry_pool.size ();
26488     return expected_bytes;
26489   }
26490
26491   /* Write .debug_names to FILE_NAMES and .debug_str addition to
26492      FILE_STR.  This must be called only after calling the build
26493      method.  */
26494   void file_write (FILE *file_names, FILE *file_str) const
26495   {
26496     /* Verify the build method has been already called.  */
26497     gdb_assert (!m_abbrev_table.empty ());
26498     ::file_write (file_names, m_bucket_table);
26499     ::file_write (file_names, m_hash_table);
26500     m_name_table_string_offs.file_write (file_names);
26501     m_name_table_entry_offs.file_write (file_names);
26502     m_abbrev_table.file_write (file_names);
26503     m_entry_pool.file_write (file_names);
26504     m_debugstrlookup.file_write (file_str);
26505   }
26506
26507   /* A helper user data for write_one_signatured_type.  */
26508   class write_one_signatured_type_data
26509   {
26510   public:
26511     write_one_signatured_type_data (debug_names &nametable_,
26512                                     signatured_type_index_data &&info_)
26513     : nametable (nametable_), info (std::move (info_))
26514     {}
26515     debug_names &nametable;
26516     struct signatured_type_index_data info;
26517   };
26518
26519   /* A helper function to pass write_one_signatured_type to
26520      htab_traverse_noresize.  */
26521   static int
26522   write_one_signatured_type (void **slot, void *d)
26523   {
26524     write_one_signatured_type_data *data = (write_one_signatured_type_data *) d;
26525     struct signatured_type_index_data *info = &data->info;
26526     struct signatured_type *entry = (struct signatured_type *) *slot;
26527
26528     data->nametable.write_one_signatured_type (entry, info);
26529
26530     return 1;
26531   }
26532
26533 private:
26534
26535   /* Storage for symbol names mapping them to their .debug_str section
26536      offsets.  */
26537   class debug_str_lookup
26538   {
26539   public:
26540
26541     /* Object costructor to be called for current DWARF2_PER_OBJFILE.
26542        All .debug_str section strings are automatically stored.  */
26543     debug_str_lookup (struct dwarf2_per_objfile *dwarf2_per_objfile)
26544       : m_abfd (dwarf2_per_objfile->objfile->obfd),
26545         m_dwarf2_per_objfile (dwarf2_per_objfile)
26546     {
26547       dwarf2_read_section (dwarf2_per_objfile->objfile,
26548                            &dwarf2_per_objfile->str);
26549       if (dwarf2_per_objfile->str.buffer == NULL)
26550         return;
26551       for (const gdb_byte *data = dwarf2_per_objfile->str.buffer;
26552            data < (dwarf2_per_objfile->str.buffer
26553                    + dwarf2_per_objfile->str.size);)
26554         {
26555           const char *const s = reinterpret_cast<const char *> (data);
26556           const auto insertpair
26557             = m_str_table.emplace (c_str_view (s),
26558                                    data - dwarf2_per_objfile->str.buffer);
26559           if (!insertpair.second)
26560             complaint (&symfile_complaints,
26561                        _("Duplicate string \"%s\" in "
26562                          ".debug_str section [in module %s]"),
26563                        s, bfd_get_filename (m_abfd));
26564           data += strlen (s) + 1;
26565         }
26566     }
26567
26568     /* Return offset of symbol name S in the .debug_str section.  Add
26569        such symbol to the section's end if it does not exist there
26570        yet.  */
26571     size_t lookup (const char *s)
26572     {
26573       const auto it = m_str_table.find (c_str_view (s));
26574       if (it != m_str_table.end ())
26575         return it->second;
26576       const size_t offset = (m_dwarf2_per_objfile->str.size
26577                              + m_str_add_buf.size ());
26578       m_str_table.emplace (c_str_view (s), offset);
26579       m_str_add_buf.append_cstr0 (s);
26580       return offset;
26581     }
26582
26583     /* Append the end of the .debug_str section to FILE.  */
26584     void file_write (FILE *file) const
26585     {
26586       m_str_add_buf.file_write (file);
26587     }
26588
26589   private:
26590     std::unordered_map<c_str_view, size_t, c_str_view_hasher> m_str_table;
26591     bfd *const m_abfd;
26592     struct dwarf2_per_objfile *m_dwarf2_per_objfile;
26593
26594     /* Data to add at the end of .debug_str for new needed symbol names.  */
26595     data_buf m_str_add_buf;
26596   };
26597
26598   /* Container to map used DWARF tags to their .debug_names abbreviation
26599      tags.  */
26600   class index_key
26601   {
26602   public:
26603     index_key (int dwarf_tag_, bool is_static_, unit_kind kind_)
26604       : dwarf_tag (dwarf_tag_), is_static (is_static_), kind (kind_)
26605     {
26606     }
26607
26608     bool
26609     operator== (const index_key &other) const
26610     {
26611       return (dwarf_tag == other.dwarf_tag && is_static == other.is_static
26612               && kind == other.kind);
26613     }
26614
26615     const int dwarf_tag;
26616     const bool is_static;
26617     const unit_kind kind;
26618   };
26619
26620   /* Provide std::unordered_map::hasher for index_key.  */
26621   class index_key_hasher
26622   {
26623   public:
26624     size_t
26625     operator () (const index_key &key) const
26626     {
26627       return (std::hash<int>() (key.dwarf_tag) << 1) | key.is_static;
26628     }
26629   };
26630
26631   /* Parameters of one symbol entry.  */
26632   class symbol_value
26633   {
26634   public:
26635     const int dwarf_tag, cu_index;
26636     const bool is_static;
26637     const unit_kind kind;
26638
26639     symbol_value (int dwarf_tag_, int cu_index_, bool is_static_,
26640                   unit_kind kind_)
26641       : dwarf_tag (dwarf_tag_), cu_index (cu_index_), is_static (is_static_),
26642         kind (kind_)
26643     {}
26644
26645     bool
26646     operator< (const symbol_value &other) const
26647     {
26648 #define X(n) \
26649   do \
26650     { \
26651       if (n < other.n) \
26652         return true; \
26653       if (n > other.n) \
26654         return false; \
26655     } \
26656   while (0)
26657       X (dwarf_tag);
26658       X (is_static);
26659       X (kind);
26660       X (cu_index);
26661 #undef X
26662       return false;
26663     }
26664   };
26665
26666   /* Abstract base class to unify DWARF-32 and DWARF-64 name table
26667      output.  */
26668   class offset_vec
26669   {
26670   protected:
26671     const bfd_endian dwarf5_byte_order;
26672   public:
26673     explicit offset_vec (bfd_endian dwarf5_byte_order_)
26674       : dwarf5_byte_order (dwarf5_byte_order_)
26675     {}
26676
26677     /* Call std::vector::reserve for NELEM elements.  */
26678     virtual void reserve (size_t nelem) = 0;
26679
26680     /* Call std::vector::push_back with store_unsigned_integer byte
26681        reordering for ELEM.  */
26682     virtual void push_back_reorder (size_t elem) = 0;
26683
26684     /* Return expected output size in bytes.  */
26685     virtual size_t bytes () const = 0;
26686
26687     /* Write name table to FILE.  */
26688     virtual void file_write (FILE *file) const = 0;
26689   };
26690
26691   /* Template to unify DWARF-32 and DWARF-64 output.  */
26692   template<typename OffsetSize>
26693   class offset_vec_tmpl : public offset_vec
26694   {
26695   public:
26696     explicit offset_vec_tmpl (bfd_endian dwarf5_byte_order_)
26697       : offset_vec (dwarf5_byte_order_)
26698     {}
26699
26700     /* Implement offset_vec::reserve.  */
26701     void reserve (size_t nelem) override
26702     {
26703       m_vec.reserve (nelem);
26704     }
26705
26706     /* Implement offset_vec::push_back_reorder.  */
26707     void push_back_reorder (size_t elem) override
26708     {
26709       m_vec.push_back (elem);
26710       /* Check for overflow.  */
26711       gdb_assert (m_vec.back () == elem);
26712       store_unsigned_integer (reinterpret_cast<gdb_byte *> (&m_vec.back ()),
26713                               sizeof (m_vec.back ()), dwarf5_byte_order, elem);
26714     }
26715
26716     /* Implement offset_vec::bytes.  */
26717     size_t bytes () const override
26718     {
26719       return m_vec.size () * sizeof (m_vec[0]);
26720     }
26721
26722     /* Implement offset_vec::file_write.  */
26723     void file_write (FILE *file) const override
26724     {
26725       ::file_write (file, m_vec);
26726     }
26727
26728   private:
26729     std::vector<OffsetSize> m_vec;
26730   };
26731
26732   /* Base class to unify DWARF-32 and DWARF-64 .debug_names output
26733      respecting name table width.  */
26734   class dwarf
26735   {
26736   public:
26737     offset_vec &name_table_string_offs, &name_table_entry_offs;
26738
26739     dwarf (offset_vec &name_table_string_offs_,
26740            offset_vec &name_table_entry_offs_)
26741       : name_table_string_offs (name_table_string_offs_),
26742         name_table_entry_offs (name_table_entry_offs_)
26743     {
26744     }
26745   };
26746
26747   /* Template to unify DWARF-32 and DWARF-64 .debug_names output
26748      respecting name table width.  */
26749   template<typename OffsetSize>
26750   class dwarf_tmpl : public dwarf
26751   {
26752   public:
26753     explicit dwarf_tmpl (bfd_endian dwarf5_byte_order_)
26754       : dwarf (m_name_table_string_offs, m_name_table_entry_offs),
26755         m_name_table_string_offs (dwarf5_byte_order_),
26756         m_name_table_entry_offs (dwarf5_byte_order_)
26757     {}
26758
26759   private:
26760     offset_vec_tmpl<OffsetSize> m_name_table_string_offs;
26761     offset_vec_tmpl<OffsetSize> m_name_table_entry_offs;
26762   };
26763
26764   /* Try to reconstruct original DWARF tag for given partial_symbol.
26765      This function is not DWARF-5 compliant but it is sufficient for
26766      GDB as a DWARF-5 index consumer.  */
26767   static int psymbol_tag (const struct partial_symbol *psym)
26768   {
26769     domain_enum domain = PSYMBOL_DOMAIN (psym);
26770     enum address_class aclass = PSYMBOL_CLASS (psym);
26771
26772     switch (domain)
26773       {
26774       case VAR_DOMAIN:
26775         switch (aclass)
26776           {
26777           case LOC_BLOCK:
26778             return DW_TAG_subprogram;
26779           case LOC_TYPEDEF:
26780             return DW_TAG_typedef;
26781           case LOC_COMPUTED:
26782           case LOC_CONST_BYTES:
26783           case LOC_OPTIMIZED_OUT:
26784           case LOC_STATIC:
26785             return DW_TAG_variable;
26786           case LOC_CONST:
26787             /* Note: It's currently impossible to recognize psyms as enum values
26788                short of reading the type info.  For now punt.  */
26789             return DW_TAG_variable;
26790           default:
26791             /* There are other LOC_FOO values that one might want to classify
26792                as variables, but dwarf2read.c doesn't currently use them.  */
26793             return DW_TAG_variable;
26794           }
26795       case STRUCT_DOMAIN:
26796         return DW_TAG_structure_type;
26797       default:
26798         return 0;
26799       }
26800   }
26801
26802   /* Call insert for all partial symbols and mark them in PSYMS_SEEN.  */
26803   void write_psymbols (std::unordered_set<partial_symbol *> &psyms_seen,
26804                        struct partial_symbol **psymp, int count, int cu_index,
26805                        bool is_static, unit_kind kind)
26806   {
26807     for (; count-- > 0; ++psymp)
26808       {
26809         struct partial_symbol *psym = *psymp;
26810
26811         if (SYMBOL_LANGUAGE (psym) == language_ada)
26812           error (_("Ada is not currently supported by the index"));
26813
26814         /* Only add a given psymbol once.  */
26815         if (psyms_seen.insert (psym).second)
26816           insert (psym, cu_index, is_static, kind);
26817       }
26818   }
26819
26820   /* A helper function that writes a single signatured_type
26821      to a debug_names.  */
26822   void
26823   write_one_signatured_type (struct signatured_type *entry,
26824                              struct signatured_type_index_data *info)
26825   {
26826     struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
26827
26828     write_psymbols (info->psyms_seen,
26829                     &info->objfile->global_psymbols[psymtab->globals_offset],
26830                     psymtab->n_global_syms, info->cu_index, false,
26831                     unit_kind::tu);
26832     write_psymbols (info->psyms_seen,
26833                     &info->objfile->static_psymbols[psymtab->statics_offset],
26834                     psymtab->n_static_syms, info->cu_index, true,
26835                     unit_kind::tu);
26836
26837     info->types_list.append_uint (dwarf5_offset_size (), m_dwarf5_byte_order,
26838                                   to_underlying (entry->per_cu.sect_off));
26839
26840     ++info->cu_index;
26841   }
26842
26843   /* Store value of each symbol.  */
26844   std::unordered_map<c_str_view, std::set<symbol_value>, c_str_view_hasher>
26845     m_name_to_value_set;
26846
26847   /* Tables of DWARF-5 .debug_names.  They are in object file byte
26848      order.  */
26849   std::vector<uint32_t> m_bucket_table;
26850   std::vector<uint32_t> m_hash_table;
26851
26852   const bfd_endian m_dwarf5_byte_order;
26853   dwarf_tmpl<uint32_t> m_dwarf32;
26854   dwarf_tmpl<uint64_t> m_dwarf64;
26855   dwarf &m_dwarf;
26856   offset_vec &m_name_table_string_offs, &m_name_table_entry_offs;
26857   debug_str_lookup m_debugstrlookup;
26858
26859   /* Map each used .debug_names abbreviation tag parameter to its
26860      index value.  */
26861   std::unordered_map<index_key, int, index_key_hasher> m_indexkey_to_idx;
26862
26863   /* Next unused .debug_names abbreviation tag for
26864      m_indexkey_to_idx.  */
26865   int m_idx_next = 1;
26866
26867   /* .debug_names abbreviation table.  */
26868   data_buf m_abbrev_table;
26869
26870   /* .debug_names entry pool.  */
26871   data_buf m_entry_pool;
26872 };
26873
26874 /* Return iff any of the needed offsets does not fit into 32-bit
26875    .debug_names section.  */
26876
26877 static bool
26878 check_dwarf64_offsets (struct dwarf2_per_objfile *dwarf2_per_objfile)
26879 {
26880   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26881     {
26882       const dwarf2_per_cu_data &per_cu = *dwarf2_per_objfile->all_comp_units[i];
26883
26884       if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
26885         return true;
26886     }
26887   for (int i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
26888     {
26889       const signatured_type &sigtype = *dwarf2_per_objfile->all_type_units[i];
26890       const dwarf2_per_cu_data &per_cu = sigtype.per_cu;
26891
26892       if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
26893         return true;
26894     }
26895   return false;
26896 }
26897
26898 /* The psyms_seen set is potentially going to be largish (~40k
26899    elements when indexing a -g3 build of GDB itself).  Estimate the
26900    number of elements in order to avoid too many rehashes, which
26901    require rebuilding buckets and thus many trips to
26902    malloc/free.  */
26903
26904 static size_t
26905 psyms_seen_size (struct dwarf2_per_objfile *dwarf2_per_objfile)
26906 {
26907   size_t psyms_count = 0;
26908   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26909     {
26910       struct dwarf2_per_cu_data *per_cu
26911         = dwarf2_per_objfile->all_comp_units[i];
26912       struct partial_symtab *psymtab = per_cu->v.psymtab;
26913
26914       if (psymtab != NULL && psymtab->user == NULL)
26915         recursively_count_psymbols (psymtab, psyms_count);
26916     }
26917   /* Generating an index for gdb itself shows a ratio of
26918      TOTAL_SEEN_SYMS/UNIQUE_SYMS or ~5.  4 seems like a good bet.  */
26919   return psyms_count / 4;
26920 }
26921
26922 /* Write new .gdb_index section for OBJFILE into OUT_FILE.
26923    Return how many bytes were expected to be written into OUT_FILE.  */
26924
26925 static size_t
26926 write_gdbindex (struct dwarf2_per_objfile *dwarf2_per_objfile, FILE *out_file)
26927 {
26928   struct objfile *objfile = dwarf2_per_objfile->objfile;
26929   mapped_symtab symtab;
26930   data_buf cu_list;
26931
26932   /* While we're scanning CU's create a table that maps a psymtab pointer
26933      (which is what addrmap records) to its index (which is what is recorded
26934      in the index file).  This will later be needed to write the address
26935      table.  */
26936   psym_index_map cu_index_htab;
26937   cu_index_htab.reserve (dwarf2_per_objfile->n_comp_units);
26938
26939   /* The CU list is already sorted, so we don't need to do additional
26940      work here.  Also, the debug_types entries do not appear in
26941      all_comp_units, but only in their own hash table.  */
26942
26943   std::unordered_set<partial_symbol *> psyms_seen
26944     (psyms_seen_size (dwarf2_per_objfile));
26945   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
26946     {
26947       struct dwarf2_per_cu_data *per_cu
26948         = dwarf2_per_objfile->all_comp_units[i];
26949       struct partial_symtab *psymtab = per_cu->v.psymtab;
26950
26951       /* CU of a shared file from 'dwz -m' may be unused by this main file.
26952          It may be referenced from a local scope but in such case it does not
26953          need to be present in .gdb_index.  */
26954       if (psymtab == NULL)
26955         continue;
26956
26957       if (psymtab->user == NULL)
26958         recursively_write_psymbols (objfile, psymtab, &symtab,
26959                                     psyms_seen, i);
26960
26961       const auto insertpair = cu_index_htab.emplace (psymtab, i);
26962       gdb_assert (insertpair.second);
26963
26964       cu_list.append_uint (8, BFD_ENDIAN_LITTLE,
26965                            to_underlying (per_cu->sect_off));
26966       cu_list.append_uint (8, BFD_ENDIAN_LITTLE, per_cu->length);
26967     }
26968
26969   /* Dump the address map.  */
26970   data_buf addr_vec;
26971   write_address_map (objfile, addr_vec, cu_index_htab);
26972
26973   /* Write out the .debug_type entries, if any.  */
26974   data_buf types_cu_list;
26975   if (dwarf2_per_objfile->signatured_types)
26976     {
26977       signatured_type_index_data sig_data (types_cu_list,
26978                                            psyms_seen);
26979
26980       sig_data.objfile = objfile;
26981       sig_data.symtab = &symtab;
26982       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
26983       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
26984                               write_one_signatured_type, &sig_data);
26985     }
26986
26987   /* Now that we've processed all symbols we can shrink their cu_indices
26988      lists.  */
26989   uniquify_cu_indices (&symtab);
26990
26991   data_buf symtab_vec, constant_pool;
26992   write_hash_table (&symtab, symtab_vec, constant_pool);
26993
26994   data_buf contents;
26995   const offset_type size_of_contents = 6 * sizeof (offset_type);
26996   offset_type total_len = size_of_contents;
26997
26998   /* The version number.  */
26999   contents.append_data (MAYBE_SWAP (8));
27000
27001   /* The offset of the CU list from the start of the file.  */
27002   contents.append_data (MAYBE_SWAP (total_len));
27003   total_len += cu_list.size ();
27004
27005   /* The offset of the types CU list from the start of the file.  */
27006   contents.append_data (MAYBE_SWAP (total_len));
27007   total_len += types_cu_list.size ();
27008
27009   /* The offset of the address table from the start of the file.  */
27010   contents.append_data (MAYBE_SWAP (total_len));
27011   total_len += addr_vec.size ();
27012
27013   /* The offset of the symbol table from the start of the file.  */
27014   contents.append_data (MAYBE_SWAP (total_len));
27015   total_len += symtab_vec.size ();
27016
27017   /* The offset of the constant pool from the start of the file.  */
27018   contents.append_data (MAYBE_SWAP (total_len));
27019   total_len += constant_pool.size ();
27020
27021   gdb_assert (contents.size () == size_of_contents);
27022
27023   contents.file_write (out_file);
27024   cu_list.file_write (out_file);
27025   types_cu_list.file_write (out_file);
27026   addr_vec.file_write (out_file);
27027   symtab_vec.file_write (out_file);
27028   constant_pool.file_write (out_file);
27029
27030   return total_len;
27031 }
27032
27033 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
27034 static const gdb_byte dwarf5_gdb_augmentation[] = { 'G', 'D', 'B', 0 };
27035
27036 /* Write a new .debug_names section for OBJFILE into OUT_FILE, write
27037    needed addition to .debug_str section to OUT_FILE_STR.  Return how
27038    many bytes were expected to be written into OUT_FILE.  */
27039
27040 static size_t
27041 write_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
27042                    FILE *out_file, FILE *out_file_str)
27043 {
27044   const bool dwarf5_is_dwarf64 = check_dwarf64_offsets (dwarf2_per_objfile);
27045   struct objfile *objfile = dwarf2_per_objfile->objfile;
27046   const enum bfd_endian dwarf5_byte_order
27047     = gdbarch_byte_order (get_objfile_arch (objfile));
27048
27049   /* The CU list is already sorted, so we don't need to do additional
27050      work here.  Also, the debug_types entries do not appear in
27051      all_comp_units, but only in their own hash table.  */
27052   data_buf cu_list;
27053   debug_names nametable (dwarf2_per_objfile, dwarf5_is_dwarf64,
27054                          dwarf5_byte_order);
27055   std::unordered_set<partial_symbol *>
27056     psyms_seen (psyms_seen_size (dwarf2_per_objfile));
27057   for (int i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
27058     {
27059       const dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->all_comp_units[i];
27060       partial_symtab *psymtab = per_cu->v.psymtab;
27061
27062       /* CU of a shared file from 'dwz -m' may be unused by this main
27063          file.  It may be referenced from a local scope but in such
27064          case it does not need to be present in .debug_names.  */
27065       if (psymtab == NULL)
27066         continue;
27067
27068       if (psymtab->user == NULL)
27069         nametable.recursively_write_psymbols (objfile, psymtab, psyms_seen, i);
27070
27071       cu_list.append_uint (nametable.dwarf5_offset_size (), dwarf5_byte_order,
27072                            to_underlying (per_cu->sect_off));
27073     }
27074
27075   /* Write out the .debug_type entries, if any.  */
27076   data_buf types_cu_list;
27077   if (dwarf2_per_objfile->signatured_types)
27078     {
27079       debug_names::write_one_signatured_type_data sig_data (nametable,
27080                         signatured_type_index_data (types_cu_list, psyms_seen));
27081
27082       sig_data.info.objfile = objfile;
27083       /* It is used only for gdb_index.  */
27084       sig_data.info.symtab = nullptr;
27085       sig_data.info.cu_index = 0;
27086       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
27087                               debug_names::write_one_signatured_type,
27088                               &sig_data);
27089     }
27090
27091   nametable.build ();
27092
27093   /* No addr_vec - DWARF-5 uses .debug_aranges generated by GCC.  */
27094
27095   const offset_type bytes_of_header
27096     = ((dwarf5_is_dwarf64 ? 12 : 4)
27097        + 2 + 2 + 7 * 4
27098        + sizeof (dwarf5_gdb_augmentation));
27099   size_t expected_bytes = 0;
27100   expected_bytes += bytes_of_header;
27101   expected_bytes += cu_list.size ();
27102   expected_bytes += types_cu_list.size ();
27103   expected_bytes += nametable.bytes ();
27104   data_buf header;
27105
27106   if (!dwarf5_is_dwarf64)
27107     {
27108       const uint64_t size64 = expected_bytes - 4;
27109       gdb_assert (size64 < 0xfffffff0);
27110       header.append_uint (4, dwarf5_byte_order, size64);
27111     }
27112   else
27113     {
27114       header.append_uint (4, dwarf5_byte_order, 0xffffffff);
27115       header.append_uint (8, dwarf5_byte_order, expected_bytes - 12);
27116     }
27117
27118   /* The version number.  */
27119   header.append_uint (2, dwarf5_byte_order, 5);
27120
27121   /* Padding.  */
27122   header.append_uint (2, dwarf5_byte_order, 0);
27123
27124   /* comp_unit_count - The number of CUs in the CU list.  */
27125   header.append_uint (4, dwarf5_byte_order, dwarf2_per_objfile->n_comp_units);
27126
27127   /* local_type_unit_count - The number of TUs in the local TU
27128      list.  */
27129   header.append_uint (4, dwarf5_byte_order, dwarf2_per_objfile->n_type_units);
27130
27131   /* foreign_type_unit_count - The number of TUs in the foreign TU
27132      list.  */
27133   header.append_uint (4, dwarf5_byte_order, 0);
27134
27135   /* bucket_count - The number of hash buckets in the hash lookup
27136      table.  */
27137   header.append_uint (4, dwarf5_byte_order, nametable.bucket_count ());
27138
27139   /* name_count - The number of unique names in the index.  */
27140   header.append_uint (4, dwarf5_byte_order, nametable.name_count ());
27141
27142   /* abbrev_table_size - The size in bytes of the abbreviations
27143      table.  */
27144   header.append_uint (4, dwarf5_byte_order, nametable.abbrev_table_bytes ());
27145
27146   /* augmentation_string_size - The size in bytes of the augmentation
27147      string.  This value is rounded up to a multiple of 4.  */
27148   static_assert (sizeof (dwarf5_gdb_augmentation) % 4 == 0, "");
27149   header.append_uint (4, dwarf5_byte_order, sizeof (dwarf5_gdb_augmentation));
27150   header.append_data (dwarf5_gdb_augmentation);
27151
27152   gdb_assert (header.size () == bytes_of_header);
27153
27154   header.file_write (out_file);
27155   cu_list.file_write (out_file);
27156   types_cu_list.file_write (out_file);
27157   nametable.file_write (out_file, out_file_str);
27158
27159   return expected_bytes;
27160 }
27161
27162 /* Assert that FILE's size is EXPECTED_SIZE.  Assumes file's seek
27163    position is at the end of the file.  */
27164
27165 static void
27166 assert_file_size (FILE *file, const char *filename, size_t expected_size)
27167 {
27168   const auto file_size = ftell (file);
27169   if (file_size == -1)
27170     error (_("Can't get `%s' size"), filename);
27171   gdb_assert (file_size == expected_size);
27172 }
27173
27174 /* Create an index file for OBJFILE in the directory DIR.  */
27175
27176 static void
27177 write_psymtabs_to_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
27178                          const char *dir,
27179                          dw_index_kind index_kind)
27180 {
27181   struct objfile *objfile = dwarf2_per_objfile->objfile;
27182
27183   if (dwarf2_per_objfile->using_index)
27184     error (_("Cannot use an index to create the index"));
27185
27186   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
27187     error (_("Cannot make an index when the file has multiple .debug_types sections"));
27188
27189   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
27190     return;
27191
27192   struct stat st;
27193   if (stat (objfile_name (objfile), &st) < 0)
27194     perror_with_name (objfile_name (objfile));
27195
27196   std::string filename (std::string (dir) + SLASH_STRING
27197                         + lbasename (objfile_name (objfile))
27198                         + (index_kind == dw_index_kind::DEBUG_NAMES
27199                            ? INDEX5_SUFFIX : INDEX4_SUFFIX));
27200
27201   FILE *out_file = gdb_fopen_cloexec (filename.c_str (), "wb").release ();
27202   if (!out_file)
27203     error (_("Can't open `%s' for writing"), filename.c_str ());
27204
27205   /* Order matters here; we want FILE to be closed before FILENAME is
27206      unlinked, because on MS-Windows one cannot delete a file that is
27207      still open.  (Don't call anything here that might throw until
27208      file_closer is created.)  */
27209   gdb::unlinker unlink_file (filename.c_str ());
27210   gdb_file_up close_out_file (out_file);
27211
27212   if (index_kind == dw_index_kind::DEBUG_NAMES)
27213     {
27214       std::string filename_str (std::string (dir) + SLASH_STRING
27215                                 + lbasename (objfile_name (objfile))
27216                                 + DEBUG_STR_SUFFIX);
27217       FILE *out_file_str
27218         = gdb_fopen_cloexec (filename_str.c_str (), "wb").release ();
27219       if (!out_file_str)
27220         error (_("Can't open `%s' for writing"), filename_str.c_str ());
27221       gdb::unlinker unlink_file_str (filename_str.c_str ());
27222       gdb_file_up close_out_file_str (out_file_str);
27223
27224       const size_t total_len
27225         = write_debug_names (dwarf2_per_objfile, out_file, out_file_str);
27226       assert_file_size (out_file, filename.c_str (), total_len);
27227
27228       /* We want to keep the file .debug_str file too.  */
27229       unlink_file_str.keep ();
27230     }
27231   else
27232     {
27233       const size_t total_len
27234         = write_gdbindex (dwarf2_per_objfile, out_file);
27235       assert_file_size (out_file, filename.c_str (), total_len);
27236     }
27237
27238   /* We want to keep the file.  */
27239   unlink_file.keep ();
27240 }
27241
27242 /* Implementation of the `save gdb-index' command.
27243    
27244    Note that the .gdb_index file format used by this command is
27245    documented in the GDB manual.  Any changes here must be documented
27246    there.  */
27247
27248 static void
27249 save_gdb_index_command (const char *arg, int from_tty)
27250 {
27251   struct objfile *objfile;
27252   const char dwarf5space[] = "-dwarf-5 ";
27253   dw_index_kind index_kind = dw_index_kind::GDB_INDEX;
27254
27255   if (!arg)
27256     arg = "";
27257
27258   arg = skip_spaces (arg);
27259   if (strncmp (arg, dwarf5space, strlen (dwarf5space)) == 0)
27260     {
27261       index_kind = dw_index_kind::DEBUG_NAMES;
27262       arg += strlen (dwarf5space);
27263       arg = skip_spaces (arg);
27264     }
27265
27266   if (!*arg)
27267     error (_("usage: save gdb-index [-dwarf-5] DIRECTORY"));
27268
27269   ALL_OBJFILES (objfile)
27270   {
27271     struct stat st;
27272
27273     /* If the objfile does not correspond to an actual file, skip it.  */
27274     if (stat (objfile_name (objfile), &st) < 0)
27275       continue;
27276
27277     struct dwarf2_per_objfile *dwarf2_per_objfile
27278       = get_dwarf2_per_objfile (objfile);
27279
27280     if (dwarf2_per_objfile != NULL)
27281       {
27282         TRY
27283           {
27284             write_psymtabs_to_index (dwarf2_per_objfile, arg, index_kind);
27285           }
27286         CATCH (except, RETURN_MASK_ERROR)
27287           {
27288             exception_fprintf (gdb_stderr, except,
27289                                _("Error while writing index for `%s': "),
27290                                objfile_name (objfile));
27291           }
27292         END_CATCH
27293       }
27294
27295   }
27296 }
27297
27298 \f
27299
27300 int dwarf_always_disassemble;
27301
27302 static void
27303 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
27304                                struct cmd_list_element *c, const char *value)
27305 {
27306   fprintf_filtered (file,
27307                     _("Whether to always disassemble "
27308                       "DWARF expressions is %s.\n"),
27309                     value);
27310 }
27311
27312 static void
27313 show_check_physname (struct ui_file *file, int from_tty,
27314                      struct cmd_list_element *c, const char *value)
27315 {
27316   fprintf_filtered (file,
27317                     _("Whether to check \"physname\" is %s.\n"),
27318                     value);
27319 }
27320
27321 void
27322 _initialize_dwarf2_read (void)
27323 {
27324   struct cmd_list_element *c;
27325
27326   dwarf2_objfile_data_key
27327     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
27328
27329   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
27330 Set DWARF specific variables.\n\
27331 Configure DWARF variables such as the cache size"),
27332                   &set_dwarf_cmdlist, "maintenance set dwarf ",
27333                   0/*allow-unknown*/, &maintenance_set_cmdlist);
27334
27335   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
27336 Show DWARF specific variables\n\
27337 Show DWARF variables such as the cache size"),
27338                   &show_dwarf_cmdlist, "maintenance show dwarf ",
27339                   0/*allow-unknown*/, &maintenance_show_cmdlist);
27340
27341   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
27342                             &dwarf_max_cache_age, _("\
27343 Set the upper bound on the age of cached DWARF compilation units."), _("\
27344 Show the upper bound on the age of cached DWARF compilation units."), _("\
27345 A higher limit means that cached compilation units will be stored\n\
27346 in memory longer, and more total memory will be used.  Zero disables\n\
27347 caching, which can slow down startup."),
27348                             NULL,
27349                             show_dwarf_max_cache_age,
27350                             &set_dwarf_cmdlist,
27351                             &show_dwarf_cmdlist);
27352
27353   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
27354                            &dwarf_always_disassemble, _("\
27355 Set whether `info address' always disassembles DWARF expressions."), _("\
27356 Show whether `info address' always disassembles DWARF expressions."), _("\
27357 When enabled, DWARF expressions are always printed in an assembly-like\n\
27358 syntax.  When disabled, expressions will be printed in a more\n\
27359 conversational style, when possible."),
27360                            NULL,
27361                            show_dwarf_always_disassemble,
27362                            &set_dwarf_cmdlist,
27363                            &show_dwarf_cmdlist);
27364
27365   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
27366 Set debugging of the DWARF reader."), _("\
27367 Show debugging of the DWARF reader."), _("\
27368 When enabled (non-zero), debugging messages are printed during DWARF\n\
27369 reading and symtab expansion.  A value of 1 (one) provides basic\n\
27370 information.  A value greater than 1 provides more verbose information."),
27371                             NULL,
27372                             NULL,
27373                             &setdebuglist, &showdebuglist);
27374
27375   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
27376 Set debugging of the DWARF DIE reader."), _("\
27377 Show debugging of the DWARF DIE reader."), _("\
27378 When enabled (non-zero), DIEs are dumped after they are read in.\n\
27379 The value is the maximum depth to print."),
27380                              NULL,
27381                              NULL,
27382                              &setdebuglist, &showdebuglist);
27383
27384   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
27385 Set debugging of the dwarf line reader."), _("\
27386 Show debugging of the dwarf line reader."), _("\
27387 When enabled (non-zero), line number entries are dumped as they are read in.\n\
27388 A value of 1 (one) provides basic information.\n\
27389 A value greater than 1 provides more verbose information."),
27390                              NULL,
27391                              NULL,
27392                              &setdebuglist, &showdebuglist);
27393
27394   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
27395 Set cross-checking of \"physname\" code against demangler."), _("\
27396 Show cross-checking of \"physname\" code against demangler."), _("\
27397 When enabled, GDB's internal \"physname\" code is checked against\n\
27398 the demangler."),
27399                            NULL, show_check_physname,
27400                            &setdebuglist, &showdebuglist);
27401
27402   add_setshow_boolean_cmd ("use-deprecated-index-sections",
27403                            no_class, &use_deprecated_index_sections, _("\
27404 Set whether to use deprecated gdb_index sections."), _("\
27405 Show whether to use deprecated gdb_index sections."), _("\
27406 When enabled, deprecated .gdb_index sections are used anyway.\n\
27407 Normally they are ignored either because of a missing feature or\n\
27408 performance issue.\n\
27409 Warning: This option must be enabled before gdb reads the file."),
27410                            NULL,
27411                            NULL,
27412                            &setlist, &showlist);
27413
27414   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
27415                _("\
27416 Save a gdb-index file.\n\
27417 Usage: save gdb-index [-dwarf-5] DIRECTORY\n\
27418 \n\
27419 No options create one file with .gdb-index extension for pre-DWARF-5\n\
27420 compatible .gdb_index section.  With -dwarf-5 creates two files with\n\
27421 extension .debug_names and .debug_str for DWARF-5 .debug_names section."),
27422                &save_cmdlist);
27423   set_cmd_completer (c, filename_completer);
27424
27425   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
27426                                                         &dwarf2_locexpr_funcs);
27427   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
27428                                                         &dwarf2_loclist_funcs);
27429
27430   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
27431                                         &dwarf2_block_frame_base_locexpr_funcs);
27432   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
27433                                         &dwarf2_block_frame_base_loclist_funcs);
27434
27435 #if GDB_SELF_TEST
27436   selftests::register_test ("dw2_expand_symtabs_matching",
27437                             selftests::dw2_expand_symtabs_matching::run_test);
27438 #endif
27439 }