8a6e1f3dced9021be64244b1c99c65b70005a7b0
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2017 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "bfd.h"
33 #include "elf-bfd.h"
34 #include "symtab.h"
35 #include "gdbtypes.h"
36 #include "objfiles.h"
37 #include "dwarf2.h"
38 #include "buildsym.h"
39 #include "demangle.h"
40 #include "gdb-demangle.h"
41 #include "expression.h"
42 #include "filenames.h"  /* for DOSish file names */
43 #include "macrotab.h"
44 #include "language.h"
45 #include "complaints.h"
46 #include "bcache.h"
47 #include "dwarf2expr.h"
48 #include "dwarf2loc.h"
49 #include "cp-support.h"
50 #include "hashtab.h"
51 #include "command.h"
52 #include "gdbcmd.h"
53 #include "block.h"
54 #include "addrmap.h"
55 #include "typeprint.h"
56 #include "psympriv.h"
57 #include <sys/stat.h>
58 #include "completer.h"
59 #include "vec.h"
60 #include "c-lang.h"
61 #include "go-lang.h"
62 #include "valprint.h"
63 #include "gdbcore.h" /* for gnutarget */
64 #include "gdb/gdb-index.h"
65 #include <ctype.h>
66 #include "gdb_bfd.h"
67 #include "f-lang.h"
68 #include "source.h"
69 #include "filestuff.h"
70 #include "build-id.h"
71 #include "namespace.h"
72 #include "common/gdb_unlinker.h"
73
74 #include <fcntl.h>
75 #include <sys/types.h>
76 #include <algorithm>
77
78 typedef struct symbol *symbolp;
79 DEF_VEC_P (symbolp);
80
81 /* When == 1, print basic high level tracing messages.
82    When > 1, be more verbose.
83    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
84 static unsigned int dwarf_read_debug = 0;
85
86 /* When non-zero, dump DIEs after they are read in.  */
87 static unsigned int dwarf_die_debug = 0;
88
89 /* When non-zero, dump line number entries as they are read in.  */
90 static unsigned int dwarf_line_debug = 0;
91
92 /* When non-zero, cross-check physname against demangler.  */
93 static int check_physname = 0;
94
95 /* When non-zero, do not reject deprecated .gdb_index sections.  */
96 static int use_deprecated_index_sections = 0;
97
98 static const struct objfile_data *dwarf2_objfile_data_key;
99
100 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
101
102 static int dwarf2_locexpr_index;
103 static int dwarf2_loclist_index;
104 static int dwarf2_locexpr_block_index;
105 static int dwarf2_loclist_block_index;
106
107 /* A descriptor for dwarf sections.
108
109    S.ASECTION, SIZE are typically initialized when the objfile is first
110    scanned.  BUFFER, READIN are filled in later when the section is read.
111    If the section contained compressed data then SIZE is updated to record
112    the uncompressed size of the section.
113
114    DWP file format V2 introduces a wrinkle that is easiest to handle by
115    creating the concept of virtual sections contained within a real section.
116    In DWP V2 the sections of the input DWO files are concatenated together
117    into one section, but section offsets are kept relative to the original
118    input section.
119    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
120    the real section this "virtual" section is contained in, and BUFFER,SIZE
121    describe the virtual section.  */
122
123 struct dwarf2_section_info
124 {
125   union
126   {
127     /* If this is a real section, the bfd section.  */
128     asection *section;
129     /* If this is a virtual section, pointer to the containing ("real")
130        section.  */
131     struct dwarf2_section_info *containing_section;
132   } s;
133   /* Pointer to section data, only valid if readin.  */
134   const gdb_byte *buffer;
135   /* The size of the section, real or virtual.  */
136   bfd_size_type size;
137   /* If this is a virtual section, the offset in the real section.
138      Only valid if is_virtual.  */
139   bfd_size_type virtual_offset;
140   /* True if we have tried to read this section.  */
141   char readin;
142   /* True if this is a virtual section, False otherwise.
143      This specifies which of s.section and s.containing_section to use.  */
144   char is_virtual;
145 };
146
147 typedef struct dwarf2_section_info dwarf2_section_info_def;
148 DEF_VEC_O (dwarf2_section_info_def);
149
150 /* All offsets in the index are of this type.  It must be
151    architecture-independent.  */
152 typedef uint32_t offset_type;
153
154 DEF_VEC_I (offset_type);
155
156 /* Ensure only legit values are used.  */
157 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
158   do { \
159     gdb_assert ((unsigned int) (value) <= 1); \
160     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
161   } while (0)
162
163 /* Ensure only legit values are used.  */
164 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
165   do { \
166     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
167                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
168     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
169   } while (0)
170
171 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
172 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
173   do { \
174     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
175     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
176   } while (0)
177
178 /* A description of the mapped index.  The file format is described in
179    a comment by the code that writes the index.  */
180 struct mapped_index
181 {
182   /* Index data format version.  */
183   int version;
184
185   /* The total length of the buffer.  */
186   off_t total_size;
187
188   /* A pointer to the address table data.  */
189   const gdb_byte *address_table;
190
191   /* Size of the address table data in bytes.  */
192   offset_type address_table_size;
193
194   /* The symbol table, implemented as a hash table.  */
195   const offset_type *symbol_table;
196
197   /* Size in slots, each slot is 2 offset_types.  */
198   offset_type symbol_table_slots;
199
200   /* A pointer to the constant pool.  */
201   const char *constant_pool;
202 };
203
204 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
205 DEF_VEC_P (dwarf2_per_cu_ptr);
206
207 struct tu_stats
208 {
209   int nr_uniq_abbrev_tables;
210   int nr_symtabs;
211   int nr_symtab_sharers;
212   int nr_stmt_less_type_units;
213   int nr_all_type_units_reallocs;
214 };
215
216 /* Collection of data recorded per objfile.
217    This hangs off of dwarf2_objfile_data_key.  */
218
219 struct dwarf2_per_objfile
220 {
221   struct dwarf2_section_info info;
222   struct dwarf2_section_info abbrev;
223   struct dwarf2_section_info line;
224   struct dwarf2_section_info loc;
225   struct dwarf2_section_info loclists;
226   struct dwarf2_section_info macinfo;
227   struct dwarf2_section_info macro;
228   struct dwarf2_section_info str;
229   struct dwarf2_section_info line_str;
230   struct dwarf2_section_info ranges;
231   struct dwarf2_section_info rnglists;
232   struct dwarf2_section_info addr;
233   struct dwarf2_section_info frame;
234   struct dwarf2_section_info eh_frame;
235   struct dwarf2_section_info gdb_index;
236
237   VEC (dwarf2_section_info_def) *types;
238
239   /* Back link.  */
240   struct objfile *objfile;
241
242   /* Table of all the compilation units.  This is used to locate
243      the target compilation unit of a particular reference.  */
244   struct dwarf2_per_cu_data **all_comp_units;
245
246   /* The number of compilation units in ALL_COMP_UNITS.  */
247   int n_comp_units;
248
249   /* The number of .debug_types-related CUs.  */
250   int n_type_units;
251
252   /* The number of elements allocated in all_type_units.
253      If there are skeleton-less TUs, we add them to all_type_units lazily.  */
254   int n_allocated_type_units;
255
256   /* The .debug_types-related CUs (TUs).
257      This is stored in malloc space because we may realloc it.  */
258   struct signatured_type **all_type_units;
259
260   /* Table of struct type_unit_group objects.
261      The hash key is the DW_AT_stmt_list value.  */
262   htab_t type_unit_groups;
263
264   /* A table mapping .debug_types signatures to its signatured_type entry.
265      This is NULL if the .debug_types section hasn't been read in yet.  */
266   htab_t signatured_types;
267
268   /* Type unit statistics, to see how well the scaling improvements
269      are doing.  */
270   struct tu_stats tu_stats;
271
272   /* A chain of compilation units that are currently read in, so that
273      they can be freed later.  */
274   struct dwarf2_per_cu_data *read_in_chain;
275
276   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
277      This is NULL if the table hasn't been allocated yet.  */
278   htab_t dwo_files;
279
280   /* Non-zero if we've check for whether there is a DWP file.  */
281   int dwp_checked;
282
283   /* The DWP file if there is one, or NULL.  */
284   struct dwp_file *dwp_file;
285
286   /* The shared '.dwz' file, if one exists.  This is used when the
287      original data was compressed using 'dwz -m'.  */
288   struct dwz_file *dwz_file;
289
290   /* A flag indicating wether this objfile has a section loaded at a
291      VMA of 0.  */
292   int has_section_at_zero;
293
294   /* True if we are using the mapped index,
295      or we are faking it for OBJF_READNOW's sake.  */
296   unsigned char using_index;
297
298   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
299   struct mapped_index *index_table;
300
301   /* When using index_table, this keeps track of all quick_file_names entries.
302      TUs typically share line table entries with a CU, so we maintain a
303      separate table of all line table entries to support the sharing.
304      Note that while there can be way more TUs than CUs, we've already
305      sorted all the TUs into "type unit groups", grouped by their
306      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
307      CU and its associated TU group if there is one.  */
308   htab_t quick_file_names_table;
309
310   /* Set during partial symbol reading, to prevent queueing of full
311      symbols.  */
312   int reading_partial_symbols;
313
314   /* Table mapping type DIEs to their struct type *.
315      This is NULL if not allocated yet.
316      The mapping is done via (CU/TU + DIE offset) -> type.  */
317   htab_t die_type_hash;
318
319   /* The CUs we recently read.  */
320   VEC (dwarf2_per_cu_ptr) *just_read_cus;
321
322   /* Table containing line_header indexed by offset and offset_in_dwz.  */
323   htab_t line_header_hash;
324 };
325
326 static struct dwarf2_per_objfile *dwarf2_per_objfile;
327
328 /* Default names of the debugging sections.  */
329
330 /* Note that if the debugging section has been compressed, it might
331    have a name like .zdebug_info.  */
332
333 static const struct dwarf2_debug_sections dwarf2_elf_names =
334 {
335   { ".debug_info", ".zdebug_info" },
336   { ".debug_abbrev", ".zdebug_abbrev" },
337   { ".debug_line", ".zdebug_line" },
338   { ".debug_loc", ".zdebug_loc" },
339   { ".debug_loclists", ".zdebug_loclists" },
340   { ".debug_macinfo", ".zdebug_macinfo" },
341   { ".debug_macro", ".zdebug_macro" },
342   { ".debug_str", ".zdebug_str" },
343   { ".debug_line_str", ".zdebug_line_str" },
344   { ".debug_ranges", ".zdebug_ranges" },
345   { ".debug_rnglists", ".zdebug_rnglists" },
346   { ".debug_types", ".zdebug_types" },
347   { ".debug_addr", ".zdebug_addr" },
348   { ".debug_frame", ".zdebug_frame" },
349   { ".eh_frame", NULL },
350   { ".gdb_index", ".zgdb_index" },
351   23
352 };
353
354 /* List of DWO/DWP sections.  */
355
356 static const struct dwop_section_names
357 {
358   struct dwarf2_section_names abbrev_dwo;
359   struct dwarf2_section_names info_dwo;
360   struct dwarf2_section_names line_dwo;
361   struct dwarf2_section_names loc_dwo;
362   struct dwarf2_section_names loclists_dwo;
363   struct dwarf2_section_names macinfo_dwo;
364   struct dwarf2_section_names macro_dwo;
365   struct dwarf2_section_names str_dwo;
366   struct dwarf2_section_names str_offsets_dwo;
367   struct dwarf2_section_names types_dwo;
368   struct dwarf2_section_names cu_index;
369   struct dwarf2_section_names tu_index;
370 }
371 dwop_section_names =
372 {
373   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
374   { ".debug_info.dwo", ".zdebug_info.dwo" },
375   { ".debug_line.dwo", ".zdebug_line.dwo" },
376   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
377   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
378   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
379   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
380   { ".debug_str.dwo", ".zdebug_str.dwo" },
381   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
382   { ".debug_types.dwo", ".zdebug_types.dwo" },
383   { ".debug_cu_index", ".zdebug_cu_index" },
384   { ".debug_tu_index", ".zdebug_tu_index" },
385 };
386
387 /* local data types */
388
389 /* The data in a compilation unit header, after target2host
390    translation, looks like this.  */
391 struct comp_unit_head
392 {
393   unsigned int length;
394   short version;
395   unsigned char addr_size;
396   unsigned char signed_addr_p;
397   sect_offset abbrev_offset;
398
399   /* Size of file offsets; either 4 or 8.  */
400   unsigned int offset_size;
401
402   /* Size of the length field; either 4 or 12.  */
403   unsigned int initial_length_size;
404
405   enum dwarf_unit_type unit_type;
406
407   /* Offset to the first byte of this compilation unit header in the
408      .debug_info section, for resolving relative reference dies.  */
409   sect_offset offset;
410
411   /* Offset to first die in this cu from the start of the cu.
412      This will be the first byte following the compilation unit header.  */
413   cu_offset first_die_offset;
414
415   /* 64-bit signature of this type unit - it is valid only for
416      UNIT_TYPE DW_UT_type.  */
417   ULONGEST signature;
418
419   /* For types, offset in the type's DIE of the type defined by this TU.  */
420   cu_offset type_offset_in_tu;
421 };
422
423 /* Type used for delaying computation of method physnames.
424    See comments for compute_delayed_physnames.  */
425 struct delayed_method_info
426 {
427   /* The type to which the method is attached, i.e., its parent class.  */
428   struct type *type;
429
430   /* The index of the method in the type's function fieldlists.  */
431   int fnfield_index;
432
433   /* The index of the method in the fieldlist.  */
434   int index;
435
436   /* The name of the DIE.  */
437   const char *name;
438
439   /*  The DIE associated with this method.  */
440   struct die_info *die;
441 };
442
443 typedef struct delayed_method_info delayed_method_info;
444 DEF_VEC_O (delayed_method_info);
445
446 /* Internal state when decoding a particular compilation unit.  */
447 struct dwarf2_cu
448 {
449   /* The objfile containing this compilation unit.  */
450   struct objfile *objfile;
451
452   /* The header of the compilation unit.  */
453   struct comp_unit_head header;
454
455   /* Base address of this compilation unit.  */
456   CORE_ADDR base_address;
457
458   /* Non-zero if base_address has been set.  */
459   int base_known;
460
461   /* The language we are debugging.  */
462   enum language language;
463   const struct language_defn *language_defn;
464
465   const char *producer;
466
467   /* The generic symbol table building routines have separate lists for
468      file scope symbols and all all other scopes (local scopes).  So
469      we need to select the right one to pass to add_symbol_to_list().
470      We do it by keeping a pointer to the correct list in list_in_scope.
471
472      FIXME: The original dwarf code just treated the file scope as the
473      first local scope, and all other local scopes as nested local
474      scopes, and worked fine.  Check to see if we really need to
475      distinguish these in buildsym.c.  */
476   struct pending **list_in_scope;
477
478   /* The abbrev table for this CU.
479      Normally this points to the abbrev table in the objfile.
480      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
481   struct abbrev_table *abbrev_table;
482
483   /* Hash table holding all the loaded partial DIEs
484      with partial_die->offset.SECT_OFF as hash.  */
485   htab_t partial_dies;
486
487   /* Storage for things with the same lifetime as this read-in compilation
488      unit, including partial DIEs.  */
489   struct obstack comp_unit_obstack;
490
491   /* When multiple dwarf2_cu structures are living in memory, this field
492      chains them all together, so that they can be released efficiently.
493      We will probably also want a generation counter so that most-recently-used
494      compilation units are cached...  */
495   struct dwarf2_per_cu_data *read_in_chain;
496
497   /* Backlink to our per_cu entry.  */
498   struct dwarf2_per_cu_data *per_cu;
499
500   /* How many compilation units ago was this CU last referenced?  */
501   int last_used;
502
503   /* A hash table of DIE cu_offset for following references with
504      die_info->offset.sect_off as hash.  */
505   htab_t die_hash;
506
507   /* Full DIEs if read in.  */
508   struct die_info *dies;
509
510   /* A set of pointers to dwarf2_per_cu_data objects for compilation
511      units referenced by this one.  Only set during full symbol processing;
512      partial symbol tables do not have dependencies.  */
513   htab_t dependencies;
514
515   /* Header data from the line table, during full symbol processing.  */
516   struct line_header *line_header;
517
518   /* A list of methods which need to have physnames computed
519      after all type information has been read.  */
520   VEC (delayed_method_info) *method_list;
521
522   /* To be copied to symtab->call_site_htab.  */
523   htab_t call_site_htab;
524
525   /* Non-NULL if this CU came from a DWO file.
526      There is an invariant here that is important to remember:
527      Except for attributes copied from the top level DIE in the "main"
528      (or "stub") file in preparation for reading the DWO file
529      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
530      Either there isn't a DWO file (in which case this is NULL and the point
531      is moot), or there is and either we're not going to read it (in which
532      case this is NULL) or there is and we are reading it (in which case this
533      is non-NULL).  */
534   struct dwo_unit *dwo_unit;
535
536   /* The DW_AT_addr_base attribute if present, zero otherwise
537      (zero is a valid value though).
538      Note this value comes from the Fission stub CU/TU's DIE.  */
539   ULONGEST addr_base;
540
541   /* The DW_AT_ranges_base attribute if present, zero otherwise
542      (zero is a valid value though).
543      Note this value comes from the Fission stub CU/TU's DIE.
544      Also note that the value is zero in the non-DWO case so this value can
545      be used without needing to know whether DWO files are in use or not.
546      N.B. This does not apply to DW_AT_ranges appearing in
547      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
548      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
549      DW_AT_ranges_base *would* have to be applied, and we'd have to care
550      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
551   ULONGEST ranges_base;
552
553   /* Mark used when releasing cached dies.  */
554   unsigned int mark : 1;
555
556   /* This CU references .debug_loc.  See the symtab->locations_valid field.
557      This test is imperfect as there may exist optimized debug code not using
558      any location list and still facing inlining issues if handled as
559      unoptimized code.  For a future better test see GCC PR other/32998.  */
560   unsigned int has_loclist : 1;
561
562   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
563      if all the producer_is_* fields are valid.  This information is cached
564      because profiling CU expansion showed excessive time spent in
565      producer_is_gxx_lt_4_6.  */
566   unsigned int checked_producer : 1;
567   unsigned int producer_is_gxx_lt_4_6 : 1;
568   unsigned int producer_is_gcc_lt_4_3 : 1;
569   unsigned int producer_is_icc : 1;
570
571   /* When set, the file that we're processing is known to have
572      debugging info for C++ namespaces.  GCC 3.3.x did not produce
573      this information, but later versions do.  */
574
575   unsigned int processing_has_namespace_info : 1;
576 };
577
578 /* Persistent data held for a compilation unit, even when not
579    processing it.  We put a pointer to this structure in the
580    read_symtab_private field of the psymtab.  */
581
582 struct dwarf2_per_cu_data
583 {
584   /* The start offset and length of this compilation unit.
585      NOTE: Unlike comp_unit_head.length, this length includes
586      initial_length_size.
587      If the DIE refers to a DWO file, this is always of the original die,
588      not the DWO file.  */
589   sect_offset offset;
590   unsigned int length;
591
592   /* DWARF standard version this data has been read from (such as 4 or 5).  */
593   short dwarf_version;
594
595   /* Flag indicating this compilation unit will be read in before
596      any of the current compilation units are processed.  */
597   unsigned int queued : 1;
598
599   /* This flag will be set when reading partial DIEs if we need to load
600      absolutely all DIEs for this compilation unit, instead of just the ones
601      we think are interesting.  It gets set if we look for a DIE in the
602      hash table and don't find it.  */
603   unsigned int load_all_dies : 1;
604
605   /* Non-zero if this CU is from .debug_types.
606      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
607      this is non-zero.  */
608   unsigned int is_debug_types : 1;
609
610   /* Non-zero if this CU is from the .dwz file.  */
611   unsigned int is_dwz : 1;
612
613   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
614      This flag is only valid if is_debug_types is true.
615      We can't read a CU directly from a DWO file: There are required
616      attributes in the stub.  */
617   unsigned int reading_dwo_directly : 1;
618
619   /* Non-zero if the TU has been read.
620      This is used to assist the "Stay in DWO Optimization" for Fission:
621      When reading a DWO, it's faster to read TUs from the DWO instead of
622      fetching them from random other DWOs (due to comdat folding).
623      If the TU has already been read, the optimization is unnecessary
624      (and unwise - we don't want to change where gdb thinks the TU lives
625      "midflight").
626      This flag is only valid if is_debug_types is true.  */
627   unsigned int tu_read : 1;
628
629   /* The section this CU/TU lives in.
630      If the DIE refers to a DWO file, this is always the original die,
631      not the DWO file.  */
632   struct dwarf2_section_info *section;
633
634   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
635      of the CU cache it gets reset to NULL again.  This is left as NULL for
636      dummy CUs (a CU header, but nothing else).  */
637   struct dwarf2_cu *cu;
638
639   /* The corresponding objfile.
640      Normally we can get the objfile from dwarf2_per_objfile.
641      However we can enter this file with just a "per_cu" handle.  */
642   struct objfile *objfile;
643
644   /* When dwarf2_per_objfile->using_index is true, the 'quick' field
645      is active.  Otherwise, the 'psymtab' field is active.  */
646   union
647   {
648     /* The partial symbol table associated with this compilation unit,
649        or NULL for unread partial units.  */
650     struct partial_symtab *psymtab;
651
652     /* Data needed by the "quick" functions.  */
653     struct dwarf2_per_cu_quick_data *quick;
654   } v;
655
656   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
657      while reading psymtabs, used to compute the psymtab dependencies,
658      and then cleared.  Then it is filled in again while reading full
659      symbols, and only deleted when the objfile is destroyed.
660
661      This is also used to work around a difference between the way gold
662      generates .gdb_index version <=7 and the way gdb does.  Arguably this
663      is a gold bug.  For symbols coming from TUs, gold records in the index
664      the CU that includes the TU instead of the TU itself.  This breaks
665      dw2_lookup_symbol: It assumes that if the index says symbol X lives
666      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
667      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
668      we need to look in TU Z to find X.  Fortunately, this is akin to
669      DW_TAG_imported_unit, so we just use the same mechanism: For
670      .gdb_index version <=7 this also records the TUs that the CU referred
671      to.  Concurrently with this change gdb was modified to emit version 8
672      indices so we only pay a price for gold generated indices.
673      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
674   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
675 };
676
677 /* Entry in the signatured_types hash table.  */
678
679 struct signatured_type
680 {
681   /* The "per_cu" object of this type.
682      This struct is used iff per_cu.is_debug_types.
683      N.B.: This is the first member so that it's easy to convert pointers
684      between them.  */
685   struct dwarf2_per_cu_data per_cu;
686
687   /* The type's signature.  */
688   ULONGEST signature;
689
690   /* Offset in the TU of the type's DIE, as read from the TU header.
691      If this TU is a DWO stub and the definition lives in a DWO file
692      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
693   cu_offset type_offset_in_tu;
694
695   /* Offset in the section of the type's DIE.
696      If the definition lives in a DWO file, this is the offset in the
697      .debug_types.dwo section.
698      The value is zero until the actual value is known.
699      Zero is otherwise not a valid section offset.  */
700   sect_offset type_offset_in_section;
701
702   /* Type units are grouped by their DW_AT_stmt_list entry so that they
703      can share them.  This points to the containing symtab.  */
704   struct type_unit_group *type_unit_group;
705
706   /* The type.
707      The first time we encounter this type we fully read it in and install it
708      in the symbol tables.  Subsequent times we only need the type.  */
709   struct type *type;
710
711   /* Containing DWO unit.
712      This field is valid iff per_cu.reading_dwo_directly.  */
713   struct dwo_unit *dwo_unit;
714 };
715
716 typedef struct signatured_type *sig_type_ptr;
717 DEF_VEC_P (sig_type_ptr);
718
719 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
720    This includes type_unit_group and quick_file_names.  */
721
722 struct stmt_list_hash
723 {
724   /* The DWO unit this table is from or NULL if there is none.  */
725   struct dwo_unit *dwo_unit;
726
727   /* Offset in .debug_line or .debug_line.dwo.  */
728   sect_offset line_offset;
729 };
730
731 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
732    an object of this type.  */
733
734 struct type_unit_group
735 {
736   /* dwarf2read.c's main "handle" on a TU symtab.
737      To simplify things we create an artificial CU that "includes" all the
738      type units using this stmt_list so that the rest of the code still has
739      a "per_cu" handle on the symtab.
740      This PER_CU is recognized by having no section.  */
741 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
742   struct dwarf2_per_cu_data per_cu;
743
744   /* The TUs that share this DW_AT_stmt_list entry.
745      This is added to while parsing type units to build partial symtabs,
746      and is deleted afterwards and not used again.  */
747   VEC (sig_type_ptr) *tus;
748
749   /* The compunit symtab.
750      Type units in a group needn't all be defined in the same source file,
751      so we create an essentially anonymous symtab as the compunit symtab.  */
752   struct compunit_symtab *compunit_symtab;
753
754   /* The data used to construct the hash key.  */
755   struct stmt_list_hash hash;
756
757   /* The number of symtabs from the line header.
758      The value here must match line_header.num_file_names.  */
759   unsigned int num_symtabs;
760
761   /* The symbol tables for this TU (obtained from the files listed in
762      DW_AT_stmt_list).
763      WARNING: The order of entries here must match the order of entries
764      in the line header.  After the first TU using this type_unit_group, the
765      line header for the subsequent TUs is recreated from this.  This is done
766      because we need to use the same symtabs for each TU using the same
767      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
768      there's no guarantee the line header doesn't have duplicate entries.  */
769   struct symtab **symtabs;
770 };
771
772 /* These sections are what may appear in a (real or virtual) DWO file.  */
773
774 struct dwo_sections
775 {
776   struct dwarf2_section_info abbrev;
777   struct dwarf2_section_info line;
778   struct dwarf2_section_info loc;
779   struct dwarf2_section_info loclists;
780   struct dwarf2_section_info macinfo;
781   struct dwarf2_section_info macro;
782   struct dwarf2_section_info str;
783   struct dwarf2_section_info str_offsets;
784   /* In the case of a virtual DWO file, these two are unused.  */
785   struct dwarf2_section_info info;
786   VEC (dwarf2_section_info_def) *types;
787 };
788
789 /* CUs/TUs in DWP/DWO files.  */
790
791 struct dwo_unit
792 {
793   /* Backlink to the containing struct dwo_file.  */
794   struct dwo_file *dwo_file;
795
796   /* The "id" that distinguishes this CU/TU.
797      .debug_info calls this "dwo_id", .debug_types calls this "signature".
798      Since signatures came first, we stick with it for consistency.  */
799   ULONGEST signature;
800
801   /* The section this CU/TU lives in, in the DWO file.  */
802   struct dwarf2_section_info *section;
803
804   /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section.  */
805   sect_offset offset;
806   unsigned int length;
807
808   /* For types, offset in the type's DIE of the type defined by this TU.  */
809   cu_offset type_offset_in_tu;
810 };
811
812 /* include/dwarf2.h defines the DWP section codes.
813    It defines a max value but it doesn't define a min value, which we
814    use for error checking, so provide one.  */
815
816 enum dwp_v2_section_ids
817 {
818   DW_SECT_MIN = 1
819 };
820
821 /* Data for one DWO file.
822
823    This includes virtual DWO files (a virtual DWO file is a DWO file as it
824    appears in a DWP file).  DWP files don't really have DWO files per se -
825    comdat folding of types "loses" the DWO file they came from, and from
826    a high level view DWP files appear to contain a mass of random types.
827    However, to maintain consistency with the non-DWP case we pretend DWP
828    files contain virtual DWO files, and we assign each TU with one virtual
829    DWO file (generally based on the line and abbrev section offsets -
830    a heuristic that seems to work in practice).  */
831
832 struct dwo_file
833 {
834   /* The DW_AT_GNU_dwo_name attribute.
835      For virtual DWO files the name is constructed from the section offsets
836      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
837      from related CU+TUs.  */
838   const char *dwo_name;
839
840   /* The DW_AT_comp_dir attribute.  */
841   const char *comp_dir;
842
843   /* The bfd, when the file is open.  Otherwise this is NULL.
844      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
845   bfd *dbfd;
846
847   /* The sections that make up this DWO file.
848      Remember that for virtual DWO files in DWP V2, these are virtual
849      sections (for lack of a better name).  */
850   struct dwo_sections sections;
851
852   /* The CU in the file.
853      We only support one because having more than one requires hacking the
854      dwo_name of each to match, which is highly unlikely to happen.
855      Doing this means all TUs can share comp_dir: We also assume that
856      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
857   struct dwo_unit *cu;
858
859   /* Table of TUs in the file.
860      Each element is a struct dwo_unit.  */
861   htab_t tus;
862 };
863
864 /* These sections are what may appear in a DWP file.  */
865
866 struct dwp_sections
867 {
868   /* These are used by both DWP version 1 and 2.  */
869   struct dwarf2_section_info str;
870   struct dwarf2_section_info cu_index;
871   struct dwarf2_section_info tu_index;
872
873   /* These are only used by DWP version 2 files.
874      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
875      sections are referenced by section number, and are not recorded here.
876      In DWP version 2 there is at most one copy of all these sections, each
877      section being (effectively) comprised of the concatenation of all of the
878      individual sections that exist in the version 1 format.
879      To keep the code simple we treat each of these concatenated pieces as a
880      section itself (a virtual section?).  */
881   struct dwarf2_section_info abbrev;
882   struct dwarf2_section_info info;
883   struct dwarf2_section_info line;
884   struct dwarf2_section_info loc;
885   struct dwarf2_section_info macinfo;
886   struct dwarf2_section_info macro;
887   struct dwarf2_section_info str_offsets;
888   struct dwarf2_section_info types;
889 };
890
891 /* These sections are what may appear in a virtual DWO file in DWP version 1.
892    A virtual DWO file is a DWO file as it appears in a DWP file.  */
893
894 struct virtual_v1_dwo_sections
895 {
896   struct dwarf2_section_info abbrev;
897   struct dwarf2_section_info line;
898   struct dwarf2_section_info loc;
899   struct dwarf2_section_info macinfo;
900   struct dwarf2_section_info macro;
901   struct dwarf2_section_info str_offsets;
902   /* Each DWP hash table entry records one CU or one TU.
903      That is recorded here, and copied to dwo_unit.section.  */
904   struct dwarf2_section_info info_or_types;
905 };
906
907 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
908    In version 2, the sections of the DWO files are concatenated together
909    and stored in one section of that name.  Thus each ELF section contains
910    several "virtual" sections.  */
911
912 struct virtual_v2_dwo_sections
913 {
914   bfd_size_type abbrev_offset;
915   bfd_size_type abbrev_size;
916
917   bfd_size_type line_offset;
918   bfd_size_type line_size;
919
920   bfd_size_type loc_offset;
921   bfd_size_type loc_size;
922
923   bfd_size_type macinfo_offset;
924   bfd_size_type macinfo_size;
925
926   bfd_size_type macro_offset;
927   bfd_size_type macro_size;
928
929   bfd_size_type str_offsets_offset;
930   bfd_size_type str_offsets_size;
931
932   /* Each DWP hash table entry records one CU or one TU.
933      That is recorded here, and copied to dwo_unit.section.  */
934   bfd_size_type info_or_types_offset;
935   bfd_size_type info_or_types_size;
936 };
937
938 /* Contents of DWP hash tables.  */
939
940 struct dwp_hash_table
941 {
942   uint32_t version, nr_columns;
943   uint32_t nr_units, nr_slots;
944   const gdb_byte *hash_table, *unit_table;
945   union
946   {
947     struct
948     {
949       const gdb_byte *indices;
950     } v1;
951     struct
952     {
953       /* This is indexed by column number and gives the id of the section
954          in that column.  */
955 #define MAX_NR_V2_DWO_SECTIONS \
956   (1 /* .debug_info or .debug_types */ \
957    + 1 /* .debug_abbrev */ \
958    + 1 /* .debug_line */ \
959    + 1 /* .debug_loc */ \
960    + 1 /* .debug_str_offsets */ \
961    + 1 /* .debug_macro or .debug_macinfo */)
962       int section_ids[MAX_NR_V2_DWO_SECTIONS];
963       const gdb_byte *offsets;
964       const gdb_byte *sizes;
965     } v2;
966   } section_pool;
967 };
968
969 /* Data for one DWP file.  */
970
971 struct dwp_file
972 {
973   /* Name of the file.  */
974   const char *name;
975
976   /* File format version.  */
977   int version;
978
979   /* The bfd.  */
980   bfd *dbfd;
981
982   /* Section info for this file.  */
983   struct dwp_sections sections;
984
985   /* Table of CUs in the file.  */
986   const struct dwp_hash_table *cus;
987
988   /* Table of TUs in the file.  */
989   const struct dwp_hash_table *tus;
990
991   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
992   htab_t loaded_cus;
993   htab_t loaded_tus;
994
995   /* Table to map ELF section numbers to their sections.
996      This is only needed for the DWP V1 file format.  */
997   unsigned int num_sections;
998   asection **elf_sections;
999 };
1000
1001 /* This represents a '.dwz' file.  */
1002
1003 struct dwz_file
1004 {
1005   /* A dwz file can only contain a few sections.  */
1006   struct dwarf2_section_info abbrev;
1007   struct dwarf2_section_info info;
1008   struct dwarf2_section_info str;
1009   struct dwarf2_section_info line;
1010   struct dwarf2_section_info macro;
1011   struct dwarf2_section_info gdb_index;
1012
1013   /* The dwz's BFD.  */
1014   bfd *dwz_bfd;
1015 };
1016
1017 /* Struct used to pass misc. parameters to read_die_and_children, et
1018    al.  which are used for both .debug_info and .debug_types dies.
1019    All parameters here are unchanging for the life of the call.  This
1020    struct exists to abstract away the constant parameters of die reading.  */
1021
1022 struct die_reader_specs
1023 {
1024   /* The bfd of die_section.  */
1025   bfd* abfd;
1026
1027   /* The CU of the DIE we are parsing.  */
1028   struct dwarf2_cu *cu;
1029
1030   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
1031   struct dwo_file *dwo_file;
1032
1033   /* The section the die comes from.
1034      This is either .debug_info or .debug_types, or the .dwo variants.  */
1035   struct dwarf2_section_info *die_section;
1036
1037   /* die_section->buffer.  */
1038   const gdb_byte *buffer;
1039
1040   /* The end of the buffer.  */
1041   const gdb_byte *buffer_end;
1042
1043   /* The value of the DW_AT_comp_dir attribute.  */
1044   const char *comp_dir;
1045 };
1046
1047 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1048 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1049                                       const gdb_byte *info_ptr,
1050                                       struct die_info *comp_unit_die,
1051                                       int has_children,
1052                                       void *data);
1053
1054 struct file_entry
1055 {
1056   const char *name;
1057   unsigned int dir_index;
1058   unsigned int mod_time;
1059   unsigned int length;
1060   /* Non-zero if referenced by the Line Number Program.  */
1061   int included_p;
1062   /* The associated symbol table, if any.  */
1063   struct symtab *symtab;
1064 };
1065
1066 /* The line number information for a compilation unit (found in the
1067    .debug_line section) begins with a "statement program header",
1068    which contains the following information.  */
1069 struct line_header
1070 {
1071   /* Offset of line number information in .debug_line section.  */
1072   sect_offset offset;
1073
1074   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1075   unsigned offset_in_dwz : 1;
1076
1077   unsigned int total_length;
1078   unsigned short version;
1079   unsigned int header_length;
1080   unsigned char minimum_instruction_length;
1081   unsigned char maximum_ops_per_instruction;
1082   unsigned char default_is_stmt;
1083   int line_base;
1084   unsigned char line_range;
1085   unsigned char opcode_base;
1086
1087   /* standard_opcode_lengths[i] is the number of operands for the
1088      standard opcode whose value is i.  This means that
1089      standard_opcode_lengths[0] is unused, and the last meaningful
1090      element is standard_opcode_lengths[opcode_base - 1].  */
1091   unsigned char *standard_opcode_lengths;
1092
1093   /* The include_directories table.  NOTE!  These strings are not
1094      allocated with xmalloc; instead, they are pointers into
1095      debug_line_buffer.  If you try to free them, `free' will get
1096      indigestion.  */
1097   unsigned int num_include_dirs, include_dirs_size;
1098   const char **include_dirs;
1099
1100   /* The file_names table.  NOTE!  These strings are not allocated
1101      with xmalloc; instead, they are pointers into debug_line_buffer.
1102      Don't try to free them directly.  */
1103   unsigned int num_file_names, file_names_size;
1104   struct file_entry *file_names;
1105
1106   /* The start and end of the statement program following this
1107      header.  These point into dwarf2_per_objfile->line_buffer.  */
1108   const gdb_byte *statement_program_start, *statement_program_end;
1109 };
1110
1111 /* When we construct a partial symbol table entry we only
1112    need this much information.  */
1113 struct partial_die_info
1114   {
1115     /* Offset of this DIE.  */
1116     sect_offset offset;
1117
1118     /* DWARF-2 tag for this DIE.  */
1119     ENUM_BITFIELD(dwarf_tag) tag : 16;
1120
1121     /* Assorted flags describing the data found in this DIE.  */
1122     unsigned int has_children : 1;
1123     unsigned int is_external : 1;
1124     unsigned int is_declaration : 1;
1125     unsigned int has_type : 1;
1126     unsigned int has_specification : 1;
1127     unsigned int has_pc_info : 1;
1128     unsigned int may_be_inlined : 1;
1129
1130     /* This DIE has been marked DW_AT_main_subprogram.  */
1131     unsigned int main_subprogram : 1;
1132
1133     /* Flag set if the SCOPE field of this structure has been
1134        computed.  */
1135     unsigned int scope_set : 1;
1136
1137     /* Flag set if the DIE has a byte_size attribute.  */
1138     unsigned int has_byte_size : 1;
1139
1140     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1141     unsigned int has_const_value : 1;
1142
1143     /* Flag set if any of the DIE's children are template arguments.  */
1144     unsigned int has_template_arguments : 1;
1145
1146     /* Flag set if fixup_partial_die has been called on this die.  */
1147     unsigned int fixup_called : 1;
1148
1149     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1150     unsigned int is_dwz : 1;
1151
1152     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1153     unsigned int spec_is_dwz : 1;
1154
1155     /* The name of this DIE.  Normally the value of DW_AT_name, but
1156        sometimes a default name for unnamed DIEs.  */
1157     const char *name;
1158
1159     /* The linkage name, if present.  */
1160     const char *linkage_name;
1161
1162     /* The scope to prepend to our children.  This is generally
1163        allocated on the comp_unit_obstack, so will disappear
1164        when this compilation unit leaves the cache.  */
1165     const char *scope;
1166
1167     /* Some data associated with the partial DIE.  The tag determines
1168        which field is live.  */
1169     union
1170     {
1171       /* The location description associated with this DIE, if any.  */
1172       struct dwarf_block *locdesc;
1173       /* The offset of an import, for DW_TAG_imported_unit.  */
1174       sect_offset offset;
1175     } d;
1176
1177     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1178     CORE_ADDR lowpc;
1179     CORE_ADDR highpc;
1180
1181     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1182        DW_AT_sibling, if any.  */
1183     /* NOTE: This member isn't strictly necessary, read_partial_die could
1184        return DW_AT_sibling values to its caller load_partial_dies.  */
1185     const gdb_byte *sibling;
1186
1187     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1188        DW_AT_specification (or DW_AT_abstract_origin or
1189        DW_AT_extension).  */
1190     sect_offset spec_offset;
1191
1192     /* Pointers to this DIE's parent, first child, and next sibling,
1193        if any.  */
1194     struct partial_die_info *die_parent, *die_child, *die_sibling;
1195   };
1196
1197 /* This data structure holds the information of an abbrev.  */
1198 struct abbrev_info
1199   {
1200     unsigned int number;        /* number identifying abbrev */
1201     enum dwarf_tag tag;         /* dwarf tag */
1202     unsigned short has_children;                /* boolean */
1203     unsigned short num_attrs;   /* number of attributes */
1204     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1205     struct abbrev_info *next;   /* next in chain */
1206   };
1207
1208 struct attr_abbrev
1209   {
1210     ENUM_BITFIELD(dwarf_attribute) name : 16;
1211     ENUM_BITFIELD(dwarf_form) form : 16;
1212
1213     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1214     LONGEST implicit_const;
1215   };
1216
1217 /* Size of abbrev_table.abbrev_hash_table.  */
1218 #define ABBREV_HASH_SIZE 121
1219
1220 /* Top level data structure to contain an abbreviation table.  */
1221
1222 struct abbrev_table
1223 {
1224   /* Where the abbrev table came from.
1225      This is used as a sanity check when the table is used.  */
1226   sect_offset offset;
1227
1228   /* Storage for the abbrev table.  */
1229   struct obstack abbrev_obstack;
1230
1231   /* Hash table of abbrevs.
1232      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1233      It could be statically allocated, but the previous code didn't so we
1234      don't either.  */
1235   struct abbrev_info **abbrevs;
1236 };
1237
1238 /* Attributes have a name and a value.  */
1239 struct attribute
1240   {
1241     ENUM_BITFIELD(dwarf_attribute) name : 16;
1242     ENUM_BITFIELD(dwarf_form) form : 15;
1243
1244     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1245        field should be in u.str (existing only for DW_STRING) but it is kept
1246        here for better struct attribute alignment.  */
1247     unsigned int string_is_canonical : 1;
1248
1249     union
1250       {
1251         const char *str;
1252         struct dwarf_block *blk;
1253         ULONGEST unsnd;
1254         LONGEST snd;
1255         CORE_ADDR addr;
1256         ULONGEST signature;
1257       }
1258     u;
1259   };
1260
1261 /* This data structure holds a complete die structure.  */
1262 struct die_info
1263   {
1264     /* DWARF-2 tag for this DIE.  */
1265     ENUM_BITFIELD(dwarf_tag) tag : 16;
1266
1267     /* Number of attributes */
1268     unsigned char num_attrs;
1269
1270     /* True if we're presently building the full type name for the
1271        type derived from this DIE.  */
1272     unsigned char building_fullname : 1;
1273
1274     /* True if this die is in process.  PR 16581.  */
1275     unsigned char in_process : 1;
1276
1277     /* Abbrev number */
1278     unsigned int abbrev;
1279
1280     /* Offset in .debug_info or .debug_types section.  */
1281     sect_offset offset;
1282
1283     /* The dies in a compilation unit form an n-ary tree.  PARENT
1284        points to this die's parent; CHILD points to the first child of
1285        this node; and all the children of a given node are chained
1286        together via their SIBLING fields.  */
1287     struct die_info *child;     /* Its first child, if any.  */
1288     struct die_info *sibling;   /* Its next sibling, if any.  */
1289     struct die_info *parent;    /* Its parent, if any.  */
1290
1291     /* An array of attributes, with NUM_ATTRS elements.  There may be
1292        zero, but it's not common and zero-sized arrays are not
1293        sufficiently portable C.  */
1294     struct attribute attrs[1];
1295   };
1296
1297 /* Get at parts of an attribute structure.  */
1298
1299 #define DW_STRING(attr)    ((attr)->u.str)
1300 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1301 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1302 #define DW_BLOCK(attr)     ((attr)->u.blk)
1303 #define DW_SND(attr)       ((attr)->u.snd)
1304 #define DW_ADDR(attr)      ((attr)->u.addr)
1305 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1306
1307 /* Blocks are a bunch of untyped bytes.  */
1308 struct dwarf_block
1309   {
1310     size_t size;
1311
1312     /* Valid only if SIZE is not zero.  */
1313     const gdb_byte *data;
1314   };
1315
1316 #ifndef ATTR_ALLOC_CHUNK
1317 #define ATTR_ALLOC_CHUNK 4
1318 #endif
1319
1320 /* Allocate fields for structs, unions and enums in this size.  */
1321 #ifndef DW_FIELD_ALLOC_CHUNK
1322 #define DW_FIELD_ALLOC_CHUNK 4
1323 #endif
1324
1325 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1326    but this would require a corresponding change in unpack_field_as_long
1327    and friends.  */
1328 static int bits_per_byte = 8;
1329
1330 struct nextfield
1331 {
1332   struct nextfield *next;
1333   int accessibility;
1334   int virtuality;
1335   struct field field;
1336 };
1337
1338 struct nextfnfield
1339 {
1340   struct nextfnfield *next;
1341   struct fn_field fnfield;
1342 };
1343
1344 struct fnfieldlist
1345 {
1346   const char *name;
1347   int length;
1348   struct nextfnfield *head;
1349 };
1350
1351 struct typedef_field_list
1352 {
1353   struct typedef_field field;
1354   struct typedef_field_list *next;
1355 };
1356
1357 /* The routines that read and process dies for a C struct or C++ class
1358    pass lists of data member fields and lists of member function fields
1359    in an instance of a field_info structure, as defined below.  */
1360 struct field_info
1361   {
1362     /* List of data member and baseclasses fields.  */
1363     struct nextfield *fields, *baseclasses;
1364
1365     /* Number of fields (including baseclasses).  */
1366     int nfields;
1367
1368     /* Number of baseclasses.  */
1369     int nbaseclasses;
1370
1371     /* Set if the accesibility of one of the fields is not public.  */
1372     int non_public_fields;
1373
1374     /* Member function fields array, entries are allocated in the order they
1375        are encountered in the object file.  */
1376     struct nextfnfield *fnfields;
1377
1378     /* Member function fieldlist array, contains name of possibly overloaded
1379        member function, number of overloaded member functions and a pointer
1380        to the head of the member function field chain.  */
1381     struct fnfieldlist *fnfieldlists;
1382
1383     /* Number of entries in the fnfieldlists array.  */
1384     int nfnfields;
1385
1386     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1387        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1388     struct typedef_field_list *typedef_field_list;
1389     unsigned typedef_field_list_count;
1390   };
1391
1392 /* One item on the queue of compilation units to read in full symbols
1393    for.  */
1394 struct dwarf2_queue_item
1395 {
1396   struct dwarf2_per_cu_data *per_cu;
1397   enum language pretend_language;
1398   struct dwarf2_queue_item *next;
1399 };
1400
1401 /* The current queue.  */
1402 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1403
1404 /* Loaded secondary compilation units are kept in memory until they
1405    have not been referenced for the processing of this many
1406    compilation units.  Set this to zero to disable caching.  Cache
1407    sizes of up to at least twenty will improve startup time for
1408    typical inter-CU-reference binaries, at an obvious memory cost.  */
1409 static int dwarf_max_cache_age = 5;
1410 static void
1411 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1412                           struct cmd_list_element *c, const char *value)
1413 {
1414   fprintf_filtered (file, _("The upper bound on the age of cached "
1415                             "DWARF compilation units is %s.\n"),
1416                     value);
1417 }
1418 \f
1419 /* local function prototypes */
1420
1421 static const char *get_section_name (const struct dwarf2_section_info *);
1422
1423 static const char *get_section_file_name (const struct dwarf2_section_info *);
1424
1425 static void dwarf2_locate_sections (bfd *, asection *, void *);
1426
1427 static void dwarf2_find_base_address (struct die_info *die,
1428                                       struct dwarf2_cu *cu);
1429
1430 static struct partial_symtab *create_partial_symtab
1431   (struct dwarf2_per_cu_data *per_cu, const char *name);
1432
1433 static void dwarf2_build_psymtabs_hard (struct objfile *);
1434
1435 static void scan_partial_symbols (struct partial_die_info *,
1436                                   CORE_ADDR *, CORE_ADDR *,
1437                                   int, struct dwarf2_cu *);
1438
1439 static void add_partial_symbol (struct partial_die_info *,
1440                                 struct dwarf2_cu *);
1441
1442 static void add_partial_namespace (struct partial_die_info *pdi,
1443                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1444                                    int set_addrmap, struct dwarf2_cu *cu);
1445
1446 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1447                                 CORE_ADDR *highpc, int set_addrmap,
1448                                 struct dwarf2_cu *cu);
1449
1450 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1451                                      struct dwarf2_cu *cu);
1452
1453 static void add_partial_subprogram (struct partial_die_info *pdi,
1454                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1455                                     int need_pc, struct dwarf2_cu *cu);
1456
1457 static void dwarf2_read_symtab (struct partial_symtab *,
1458                                 struct objfile *);
1459
1460 static void psymtab_to_symtab_1 (struct partial_symtab *);
1461
1462 static struct abbrev_info *abbrev_table_lookup_abbrev
1463   (const struct abbrev_table *, unsigned int);
1464
1465 static struct abbrev_table *abbrev_table_read_table
1466   (struct dwarf2_section_info *, sect_offset);
1467
1468 static void abbrev_table_free (struct abbrev_table *);
1469
1470 static void abbrev_table_free_cleanup (void *);
1471
1472 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1473                                  struct dwarf2_section_info *);
1474
1475 static void dwarf2_free_abbrev_table (void *);
1476
1477 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1478
1479 static struct partial_die_info *load_partial_dies
1480   (const struct die_reader_specs *, const gdb_byte *, int);
1481
1482 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1483                                          struct partial_die_info *,
1484                                          struct abbrev_info *,
1485                                          unsigned int,
1486                                          const gdb_byte *);
1487
1488 static struct partial_die_info *find_partial_die (sect_offset, int,
1489                                                   struct dwarf2_cu *);
1490
1491 static void fixup_partial_die (struct partial_die_info *,
1492                                struct dwarf2_cu *);
1493
1494 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1495                                        struct attribute *, struct attr_abbrev *,
1496                                        const gdb_byte *);
1497
1498 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1499
1500 static int read_1_signed_byte (bfd *, const gdb_byte *);
1501
1502 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1503
1504 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1505
1506 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1507
1508 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1509                                unsigned int *);
1510
1511 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1512
1513 static LONGEST read_checked_initial_length_and_offset
1514   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1515    unsigned int *, unsigned int *);
1516
1517 static LONGEST read_offset (bfd *, const gdb_byte *,
1518                             const struct comp_unit_head *,
1519                             unsigned int *);
1520
1521 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1522
1523 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1524                                        sect_offset);
1525
1526 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1527
1528 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1529
1530 static const char *read_indirect_string (bfd *, const gdb_byte *,
1531                                          const struct comp_unit_head *,
1532                                          unsigned int *);
1533
1534 static const char *read_indirect_line_string (bfd *, const gdb_byte *,
1535                                               const struct comp_unit_head *,
1536                                               unsigned int *);
1537
1538 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1539
1540 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1541
1542 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1543                                               const gdb_byte *,
1544                                               unsigned int *);
1545
1546 static const char *read_str_index (const struct die_reader_specs *reader,
1547                                    ULONGEST str_index);
1548
1549 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1550
1551 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1552                                       struct dwarf2_cu *);
1553
1554 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1555                                                 unsigned int);
1556
1557 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1558                                        struct dwarf2_cu *cu);
1559
1560 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1561                                struct dwarf2_cu *cu);
1562
1563 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1564
1565 static struct die_info *die_specification (struct die_info *die,
1566                                            struct dwarf2_cu **);
1567
1568 static void free_line_header (struct line_header *lh);
1569
1570 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1571                                                      struct dwarf2_cu *cu);
1572
1573 static void dwarf_decode_lines (struct line_header *, const char *,
1574                                 struct dwarf2_cu *, struct partial_symtab *,
1575                                 CORE_ADDR, int decode_mapping);
1576
1577 static void dwarf2_start_subfile (const char *, const char *);
1578
1579 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1580                                                     const char *, const char *,
1581                                                     CORE_ADDR);
1582
1583 static struct symbol *new_symbol (struct die_info *, struct type *,
1584                                   struct dwarf2_cu *);
1585
1586 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1587                                        struct dwarf2_cu *, struct symbol *);
1588
1589 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1590                                 struct dwarf2_cu *);
1591
1592 static void dwarf2_const_value_attr (const struct attribute *attr,
1593                                      struct type *type,
1594                                      const char *name,
1595                                      struct obstack *obstack,
1596                                      struct dwarf2_cu *cu, LONGEST *value,
1597                                      const gdb_byte **bytes,
1598                                      struct dwarf2_locexpr_baton **baton);
1599
1600 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1601
1602 static int need_gnat_info (struct dwarf2_cu *);
1603
1604 static struct type *die_descriptive_type (struct die_info *,
1605                                           struct dwarf2_cu *);
1606
1607 static void set_descriptive_type (struct type *, struct die_info *,
1608                                   struct dwarf2_cu *);
1609
1610 static struct type *die_containing_type (struct die_info *,
1611                                          struct dwarf2_cu *);
1612
1613 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1614                                      struct dwarf2_cu *);
1615
1616 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1617
1618 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1619
1620 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1621
1622 static char *typename_concat (struct obstack *obs, const char *prefix,
1623                               const char *suffix, int physname,
1624                               struct dwarf2_cu *cu);
1625
1626 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1627
1628 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1629
1630 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1631
1632 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1633
1634 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1635
1636 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1637                                struct dwarf2_cu *, struct partial_symtab *);
1638
1639 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1640    values.  Keep the items ordered with increasing constraints compliance.  */
1641 enum pc_bounds_kind
1642 {
1643   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1644   PC_BOUNDS_NOT_PRESENT,
1645
1646   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1647      were present but they do not form a valid range of PC addresses.  */
1648   PC_BOUNDS_INVALID,
1649
1650   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1651   PC_BOUNDS_RANGES,
1652
1653   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1654   PC_BOUNDS_HIGH_LOW,
1655 };
1656
1657 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1658                                                  CORE_ADDR *, CORE_ADDR *,
1659                                                  struct dwarf2_cu *,
1660                                                  struct partial_symtab *);
1661
1662 static void get_scope_pc_bounds (struct die_info *,
1663                                  CORE_ADDR *, CORE_ADDR *,
1664                                  struct dwarf2_cu *);
1665
1666 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1667                                         CORE_ADDR, struct dwarf2_cu *);
1668
1669 static void dwarf2_add_field (struct field_info *, struct die_info *,
1670                               struct dwarf2_cu *);
1671
1672 static void dwarf2_attach_fields_to_type (struct field_info *,
1673                                           struct type *, struct dwarf2_cu *);
1674
1675 static void dwarf2_add_member_fn (struct field_info *,
1676                                   struct die_info *, struct type *,
1677                                   struct dwarf2_cu *);
1678
1679 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1680                                              struct type *,
1681                                              struct dwarf2_cu *);
1682
1683 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1684
1685 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1686
1687 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1688
1689 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1690
1691 static struct using_direct **using_directives (enum language);
1692
1693 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1694
1695 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1696
1697 static struct type *read_module_type (struct die_info *die,
1698                                       struct dwarf2_cu *cu);
1699
1700 static const char *namespace_name (struct die_info *die,
1701                                    int *is_anonymous, struct dwarf2_cu *);
1702
1703 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1704
1705 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1706
1707 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1708                                                        struct dwarf2_cu *);
1709
1710 static struct die_info *read_die_and_siblings_1
1711   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1712    struct die_info *);
1713
1714 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1715                                                const gdb_byte *info_ptr,
1716                                                const gdb_byte **new_info_ptr,
1717                                                struct die_info *parent);
1718
1719 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1720                                         struct die_info **, const gdb_byte *,
1721                                         int *, int);
1722
1723 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1724                                       struct die_info **, const gdb_byte *,
1725                                       int *);
1726
1727 static void process_die (struct die_info *, struct dwarf2_cu *);
1728
1729 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1730                                              struct obstack *);
1731
1732 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1733
1734 static const char *dwarf2_full_name (const char *name,
1735                                      struct die_info *die,
1736                                      struct dwarf2_cu *cu);
1737
1738 static const char *dwarf2_physname (const char *name, struct die_info *die,
1739                                     struct dwarf2_cu *cu);
1740
1741 static struct die_info *dwarf2_extension (struct die_info *die,
1742                                           struct dwarf2_cu **);
1743
1744 static const char *dwarf_tag_name (unsigned int);
1745
1746 static const char *dwarf_attr_name (unsigned int);
1747
1748 static const char *dwarf_form_name (unsigned int);
1749
1750 static char *dwarf_bool_name (unsigned int);
1751
1752 static const char *dwarf_type_encoding_name (unsigned int);
1753
1754 static struct die_info *sibling_die (struct die_info *);
1755
1756 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1757
1758 static void dump_die_for_error (struct die_info *);
1759
1760 static void dump_die_1 (struct ui_file *, int level, int max_level,
1761                         struct die_info *);
1762
1763 /*static*/ void dump_die (struct die_info *, int max_level);
1764
1765 static void store_in_ref_table (struct die_info *,
1766                                 struct dwarf2_cu *);
1767
1768 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1769
1770 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1771
1772 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1773                                                const struct attribute *,
1774                                                struct dwarf2_cu **);
1775
1776 static struct die_info *follow_die_ref (struct die_info *,
1777                                         const struct attribute *,
1778                                         struct dwarf2_cu **);
1779
1780 static struct die_info *follow_die_sig (struct die_info *,
1781                                         const struct attribute *,
1782                                         struct dwarf2_cu **);
1783
1784 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1785                                          struct dwarf2_cu *);
1786
1787 static struct type *get_DW_AT_signature_type (struct die_info *,
1788                                               const struct attribute *,
1789                                               struct dwarf2_cu *);
1790
1791 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1792
1793 static void read_signatured_type (struct signatured_type *);
1794
1795 static int attr_to_dynamic_prop (const struct attribute *attr,
1796                                  struct die_info *die, struct dwarf2_cu *cu,
1797                                  struct dynamic_prop *prop);
1798
1799 /* memory allocation interface */
1800
1801 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1802
1803 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1804
1805 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1806
1807 static int attr_form_is_block (const struct attribute *);
1808
1809 static int attr_form_is_section_offset (const struct attribute *);
1810
1811 static int attr_form_is_constant (const struct attribute *);
1812
1813 static int attr_form_is_ref (const struct attribute *);
1814
1815 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1816                                    struct dwarf2_loclist_baton *baton,
1817                                    const struct attribute *attr);
1818
1819 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1820                                          struct symbol *sym,
1821                                          struct dwarf2_cu *cu,
1822                                          int is_block);
1823
1824 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1825                                      const gdb_byte *info_ptr,
1826                                      struct abbrev_info *abbrev);
1827
1828 static void free_stack_comp_unit (void *);
1829
1830 static hashval_t partial_die_hash (const void *item);
1831
1832 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1833
1834 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1835   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1836
1837 static void init_one_comp_unit (struct dwarf2_cu *cu,
1838                                 struct dwarf2_per_cu_data *per_cu);
1839
1840 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1841                                    struct die_info *comp_unit_die,
1842                                    enum language pretend_language);
1843
1844 static void free_heap_comp_unit (void *);
1845
1846 static void free_cached_comp_units (void *);
1847
1848 static void age_cached_comp_units (void);
1849
1850 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1851
1852 static struct type *set_die_type (struct die_info *, struct type *,
1853                                   struct dwarf2_cu *);
1854
1855 static void create_all_comp_units (struct objfile *);
1856
1857 static int create_all_type_units (struct objfile *);
1858
1859 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1860                                  enum language);
1861
1862 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1863                                     enum language);
1864
1865 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1866                                     enum language);
1867
1868 static void dwarf2_add_dependence (struct dwarf2_cu *,
1869                                    struct dwarf2_per_cu_data *);
1870
1871 static void dwarf2_mark (struct dwarf2_cu *);
1872
1873 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1874
1875 static struct type *get_die_type_at_offset (sect_offset,
1876                                             struct dwarf2_per_cu_data *);
1877
1878 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1879
1880 static void dwarf2_release_queue (void *dummy);
1881
1882 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1883                              enum language pretend_language);
1884
1885 static void process_queue (void);
1886
1887 static void find_file_and_directory (struct die_info *die,
1888                                      struct dwarf2_cu *cu,
1889                                      const char **name, const char **comp_dir);
1890
1891 static char *file_full_name (int file, struct line_header *lh,
1892                              const char *comp_dir);
1893
1894 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1895 enum class rcuh_kind { COMPILE, TYPE };
1896
1897 static const gdb_byte *read_and_check_comp_unit_head
1898   (struct comp_unit_head *header,
1899    struct dwarf2_section_info *section,
1900    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1901    rcuh_kind section_kind);
1902
1903 static void init_cutu_and_read_dies
1904   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1905    int use_existing_cu, int keep,
1906    die_reader_func_ftype *die_reader_func, void *data);
1907
1908 static void init_cutu_and_read_dies_simple
1909   (struct dwarf2_per_cu_data *this_cu,
1910    die_reader_func_ftype *die_reader_func, void *data);
1911
1912 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1913
1914 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1915
1916 static struct dwo_unit *lookup_dwo_unit_in_dwp
1917   (struct dwp_file *dwp_file, const char *comp_dir,
1918    ULONGEST signature, int is_debug_types);
1919
1920 static struct dwp_file *get_dwp_file (void);
1921
1922 static struct dwo_unit *lookup_dwo_comp_unit
1923   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1924
1925 static struct dwo_unit *lookup_dwo_type_unit
1926   (struct signatured_type *, const char *, const char *);
1927
1928 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1929
1930 static void free_dwo_file_cleanup (void *);
1931
1932 static void process_cu_includes (void);
1933
1934 static void check_producer (struct dwarf2_cu *cu);
1935
1936 static void free_line_header_voidp (void *arg);
1937 \f
1938 /* Various complaints about symbol reading that don't abort the process.  */
1939
1940 static void
1941 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1942 {
1943   complaint (&symfile_complaints,
1944              _("statement list doesn't fit in .debug_line section"));
1945 }
1946
1947 static void
1948 dwarf2_debug_line_missing_file_complaint (void)
1949 {
1950   complaint (&symfile_complaints,
1951              _(".debug_line section has line data without a file"));
1952 }
1953
1954 static void
1955 dwarf2_debug_line_missing_end_sequence_complaint (void)
1956 {
1957   complaint (&symfile_complaints,
1958              _(".debug_line section has line "
1959                "program sequence without an end"));
1960 }
1961
1962 static void
1963 dwarf2_complex_location_expr_complaint (void)
1964 {
1965   complaint (&symfile_complaints, _("location expression too complex"));
1966 }
1967
1968 static void
1969 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1970                                               int arg3)
1971 {
1972   complaint (&symfile_complaints,
1973              _("const value length mismatch for '%s', got %d, expected %d"),
1974              arg1, arg2, arg3);
1975 }
1976
1977 static void
1978 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1979 {
1980   complaint (&symfile_complaints,
1981              _("debug info runs off end of %s section"
1982                " [in module %s]"),
1983              get_section_name (section),
1984              get_section_file_name (section));
1985 }
1986
1987 static void
1988 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1989 {
1990   complaint (&symfile_complaints,
1991              _("macro debug info contains a "
1992                "malformed macro definition:\n`%s'"),
1993              arg1);
1994 }
1995
1996 static void
1997 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1998 {
1999   complaint (&symfile_complaints,
2000              _("invalid attribute class or form for '%s' in '%s'"),
2001              arg1, arg2);
2002 }
2003
2004 /* Hash function for line_header_hash.  */
2005
2006 static hashval_t
2007 line_header_hash (const struct line_header *ofs)
2008 {
2009   return ofs->offset.sect_off ^ ofs->offset_in_dwz;
2010 }
2011
2012 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2013
2014 static hashval_t
2015 line_header_hash_voidp (const void *item)
2016 {
2017   const struct line_header *ofs = (const struct line_header *) item;
2018
2019   return line_header_hash (ofs);
2020 }
2021
2022 /* Equality function for line_header_hash.  */
2023
2024 static int
2025 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2026 {
2027   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2028   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2029
2030   return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
2031           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2032 }
2033
2034 \f
2035 #if WORDS_BIGENDIAN
2036
2037 /* Convert VALUE between big- and little-endian.  */
2038 static offset_type
2039 byte_swap (offset_type value)
2040 {
2041   offset_type result;
2042
2043   result = (value & 0xff) << 24;
2044   result |= (value & 0xff00) << 8;
2045   result |= (value & 0xff0000) >> 8;
2046   result |= (value & 0xff000000) >> 24;
2047   return result;
2048 }
2049
2050 #define MAYBE_SWAP(V)  byte_swap (V)
2051
2052 #else
2053 #define MAYBE_SWAP(V) (V)
2054 #endif /* WORDS_BIGENDIAN */
2055
2056 /* Read the given attribute value as an address, taking the attribute's
2057    form into account.  */
2058
2059 static CORE_ADDR
2060 attr_value_as_address (struct attribute *attr)
2061 {
2062   CORE_ADDR addr;
2063
2064   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2065     {
2066       /* Aside from a few clearly defined exceptions, attributes that
2067          contain an address must always be in DW_FORM_addr form.
2068          Unfortunately, some compilers happen to be violating this
2069          requirement by encoding addresses using other forms, such
2070          as DW_FORM_data4 for example.  For those broken compilers,
2071          we try to do our best, without any guarantee of success,
2072          to interpret the address correctly.  It would also be nice
2073          to generate a complaint, but that would require us to maintain
2074          a list of legitimate cases where a non-address form is allowed,
2075          as well as update callers to pass in at least the CU's DWARF
2076          version.  This is more overhead than what we're willing to
2077          expand for a pretty rare case.  */
2078       addr = DW_UNSND (attr);
2079     }
2080   else
2081     addr = DW_ADDR (attr);
2082
2083   return addr;
2084 }
2085
2086 /* The suffix for an index file.  */
2087 #define INDEX_SUFFIX ".gdb-index"
2088
2089 /* Try to locate the sections we need for DWARF 2 debugging
2090    information and return true if we have enough to do something.
2091    NAMES points to the dwarf2 section names, or is NULL if the standard
2092    ELF names are used.  */
2093
2094 int
2095 dwarf2_has_info (struct objfile *objfile,
2096                  const struct dwarf2_debug_sections *names)
2097 {
2098   dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
2099                         objfile_data (objfile, dwarf2_objfile_data_key));
2100   if (!dwarf2_per_objfile)
2101     {
2102       /* Initialize per-objfile state.  */
2103       struct dwarf2_per_objfile *data
2104         = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_objfile);
2105
2106       memset (data, 0, sizeof (*data));
2107       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2108       dwarf2_per_objfile = data;
2109
2110       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2111                              (void *) names);
2112       dwarf2_per_objfile->objfile = objfile;
2113     }
2114   return (!dwarf2_per_objfile->info.is_virtual
2115           && dwarf2_per_objfile->info.s.section != NULL
2116           && !dwarf2_per_objfile->abbrev.is_virtual
2117           && dwarf2_per_objfile->abbrev.s.section != NULL);
2118 }
2119
2120 /* Return the containing section of virtual section SECTION.  */
2121
2122 static struct dwarf2_section_info *
2123 get_containing_section (const struct dwarf2_section_info *section)
2124 {
2125   gdb_assert (section->is_virtual);
2126   return section->s.containing_section;
2127 }
2128
2129 /* Return the bfd owner of SECTION.  */
2130
2131 static struct bfd *
2132 get_section_bfd_owner (const struct dwarf2_section_info *section)
2133 {
2134   if (section->is_virtual)
2135     {
2136       section = get_containing_section (section);
2137       gdb_assert (!section->is_virtual);
2138     }
2139   return section->s.section->owner;
2140 }
2141
2142 /* Return the bfd section of SECTION.
2143    Returns NULL if the section is not present.  */
2144
2145 static asection *
2146 get_section_bfd_section (const struct dwarf2_section_info *section)
2147 {
2148   if (section->is_virtual)
2149     {
2150       section = get_containing_section (section);
2151       gdb_assert (!section->is_virtual);
2152     }
2153   return section->s.section;
2154 }
2155
2156 /* Return the name of SECTION.  */
2157
2158 static const char *
2159 get_section_name (const struct dwarf2_section_info *section)
2160 {
2161   asection *sectp = get_section_bfd_section (section);
2162
2163   gdb_assert (sectp != NULL);
2164   return bfd_section_name (get_section_bfd_owner (section), sectp);
2165 }
2166
2167 /* Return the name of the file SECTION is in.  */
2168
2169 static const char *
2170 get_section_file_name (const struct dwarf2_section_info *section)
2171 {
2172   bfd *abfd = get_section_bfd_owner (section);
2173
2174   return bfd_get_filename (abfd);
2175 }
2176
2177 /* Return the id of SECTION.
2178    Returns 0 if SECTION doesn't exist.  */
2179
2180 static int
2181 get_section_id (const struct dwarf2_section_info *section)
2182 {
2183   asection *sectp = get_section_bfd_section (section);
2184
2185   if (sectp == NULL)
2186     return 0;
2187   return sectp->id;
2188 }
2189
2190 /* Return the flags of SECTION.
2191    SECTION (or containing section if this is a virtual section) must exist.  */
2192
2193 static int
2194 get_section_flags (const struct dwarf2_section_info *section)
2195 {
2196   asection *sectp = get_section_bfd_section (section);
2197
2198   gdb_assert (sectp != NULL);
2199   return bfd_get_section_flags (sectp->owner, sectp);
2200 }
2201
2202 /* When loading sections, we look either for uncompressed section or for
2203    compressed section names.  */
2204
2205 static int
2206 section_is_p (const char *section_name,
2207               const struct dwarf2_section_names *names)
2208 {
2209   if (names->normal != NULL
2210       && strcmp (section_name, names->normal) == 0)
2211     return 1;
2212   if (names->compressed != NULL
2213       && strcmp (section_name, names->compressed) == 0)
2214     return 1;
2215   return 0;
2216 }
2217
2218 /* This function is mapped across the sections and remembers the
2219    offset and size of each of the debugging sections we are interested
2220    in.  */
2221
2222 static void
2223 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2224 {
2225   const struct dwarf2_debug_sections *names;
2226   flagword aflag = bfd_get_section_flags (abfd, sectp);
2227
2228   if (vnames == NULL)
2229     names = &dwarf2_elf_names;
2230   else
2231     names = (const struct dwarf2_debug_sections *) vnames;
2232
2233   if ((aflag & SEC_HAS_CONTENTS) == 0)
2234     {
2235     }
2236   else if (section_is_p (sectp->name, &names->info))
2237     {
2238       dwarf2_per_objfile->info.s.section = sectp;
2239       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2240     }
2241   else if (section_is_p (sectp->name, &names->abbrev))
2242     {
2243       dwarf2_per_objfile->abbrev.s.section = sectp;
2244       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2245     }
2246   else if (section_is_p (sectp->name, &names->line))
2247     {
2248       dwarf2_per_objfile->line.s.section = sectp;
2249       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2250     }
2251   else if (section_is_p (sectp->name, &names->loc))
2252     {
2253       dwarf2_per_objfile->loc.s.section = sectp;
2254       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2255     }
2256   else if (section_is_p (sectp->name, &names->loclists))
2257     {
2258       dwarf2_per_objfile->loclists.s.section = sectp;
2259       dwarf2_per_objfile->loclists.size = bfd_get_section_size (sectp);
2260     }
2261   else if (section_is_p (sectp->name, &names->macinfo))
2262     {
2263       dwarf2_per_objfile->macinfo.s.section = sectp;
2264       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2265     }
2266   else if (section_is_p (sectp->name, &names->macro))
2267     {
2268       dwarf2_per_objfile->macro.s.section = sectp;
2269       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2270     }
2271   else if (section_is_p (sectp->name, &names->str))
2272     {
2273       dwarf2_per_objfile->str.s.section = sectp;
2274       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2275     }
2276   else if (section_is_p (sectp->name, &names->line_str))
2277     {
2278       dwarf2_per_objfile->line_str.s.section = sectp;
2279       dwarf2_per_objfile->line_str.size = bfd_get_section_size (sectp);
2280     }
2281   else if (section_is_p (sectp->name, &names->addr))
2282     {
2283       dwarf2_per_objfile->addr.s.section = sectp;
2284       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2285     }
2286   else if (section_is_p (sectp->name, &names->frame))
2287     {
2288       dwarf2_per_objfile->frame.s.section = sectp;
2289       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2290     }
2291   else if (section_is_p (sectp->name, &names->eh_frame))
2292     {
2293       dwarf2_per_objfile->eh_frame.s.section = sectp;
2294       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2295     }
2296   else if (section_is_p (sectp->name, &names->ranges))
2297     {
2298       dwarf2_per_objfile->ranges.s.section = sectp;
2299       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2300     }
2301   else if (section_is_p (sectp->name, &names->rnglists))
2302     {
2303       dwarf2_per_objfile->rnglists.s.section = sectp;
2304       dwarf2_per_objfile->rnglists.size = bfd_get_section_size (sectp);
2305     }
2306   else if (section_is_p (sectp->name, &names->types))
2307     {
2308       struct dwarf2_section_info type_section;
2309
2310       memset (&type_section, 0, sizeof (type_section));
2311       type_section.s.section = sectp;
2312       type_section.size = bfd_get_section_size (sectp);
2313
2314       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2315                      &type_section);
2316     }
2317   else if (section_is_p (sectp->name, &names->gdb_index))
2318     {
2319       dwarf2_per_objfile->gdb_index.s.section = sectp;
2320       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2321     }
2322
2323   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2324       && bfd_section_vma (abfd, sectp) == 0)
2325     dwarf2_per_objfile->has_section_at_zero = 1;
2326 }
2327
2328 /* A helper function that decides whether a section is empty,
2329    or not present.  */
2330
2331 static int
2332 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2333 {
2334   if (section->is_virtual)
2335     return section->size == 0;
2336   return section->s.section == NULL || section->size == 0;
2337 }
2338
2339 /* Read the contents of the section INFO.
2340    OBJFILE is the main object file, but not necessarily the file where
2341    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2342    of the DWO file.
2343    If the section is compressed, uncompress it before returning.  */
2344
2345 static void
2346 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2347 {
2348   asection *sectp;
2349   bfd *abfd;
2350   gdb_byte *buf, *retbuf;
2351
2352   if (info->readin)
2353     return;
2354   info->buffer = NULL;
2355   info->readin = 1;
2356
2357   if (dwarf2_section_empty_p (info))
2358     return;
2359
2360   sectp = get_section_bfd_section (info);
2361
2362   /* If this is a virtual section we need to read in the real one first.  */
2363   if (info->is_virtual)
2364     {
2365       struct dwarf2_section_info *containing_section =
2366         get_containing_section (info);
2367
2368       gdb_assert (sectp != NULL);
2369       if ((sectp->flags & SEC_RELOC) != 0)
2370         {
2371           error (_("Dwarf Error: DWP format V2 with relocations is not"
2372                    " supported in section %s [in module %s]"),
2373                  get_section_name (info), get_section_file_name (info));
2374         }
2375       dwarf2_read_section (objfile, containing_section);
2376       /* Other code should have already caught virtual sections that don't
2377          fit.  */
2378       gdb_assert (info->virtual_offset + info->size
2379                   <= containing_section->size);
2380       /* If the real section is empty or there was a problem reading the
2381          section we shouldn't get here.  */
2382       gdb_assert (containing_section->buffer != NULL);
2383       info->buffer = containing_section->buffer + info->virtual_offset;
2384       return;
2385     }
2386
2387   /* If the section has relocations, we must read it ourselves.
2388      Otherwise we attach it to the BFD.  */
2389   if ((sectp->flags & SEC_RELOC) == 0)
2390     {
2391       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2392       return;
2393     }
2394
2395   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2396   info->buffer = buf;
2397
2398   /* When debugging .o files, we may need to apply relocations; see
2399      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2400      We never compress sections in .o files, so we only need to
2401      try this when the section is not compressed.  */
2402   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2403   if (retbuf != NULL)
2404     {
2405       info->buffer = retbuf;
2406       return;
2407     }
2408
2409   abfd = get_section_bfd_owner (info);
2410   gdb_assert (abfd != NULL);
2411
2412   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2413       || bfd_bread (buf, info->size, abfd) != info->size)
2414     {
2415       error (_("Dwarf Error: Can't read DWARF data"
2416                " in section %s [in module %s]"),
2417              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2418     }
2419 }
2420
2421 /* A helper function that returns the size of a section in a safe way.
2422    If you are positive that the section has been read before using the
2423    size, then it is safe to refer to the dwarf2_section_info object's
2424    "size" field directly.  In other cases, you must call this
2425    function, because for compressed sections the size field is not set
2426    correctly until the section has been read.  */
2427
2428 static bfd_size_type
2429 dwarf2_section_size (struct objfile *objfile,
2430                      struct dwarf2_section_info *info)
2431 {
2432   if (!info->readin)
2433     dwarf2_read_section (objfile, info);
2434   return info->size;
2435 }
2436
2437 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2438    SECTION_NAME.  */
2439
2440 void
2441 dwarf2_get_section_info (struct objfile *objfile,
2442                          enum dwarf2_section_enum sect,
2443                          asection **sectp, const gdb_byte **bufp,
2444                          bfd_size_type *sizep)
2445 {
2446   struct dwarf2_per_objfile *data
2447     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2448                                                   dwarf2_objfile_data_key);
2449   struct dwarf2_section_info *info;
2450
2451   /* We may see an objfile without any DWARF, in which case we just
2452      return nothing.  */
2453   if (data == NULL)
2454     {
2455       *sectp = NULL;
2456       *bufp = NULL;
2457       *sizep = 0;
2458       return;
2459     }
2460   switch (sect)
2461     {
2462     case DWARF2_DEBUG_FRAME:
2463       info = &data->frame;
2464       break;
2465     case DWARF2_EH_FRAME:
2466       info = &data->eh_frame;
2467       break;
2468     default:
2469       gdb_assert_not_reached ("unexpected section");
2470     }
2471
2472   dwarf2_read_section (objfile, info);
2473
2474   *sectp = get_section_bfd_section (info);
2475   *bufp = info->buffer;
2476   *sizep = info->size;
2477 }
2478
2479 /* A helper function to find the sections for a .dwz file.  */
2480
2481 static void
2482 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2483 {
2484   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2485
2486   /* Note that we only support the standard ELF names, because .dwz
2487      is ELF-only (at the time of writing).  */
2488   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2489     {
2490       dwz_file->abbrev.s.section = sectp;
2491       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2492     }
2493   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2494     {
2495       dwz_file->info.s.section = sectp;
2496       dwz_file->info.size = bfd_get_section_size (sectp);
2497     }
2498   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2499     {
2500       dwz_file->str.s.section = sectp;
2501       dwz_file->str.size = bfd_get_section_size (sectp);
2502     }
2503   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2504     {
2505       dwz_file->line.s.section = sectp;
2506       dwz_file->line.size = bfd_get_section_size (sectp);
2507     }
2508   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2509     {
2510       dwz_file->macro.s.section = sectp;
2511       dwz_file->macro.size = bfd_get_section_size (sectp);
2512     }
2513   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2514     {
2515       dwz_file->gdb_index.s.section = sectp;
2516       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2517     }
2518 }
2519
2520 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2521    there is no .gnu_debugaltlink section in the file.  Error if there
2522    is such a section but the file cannot be found.  */
2523
2524 static struct dwz_file *
2525 dwarf2_get_dwz_file (void)
2526 {
2527   char *data;
2528   struct cleanup *cleanup;
2529   const char *filename;
2530   struct dwz_file *result;
2531   bfd_size_type buildid_len_arg;
2532   size_t buildid_len;
2533   bfd_byte *buildid;
2534
2535   if (dwarf2_per_objfile->dwz_file != NULL)
2536     return dwarf2_per_objfile->dwz_file;
2537
2538   bfd_set_error (bfd_error_no_error);
2539   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2540                                       &buildid_len_arg, &buildid);
2541   if (data == NULL)
2542     {
2543       if (bfd_get_error () == bfd_error_no_error)
2544         return NULL;
2545       error (_("could not read '.gnu_debugaltlink' section: %s"),
2546              bfd_errmsg (bfd_get_error ()));
2547     }
2548   cleanup = make_cleanup (xfree, data);
2549   make_cleanup (xfree, buildid);
2550
2551   buildid_len = (size_t) buildid_len_arg;
2552
2553   filename = (const char *) data;
2554   if (!IS_ABSOLUTE_PATH (filename))
2555     {
2556       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2557       char *rel;
2558
2559       make_cleanup (xfree, abs);
2560       abs = ldirname (abs);
2561       make_cleanup (xfree, abs);
2562
2563       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2564       make_cleanup (xfree, rel);
2565       filename = rel;
2566     }
2567
2568   /* First try the file name given in the section.  If that doesn't
2569      work, try to use the build-id instead.  */
2570   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2571   if (dwz_bfd != NULL)
2572     {
2573       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2574         dwz_bfd.release ();
2575     }
2576
2577   if (dwz_bfd == NULL)
2578     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2579
2580   if (dwz_bfd == NULL)
2581     error (_("could not find '.gnu_debugaltlink' file for %s"),
2582            objfile_name (dwarf2_per_objfile->objfile));
2583
2584   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2585                            struct dwz_file);
2586   result->dwz_bfd = dwz_bfd.release ();
2587
2588   bfd_map_over_sections (result->dwz_bfd, locate_dwz_sections, result);
2589
2590   do_cleanups (cleanup);
2591
2592   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, result->dwz_bfd);
2593   dwarf2_per_objfile->dwz_file = result;
2594   return result;
2595 }
2596 \f
2597 /* DWARF quick_symbols_functions support.  */
2598
2599 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2600    unique line tables, so we maintain a separate table of all .debug_line
2601    derived entries to support the sharing.
2602    All the quick functions need is the list of file names.  We discard the
2603    line_header when we're done and don't need to record it here.  */
2604 struct quick_file_names
2605 {
2606   /* The data used to construct the hash key.  */
2607   struct stmt_list_hash hash;
2608
2609   /* The number of entries in file_names, real_names.  */
2610   unsigned int num_file_names;
2611
2612   /* The file names from the line table, after being run through
2613      file_full_name.  */
2614   const char **file_names;
2615
2616   /* The file names from the line table after being run through
2617      gdb_realpath.  These are computed lazily.  */
2618   const char **real_names;
2619 };
2620
2621 /* When using the index (and thus not using psymtabs), each CU has an
2622    object of this type.  This is used to hold information needed by
2623    the various "quick" methods.  */
2624 struct dwarf2_per_cu_quick_data
2625 {
2626   /* The file table.  This can be NULL if there was no file table
2627      or it's currently not read in.
2628      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2629   struct quick_file_names *file_names;
2630
2631   /* The corresponding symbol table.  This is NULL if symbols for this
2632      CU have not yet been read.  */
2633   struct compunit_symtab *compunit_symtab;
2634
2635   /* A temporary mark bit used when iterating over all CUs in
2636      expand_symtabs_matching.  */
2637   unsigned int mark : 1;
2638
2639   /* True if we've tried to read the file table and found there isn't one.
2640      There will be no point in trying to read it again next time.  */
2641   unsigned int no_file_data : 1;
2642 };
2643
2644 /* Utility hash function for a stmt_list_hash.  */
2645
2646 static hashval_t
2647 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2648 {
2649   hashval_t v = 0;
2650
2651   if (stmt_list_hash->dwo_unit != NULL)
2652     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2653   v += stmt_list_hash->line_offset.sect_off;
2654   return v;
2655 }
2656
2657 /* Utility equality function for a stmt_list_hash.  */
2658
2659 static int
2660 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2661                     const struct stmt_list_hash *rhs)
2662 {
2663   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2664     return 0;
2665   if (lhs->dwo_unit != NULL
2666       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2667     return 0;
2668
2669   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2670 }
2671
2672 /* Hash function for a quick_file_names.  */
2673
2674 static hashval_t
2675 hash_file_name_entry (const void *e)
2676 {
2677   const struct quick_file_names *file_data
2678     = (const struct quick_file_names *) e;
2679
2680   return hash_stmt_list_entry (&file_data->hash);
2681 }
2682
2683 /* Equality function for a quick_file_names.  */
2684
2685 static int
2686 eq_file_name_entry (const void *a, const void *b)
2687 {
2688   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2689   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2690
2691   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2692 }
2693
2694 /* Delete function for a quick_file_names.  */
2695
2696 static void
2697 delete_file_name_entry (void *e)
2698 {
2699   struct quick_file_names *file_data = (struct quick_file_names *) e;
2700   int i;
2701
2702   for (i = 0; i < file_data->num_file_names; ++i)
2703     {
2704       xfree ((void*) file_data->file_names[i]);
2705       if (file_data->real_names)
2706         xfree ((void*) file_data->real_names[i]);
2707     }
2708
2709   /* The space for the struct itself lives on objfile_obstack,
2710      so we don't free it here.  */
2711 }
2712
2713 /* Create a quick_file_names hash table.  */
2714
2715 static htab_t
2716 create_quick_file_names_table (unsigned int nr_initial_entries)
2717 {
2718   return htab_create_alloc (nr_initial_entries,
2719                             hash_file_name_entry, eq_file_name_entry,
2720                             delete_file_name_entry, xcalloc, xfree);
2721 }
2722
2723 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2724    have to be created afterwards.  You should call age_cached_comp_units after
2725    processing PER_CU->CU.  dw2_setup must have been already called.  */
2726
2727 static void
2728 load_cu (struct dwarf2_per_cu_data *per_cu)
2729 {
2730   if (per_cu->is_debug_types)
2731     load_full_type_unit (per_cu);
2732   else
2733     load_full_comp_unit (per_cu, language_minimal);
2734
2735   if (per_cu->cu == NULL)
2736     return;  /* Dummy CU.  */
2737
2738   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2739 }
2740
2741 /* Read in the symbols for PER_CU.  */
2742
2743 static void
2744 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2745 {
2746   struct cleanup *back_to;
2747
2748   /* Skip type_unit_groups, reading the type units they contain
2749      is handled elsewhere.  */
2750   if (IS_TYPE_UNIT_GROUP (per_cu))
2751     return;
2752
2753   back_to = make_cleanup (dwarf2_release_queue, NULL);
2754
2755   if (dwarf2_per_objfile->using_index
2756       ? per_cu->v.quick->compunit_symtab == NULL
2757       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2758     {
2759       queue_comp_unit (per_cu, language_minimal);
2760       load_cu (per_cu);
2761
2762       /* If we just loaded a CU from a DWO, and we're working with an index
2763          that may badly handle TUs, load all the TUs in that DWO as well.
2764          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2765       if (!per_cu->is_debug_types
2766           && per_cu->cu != NULL
2767           && per_cu->cu->dwo_unit != NULL
2768           && dwarf2_per_objfile->index_table != NULL
2769           && dwarf2_per_objfile->index_table->version <= 7
2770           /* DWP files aren't supported yet.  */
2771           && get_dwp_file () == NULL)
2772         queue_and_load_all_dwo_tus (per_cu);
2773     }
2774
2775   process_queue ();
2776
2777   /* Age the cache, releasing compilation units that have not
2778      been used recently.  */
2779   age_cached_comp_units ();
2780
2781   do_cleanups (back_to);
2782 }
2783
2784 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2785    the objfile from which this CU came.  Returns the resulting symbol
2786    table.  */
2787
2788 static struct compunit_symtab *
2789 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2790 {
2791   gdb_assert (dwarf2_per_objfile->using_index);
2792   if (!per_cu->v.quick->compunit_symtab)
2793     {
2794       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2795       increment_reading_symtab ();
2796       dw2_do_instantiate_symtab (per_cu);
2797       process_cu_includes ();
2798       do_cleanups (back_to);
2799     }
2800
2801   return per_cu->v.quick->compunit_symtab;
2802 }
2803
2804 /* Return the CU/TU given its index.
2805
2806    This is intended for loops like:
2807
2808    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2809                     + dwarf2_per_objfile->n_type_units); ++i)
2810      {
2811        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
2812
2813        ...;
2814      }
2815 */
2816
2817 static struct dwarf2_per_cu_data *
2818 dw2_get_cutu (int index)
2819 {
2820   if (index >= dwarf2_per_objfile->n_comp_units)
2821     {
2822       index -= dwarf2_per_objfile->n_comp_units;
2823       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2824       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2825     }
2826
2827   return dwarf2_per_objfile->all_comp_units[index];
2828 }
2829
2830 /* Return the CU given its index.
2831    This differs from dw2_get_cutu in that it's for when you know INDEX
2832    refers to a CU.  */
2833
2834 static struct dwarf2_per_cu_data *
2835 dw2_get_cu (int index)
2836 {
2837   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
2838
2839   return dwarf2_per_objfile->all_comp_units[index];
2840 }
2841
2842 /* A helper for create_cus_from_index that handles a given list of
2843    CUs.  */
2844
2845 static void
2846 create_cus_from_index_list (struct objfile *objfile,
2847                             const gdb_byte *cu_list, offset_type n_elements,
2848                             struct dwarf2_section_info *section,
2849                             int is_dwz,
2850                             int base_offset)
2851 {
2852   offset_type i;
2853
2854   for (i = 0; i < n_elements; i += 2)
2855     {
2856       struct dwarf2_per_cu_data *the_cu;
2857       ULONGEST offset, length;
2858
2859       gdb_static_assert (sizeof (ULONGEST) >= 8);
2860       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2861       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2862       cu_list += 2 * 8;
2863
2864       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2865                                struct dwarf2_per_cu_data);
2866       the_cu->offset.sect_off = offset;
2867       the_cu->length = length;
2868       the_cu->objfile = objfile;
2869       the_cu->section = section;
2870       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2871                                         struct dwarf2_per_cu_quick_data);
2872       the_cu->is_dwz = is_dwz;
2873       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2874     }
2875 }
2876
2877 /* Read the CU list from the mapped index, and use it to create all
2878    the CU objects for this objfile.  */
2879
2880 static void
2881 create_cus_from_index (struct objfile *objfile,
2882                        const gdb_byte *cu_list, offset_type cu_list_elements,
2883                        const gdb_byte *dwz_list, offset_type dwz_elements)
2884 {
2885   struct dwz_file *dwz;
2886
2887   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2888   dwarf2_per_objfile->all_comp_units =
2889     XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
2890                dwarf2_per_objfile->n_comp_units);
2891
2892   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2893                               &dwarf2_per_objfile->info, 0, 0);
2894
2895   if (dwz_elements == 0)
2896     return;
2897
2898   dwz = dwarf2_get_dwz_file ();
2899   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2900                               cu_list_elements / 2);
2901 }
2902
2903 /* Create the signatured type hash table from the index.  */
2904
2905 static void
2906 create_signatured_type_table_from_index (struct objfile *objfile,
2907                                          struct dwarf2_section_info *section,
2908                                          const gdb_byte *bytes,
2909                                          offset_type elements)
2910 {
2911   offset_type i;
2912   htab_t sig_types_hash;
2913
2914   dwarf2_per_objfile->n_type_units
2915     = dwarf2_per_objfile->n_allocated_type_units
2916     = elements / 3;
2917   dwarf2_per_objfile->all_type_units =
2918     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
2919
2920   sig_types_hash = allocate_signatured_type_table (objfile);
2921
2922   for (i = 0; i < elements; i += 3)
2923     {
2924       struct signatured_type *sig_type;
2925       ULONGEST offset, type_offset_in_tu, signature;
2926       void **slot;
2927
2928       gdb_static_assert (sizeof (ULONGEST) >= 8);
2929       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2930       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2931                                                     BFD_ENDIAN_LITTLE);
2932       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2933       bytes += 3 * 8;
2934
2935       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2936                                  struct signatured_type);
2937       sig_type->signature = signature;
2938       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2939       sig_type->per_cu.is_debug_types = 1;
2940       sig_type->per_cu.section = section;
2941       sig_type->per_cu.offset.sect_off = offset;
2942       sig_type->per_cu.objfile = objfile;
2943       sig_type->per_cu.v.quick
2944         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2945                           struct dwarf2_per_cu_quick_data);
2946
2947       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2948       *slot = sig_type;
2949
2950       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2951     }
2952
2953   dwarf2_per_objfile->signatured_types = sig_types_hash;
2954 }
2955
2956 /* Read the address map data from the mapped index, and use it to
2957    populate the objfile's psymtabs_addrmap.  */
2958
2959 static void
2960 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2961 {
2962   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2963   const gdb_byte *iter, *end;
2964   struct obstack temp_obstack;
2965   struct addrmap *mutable_map;
2966   struct cleanup *cleanup;
2967   CORE_ADDR baseaddr;
2968
2969   obstack_init (&temp_obstack);
2970   cleanup = make_cleanup_obstack_free (&temp_obstack);
2971   mutable_map = addrmap_create_mutable (&temp_obstack);
2972
2973   iter = index->address_table;
2974   end = iter + index->address_table_size;
2975
2976   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2977
2978   while (iter < end)
2979     {
2980       ULONGEST hi, lo, cu_index;
2981       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2982       iter += 8;
2983       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2984       iter += 8;
2985       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2986       iter += 4;
2987
2988       if (lo > hi)
2989         {
2990           complaint (&symfile_complaints,
2991                      _(".gdb_index address table has invalid range (%s - %s)"),
2992                      hex_string (lo), hex_string (hi));
2993           continue;
2994         }
2995
2996       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2997         {
2998           complaint (&symfile_complaints,
2999                      _(".gdb_index address table has invalid CU number %u"),
3000                      (unsigned) cu_index);
3001           continue;
3002         }
3003
3004       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
3005       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
3006       addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
3007     }
3008
3009   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3010                                                     &objfile->objfile_obstack);
3011   do_cleanups (cleanup);
3012 }
3013
3014 /* The hash function for strings in the mapped index.  This is the same as
3015    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
3016    implementation.  This is necessary because the hash function is tied to the
3017    format of the mapped index file.  The hash values do not have to match with
3018    SYMBOL_HASH_NEXT.
3019    
3020    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
3021
3022 static hashval_t
3023 mapped_index_string_hash (int index_version, const void *p)
3024 {
3025   const unsigned char *str = (const unsigned char *) p;
3026   hashval_t r = 0;
3027   unsigned char c;
3028
3029   while ((c = *str++) != 0)
3030     {
3031       if (index_version >= 5)
3032         c = tolower (c);
3033       r = r * 67 + c - 113;
3034     }
3035
3036   return r;
3037 }
3038
3039 /* Find a slot in the mapped index INDEX for the object named NAME.
3040    If NAME is found, set *VEC_OUT to point to the CU vector in the
3041    constant pool and return 1.  If NAME cannot be found, return 0.  */
3042
3043 static int
3044 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3045                           offset_type **vec_out)
3046 {
3047   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
3048   offset_type hash;
3049   offset_type slot, step;
3050   int (*cmp) (const char *, const char *);
3051
3052   if (current_language->la_language == language_cplus
3053       || current_language->la_language == language_fortran
3054       || current_language->la_language == language_d)
3055     {
3056       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3057          not contain any.  */
3058
3059       if (strchr (name, '(') != NULL)
3060         {
3061           char *without_params = cp_remove_params (name);
3062
3063           if (without_params != NULL)
3064             {
3065               make_cleanup (xfree, without_params);
3066               name = without_params;
3067             }
3068         }
3069     }
3070
3071   /* Index version 4 did not support case insensitive searches.  But the
3072      indices for case insensitive languages are built in lowercase, therefore
3073      simulate our NAME being searched is also lowercased.  */
3074   hash = mapped_index_string_hash ((index->version == 4
3075                                     && case_sensitivity == case_sensitive_off
3076                                     ? 5 : index->version),
3077                                    name);
3078
3079   slot = hash & (index->symbol_table_slots - 1);
3080   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
3081   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3082
3083   for (;;)
3084     {
3085       /* Convert a slot number to an offset into the table.  */
3086       offset_type i = 2 * slot;
3087       const char *str;
3088       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
3089         {
3090           do_cleanups (back_to);
3091           return 0;
3092         }
3093
3094       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
3095       if (!cmp (name, str))
3096         {
3097           *vec_out = (offset_type *) (index->constant_pool
3098                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
3099           do_cleanups (back_to);
3100           return 1;
3101         }
3102
3103       slot = (slot + step) & (index->symbol_table_slots - 1);
3104     }
3105 }
3106
3107 /* A helper function that reads the .gdb_index from SECTION and fills
3108    in MAP.  FILENAME is the name of the file containing the section;
3109    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
3110    ok to use deprecated sections.
3111
3112    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3113    out parameters that are filled in with information about the CU and
3114    TU lists in the section.
3115
3116    Returns 1 if all went well, 0 otherwise.  */
3117
3118 static int
3119 read_index_from_section (struct objfile *objfile,
3120                          const char *filename,
3121                          int deprecated_ok,
3122                          struct dwarf2_section_info *section,
3123                          struct mapped_index *map,
3124                          const gdb_byte **cu_list,
3125                          offset_type *cu_list_elements,
3126                          const gdb_byte **types_list,
3127                          offset_type *types_list_elements)
3128 {
3129   const gdb_byte *addr;
3130   offset_type version;
3131   offset_type *metadata;
3132   int i;
3133
3134   if (dwarf2_section_empty_p (section))
3135     return 0;
3136
3137   /* Older elfutils strip versions could keep the section in the main
3138      executable while splitting it for the separate debug info file.  */
3139   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3140     return 0;
3141
3142   dwarf2_read_section (objfile, section);
3143
3144   addr = section->buffer;
3145   /* Version check.  */
3146   version = MAYBE_SWAP (*(offset_type *) addr);
3147   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3148      causes the index to behave very poorly for certain requests.  Version 3
3149      contained incomplete addrmap.  So, it seems better to just ignore such
3150      indices.  */
3151   if (version < 4)
3152     {
3153       static int warning_printed = 0;
3154       if (!warning_printed)
3155         {
3156           warning (_("Skipping obsolete .gdb_index section in %s."),
3157                    filename);
3158           warning_printed = 1;
3159         }
3160       return 0;
3161     }
3162   /* Index version 4 uses a different hash function than index version
3163      5 and later.
3164
3165      Versions earlier than 6 did not emit psymbols for inlined
3166      functions.  Using these files will cause GDB not to be able to
3167      set breakpoints on inlined functions by name, so we ignore these
3168      indices unless the user has done
3169      "set use-deprecated-index-sections on".  */
3170   if (version < 6 && !deprecated_ok)
3171     {
3172       static int warning_printed = 0;
3173       if (!warning_printed)
3174         {
3175           warning (_("\
3176 Skipping deprecated .gdb_index section in %s.\n\
3177 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3178 to use the section anyway."),
3179                    filename);
3180           warning_printed = 1;
3181         }
3182       return 0;
3183     }
3184   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3185      of the TU (for symbols coming from TUs),
3186      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3187      Plus gold-generated indices can have duplicate entries for global symbols,
3188      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3189      These are just performance bugs, and we can't distinguish gdb-generated
3190      indices from gold-generated ones, so issue no warning here.  */
3191
3192   /* Indexes with higher version than the one supported by GDB may be no
3193      longer backward compatible.  */
3194   if (version > 8)
3195     return 0;
3196
3197   map->version = version;
3198   map->total_size = section->size;
3199
3200   metadata = (offset_type *) (addr + sizeof (offset_type));
3201
3202   i = 0;
3203   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3204   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3205                        / 8);
3206   ++i;
3207
3208   *types_list = addr + MAYBE_SWAP (metadata[i]);
3209   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3210                            - MAYBE_SWAP (metadata[i]))
3211                           / 8);
3212   ++i;
3213
3214   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3215   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3216                              - MAYBE_SWAP (metadata[i]));
3217   ++i;
3218
3219   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3220   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3221                               - MAYBE_SWAP (metadata[i]))
3222                              / (2 * sizeof (offset_type)));
3223   ++i;
3224
3225   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3226
3227   return 1;
3228 }
3229
3230
3231 /* Read the index file.  If everything went ok, initialize the "quick"
3232    elements of all the CUs and return 1.  Otherwise, return 0.  */
3233
3234 static int
3235 dwarf2_read_index (struct objfile *objfile)
3236 {
3237   struct mapped_index local_map, *map;
3238   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3239   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3240   struct dwz_file *dwz;
3241
3242   if (!read_index_from_section (objfile, objfile_name (objfile),
3243                                 use_deprecated_index_sections,
3244                                 &dwarf2_per_objfile->gdb_index, &local_map,
3245                                 &cu_list, &cu_list_elements,
3246                                 &types_list, &types_list_elements))
3247     return 0;
3248
3249   /* Don't use the index if it's empty.  */
3250   if (local_map.symbol_table_slots == 0)
3251     return 0;
3252
3253   /* If there is a .dwz file, read it so we can get its CU list as
3254      well.  */
3255   dwz = dwarf2_get_dwz_file ();
3256   if (dwz != NULL)
3257     {
3258       struct mapped_index dwz_map;
3259       const gdb_byte *dwz_types_ignore;
3260       offset_type dwz_types_elements_ignore;
3261
3262       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3263                                     1,
3264                                     &dwz->gdb_index, &dwz_map,
3265                                     &dwz_list, &dwz_list_elements,
3266                                     &dwz_types_ignore,
3267                                     &dwz_types_elements_ignore))
3268         {
3269           warning (_("could not read '.gdb_index' section from %s; skipping"),
3270                    bfd_get_filename (dwz->dwz_bfd));
3271           return 0;
3272         }
3273     }
3274
3275   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3276                          dwz_list_elements);
3277
3278   if (types_list_elements)
3279     {
3280       struct dwarf2_section_info *section;
3281
3282       /* We can only handle a single .debug_types when we have an
3283          index.  */
3284       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3285         return 0;
3286
3287       section = VEC_index (dwarf2_section_info_def,
3288                            dwarf2_per_objfile->types, 0);
3289
3290       create_signatured_type_table_from_index (objfile, section, types_list,
3291                                                types_list_elements);
3292     }
3293
3294   create_addrmap_from_index (objfile, &local_map);
3295
3296   map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
3297   *map = local_map;
3298
3299   dwarf2_per_objfile->index_table = map;
3300   dwarf2_per_objfile->using_index = 1;
3301   dwarf2_per_objfile->quick_file_names_table =
3302     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3303
3304   return 1;
3305 }
3306
3307 /* A helper for the "quick" functions which sets the global
3308    dwarf2_per_objfile according to OBJFILE.  */
3309
3310 static void
3311 dw2_setup (struct objfile *objfile)
3312 {
3313   dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
3314                         objfile_data (objfile, dwarf2_objfile_data_key));
3315   gdb_assert (dwarf2_per_objfile);
3316 }
3317
3318 /* die_reader_func for dw2_get_file_names.  */
3319
3320 static void
3321 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3322                            const gdb_byte *info_ptr,
3323                            struct die_info *comp_unit_die,
3324                            int has_children,
3325                            void *data)
3326 {
3327   struct dwarf2_cu *cu = reader->cu;
3328   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3329   struct objfile *objfile = dwarf2_per_objfile->objfile;
3330   struct dwarf2_per_cu_data *lh_cu;
3331   struct line_header *lh;
3332   struct attribute *attr;
3333   int i;
3334   const char *name, *comp_dir;
3335   void **slot;
3336   struct quick_file_names *qfn;
3337   unsigned int line_offset;
3338
3339   gdb_assert (! this_cu->is_debug_types);
3340
3341   /* Our callers never want to match partial units -- instead they
3342      will match the enclosing full CU.  */
3343   if (comp_unit_die->tag == DW_TAG_partial_unit)
3344     {
3345       this_cu->v.quick->no_file_data = 1;
3346       return;
3347     }
3348
3349   lh_cu = this_cu;
3350   lh = NULL;
3351   slot = NULL;
3352   line_offset = 0;
3353
3354   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3355   if (attr)
3356     {
3357       struct quick_file_names find_entry;
3358
3359       line_offset = DW_UNSND (attr);
3360
3361       /* We may have already read in this line header (TU line header sharing).
3362          If we have we're done.  */
3363       find_entry.hash.dwo_unit = cu->dwo_unit;
3364       find_entry.hash.line_offset.sect_off = line_offset;
3365       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3366                              &find_entry, INSERT);
3367       if (*slot != NULL)
3368         {
3369           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3370           return;
3371         }
3372
3373       lh = dwarf_decode_line_header (line_offset, cu);
3374     }
3375   if (lh == NULL)
3376     {
3377       lh_cu->v.quick->no_file_data = 1;
3378       return;
3379     }
3380
3381   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3382   qfn->hash.dwo_unit = cu->dwo_unit;
3383   qfn->hash.line_offset.sect_off = line_offset;
3384   gdb_assert (slot != NULL);
3385   *slot = qfn;
3386
3387   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3388
3389   qfn->num_file_names = lh->num_file_names;
3390   qfn->file_names =
3391     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->num_file_names);
3392   for (i = 0; i < lh->num_file_names; ++i)
3393     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3394   qfn->real_names = NULL;
3395
3396   free_line_header (lh);
3397
3398   lh_cu->v.quick->file_names = qfn;
3399 }
3400
3401 /* A helper for the "quick" functions which attempts to read the line
3402    table for THIS_CU.  */
3403
3404 static struct quick_file_names *
3405 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3406 {
3407   /* This should never be called for TUs.  */
3408   gdb_assert (! this_cu->is_debug_types);
3409   /* Nor type unit groups.  */
3410   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3411
3412   if (this_cu->v.quick->file_names != NULL)
3413     return this_cu->v.quick->file_names;
3414   /* If we know there is no line data, no point in looking again.  */
3415   if (this_cu->v.quick->no_file_data)
3416     return NULL;
3417
3418   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3419
3420   if (this_cu->v.quick->no_file_data)
3421     return NULL;
3422   return this_cu->v.quick->file_names;
3423 }
3424
3425 /* A helper for the "quick" functions which computes and caches the
3426    real path for a given file name from the line table.  */
3427
3428 static const char *
3429 dw2_get_real_path (struct objfile *objfile,
3430                    struct quick_file_names *qfn, int index)
3431 {
3432   if (qfn->real_names == NULL)
3433     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3434                                       qfn->num_file_names, const char *);
3435
3436   if (qfn->real_names[index] == NULL)
3437     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3438
3439   return qfn->real_names[index];
3440 }
3441
3442 static struct symtab *
3443 dw2_find_last_source_symtab (struct objfile *objfile)
3444 {
3445   struct compunit_symtab *cust;
3446   int index;
3447
3448   dw2_setup (objfile);
3449   index = dwarf2_per_objfile->n_comp_units - 1;
3450   cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3451   if (cust == NULL)
3452     return NULL;
3453   return compunit_primary_filetab (cust);
3454 }
3455
3456 /* Traversal function for dw2_forget_cached_source_info.  */
3457
3458 static int
3459 dw2_free_cached_file_names (void **slot, void *info)
3460 {
3461   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3462
3463   if (file_data->real_names)
3464     {
3465       int i;
3466
3467       for (i = 0; i < file_data->num_file_names; ++i)
3468         {
3469           xfree ((void*) file_data->real_names[i]);
3470           file_data->real_names[i] = NULL;
3471         }
3472     }
3473
3474   return 1;
3475 }
3476
3477 static void
3478 dw2_forget_cached_source_info (struct objfile *objfile)
3479 {
3480   dw2_setup (objfile);
3481
3482   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3483                           dw2_free_cached_file_names, NULL);
3484 }
3485
3486 /* Helper function for dw2_map_symtabs_matching_filename that expands
3487    the symtabs and calls the iterator.  */
3488
3489 static int
3490 dw2_map_expand_apply (struct objfile *objfile,
3491                       struct dwarf2_per_cu_data *per_cu,
3492                       const char *name, const char *real_path,
3493                       int (*callback) (struct symtab *, void *),
3494                       void *data)
3495 {
3496   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3497
3498   /* Don't visit already-expanded CUs.  */
3499   if (per_cu->v.quick->compunit_symtab)
3500     return 0;
3501
3502   /* This may expand more than one symtab, and we want to iterate over
3503      all of them.  */
3504   dw2_instantiate_symtab (per_cu);
3505
3506   return iterate_over_some_symtabs (name, real_path, callback, data,
3507                                     objfile->compunit_symtabs, last_made);
3508 }
3509
3510 /* Implementation of the map_symtabs_matching_filename method.  */
3511
3512 static int
3513 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3514                                    const char *real_path,
3515                                    int (*callback) (struct symtab *, void *),
3516                                    void *data)
3517 {
3518   int i;
3519   const char *name_basename = lbasename (name);
3520
3521   dw2_setup (objfile);
3522
3523   /* The rule is CUs specify all the files, including those used by
3524      any TU, so there's no need to scan TUs here.  */
3525
3526   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3527     {
3528       int j;
3529       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3530       struct quick_file_names *file_data;
3531
3532       /* We only need to look at symtabs not already expanded.  */
3533       if (per_cu->v.quick->compunit_symtab)
3534         continue;
3535
3536       file_data = dw2_get_file_names (per_cu);
3537       if (file_data == NULL)
3538         continue;
3539
3540       for (j = 0; j < file_data->num_file_names; ++j)
3541         {
3542           const char *this_name = file_data->file_names[j];
3543           const char *this_real_name;
3544
3545           if (compare_filenames_for_search (this_name, name))
3546             {
3547               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3548                                         callback, data))
3549                 return 1;
3550               continue;
3551             }
3552
3553           /* Before we invoke realpath, which can get expensive when many
3554              files are involved, do a quick comparison of the basenames.  */
3555           if (! basenames_may_differ
3556               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3557             continue;
3558
3559           this_real_name = dw2_get_real_path (objfile, file_data, j);
3560           if (compare_filenames_for_search (this_real_name, name))
3561             {
3562               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3563                                         callback, data))
3564                 return 1;
3565               continue;
3566             }
3567
3568           if (real_path != NULL)
3569             {
3570               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3571               gdb_assert (IS_ABSOLUTE_PATH (name));
3572               if (this_real_name != NULL
3573                   && FILENAME_CMP (real_path, this_real_name) == 0)
3574                 {
3575                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3576                                             callback, data))
3577                     return 1;
3578                   continue;
3579                 }
3580             }
3581         }
3582     }
3583
3584   return 0;
3585 }
3586
3587 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3588
3589 struct dw2_symtab_iterator
3590 {
3591   /* The internalized form of .gdb_index.  */
3592   struct mapped_index *index;
3593   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3594   int want_specific_block;
3595   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3596      Unused if !WANT_SPECIFIC_BLOCK.  */
3597   int block_index;
3598   /* The kind of symbol we're looking for.  */
3599   domain_enum domain;
3600   /* The list of CUs from the index entry of the symbol,
3601      or NULL if not found.  */
3602   offset_type *vec;
3603   /* The next element in VEC to look at.  */
3604   int next;
3605   /* The number of elements in VEC, or zero if there is no match.  */
3606   int length;
3607   /* Have we seen a global version of the symbol?
3608      If so we can ignore all further global instances.
3609      This is to work around gold/15646, inefficient gold-generated
3610      indices.  */
3611   int global_seen;
3612 };
3613
3614 /* Initialize the index symtab iterator ITER.
3615    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3616    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3617
3618 static void
3619 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3620                       struct mapped_index *index,
3621                       int want_specific_block,
3622                       int block_index,
3623                       domain_enum domain,
3624                       const char *name)
3625 {
3626   iter->index = index;
3627   iter->want_specific_block = want_specific_block;
3628   iter->block_index = block_index;
3629   iter->domain = domain;
3630   iter->next = 0;
3631   iter->global_seen = 0;
3632
3633   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3634     iter->length = MAYBE_SWAP (*iter->vec);
3635   else
3636     {
3637       iter->vec = NULL;
3638       iter->length = 0;
3639     }
3640 }
3641
3642 /* Return the next matching CU or NULL if there are no more.  */
3643
3644 static struct dwarf2_per_cu_data *
3645 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3646 {
3647   for ( ; iter->next < iter->length; ++iter->next)
3648     {
3649       offset_type cu_index_and_attrs =
3650         MAYBE_SWAP (iter->vec[iter->next + 1]);
3651       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3652       struct dwarf2_per_cu_data *per_cu;
3653       int want_static = iter->block_index != GLOBAL_BLOCK;
3654       /* This value is only valid for index versions >= 7.  */
3655       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3656       gdb_index_symbol_kind symbol_kind =
3657         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3658       /* Only check the symbol attributes if they're present.
3659          Indices prior to version 7 don't record them,
3660          and indices >= 7 may elide them for certain symbols
3661          (gold does this).  */
3662       int attrs_valid =
3663         (iter->index->version >= 7
3664          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3665
3666       /* Don't crash on bad data.  */
3667       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3668                        + dwarf2_per_objfile->n_type_units))
3669         {
3670           complaint (&symfile_complaints,
3671                      _(".gdb_index entry has bad CU index"
3672                        " [in module %s]"),
3673                      objfile_name (dwarf2_per_objfile->objfile));
3674           continue;
3675         }
3676
3677       per_cu = dw2_get_cutu (cu_index);
3678
3679       /* Skip if already read in.  */
3680       if (per_cu->v.quick->compunit_symtab)
3681         continue;
3682
3683       /* Check static vs global.  */
3684       if (attrs_valid)
3685         {
3686           if (iter->want_specific_block
3687               && want_static != is_static)
3688             continue;
3689           /* Work around gold/15646.  */
3690           if (!is_static && iter->global_seen)
3691             continue;
3692           if (!is_static)
3693             iter->global_seen = 1;
3694         }
3695
3696       /* Only check the symbol's kind if it has one.  */
3697       if (attrs_valid)
3698         {
3699           switch (iter->domain)
3700             {
3701             case VAR_DOMAIN:
3702               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3703                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3704                   /* Some types are also in VAR_DOMAIN.  */
3705                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3706                 continue;
3707               break;
3708             case STRUCT_DOMAIN:
3709               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3710                 continue;
3711               break;
3712             case LABEL_DOMAIN:
3713               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3714                 continue;
3715               break;
3716             default:
3717               break;
3718             }
3719         }
3720
3721       ++iter->next;
3722       return per_cu;
3723     }
3724
3725   return NULL;
3726 }
3727
3728 static struct compunit_symtab *
3729 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3730                    const char *name, domain_enum domain)
3731 {
3732   struct compunit_symtab *stab_best = NULL;
3733   struct mapped_index *index;
3734
3735   dw2_setup (objfile);
3736
3737   index = dwarf2_per_objfile->index_table;
3738
3739   /* index is NULL if OBJF_READNOW.  */
3740   if (index)
3741     {
3742       struct dw2_symtab_iterator iter;
3743       struct dwarf2_per_cu_data *per_cu;
3744
3745       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3746
3747       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3748         {
3749           struct symbol *sym, *with_opaque = NULL;
3750           struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3751           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
3752           struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3753
3754           sym = block_find_symbol (block, name, domain,
3755                                    block_find_non_opaque_type_preferred,
3756                                    &with_opaque);
3757
3758           /* Some caution must be observed with overloaded functions
3759              and methods, since the index will not contain any overload
3760              information (but NAME might contain it).  */
3761
3762           if (sym != NULL
3763               && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3764             return stab;
3765           if (with_opaque != NULL
3766               && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3767             stab_best = stab;
3768
3769           /* Keep looking through other CUs.  */
3770         }
3771     }
3772
3773   return stab_best;
3774 }
3775
3776 static void
3777 dw2_print_stats (struct objfile *objfile)
3778 {
3779   int i, total, count;
3780
3781   dw2_setup (objfile);
3782   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3783   count = 0;
3784   for (i = 0; i < total; ++i)
3785     {
3786       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3787
3788       if (!per_cu->v.quick->compunit_symtab)
3789         ++count;
3790     }
3791   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3792   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3793 }
3794
3795 /* This dumps minimal information about the index.
3796    It is called via "mt print objfiles".
3797    One use is to verify .gdb_index has been loaded by the
3798    gdb.dwarf2/gdb-index.exp testcase.  */
3799
3800 static void
3801 dw2_dump (struct objfile *objfile)
3802 {
3803   dw2_setup (objfile);
3804   gdb_assert (dwarf2_per_objfile->using_index);
3805   printf_filtered (".gdb_index:");
3806   if (dwarf2_per_objfile->index_table != NULL)
3807     {
3808       printf_filtered (" version %d\n",
3809                        dwarf2_per_objfile->index_table->version);
3810     }
3811   else
3812     printf_filtered (" faked for \"readnow\"\n");
3813   printf_filtered ("\n");
3814 }
3815
3816 static void
3817 dw2_relocate (struct objfile *objfile,
3818               const struct section_offsets *new_offsets,
3819               const struct section_offsets *delta)
3820 {
3821   /* There's nothing to relocate here.  */
3822 }
3823
3824 static void
3825 dw2_expand_symtabs_for_function (struct objfile *objfile,
3826                                  const char *func_name)
3827 {
3828   struct mapped_index *index;
3829
3830   dw2_setup (objfile);
3831
3832   index = dwarf2_per_objfile->index_table;
3833
3834   /* index is NULL if OBJF_READNOW.  */
3835   if (index)
3836     {
3837       struct dw2_symtab_iterator iter;
3838       struct dwarf2_per_cu_data *per_cu;
3839
3840       /* Note: It doesn't matter what we pass for block_index here.  */
3841       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3842                             func_name);
3843
3844       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3845         dw2_instantiate_symtab (per_cu);
3846     }
3847 }
3848
3849 static void
3850 dw2_expand_all_symtabs (struct objfile *objfile)
3851 {
3852   int i;
3853
3854   dw2_setup (objfile);
3855
3856   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3857                    + dwarf2_per_objfile->n_type_units); ++i)
3858     {
3859       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3860
3861       dw2_instantiate_symtab (per_cu);
3862     }
3863 }
3864
3865 static void
3866 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3867                                   const char *fullname)
3868 {
3869   int i;
3870
3871   dw2_setup (objfile);
3872
3873   /* We don't need to consider type units here.
3874      This is only called for examining code, e.g. expand_line_sal.
3875      There can be an order of magnitude (or more) more type units
3876      than comp units, and we avoid them if we can.  */
3877
3878   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3879     {
3880       int j;
3881       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3882       struct quick_file_names *file_data;
3883
3884       /* We only need to look at symtabs not already expanded.  */
3885       if (per_cu->v.quick->compunit_symtab)
3886         continue;
3887
3888       file_data = dw2_get_file_names (per_cu);
3889       if (file_data == NULL)
3890         continue;
3891
3892       for (j = 0; j < file_data->num_file_names; ++j)
3893         {
3894           const char *this_fullname = file_data->file_names[j];
3895
3896           if (filename_cmp (this_fullname, fullname) == 0)
3897             {
3898               dw2_instantiate_symtab (per_cu);
3899               break;
3900             }
3901         }
3902     }
3903 }
3904
3905 static void
3906 dw2_map_matching_symbols (struct objfile *objfile,
3907                           const char * name, domain_enum domain,
3908                           int global,
3909                           int (*callback) (struct block *,
3910                                            struct symbol *, void *),
3911                           void *data, symbol_compare_ftype *match,
3912                           symbol_compare_ftype *ordered_compare)
3913 {
3914   /* Currently unimplemented; used for Ada.  The function can be called if the
3915      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3916      does not look for non-Ada symbols this function should just return.  */
3917 }
3918
3919 static void
3920 dw2_expand_symtabs_matching
3921   (struct objfile *objfile,
3922    expand_symtabs_file_matcher_ftype *file_matcher,
3923    expand_symtabs_symbol_matcher_ftype *symbol_matcher,
3924    expand_symtabs_exp_notify_ftype *expansion_notify,
3925    enum search_domain kind,
3926    void *data)
3927 {
3928   int i;
3929   offset_type iter;
3930   struct mapped_index *index;
3931
3932   dw2_setup (objfile);
3933
3934   /* index_table is NULL if OBJF_READNOW.  */
3935   if (!dwarf2_per_objfile->index_table)
3936     return;
3937   index = dwarf2_per_objfile->index_table;
3938
3939   if (file_matcher != NULL)
3940     {
3941       htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
3942                                                 htab_eq_pointer,
3943                                                 NULL, xcalloc, xfree));
3944       htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
3945                                                     htab_eq_pointer,
3946                                                     NULL, xcalloc, xfree));
3947
3948       /* The rule is CUs specify all the files, including those used by
3949          any TU, so there's no need to scan TUs here.  */
3950
3951       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3952         {
3953           int j;
3954           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3955           struct quick_file_names *file_data;
3956           void **slot;
3957
3958           QUIT;
3959
3960           per_cu->v.quick->mark = 0;
3961
3962           /* We only need to look at symtabs not already expanded.  */
3963           if (per_cu->v.quick->compunit_symtab)
3964             continue;
3965
3966           file_data = dw2_get_file_names (per_cu);
3967           if (file_data == NULL)
3968             continue;
3969
3970           if (htab_find (visited_not_found.get (), file_data) != NULL)
3971             continue;
3972           else if (htab_find (visited_found.get (), file_data) != NULL)
3973             {
3974               per_cu->v.quick->mark = 1;
3975               continue;
3976             }
3977
3978           for (j = 0; j < file_data->num_file_names; ++j)
3979             {
3980               const char *this_real_name;
3981
3982               if (file_matcher (file_data->file_names[j], data, 0))
3983                 {
3984                   per_cu->v.quick->mark = 1;
3985                   break;
3986                 }
3987
3988               /* Before we invoke realpath, which can get expensive when many
3989                  files are involved, do a quick comparison of the basenames.  */
3990               if (!basenames_may_differ
3991                   && !file_matcher (lbasename (file_data->file_names[j]),
3992                                     data, 1))
3993                 continue;
3994
3995               this_real_name = dw2_get_real_path (objfile, file_data, j);
3996               if (file_matcher (this_real_name, data, 0))
3997                 {
3998                   per_cu->v.quick->mark = 1;
3999                   break;
4000                 }
4001             }
4002
4003           slot = htab_find_slot (per_cu->v.quick->mark
4004                                  ? visited_found.get ()
4005                                  : visited_not_found.get (),
4006                                  file_data, INSERT);
4007           *slot = file_data;
4008         }
4009     }
4010
4011   for (iter = 0; iter < index->symbol_table_slots; ++iter)
4012     {
4013       offset_type idx = 2 * iter;
4014       const char *name;
4015       offset_type *vec, vec_len, vec_idx;
4016       int global_seen = 0;
4017
4018       QUIT;
4019
4020       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
4021         continue;
4022
4023       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
4024
4025       if (! (*symbol_matcher) (name, data))
4026         continue;
4027
4028       /* The name was matched, now expand corresponding CUs that were
4029          marked.  */
4030       vec = (offset_type *) (index->constant_pool
4031                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
4032       vec_len = MAYBE_SWAP (vec[0]);
4033       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
4034         {
4035           struct dwarf2_per_cu_data *per_cu;
4036           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
4037           /* This value is only valid for index versions >= 7.  */
4038           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4039           gdb_index_symbol_kind symbol_kind =
4040             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4041           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4042           /* Only check the symbol attributes if they're present.
4043              Indices prior to version 7 don't record them,
4044              and indices >= 7 may elide them for certain symbols
4045              (gold does this).  */
4046           int attrs_valid =
4047             (index->version >= 7
4048              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4049
4050           /* Work around gold/15646.  */
4051           if (attrs_valid)
4052             {
4053               if (!is_static && global_seen)
4054                 continue;
4055               if (!is_static)
4056                 global_seen = 1;
4057             }
4058
4059           /* Only check the symbol's kind if it has one.  */
4060           if (attrs_valid)
4061             {
4062               switch (kind)
4063                 {
4064                 case VARIABLES_DOMAIN:
4065                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4066                     continue;
4067                   break;
4068                 case FUNCTIONS_DOMAIN:
4069                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4070                     continue;
4071                   break;
4072                 case TYPES_DOMAIN:
4073                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4074                     continue;
4075                   break;
4076                 default:
4077                   break;
4078                 }
4079             }
4080
4081           /* Don't crash on bad data.  */
4082           if (cu_index >= (dwarf2_per_objfile->n_comp_units
4083                            + dwarf2_per_objfile->n_type_units))
4084             {
4085               complaint (&symfile_complaints,
4086                          _(".gdb_index entry has bad CU index"
4087                            " [in module %s]"), objfile_name (objfile));
4088               continue;
4089             }
4090
4091           per_cu = dw2_get_cutu (cu_index);
4092           if (file_matcher == NULL || per_cu->v.quick->mark)
4093             {
4094               int symtab_was_null =
4095                 (per_cu->v.quick->compunit_symtab == NULL);
4096
4097               dw2_instantiate_symtab (per_cu);
4098
4099               if (expansion_notify != NULL
4100                   && symtab_was_null
4101                   && per_cu->v.quick->compunit_symtab != NULL)
4102                 {
4103                   expansion_notify (per_cu->v.quick->compunit_symtab,
4104                                     data);
4105                 }
4106             }
4107         }
4108     }
4109 }
4110
4111 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
4112    symtab.  */
4113
4114 static struct compunit_symtab *
4115 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4116                                           CORE_ADDR pc)
4117 {
4118   int i;
4119
4120   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4121       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4122     return cust;
4123
4124   if (cust->includes == NULL)
4125     return NULL;
4126
4127   for (i = 0; cust->includes[i]; ++i)
4128     {
4129       struct compunit_symtab *s = cust->includes[i];
4130
4131       s = recursively_find_pc_sect_compunit_symtab (s, pc);
4132       if (s != NULL)
4133         return s;
4134     }
4135
4136   return NULL;
4137 }
4138
4139 static struct compunit_symtab *
4140 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4141                                   struct bound_minimal_symbol msymbol,
4142                                   CORE_ADDR pc,
4143                                   struct obj_section *section,
4144                                   int warn_if_readin)
4145 {
4146   struct dwarf2_per_cu_data *data;
4147   struct compunit_symtab *result;
4148
4149   dw2_setup (objfile);
4150
4151   if (!objfile->psymtabs_addrmap)
4152     return NULL;
4153
4154   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
4155                                                      pc);
4156   if (!data)
4157     return NULL;
4158
4159   if (warn_if_readin && data->v.quick->compunit_symtab)
4160     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4161              paddress (get_objfile_arch (objfile), pc));
4162
4163   result
4164     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4165                                                 pc);
4166   gdb_assert (result != NULL);
4167   return result;
4168 }
4169
4170 static void
4171 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4172                           void *data, int need_fullname)
4173 {
4174   int i;
4175   htab_up visited (htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4176                                       NULL, xcalloc, xfree));
4177
4178   dw2_setup (objfile);
4179
4180   /* The rule is CUs specify all the files, including those used by
4181      any TU, so there's no need to scan TUs here.
4182      We can ignore file names coming from already-expanded CUs.  */
4183
4184   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4185     {
4186       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4187
4188       if (per_cu->v.quick->compunit_symtab)
4189         {
4190           void **slot = htab_find_slot (visited.get (),
4191                                         per_cu->v.quick->file_names,
4192                                         INSERT);
4193
4194           *slot = per_cu->v.quick->file_names;
4195         }
4196     }
4197
4198   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4199     {
4200       int j;
4201       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4202       struct quick_file_names *file_data;
4203       void **slot;
4204
4205       /* We only need to look at symtabs not already expanded.  */
4206       if (per_cu->v.quick->compunit_symtab)
4207         continue;
4208
4209       file_data = dw2_get_file_names (per_cu);
4210       if (file_data == NULL)
4211         continue;
4212
4213       slot = htab_find_slot (visited.get (), file_data, INSERT);
4214       if (*slot)
4215         {
4216           /* Already visited.  */
4217           continue;
4218         }
4219       *slot = file_data;
4220
4221       for (j = 0; j < file_data->num_file_names; ++j)
4222         {
4223           const char *this_real_name;
4224
4225           if (need_fullname)
4226             this_real_name = dw2_get_real_path (objfile, file_data, j);
4227           else
4228             this_real_name = NULL;
4229           (*fun) (file_data->file_names[j], this_real_name, data);
4230         }
4231     }
4232 }
4233
4234 static int
4235 dw2_has_symbols (struct objfile *objfile)
4236 {
4237   return 1;
4238 }
4239
4240 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4241 {
4242   dw2_has_symbols,
4243   dw2_find_last_source_symtab,
4244   dw2_forget_cached_source_info,
4245   dw2_map_symtabs_matching_filename,
4246   dw2_lookup_symbol,
4247   dw2_print_stats,
4248   dw2_dump,
4249   dw2_relocate,
4250   dw2_expand_symtabs_for_function,
4251   dw2_expand_all_symtabs,
4252   dw2_expand_symtabs_with_fullname,
4253   dw2_map_matching_symbols,
4254   dw2_expand_symtabs_matching,
4255   dw2_find_pc_sect_compunit_symtab,
4256   dw2_map_symbol_filenames
4257 };
4258
4259 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4260    file will use psymtabs, or 1 if using the GNU index.  */
4261
4262 int
4263 dwarf2_initialize_objfile (struct objfile *objfile)
4264 {
4265   /* If we're about to read full symbols, don't bother with the
4266      indices.  In this case we also don't care if some other debug
4267      format is making psymtabs, because they are all about to be
4268      expanded anyway.  */
4269   if ((objfile->flags & OBJF_READNOW))
4270     {
4271       int i;
4272
4273       dwarf2_per_objfile->using_index = 1;
4274       create_all_comp_units (objfile);
4275       create_all_type_units (objfile);
4276       dwarf2_per_objfile->quick_file_names_table =
4277         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4278
4279       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4280                        + dwarf2_per_objfile->n_type_units); ++i)
4281         {
4282           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4283
4284           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4285                                             struct dwarf2_per_cu_quick_data);
4286         }
4287
4288       /* Return 1 so that gdb sees the "quick" functions.  However,
4289          these functions will be no-ops because we will have expanded
4290          all symtabs.  */
4291       return 1;
4292     }
4293
4294   if (dwarf2_read_index (objfile))
4295     return 1;
4296
4297   return 0;
4298 }
4299
4300 \f
4301
4302 /* Build a partial symbol table.  */
4303
4304 void
4305 dwarf2_build_psymtabs (struct objfile *objfile)
4306 {
4307
4308   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4309     {
4310       init_psymbol_list (objfile, 1024);
4311     }
4312
4313   TRY
4314     {
4315       /* This isn't really ideal: all the data we allocate on the
4316          objfile's obstack is still uselessly kept around.  However,
4317          freeing it seems unsafe.  */
4318       psymtab_discarder psymtabs (objfile);
4319       dwarf2_build_psymtabs_hard (objfile);
4320       psymtabs.keep ();
4321     }
4322   CATCH (except, RETURN_MASK_ERROR)
4323     {
4324       exception_print (gdb_stderr, except);
4325     }
4326   END_CATCH
4327 }
4328
4329 /* Return the total length of the CU described by HEADER.  */
4330
4331 static unsigned int
4332 get_cu_length (const struct comp_unit_head *header)
4333 {
4334   return header->initial_length_size + header->length;
4335 }
4336
4337 /* Return TRUE if OFFSET is within CU_HEADER.  */
4338
4339 static inline int
4340 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4341 {
4342   sect_offset bottom = { cu_header->offset.sect_off };
4343   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4344
4345   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4346 }
4347
4348 /* Find the base address of the compilation unit for range lists and
4349    location lists.  It will normally be specified by DW_AT_low_pc.
4350    In DWARF-3 draft 4, the base address could be overridden by
4351    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4352    compilation units with discontinuous ranges.  */
4353
4354 static void
4355 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4356 {
4357   struct attribute *attr;
4358
4359   cu->base_known = 0;
4360   cu->base_address = 0;
4361
4362   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4363   if (attr)
4364     {
4365       cu->base_address = attr_value_as_address (attr);
4366       cu->base_known = 1;
4367     }
4368   else
4369     {
4370       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4371       if (attr)
4372         {
4373           cu->base_address = attr_value_as_address (attr);
4374           cu->base_known = 1;
4375         }
4376     }
4377 }
4378
4379 /* Read in the comp unit header information from the debug_info at info_ptr.
4380    Use rcuh_kind::COMPILE as the default type if not known by the caller.
4381    NOTE: This leaves members offset, first_die_offset to be filled in
4382    by the caller.  */
4383
4384 static const gdb_byte *
4385 read_comp_unit_head (struct comp_unit_head *cu_header,
4386                      const gdb_byte *info_ptr,
4387                      struct dwarf2_section_info *section,
4388                      rcuh_kind section_kind)
4389 {
4390   int signed_addr;
4391   unsigned int bytes_read;
4392   const char *filename = get_section_file_name (section);
4393   bfd *abfd = get_section_bfd_owner (section);
4394
4395   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4396   cu_header->initial_length_size = bytes_read;
4397   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4398   info_ptr += bytes_read;
4399   cu_header->version = read_2_bytes (abfd, info_ptr);
4400   info_ptr += 2;
4401   if (cu_header->version < 5)
4402     switch (section_kind)
4403       {
4404       case rcuh_kind::COMPILE:
4405         cu_header->unit_type = DW_UT_compile;
4406         break;
4407       case rcuh_kind::TYPE:
4408         cu_header->unit_type = DW_UT_type;
4409         break;
4410       default:
4411         internal_error (__FILE__, __LINE__,
4412                         _("read_comp_unit_head: invalid section_kind"));
4413       }
4414   else
4415     {
4416       cu_header->unit_type = static_cast<enum dwarf_unit_type>
4417                                                  (read_1_byte (abfd, info_ptr));
4418       info_ptr += 1;
4419       switch (cu_header->unit_type)
4420         {
4421         case DW_UT_compile:
4422           if (section_kind != rcuh_kind::COMPILE)
4423             error (_("Dwarf Error: wrong unit_type in compilation unit header "
4424                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
4425                    filename);
4426           break;
4427         case DW_UT_type:
4428           section_kind = rcuh_kind::TYPE;
4429           break;
4430         default:
4431           error (_("Dwarf Error: wrong unit_type in compilation unit header "
4432                  "(is %d, should be %d or %d) [in module %s]"),
4433                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
4434         }
4435
4436       cu_header->addr_size = read_1_byte (abfd, info_ptr);
4437       info_ptr += 1;
4438     }
4439   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4440                                              &bytes_read);
4441   info_ptr += bytes_read;
4442   if (cu_header->version < 5)
4443     {
4444       cu_header->addr_size = read_1_byte (abfd, info_ptr);
4445       info_ptr += 1;
4446     }
4447   signed_addr = bfd_get_sign_extend_vma (abfd);
4448   if (signed_addr < 0)
4449     internal_error (__FILE__, __LINE__,
4450                     _("read_comp_unit_head: dwarf from non elf file"));
4451   cu_header->signed_addr_p = signed_addr;
4452
4453   if (section_kind == rcuh_kind::TYPE)
4454     {
4455       LONGEST type_offset;
4456
4457       cu_header->signature = read_8_bytes (abfd, info_ptr);
4458       info_ptr += 8;
4459
4460       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
4461       info_ptr += bytes_read;
4462       cu_header->type_offset_in_tu.cu_off = type_offset;
4463       if (cu_header->type_offset_in_tu.cu_off != type_offset)
4464         error (_("Dwarf Error: Too big type_offset in compilation unit "
4465                "header (is %s) [in module %s]"), plongest (type_offset),
4466                filename);
4467     }
4468
4469   return info_ptr;
4470 }
4471
4472 /* Helper function that returns the proper abbrev section for
4473    THIS_CU.  */
4474
4475 static struct dwarf2_section_info *
4476 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4477 {
4478   struct dwarf2_section_info *abbrev;
4479
4480   if (this_cu->is_dwz)
4481     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4482   else
4483     abbrev = &dwarf2_per_objfile->abbrev;
4484
4485   return abbrev;
4486 }
4487
4488 /* Subroutine of read_and_check_comp_unit_head and
4489    read_and_check_type_unit_head to simplify them.
4490    Perform various error checking on the header.  */
4491
4492 static void
4493 error_check_comp_unit_head (struct comp_unit_head *header,
4494                             struct dwarf2_section_info *section,
4495                             struct dwarf2_section_info *abbrev_section)
4496 {
4497   const char *filename = get_section_file_name (section);
4498
4499   if (header->version < 2 || header->version > 5)
4500     error (_("Dwarf Error: wrong version in compilation unit header "
4501            "(is %d, should be 2, 3, 4 or 5) [in module %s]"), header->version,
4502            filename);
4503
4504   if (header->abbrev_offset.sect_off
4505       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4506     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4507            "(offset 0x%lx + 6) [in module %s]"),
4508            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4509            filename);
4510
4511   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4512      avoid potential 32-bit overflow.  */
4513   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4514       > section->size)
4515     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4516            "(offset 0x%lx + 0) [in module %s]"),
4517            (long) header->length, (long) header->offset.sect_off,
4518            filename);
4519 }
4520
4521 /* Read in a CU/TU header and perform some basic error checking.
4522    The contents of the header are stored in HEADER.
4523    The result is a pointer to the start of the first DIE.  */
4524
4525 static const gdb_byte *
4526 read_and_check_comp_unit_head (struct comp_unit_head *header,
4527                                struct dwarf2_section_info *section,
4528                                struct dwarf2_section_info *abbrev_section,
4529                                const gdb_byte *info_ptr,
4530                                rcuh_kind section_kind)
4531 {
4532   const gdb_byte *beg_of_comp_unit = info_ptr;
4533   bfd *abfd = get_section_bfd_owner (section);
4534
4535   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4536
4537   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
4538
4539   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4540
4541   error_check_comp_unit_head (header, section, abbrev_section);
4542
4543   return info_ptr;
4544 }
4545
4546 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4547
4548 static sect_offset
4549 read_abbrev_offset (struct dwarf2_section_info *section,
4550                     sect_offset offset)
4551 {
4552   bfd *abfd = get_section_bfd_owner (section);
4553   const gdb_byte *info_ptr;
4554   unsigned int initial_length_size, offset_size;
4555   sect_offset abbrev_offset;
4556   uint16_t version;
4557
4558   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4559   info_ptr = section->buffer + offset.sect_off;
4560   read_initial_length (abfd, info_ptr, &initial_length_size);
4561   offset_size = initial_length_size == 4 ? 4 : 8;
4562   info_ptr += initial_length_size;
4563
4564   version = read_2_bytes (abfd, info_ptr);
4565   info_ptr += 2;
4566   if (version >= 5)
4567     {
4568       /* Skip unit type and address size.  */
4569       info_ptr += 2;
4570     }
4571
4572   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4573   return abbrev_offset;
4574 }
4575
4576 /* Allocate a new partial symtab for file named NAME and mark this new
4577    partial symtab as being an include of PST.  */
4578
4579 static void
4580 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4581                                struct objfile *objfile)
4582 {
4583   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4584
4585   if (!IS_ABSOLUTE_PATH (subpst->filename))
4586     {
4587       /* It shares objfile->objfile_obstack.  */
4588       subpst->dirname = pst->dirname;
4589     }
4590
4591   subpst->textlow = 0;
4592   subpst->texthigh = 0;
4593
4594   subpst->dependencies
4595     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
4596   subpst->dependencies[0] = pst;
4597   subpst->number_of_dependencies = 1;
4598
4599   subpst->globals_offset = 0;
4600   subpst->n_global_syms = 0;
4601   subpst->statics_offset = 0;
4602   subpst->n_static_syms = 0;
4603   subpst->compunit_symtab = NULL;
4604   subpst->read_symtab = pst->read_symtab;
4605   subpst->readin = 0;
4606
4607   /* No private part is necessary for include psymtabs.  This property
4608      can be used to differentiate between such include psymtabs and
4609      the regular ones.  */
4610   subpst->read_symtab_private = NULL;
4611 }
4612
4613 /* Read the Line Number Program data and extract the list of files
4614    included by the source file represented by PST.  Build an include
4615    partial symtab for each of these included files.  */
4616
4617 static void
4618 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4619                                struct die_info *die,
4620                                struct partial_symtab *pst)
4621 {
4622   struct line_header *lh = NULL;
4623   struct attribute *attr;
4624
4625   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4626   if (attr)
4627     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4628   if (lh == NULL)
4629     return;  /* No linetable, so no includes.  */
4630
4631   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4632   dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
4633
4634   free_line_header (lh);
4635 }
4636
4637 static hashval_t
4638 hash_signatured_type (const void *item)
4639 {
4640   const struct signatured_type *sig_type
4641     = (const struct signatured_type *) item;
4642
4643   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4644   return sig_type->signature;
4645 }
4646
4647 static int
4648 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4649 {
4650   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
4651   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
4652
4653   return lhs->signature == rhs->signature;
4654 }
4655
4656 /* Allocate a hash table for signatured types.  */
4657
4658 static htab_t
4659 allocate_signatured_type_table (struct objfile *objfile)
4660 {
4661   return htab_create_alloc_ex (41,
4662                                hash_signatured_type,
4663                                eq_signatured_type,
4664                                NULL,
4665                                &objfile->objfile_obstack,
4666                                hashtab_obstack_allocate,
4667                                dummy_obstack_deallocate);
4668 }
4669
4670 /* A helper function to add a signatured type CU to a table.  */
4671
4672 static int
4673 add_signatured_type_cu_to_table (void **slot, void *datum)
4674 {
4675   struct signatured_type *sigt = (struct signatured_type *) *slot;
4676   struct signatured_type ***datap = (struct signatured_type ***) datum;
4677
4678   **datap = sigt;
4679   ++*datap;
4680
4681   return 1;
4682 }
4683
4684 /* A helper for create_debug_types_hash_table.  Read types from SECTION
4685    and fill them into TYPES_HTAB.  It will process only type units,
4686    therefore DW_UT_type.  */
4687
4688 static void
4689 create_debug_type_hash_table (struct dwo_file *dwo_file,
4690                               dwarf2_section_info *section, htab_t &types_htab,
4691                               rcuh_kind section_kind)
4692 {
4693   struct objfile *objfile = dwarf2_per_objfile->objfile;
4694   struct dwarf2_section_info *abbrev_section;
4695   bfd *abfd;
4696   const gdb_byte *info_ptr, *end_ptr;
4697
4698   abbrev_section = (dwo_file != NULL
4699                     ? &dwo_file->sections.abbrev
4700                     : &dwarf2_per_objfile->abbrev);
4701
4702   if (dwarf_read_debug)
4703     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
4704                         get_section_name (section),
4705                         get_section_file_name (abbrev_section));
4706
4707   dwarf2_read_section (objfile, section);
4708   info_ptr = section->buffer;
4709
4710   if (info_ptr == NULL)
4711     return;
4712
4713   /* We can't set abfd until now because the section may be empty or
4714      not present, in which case the bfd is unknown.  */
4715   abfd = get_section_bfd_owner (section);
4716
4717   /* We don't use init_cutu_and_read_dies_simple, or some such, here
4718      because we don't need to read any dies: the signature is in the
4719      header.  */
4720
4721   end_ptr = info_ptr + section->size;
4722   while (info_ptr < end_ptr)
4723     {
4724       sect_offset offset;
4725       struct signatured_type *sig_type;
4726       struct dwo_unit *dwo_tu;
4727       void **slot;
4728       const gdb_byte *ptr = info_ptr;
4729       struct comp_unit_head header;
4730       unsigned int length;
4731
4732       offset.sect_off = ptr - section->buffer;
4733
4734       /* We need to read the type's signature in order to build the hash
4735          table, but we don't need anything else just yet.  */
4736
4737       ptr = read_and_check_comp_unit_head (&header, section,
4738                                            abbrev_section, ptr, section_kind);
4739
4740       length = get_cu_length (&header);
4741
4742       /* Skip dummy type units.  */
4743       if (ptr >= info_ptr + length
4744           || peek_abbrev_code (abfd, ptr) == 0
4745           || header.unit_type != DW_UT_type)
4746         {
4747           info_ptr += length;
4748           continue;
4749         }
4750
4751       if (types_htab == NULL)
4752         {
4753           if (dwo_file)
4754             types_htab = allocate_dwo_unit_table (objfile);
4755           else
4756             types_htab = allocate_signatured_type_table (objfile);
4757         }
4758
4759       if (dwo_file)
4760         {
4761           sig_type = NULL;
4762           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4763                                    struct dwo_unit);
4764           dwo_tu->dwo_file = dwo_file;
4765           dwo_tu->signature = header.signature;
4766           dwo_tu->type_offset_in_tu = header.type_offset_in_tu;
4767           dwo_tu->section = section;
4768           dwo_tu->offset = offset;
4769           dwo_tu->length = length;
4770         }
4771       else
4772         {
4773           /* N.B.: type_offset is not usable if this type uses a DWO file.
4774              The real type_offset is in the DWO file.  */
4775           dwo_tu = NULL;
4776           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4777                                      struct signatured_type);
4778           sig_type->signature = header.signature;
4779           sig_type->type_offset_in_tu = header.type_offset_in_tu;
4780           sig_type->per_cu.objfile = objfile;
4781           sig_type->per_cu.is_debug_types = 1;
4782           sig_type->per_cu.section = section;
4783           sig_type->per_cu.offset = offset;
4784           sig_type->per_cu.length = length;
4785         }
4786
4787       slot = htab_find_slot (types_htab,
4788                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
4789                              INSERT);
4790       gdb_assert (slot != NULL);
4791       if (*slot != NULL)
4792         {
4793           sect_offset dup_offset;
4794
4795           if (dwo_file)
4796             {
4797               const struct dwo_unit *dup_tu
4798                 = (const struct dwo_unit *) *slot;
4799
4800               dup_offset = dup_tu->offset;
4801             }
4802           else
4803             {
4804               const struct signatured_type *dup_tu
4805                 = (const struct signatured_type *) *slot;
4806
4807               dup_offset = dup_tu->per_cu.offset;
4808             }
4809
4810           complaint (&symfile_complaints,
4811                      _("debug type entry at offset 0x%x is duplicate to"
4812                        " the entry at offset 0x%x, signature %s"),
4813                      offset.sect_off, dup_offset.sect_off,
4814                      hex_string (header.signature));
4815         }
4816       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4817
4818       if (dwarf_read_debug > 1)
4819         fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4820                             offset.sect_off,
4821                             hex_string (header.signature));
4822
4823       info_ptr += length;
4824     }
4825 }
4826
4827 /* Create the hash table of all entries in the .debug_types
4828    (or .debug_types.dwo) section(s).
4829    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4830    otherwise it is NULL.
4831
4832    The result is a pointer to the hash table or NULL if there are no types.
4833
4834    Note: This function processes DWO files only, not DWP files.  */
4835
4836 static void
4837 create_debug_types_hash_table (struct dwo_file *dwo_file,
4838                                VEC (dwarf2_section_info_def) *types,
4839                                htab_t &types_htab)
4840 {
4841   int ix;
4842   struct dwarf2_section_info *section;
4843
4844   if (VEC_empty (dwarf2_section_info_def, types))
4845     return;
4846
4847   for (ix = 0;
4848        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4849        ++ix)
4850     create_debug_type_hash_table (dwo_file, section, types_htab,
4851                                   rcuh_kind::TYPE);
4852 }
4853
4854 /* Create the hash table of all entries in the .debug_types section,
4855    and initialize all_type_units.
4856    The result is zero if there is an error (e.g. missing .debug_types section),
4857    otherwise non-zero.  */
4858
4859 static int
4860 create_all_type_units (struct objfile *objfile)
4861 {
4862   htab_t types_htab = NULL;
4863   struct signatured_type **iter;
4864
4865   create_debug_type_hash_table (NULL, &dwarf2_per_objfile->info, types_htab,
4866                                 rcuh_kind::COMPILE);
4867   create_debug_types_hash_table (NULL, dwarf2_per_objfile->types, types_htab);
4868   if (types_htab == NULL)
4869     {
4870       dwarf2_per_objfile->signatured_types = NULL;
4871       return 0;
4872     }
4873
4874   dwarf2_per_objfile->signatured_types = types_htab;
4875
4876   dwarf2_per_objfile->n_type_units
4877     = dwarf2_per_objfile->n_allocated_type_units
4878     = htab_elements (types_htab);
4879   dwarf2_per_objfile->all_type_units =
4880     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
4881   iter = &dwarf2_per_objfile->all_type_units[0];
4882   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4883   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4884               == dwarf2_per_objfile->n_type_units);
4885
4886   return 1;
4887 }
4888
4889 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4890    If SLOT is non-NULL, it is the entry to use in the hash table.
4891    Otherwise we find one.  */
4892
4893 static struct signatured_type *
4894 add_type_unit (ULONGEST sig, void **slot)
4895 {
4896   struct objfile *objfile = dwarf2_per_objfile->objfile;
4897   int n_type_units = dwarf2_per_objfile->n_type_units;
4898   struct signatured_type *sig_type;
4899
4900   gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4901   ++n_type_units;
4902   if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4903     {
4904       if (dwarf2_per_objfile->n_allocated_type_units == 0)
4905         dwarf2_per_objfile->n_allocated_type_units = 1;
4906       dwarf2_per_objfile->n_allocated_type_units *= 2;
4907       dwarf2_per_objfile->all_type_units
4908         = XRESIZEVEC (struct signatured_type *,
4909                       dwarf2_per_objfile->all_type_units,
4910                       dwarf2_per_objfile->n_allocated_type_units);
4911       ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4912     }
4913   dwarf2_per_objfile->n_type_units = n_type_units;
4914
4915   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4916                              struct signatured_type);
4917   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4918   sig_type->signature = sig;
4919   sig_type->per_cu.is_debug_types = 1;
4920   if (dwarf2_per_objfile->using_index)
4921     {
4922       sig_type->per_cu.v.quick =
4923         OBSTACK_ZALLOC (&objfile->objfile_obstack,
4924                         struct dwarf2_per_cu_quick_data);
4925     }
4926
4927   if (slot == NULL)
4928     {
4929       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4930                              sig_type, INSERT);
4931     }
4932   gdb_assert (*slot == NULL);
4933   *slot = sig_type;
4934   /* The rest of sig_type must be filled in by the caller.  */
4935   return sig_type;
4936 }
4937
4938 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4939    Fill in SIG_ENTRY with DWO_ENTRY.  */
4940
4941 static void
4942 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4943                                   struct signatured_type *sig_entry,
4944                                   struct dwo_unit *dwo_entry)
4945 {
4946   /* Make sure we're not clobbering something we don't expect to.  */
4947   gdb_assert (! sig_entry->per_cu.queued);
4948   gdb_assert (sig_entry->per_cu.cu == NULL);
4949   if (dwarf2_per_objfile->using_index)
4950     {
4951       gdb_assert (sig_entry->per_cu.v.quick != NULL);
4952       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
4953     }
4954   else
4955       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
4956   gdb_assert (sig_entry->signature == dwo_entry->signature);
4957   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4958   gdb_assert (sig_entry->type_unit_group == NULL);
4959   gdb_assert (sig_entry->dwo_unit == NULL);
4960
4961   sig_entry->per_cu.section = dwo_entry->section;
4962   sig_entry->per_cu.offset = dwo_entry->offset;
4963   sig_entry->per_cu.length = dwo_entry->length;
4964   sig_entry->per_cu.reading_dwo_directly = 1;
4965   sig_entry->per_cu.objfile = objfile;
4966   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4967   sig_entry->dwo_unit = dwo_entry;
4968 }
4969
4970 /* Subroutine of lookup_signatured_type.
4971    If we haven't read the TU yet, create the signatured_type data structure
4972    for a TU to be read in directly from a DWO file, bypassing the stub.
4973    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4974    using .gdb_index, then when reading a CU we want to stay in the DWO file
4975    containing that CU.  Otherwise we could end up reading several other DWO
4976    files (due to comdat folding) to process the transitive closure of all the
4977    mentioned TUs, and that can be slow.  The current DWO file will have every
4978    type signature that it needs.
4979    We only do this for .gdb_index because in the psymtab case we already have
4980    to read all the DWOs to build the type unit groups.  */
4981
4982 static struct signatured_type *
4983 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4984 {
4985   struct objfile *objfile = dwarf2_per_objfile->objfile;
4986   struct dwo_file *dwo_file;
4987   struct dwo_unit find_dwo_entry, *dwo_entry;
4988   struct signatured_type find_sig_entry, *sig_entry;
4989   void **slot;
4990
4991   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4992
4993   /* If TU skeletons have been removed then we may not have read in any
4994      TUs yet.  */
4995   if (dwarf2_per_objfile->signatured_types == NULL)
4996     {
4997       dwarf2_per_objfile->signatured_types
4998         = allocate_signatured_type_table (objfile);
4999     }
5000
5001   /* We only ever need to read in one copy of a signatured type.
5002      Use the global signatured_types array to do our own comdat-folding
5003      of types.  If this is the first time we're reading this TU, and
5004      the TU has an entry in .gdb_index, replace the recorded data from
5005      .gdb_index with this TU.  */
5006
5007   find_sig_entry.signature = sig;
5008   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
5009                          &find_sig_entry, INSERT);
5010   sig_entry = (struct signatured_type *) *slot;
5011
5012   /* We can get here with the TU already read, *or* in the process of being
5013      read.  Don't reassign the global entry to point to this DWO if that's
5014      the case.  Also note that if the TU is already being read, it may not
5015      have come from a DWO, the program may be a mix of Fission-compiled
5016      code and non-Fission-compiled code.  */
5017
5018   /* Have we already tried to read this TU?
5019      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
5020      needn't exist in the global table yet).  */
5021   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
5022     return sig_entry;
5023
5024   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
5025      dwo_unit of the TU itself.  */
5026   dwo_file = cu->dwo_unit->dwo_file;
5027
5028   /* Ok, this is the first time we're reading this TU.  */
5029   if (dwo_file->tus == NULL)
5030     return NULL;
5031   find_dwo_entry.signature = sig;
5032   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
5033   if (dwo_entry == NULL)
5034     return NULL;
5035
5036   /* If the global table doesn't have an entry for this TU, add one.  */
5037   if (sig_entry == NULL)
5038     sig_entry = add_type_unit (sig, slot);
5039
5040   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
5041   sig_entry->per_cu.tu_read = 1;
5042   return sig_entry;
5043 }
5044
5045 /* Subroutine of lookup_signatured_type.
5046    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
5047    then try the DWP file.  If the TU stub (skeleton) has been removed then
5048    it won't be in .gdb_index.  */
5049
5050 static struct signatured_type *
5051 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
5052 {
5053   struct objfile *objfile = dwarf2_per_objfile->objfile;
5054   struct dwp_file *dwp_file = get_dwp_file ();
5055   struct dwo_unit *dwo_entry;
5056   struct signatured_type find_sig_entry, *sig_entry;
5057   void **slot;
5058
5059   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
5060   gdb_assert (dwp_file != NULL);
5061
5062   /* If TU skeletons have been removed then we may not have read in any
5063      TUs yet.  */
5064   if (dwarf2_per_objfile->signatured_types == NULL)
5065     {
5066       dwarf2_per_objfile->signatured_types
5067         = allocate_signatured_type_table (objfile);
5068     }
5069
5070   find_sig_entry.signature = sig;
5071   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
5072                          &find_sig_entry, INSERT);
5073   sig_entry = (struct signatured_type *) *slot;
5074
5075   /* Have we already tried to read this TU?
5076      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
5077      needn't exist in the global table yet).  */
5078   if (sig_entry != NULL)
5079     return sig_entry;
5080
5081   if (dwp_file->tus == NULL)
5082     return NULL;
5083   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
5084                                       sig, 1 /* is_debug_types */);
5085   if (dwo_entry == NULL)
5086     return NULL;
5087
5088   sig_entry = add_type_unit (sig, slot);
5089   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
5090
5091   return sig_entry;
5092 }
5093
5094 /* Lookup a signature based type for DW_FORM_ref_sig8.
5095    Returns NULL if signature SIG is not present in the table.
5096    It is up to the caller to complain about this.  */
5097
5098 static struct signatured_type *
5099 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
5100 {
5101   if (cu->dwo_unit
5102       && dwarf2_per_objfile->using_index)
5103     {
5104       /* We're in a DWO/DWP file, and we're using .gdb_index.
5105          These cases require special processing.  */
5106       if (get_dwp_file () == NULL)
5107         return lookup_dwo_signatured_type (cu, sig);
5108       else
5109         return lookup_dwp_signatured_type (cu, sig);
5110     }
5111   else
5112     {
5113       struct signatured_type find_entry, *entry;
5114
5115       if (dwarf2_per_objfile->signatured_types == NULL)
5116         return NULL;
5117       find_entry.signature = sig;
5118       entry = ((struct signatured_type *)
5119                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
5120       return entry;
5121     }
5122 }
5123 \f
5124 /* Low level DIE reading support.  */
5125
5126 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
5127
5128 static void
5129 init_cu_die_reader (struct die_reader_specs *reader,
5130                     struct dwarf2_cu *cu,
5131                     struct dwarf2_section_info *section,
5132                     struct dwo_file *dwo_file)
5133 {
5134   gdb_assert (section->readin && section->buffer != NULL);
5135   reader->abfd = get_section_bfd_owner (section);
5136   reader->cu = cu;
5137   reader->dwo_file = dwo_file;
5138   reader->die_section = section;
5139   reader->buffer = section->buffer;
5140   reader->buffer_end = section->buffer + section->size;
5141   reader->comp_dir = NULL;
5142 }
5143
5144 /* Subroutine of init_cutu_and_read_dies to simplify it.
5145    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5146    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5147    already.
5148
5149    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5150    from it to the DIE in the DWO.  If NULL we are skipping the stub.
5151    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5152    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
5153    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
5154    STUB_COMP_DIR may be non-NULL.
5155    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5156    are filled in with the info of the DIE from the DWO file.
5157    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5158    provided an abbrev table to use.
5159    The result is non-zero if a valid (non-dummy) DIE was found.  */
5160
5161 static int
5162 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5163                         struct dwo_unit *dwo_unit,
5164                         int abbrev_table_provided,
5165                         struct die_info *stub_comp_unit_die,
5166                         const char *stub_comp_dir,
5167                         struct die_reader_specs *result_reader,
5168                         const gdb_byte **result_info_ptr,
5169                         struct die_info **result_comp_unit_die,
5170                         int *result_has_children)
5171 {
5172   struct objfile *objfile = dwarf2_per_objfile->objfile;
5173   struct dwarf2_cu *cu = this_cu->cu;
5174   struct dwarf2_section_info *section;
5175   bfd *abfd;
5176   const gdb_byte *begin_info_ptr, *info_ptr;
5177   ULONGEST signature; /* Or dwo_id.  */
5178   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5179   int i,num_extra_attrs;
5180   struct dwarf2_section_info *dwo_abbrev_section;
5181   struct attribute *attr;
5182   struct die_info *comp_unit_die;
5183
5184   /* At most one of these may be provided.  */
5185   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
5186
5187   /* These attributes aren't processed until later:
5188      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
5189      DW_AT_comp_dir is used now, to find the DWO file, but it is also
5190      referenced later.  However, these attributes are found in the stub
5191      which we won't have later.  In order to not impose this complication
5192      on the rest of the code, we read them here and copy them to the
5193      DWO CU/TU die.  */
5194
5195   stmt_list = NULL;
5196   low_pc = NULL;
5197   high_pc = NULL;
5198   ranges = NULL;
5199   comp_dir = NULL;
5200
5201   if (stub_comp_unit_die != NULL)
5202     {
5203       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5204          DWO file.  */
5205       if (! this_cu->is_debug_types)
5206         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5207       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5208       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5209       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5210       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5211
5212       /* There should be a DW_AT_addr_base attribute here (if needed).
5213          We need the value before we can process DW_FORM_GNU_addr_index.  */
5214       cu->addr_base = 0;
5215       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5216       if (attr)
5217         cu->addr_base = DW_UNSND (attr);
5218
5219       /* There should be a DW_AT_ranges_base attribute here (if needed).
5220          We need the value before we can process DW_AT_ranges.  */
5221       cu->ranges_base = 0;
5222       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5223       if (attr)
5224         cu->ranges_base = DW_UNSND (attr);
5225     }
5226   else if (stub_comp_dir != NULL)
5227     {
5228       /* Reconstruct the comp_dir attribute to simplify the code below.  */
5229       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
5230       comp_dir->name = DW_AT_comp_dir;
5231       comp_dir->form = DW_FORM_string;
5232       DW_STRING_IS_CANONICAL (comp_dir) = 0;
5233       DW_STRING (comp_dir) = stub_comp_dir;
5234     }
5235
5236   /* Set up for reading the DWO CU/TU.  */
5237   cu->dwo_unit = dwo_unit;
5238   section = dwo_unit->section;
5239   dwarf2_read_section (objfile, section);
5240   abfd = get_section_bfd_owner (section);
5241   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5242   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5243   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5244
5245   if (this_cu->is_debug_types)
5246     {
5247       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5248
5249       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5250                                                 dwo_abbrev_section,
5251                                                 info_ptr, rcuh_kind::TYPE);
5252       /* This is not an assert because it can be caused by bad debug info.  */
5253       if (sig_type->signature != cu->header.signature)
5254         {
5255           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5256                    " TU at offset 0x%x [in module %s]"),
5257                  hex_string (sig_type->signature),
5258                  hex_string (cu->header.signature),
5259                  dwo_unit->offset.sect_off,
5260                  bfd_get_filename (abfd));
5261         }
5262       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5263       /* For DWOs coming from DWP files, we don't know the CU length
5264          nor the type's offset in the TU until now.  */
5265       dwo_unit->length = get_cu_length (&cu->header);
5266       dwo_unit->type_offset_in_tu = cu->header.type_offset_in_tu;
5267
5268       /* Establish the type offset that can be used to lookup the type.
5269          For DWO files, we don't know it until now.  */
5270       sig_type->type_offset_in_section.sect_off =
5271         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5272     }
5273   else
5274     {
5275       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5276                                                 dwo_abbrev_section,
5277                                                 info_ptr, rcuh_kind::COMPILE);
5278       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5279       /* For DWOs coming from DWP files, we don't know the CU length
5280          until now.  */
5281       dwo_unit->length = get_cu_length (&cu->header);
5282     }
5283
5284   /* Replace the CU's original abbrev table with the DWO's.
5285      Reminder: We can't read the abbrev table until we've read the header.  */
5286   if (abbrev_table_provided)
5287     {
5288       /* Don't free the provided abbrev table, the caller of
5289          init_cutu_and_read_dies owns it.  */
5290       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5291       /* Ensure the DWO abbrev table gets freed.  */
5292       make_cleanup (dwarf2_free_abbrev_table, cu);
5293     }
5294   else
5295     {
5296       dwarf2_free_abbrev_table (cu);
5297       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5298       /* Leave any existing abbrev table cleanup as is.  */
5299     }
5300
5301   /* Read in the die, but leave space to copy over the attributes
5302      from the stub.  This has the benefit of simplifying the rest of
5303      the code - all the work to maintain the illusion of a single
5304      DW_TAG_{compile,type}_unit DIE is done here.  */
5305   num_extra_attrs = ((stmt_list != NULL)
5306                      + (low_pc != NULL)
5307                      + (high_pc != NULL)
5308                      + (ranges != NULL)
5309                      + (comp_dir != NULL));
5310   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5311                               result_has_children, num_extra_attrs);
5312
5313   /* Copy over the attributes from the stub to the DIE we just read in.  */
5314   comp_unit_die = *result_comp_unit_die;
5315   i = comp_unit_die->num_attrs;
5316   if (stmt_list != NULL)
5317     comp_unit_die->attrs[i++] = *stmt_list;
5318   if (low_pc != NULL)
5319     comp_unit_die->attrs[i++] = *low_pc;
5320   if (high_pc != NULL)
5321     comp_unit_die->attrs[i++] = *high_pc;
5322   if (ranges != NULL)
5323     comp_unit_die->attrs[i++] = *ranges;
5324   if (comp_dir != NULL)
5325     comp_unit_die->attrs[i++] = *comp_dir;
5326   comp_unit_die->num_attrs += num_extra_attrs;
5327
5328   if (dwarf_die_debug)
5329     {
5330       fprintf_unfiltered (gdb_stdlog,
5331                           "Read die from %s@0x%x of %s:\n",
5332                           get_section_name (section),
5333                           (unsigned) (begin_info_ptr - section->buffer),
5334                           bfd_get_filename (abfd));
5335       dump_die (comp_unit_die, dwarf_die_debug);
5336     }
5337
5338   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5339      TUs by skipping the stub and going directly to the entry in the DWO file.
5340      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5341      to get it via circuitous means.  Blech.  */
5342   if (comp_dir != NULL)
5343     result_reader->comp_dir = DW_STRING (comp_dir);
5344
5345   /* Skip dummy compilation units.  */
5346   if (info_ptr >= begin_info_ptr + dwo_unit->length
5347       || peek_abbrev_code (abfd, info_ptr) == 0)
5348     return 0;
5349
5350   *result_info_ptr = info_ptr;
5351   return 1;
5352 }
5353
5354 /* Subroutine of init_cutu_and_read_dies to simplify it.
5355    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5356    Returns NULL if the specified DWO unit cannot be found.  */
5357
5358 static struct dwo_unit *
5359 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5360                  struct die_info *comp_unit_die)
5361 {
5362   struct dwarf2_cu *cu = this_cu->cu;
5363   struct attribute *attr;
5364   ULONGEST signature;
5365   struct dwo_unit *dwo_unit;
5366   const char *comp_dir, *dwo_name;
5367
5368   gdb_assert (cu != NULL);
5369
5370   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5371   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5372   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
5373
5374   if (this_cu->is_debug_types)
5375     {
5376       struct signatured_type *sig_type;
5377
5378       /* Since this_cu is the first member of struct signatured_type,
5379          we can go from a pointer to one to a pointer to the other.  */
5380       sig_type = (struct signatured_type *) this_cu;
5381       signature = sig_type->signature;
5382       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5383     }
5384   else
5385     {
5386       struct attribute *attr;
5387
5388       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5389       if (! attr)
5390         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5391                  " [in module %s]"),
5392                dwo_name, objfile_name (this_cu->objfile));
5393       signature = DW_UNSND (attr);
5394       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5395                                        signature);
5396     }
5397
5398   return dwo_unit;
5399 }
5400
5401 /* Subroutine of init_cutu_and_read_dies to simplify it.
5402    See it for a description of the parameters.
5403    Read a TU directly from a DWO file, bypassing the stub.
5404
5405    Note: This function could be a little bit simpler if we shared cleanups
5406    with our caller, init_cutu_and_read_dies.  That's generally a fragile thing
5407    to do, so we keep this function self-contained.  Or we could move this
5408    into our caller, but it's complex enough already.  */
5409
5410 static void
5411 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5412                            int use_existing_cu, int keep,
5413                            die_reader_func_ftype *die_reader_func,
5414                            void *data)
5415 {
5416   struct dwarf2_cu *cu;
5417   struct signatured_type *sig_type;
5418   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5419   struct die_reader_specs reader;
5420   const gdb_byte *info_ptr;
5421   struct die_info *comp_unit_die;
5422   int has_children;
5423
5424   /* Verify we can do the following downcast, and that we have the
5425      data we need.  */
5426   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5427   sig_type = (struct signatured_type *) this_cu;
5428   gdb_assert (sig_type->dwo_unit != NULL);
5429
5430   cleanups = make_cleanup (null_cleanup, NULL);
5431
5432   if (use_existing_cu && this_cu->cu != NULL)
5433     {
5434       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5435       cu = this_cu->cu;
5436       /* There's no need to do the rereading_dwo_cu handling that
5437          init_cutu_and_read_dies does since we don't read the stub.  */
5438     }
5439   else
5440     {
5441       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5442       gdb_assert (this_cu->cu == NULL);
5443       cu = XNEW (struct dwarf2_cu);
5444       init_one_comp_unit (cu, this_cu);
5445       /* If an error occurs while loading, release our storage.  */
5446       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5447     }
5448
5449   /* A future optimization, if needed, would be to use an existing
5450      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
5451      could share abbrev tables.  */
5452
5453   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5454                               0 /* abbrev_table_provided */,
5455                               NULL /* stub_comp_unit_die */,
5456                               sig_type->dwo_unit->dwo_file->comp_dir,
5457                               &reader, &info_ptr,
5458                               &comp_unit_die, &has_children) == 0)
5459     {
5460       /* Dummy die.  */
5461       do_cleanups (cleanups);
5462       return;
5463     }
5464
5465   /* All the "real" work is done here.  */
5466   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5467
5468   /* This duplicates the code in init_cutu_and_read_dies,
5469      but the alternative is making the latter more complex.
5470      This function is only for the special case of using DWO files directly:
5471      no point in overly complicating the general case just to handle this.  */
5472   if (free_cu_cleanup != NULL)
5473     {
5474       if (keep)
5475         {
5476           /* We've successfully allocated this compilation unit.  Let our
5477              caller clean it up when finished with it.  */
5478           discard_cleanups (free_cu_cleanup);
5479
5480           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5481              So we have to manually free the abbrev table.  */
5482           dwarf2_free_abbrev_table (cu);
5483
5484           /* Link this CU into read_in_chain.  */
5485           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5486           dwarf2_per_objfile->read_in_chain = this_cu;
5487         }
5488       else
5489         do_cleanups (free_cu_cleanup);
5490     }
5491
5492   do_cleanups (cleanups);
5493 }
5494
5495 /* Initialize a CU (or TU) and read its DIEs.
5496    If the CU defers to a DWO file, read the DWO file as well.
5497
5498    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5499    Otherwise the table specified in the comp unit header is read in and used.
5500    This is an optimization for when we already have the abbrev table.
5501
5502    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5503    Otherwise, a new CU is allocated with xmalloc.
5504
5505    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5506    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5507
5508    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5509    linker) then DIE_READER_FUNC will not get called.  */
5510
5511 static void
5512 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5513                          struct abbrev_table *abbrev_table,
5514                          int use_existing_cu, int keep,
5515                          die_reader_func_ftype *die_reader_func,
5516                          void *data)
5517 {
5518   struct objfile *objfile = dwarf2_per_objfile->objfile;
5519   struct dwarf2_section_info *section = this_cu->section;
5520   bfd *abfd = get_section_bfd_owner (section);
5521   struct dwarf2_cu *cu;
5522   const gdb_byte *begin_info_ptr, *info_ptr;
5523   struct die_reader_specs reader;
5524   struct die_info *comp_unit_die;
5525   int has_children;
5526   struct attribute *attr;
5527   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5528   struct signatured_type *sig_type = NULL;
5529   struct dwarf2_section_info *abbrev_section;
5530   /* Non-zero if CU currently points to a DWO file and we need to
5531      reread it.  When this happens we need to reread the skeleton die
5532      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5533   int rereading_dwo_cu = 0;
5534
5535   if (dwarf_die_debug)
5536     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5537                         this_cu->is_debug_types ? "type" : "comp",
5538                         this_cu->offset.sect_off);
5539
5540   if (use_existing_cu)
5541     gdb_assert (keep);
5542
5543   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5544      file (instead of going through the stub), short-circuit all of this.  */
5545   if (this_cu->reading_dwo_directly)
5546     {
5547       /* Narrow down the scope of possibilities to have to understand.  */
5548       gdb_assert (this_cu->is_debug_types);
5549       gdb_assert (abbrev_table == NULL);
5550       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5551                                  die_reader_func, data);
5552       return;
5553     }
5554
5555   cleanups = make_cleanup (null_cleanup, NULL);
5556
5557   /* This is cheap if the section is already read in.  */
5558   dwarf2_read_section (objfile, section);
5559
5560   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5561
5562   abbrev_section = get_abbrev_section_for_cu (this_cu);
5563
5564   if (use_existing_cu && this_cu->cu != NULL)
5565     {
5566       cu = this_cu->cu;
5567       /* If this CU is from a DWO file we need to start over, we need to
5568          refetch the attributes from the skeleton CU.
5569          This could be optimized by retrieving those attributes from when we
5570          were here the first time: the previous comp_unit_die was stored in
5571          comp_unit_obstack.  But there's no data yet that we need this
5572          optimization.  */
5573       if (cu->dwo_unit != NULL)
5574         rereading_dwo_cu = 1;
5575     }
5576   else
5577     {
5578       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5579       gdb_assert (this_cu->cu == NULL);
5580       cu = XNEW (struct dwarf2_cu);
5581       init_one_comp_unit (cu, this_cu);
5582       /* If an error occurs while loading, release our storage.  */
5583       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5584     }
5585
5586   /* Get the header.  */
5587   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5588     {
5589       /* We already have the header, there's no need to read it in again.  */
5590       info_ptr += cu->header.first_die_offset.cu_off;
5591     }
5592   else
5593     {
5594       if (this_cu->is_debug_types)
5595         {
5596           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5597                                                     abbrev_section, info_ptr,
5598                                                     rcuh_kind::TYPE);
5599
5600           /* Since per_cu is the first member of struct signatured_type,
5601              we can go from a pointer to one to a pointer to the other.  */
5602           sig_type = (struct signatured_type *) this_cu;
5603           gdb_assert (sig_type->signature == cu->header.signature);
5604           gdb_assert (sig_type->type_offset_in_tu.cu_off
5605                       == cu->header.type_offset_in_tu.cu_off);
5606           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5607
5608           /* LENGTH has not been set yet for type units if we're
5609              using .gdb_index.  */
5610           this_cu->length = get_cu_length (&cu->header);
5611
5612           /* Establish the type offset that can be used to lookup the type.  */
5613           sig_type->type_offset_in_section.sect_off =
5614             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5615
5616           this_cu->dwarf_version = cu->header.version;
5617         }
5618       else
5619         {
5620           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5621                                                     abbrev_section,
5622                                                     info_ptr,
5623                                                     rcuh_kind::COMPILE);
5624
5625           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5626           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5627           this_cu->dwarf_version = cu->header.version;
5628         }
5629     }
5630
5631   /* Skip dummy compilation units.  */
5632   if (info_ptr >= begin_info_ptr + this_cu->length
5633       || peek_abbrev_code (abfd, info_ptr) == 0)
5634     {
5635       do_cleanups (cleanups);
5636       return;
5637     }
5638
5639   /* If we don't have them yet, read the abbrevs for this compilation unit.
5640      And if we need to read them now, make sure they're freed when we're
5641      done.  Note that it's important that if the CU had an abbrev table
5642      on entry we don't free it when we're done: Somewhere up the call stack
5643      it may be in use.  */
5644   if (abbrev_table != NULL)
5645     {
5646       gdb_assert (cu->abbrev_table == NULL);
5647       gdb_assert (cu->header.abbrev_offset.sect_off
5648                   == abbrev_table->offset.sect_off);
5649       cu->abbrev_table = abbrev_table;
5650     }
5651   else if (cu->abbrev_table == NULL)
5652     {
5653       dwarf2_read_abbrevs (cu, abbrev_section);
5654       make_cleanup (dwarf2_free_abbrev_table, cu);
5655     }
5656   else if (rereading_dwo_cu)
5657     {
5658       dwarf2_free_abbrev_table (cu);
5659       dwarf2_read_abbrevs (cu, abbrev_section);
5660     }
5661
5662   /* Read the top level CU/TU die.  */
5663   init_cu_die_reader (&reader, cu, section, NULL);
5664   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5665
5666   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5667      from the DWO file.
5668      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5669      DWO CU, that this test will fail (the attribute will not be present).  */
5670   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5671   if (attr)
5672     {
5673       struct dwo_unit *dwo_unit;
5674       struct die_info *dwo_comp_unit_die;
5675
5676       if (has_children)
5677         {
5678           complaint (&symfile_complaints,
5679                      _("compilation unit with DW_AT_GNU_dwo_name"
5680                        " has children (offset 0x%x) [in module %s]"),
5681                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5682         }
5683       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5684       if (dwo_unit != NULL)
5685         {
5686           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5687                                       abbrev_table != NULL,
5688                                       comp_unit_die, NULL,
5689                                       &reader, &info_ptr,
5690                                       &dwo_comp_unit_die, &has_children) == 0)
5691             {
5692               /* Dummy die.  */
5693               do_cleanups (cleanups);
5694               return;
5695             }
5696           comp_unit_die = dwo_comp_unit_die;
5697         }
5698       else
5699         {
5700           /* Yikes, we couldn't find the rest of the DIE, we only have
5701              the stub.  A complaint has already been logged.  There's
5702              not much more we can do except pass on the stub DIE to
5703              die_reader_func.  We don't want to throw an error on bad
5704              debug info.  */
5705         }
5706     }
5707
5708   /* All of the above is setup for this call.  Yikes.  */
5709   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5710
5711   /* Done, clean up.  */
5712   if (free_cu_cleanup != NULL)
5713     {
5714       if (keep)
5715         {
5716           /* We've successfully allocated this compilation unit.  Let our
5717              caller clean it up when finished with it.  */
5718           discard_cleanups (free_cu_cleanup);
5719
5720           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5721              So we have to manually free the abbrev table.  */
5722           dwarf2_free_abbrev_table (cu);
5723
5724           /* Link this CU into read_in_chain.  */
5725           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5726           dwarf2_per_objfile->read_in_chain = this_cu;
5727         }
5728       else
5729         do_cleanups (free_cu_cleanup);
5730     }
5731
5732   do_cleanups (cleanups);
5733 }
5734
5735 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5736    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5737    to have already done the lookup to find the DWO file).
5738
5739    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5740    THIS_CU->is_debug_types, but nothing else.
5741
5742    We fill in THIS_CU->length.
5743
5744    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5745    linker) then DIE_READER_FUNC will not get called.
5746
5747    THIS_CU->cu is always freed when done.
5748    This is done in order to not leave THIS_CU->cu in a state where we have
5749    to care whether it refers to the "main" CU or the DWO CU.  */
5750
5751 static void
5752 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5753                                    struct dwo_file *dwo_file,
5754                                    die_reader_func_ftype *die_reader_func,
5755                                    void *data)
5756 {
5757   struct objfile *objfile = dwarf2_per_objfile->objfile;
5758   struct dwarf2_section_info *section = this_cu->section;
5759   bfd *abfd = get_section_bfd_owner (section);
5760   struct dwarf2_section_info *abbrev_section;
5761   struct dwarf2_cu cu;
5762   const gdb_byte *begin_info_ptr, *info_ptr;
5763   struct die_reader_specs reader;
5764   struct cleanup *cleanups;
5765   struct die_info *comp_unit_die;
5766   int has_children;
5767
5768   if (dwarf_die_debug)
5769     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5770                         this_cu->is_debug_types ? "type" : "comp",
5771                         this_cu->offset.sect_off);
5772
5773   gdb_assert (this_cu->cu == NULL);
5774
5775   abbrev_section = (dwo_file != NULL
5776                     ? &dwo_file->sections.abbrev
5777                     : get_abbrev_section_for_cu (this_cu));
5778
5779   /* This is cheap if the section is already read in.  */
5780   dwarf2_read_section (objfile, section);
5781
5782   init_one_comp_unit (&cu, this_cu);
5783
5784   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5785
5786   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5787   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5788                                             abbrev_section, info_ptr,
5789                                             (this_cu->is_debug_types
5790                                              ? rcuh_kind::TYPE
5791                                              : rcuh_kind::COMPILE));
5792
5793   this_cu->length = get_cu_length (&cu.header);
5794
5795   /* Skip dummy compilation units.  */
5796   if (info_ptr >= begin_info_ptr + this_cu->length
5797       || peek_abbrev_code (abfd, info_ptr) == 0)
5798     {
5799       do_cleanups (cleanups);
5800       return;
5801     }
5802
5803   dwarf2_read_abbrevs (&cu, abbrev_section);
5804   make_cleanup (dwarf2_free_abbrev_table, &cu);
5805
5806   init_cu_die_reader (&reader, &cu, section, dwo_file);
5807   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5808
5809   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5810
5811   do_cleanups (cleanups);
5812 }
5813
5814 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5815    does not lookup the specified DWO file.
5816    This cannot be used to read DWO files.
5817
5818    THIS_CU->cu is always freed when done.
5819    This is done in order to not leave THIS_CU->cu in a state where we have
5820    to care whether it refers to the "main" CU or the DWO CU.
5821    We can revisit this if the data shows there's a performance issue.  */
5822
5823 static void
5824 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5825                                 die_reader_func_ftype *die_reader_func,
5826                                 void *data)
5827 {
5828   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
5829 }
5830 \f
5831 /* Type Unit Groups.
5832
5833    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5834    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5835    so that all types coming from the same compilation (.o file) are grouped
5836    together.  A future step could be to put the types in the same symtab as
5837    the CU the types ultimately came from.  */
5838
5839 static hashval_t
5840 hash_type_unit_group (const void *item)
5841 {
5842   const struct type_unit_group *tu_group
5843     = (const struct type_unit_group *) item;
5844
5845   return hash_stmt_list_entry (&tu_group->hash);
5846 }
5847
5848 static int
5849 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5850 {
5851   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
5852   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
5853
5854   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5855 }
5856
5857 /* Allocate a hash table for type unit groups.  */
5858
5859 static htab_t
5860 allocate_type_unit_groups_table (void)
5861 {
5862   return htab_create_alloc_ex (3,
5863                                hash_type_unit_group,
5864                                eq_type_unit_group,
5865                                NULL,
5866                                &dwarf2_per_objfile->objfile->objfile_obstack,
5867                                hashtab_obstack_allocate,
5868                                dummy_obstack_deallocate);
5869 }
5870
5871 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5872    partial symtabs.  We combine several TUs per psymtab to not let the size
5873    of any one psymtab grow too big.  */
5874 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5875 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5876
5877 /* Helper routine for get_type_unit_group.
5878    Create the type_unit_group object used to hold one or more TUs.  */
5879
5880 static struct type_unit_group *
5881 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5882 {
5883   struct objfile *objfile = dwarf2_per_objfile->objfile;
5884   struct dwarf2_per_cu_data *per_cu;
5885   struct type_unit_group *tu_group;
5886
5887   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5888                              struct type_unit_group);
5889   per_cu = &tu_group->per_cu;
5890   per_cu->objfile = objfile;
5891
5892   if (dwarf2_per_objfile->using_index)
5893     {
5894       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5895                                         struct dwarf2_per_cu_quick_data);
5896     }
5897   else
5898     {
5899       unsigned int line_offset = line_offset_struct.sect_off;
5900       struct partial_symtab *pst;
5901       char *name;
5902
5903       /* Give the symtab a useful name for debug purposes.  */
5904       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5905         name = xstrprintf ("<type_units_%d>",
5906                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5907       else
5908         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5909
5910       pst = create_partial_symtab (per_cu, name);
5911       pst->anonymous = 1;
5912
5913       xfree (name);
5914     }
5915
5916   tu_group->hash.dwo_unit = cu->dwo_unit;
5917   tu_group->hash.line_offset = line_offset_struct;
5918
5919   return tu_group;
5920 }
5921
5922 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5923    STMT_LIST is a DW_AT_stmt_list attribute.  */
5924
5925 static struct type_unit_group *
5926 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5927 {
5928   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5929   struct type_unit_group *tu_group;
5930   void **slot;
5931   unsigned int line_offset;
5932   struct type_unit_group type_unit_group_for_lookup;
5933
5934   if (dwarf2_per_objfile->type_unit_groups == NULL)
5935     {
5936       dwarf2_per_objfile->type_unit_groups =
5937         allocate_type_unit_groups_table ();
5938     }
5939
5940   /* Do we need to create a new group, or can we use an existing one?  */
5941
5942   if (stmt_list)
5943     {
5944       line_offset = DW_UNSND (stmt_list);
5945       ++tu_stats->nr_symtab_sharers;
5946     }
5947   else
5948     {
5949       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5950          We can do various things here like create one group per TU or
5951          spread them over multiple groups to split up the expansion work.
5952          To avoid worst case scenarios (too many groups or too large groups)
5953          we, umm, group them in bunches.  */
5954       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5955                      | (tu_stats->nr_stmt_less_type_units
5956                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5957       ++tu_stats->nr_stmt_less_type_units;
5958     }
5959
5960   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5961   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5962   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5963                          &type_unit_group_for_lookup, INSERT);
5964   if (*slot != NULL)
5965     {
5966       tu_group = (struct type_unit_group *) *slot;
5967       gdb_assert (tu_group != NULL);
5968     }
5969   else
5970     {
5971       sect_offset line_offset_struct;
5972
5973       line_offset_struct.sect_off = line_offset;
5974       tu_group = create_type_unit_group (cu, line_offset_struct);
5975       *slot = tu_group;
5976       ++tu_stats->nr_symtabs;
5977     }
5978
5979   return tu_group;
5980 }
5981 \f
5982 /* Partial symbol tables.  */
5983
5984 /* Create a psymtab named NAME and assign it to PER_CU.
5985
5986    The caller must fill in the following details:
5987    dirname, textlow, texthigh.  */
5988
5989 static struct partial_symtab *
5990 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5991 {
5992   struct objfile *objfile = per_cu->objfile;
5993   struct partial_symtab *pst;
5994
5995   pst = start_psymtab_common (objfile, name, 0,
5996                               objfile->global_psymbols.next,
5997                               objfile->static_psymbols.next);
5998
5999   pst->psymtabs_addrmap_supported = 1;
6000
6001   /* This is the glue that links PST into GDB's symbol API.  */
6002   pst->read_symtab_private = per_cu;
6003   pst->read_symtab = dwarf2_read_symtab;
6004   per_cu->v.psymtab = pst;
6005
6006   return pst;
6007 }
6008
6009 /* The DATA object passed to process_psymtab_comp_unit_reader has this
6010    type.  */
6011
6012 struct process_psymtab_comp_unit_data
6013 {
6014   /* True if we are reading a DW_TAG_partial_unit.  */
6015
6016   int want_partial_unit;
6017
6018   /* The "pretend" language that is used if the CU doesn't declare a
6019      language.  */
6020
6021   enum language pretend_language;
6022 };
6023
6024 /* die_reader_func for process_psymtab_comp_unit.  */
6025
6026 static void
6027 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
6028                                   const gdb_byte *info_ptr,
6029                                   struct die_info *comp_unit_die,
6030                                   int has_children,
6031                                   void *data)
6032 {
6033   struct dwarf2_cu *cu = reader->cu;
6034   struct objfile *objfile = cu->objfile;
6035   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6036   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6037   CORE_ADDR baseaddr;
6038   CORE_ADDR best_lowpc = 0, best_highpc = 0;
6039   struct partial_symtab *pst;
6040   enum pc_bounds_kind cu_bounds_kind;
6041   const char *filename;
6042   struct process_psymtab_comp_unit_data *info
6043     = (struct process_psymtab_comp_unit_data *) data;
6044
6045   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
6046     return;
6047
6048   gdb_assert (! per_cu->is_debug_types);
6049
6050   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
6051
6052   cu->list_in_scope = &file_symbols;
6053
6054   /* Allocate a new partial symbol table structure.  */
6055   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
6056   if (filename == NULL)
6057     filename = "";
6058
6059   pst = create_partial_symtab (per_cu, filename);
6060
6061   /* This must be done before calling dwarf2_build_include_psymtabs.  */
6062   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
6063
6064   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6065
6066   dwarf2_find_base_address (comp_unit_die, cu);
6067
6068   /* Possibly set the default values of LOWPC and HIGHPC from
6069      `DW_AT_ranges'.  */
6070   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
6071                                          &best_highpc, cu, pst);
6072   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
6073     /* Store the contiguous range if it is not empty; it can be empty for
6074        CUs with no code.  */
6075     addrmap_set_empty (objfile->psymtabs_addrmap,
6076                        gdbarch_adjust_dwarf2_addr (gdbarch,
6077                                                    best_lowpc + baseaddr),
6078                        gdbarch_adjust_dwarf2_addr (gdbarch,
6079                                                    best_highpc + baseaddr) - 1,
6080                        pst);
6081
6082   /* Check if comp unit has_children.
6083      If so, read the rest of the partial symbols from this comp unit.
6084      If not, there's no more debug_info for this comp unit.  */
6085   if (has_children)
6086     {
6087       struct partial_die_info *first_die;
6088       CORE_ADDR lowpc, highpc;
6089
6090       lowpc = ((CORE_ADDR) -1);
6091       highpc = ((CORE_ADDR) 0);
6092
6093       first_die = load_partial_dies (reader, info_ptr, 1);
6094
6095       scan_partial_symbols (first_die, &lowpc, &highpc,
6096                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
6097
6098       /* If we didn't find a lowpc, set it to highpc to avoid
6099          complaints from `maint check'.  */
6100       if (lowpc == ((CORE_ADDR) -1))
6101         lowpc = highpc;
6102
6103       /* If the compilation unit didn't have an explicit address range,
6104          then use the information extracted from its child dies.  */
6105       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
6106         {
6107           best_lowpc = lowpc;
6108           best_highpc = highpc;
6109         }
6110     }
6111   pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6112   pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
6113
6114   end_psymtab_common (objfile, pst);
6115
6116   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6117     {
6118       int i;
6119       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6120       struct dwarf2_per_cu_data *iter;
6121
6122       /* Fill in 'dependencies' here; we fill in 'users' in a
6123          post-pass.  */
6124       pst->number_of_dependencies = len;
6125       pst->dependencies =
6126         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
6127       for (i = 0;
6128            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6129                         i, iter);
6130            ++i)
6131         pst->dependencies[i] = iter->v.psymtab;
6132
6133       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6134     }
6135
6136   /* Get the list of files included in the current compilation unit,
6137      and build a psymtab for each of them.  */
6138   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6139
6140   if (dwarf_read_debug)
6141     {
6142       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6143
6144       fprintf_unfiltered (gdb_stdlog,
6145                           "Psymtab for %s unit @0x%x: %s - %s"
6146                           ", %d global, %d static syms\n",
6147                           per_cu->is_debug_types ? "type" : "comp",
6148                           per_cu->offset.sect_off,
6149                           paddress (gdbarch, pst->textlow),
6150                           paddress (gdbarch, pst->texthigh),
6151                           pst->n_global_syms, pst->n_static_syms);
6152     }
6153 }
6154
6155 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6156    Process compilation unit THIS_CU for a psymtab.  */
6157
6158 static void
6159 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
6160                            int want_partial_unit,
6161                            enum language pretend_language)
6162 {
6163   struct process_psymtab_comp_unit_data info;
6164
6165   /* If this compilation unit was already read in, free the
6166      cached copy in order to read it in again.  This is
6167      necessary because we skipped some symbols when we first
6168      read in the compilation unit (see load_partial_dies).
6169      This problem could be avoided, but the benefit is unclear.  */
6170   if (this_cu->cu != NULL)
6171     free_one_cached_comp_unit (this_cu);
6172
6173   gdb_assert (! this_cu->is_debug_types);
6174   info.want_partial_unit = want_partial_unit;
6175   info.pretend_language = pretend_language;
6176   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6177                            process_psymtab_comp_unit_reader,
6178                            &info);
6179
6180   /* Age out any secondary CUs.  */
6181   age_cached_comp_units ();
6182 }
6183
6184 /* Reader function for build_type_psymtabs.  */
6185
6186 static void
6187 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6188                             const gdb_byte *info_ptr,
6189                             struct die_info *type_unit_die,
6190                             int has_children,
6191                             void *data)
6192 {
6193   struct objfile *objfile = dwarf2_per_objfile->objfile;
6194   struct dwarf2_cu *cu = reader->cu;
6195   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6196   struct signatured_type *sig_type;
6197   struct type_unit_group *tu_group;
6198   struct attribute *attr;
6199   struct partial_die_info *first_die;
6200   CORE_ADDR lowpc, highpc;
6201   struct partial_symtab *pst;
6202
6203   gdb_assert (data == NULL);
6204   gdb_assert (per_cu->is_debug_types);
6205   sig_type = (struct signatured_type *) per_cu;
6206
6207   if (! has_children)
6208     return;
6209
6210   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6211   tu_group = get_type_unit_group (cu, attr);
6212
6213   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6214
6215   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6216   cu->list_in_scope = &file_symbols;
6217   pst = create_partial_symtab (per_cu, "");
6218   pst->anonymous = 1;
6219
6220   first_die = load_partial_dies (reader, info_ptr, 1);
6221
6222   lowpc = (CORE_ADDR) -1;
6223   highpc = (CORE_ADDR) 0;
6224   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6225
6226   end_psymtab_common (objfile, pst);
6227 }
6228
6229 /* Struct used to sort TUs by their abbreviation table offset.  */
6230
6231 struct tu_abbrev_offset
6232 {
6233   struct signatured_type *sig_type;
6234   sect_offset abbrev_offset;
6235 };
6236
6237 /* Helper routine for build_type_psymtabs_1, passed to qsort.  */
6238
6239 static int
6240 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6241 {
6242   const struct tu_abbrev_offset * const *a
6243     = (const struct tu_abbrev_offset * const*) ap;
6244   const struct tu_abbrev_offset * const *b
6245     = (const struct tu_abbrev_offset * const*) bp;
6246   unsigned int aoff = (*a)->abbrev_offset.sect_off;
6247   unsigned int boff = (*b)->abbrev_offset.sect_off;
6248
6249   return (aoff > boff) - (aoff < boff);
6250 }
6251
6252 /* Efficiently read all the type units.
6253    This does the bulk of the work for build_type_psymtabs.
6254
6255    The efficiency is because we sort TUs by the abbrev table they use and
6256    only read each abbrev table once.  In one program there are 200K TUs
6257    sharing 8K abbrev tables.
6258
6259    The main purpose of this function is to support building the
6260    dwarf2_per_objfile->type_unit_groups table.
6261    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6262    can collapse the search space by grouping them by stmt_list.
6263    The savings can be significant, in the same program from above the 200K TUs
6264    share 8K stmt_list tables.
6265
6266    FUNC is expected to call get_type_unit_group, which will create the
6267    struct type_unit_group if necessary and add it to
6268    dwarf2_per_objfile->type_unit_groups.  */
6269
6270 static void
6271 build_type_psymtabs_1 (void)
6272 {
6273   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6274   struct cleanup *cleanups;
6275   struct abbrev_table *abbrev_table;
6276   sect_offset abbrev_offset;
6277   struct tu_abbrev_offset *sorted_by_abbrev;
6278   int i;
6279
6280   /* It's up to the caller to not call us multiple times.  */
6281   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6282
6283   if (dwarf2_per_objfile->n_type_units == 0)
6284     return;
6285
6286   /* TUs typically share abbrev tables, and there can be way more TUs than
6287      abbrev tables.  Sort by abbrev table to reduce the number of times we
6288      read each abbrev table in.
6289      Alternatives are to punt or to maintain a cache of abbrev tables.
6290      This is simpler and efficient enough for now.
6291
6292      Later we group TUs by their DW_AT_stmt_list value (as this defines the
6293      symtab to use).  Typically TUs with the same abbrev offset have the same
6294      stmt_list value too so in practice this should work well.
6295
6296      The basic algorithm here is:
6297
6298       sort TUs by abbrev table
6299       for each TU with same abbrev table:
6300         read abbrev table if first user
6301         read TU top level DIE
6302           [IWBN if DWO skeletons had DW_AT_stmt_list]
6303         call FUNC  */
6304
6305   if (dwarf_read_debug)
6306     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6307
6308   /* Sort in a separate table to maintain the order of all_type_units
6309      for .gdb_index: TU indices directly index all_type_units.  */
6310   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6311                               dwarf2_per_objfile->n_type_units);
6312   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6313     {
6314       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6315
6316       sorted_by_abbrev[i].sig_type = sig_type;
6317       sorted_by_abbrev[i].abbrev_offset =
6318         read_abbrev_offset (sig_type->per_cu.section,
6319                             sig_type->per_cu.offset);
6320     }
6321   cleanups = make_cleanup (xfree, sorted_by_abbrev);
6322   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6323          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6324
6325   abbrev_offset.sect_off = ~(unsigned) 0;
6326   abbrev_table = NULL;
6327   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6328
6329   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6330     {
6331       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6332
6333       /* Switch to the next abbrev table if necessary.  */
6334       if (abbrev_table == NULL
6335           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6336         {
6337           if (abbrev_table != NULL)
6338             {
6339               abbrev_table_free (abbrev_table);
6340               /* Reset to NULL in case abbrev_table_read_table throws
6341                  an error: abbrev_table_free_cleanup will get called.  */
6342               abbrev_table = NULL;
6343             }
6344           abbrev_offset = tu->abbrev_offset;
6345           abbrev_table =
6346             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6347                                      abbrev_offset);
6348           ++tu_stats->nr_uniq_abbrev_tables;
6349         }
6350
6351       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6352                                build_type_psymtabs_reader, NULL);
6353     }
6354
6355   do_cleanups (cleanups);
6356 }
6357
6358 /* Print collected type unit statistics.  */
6359
6360 static void
6361 print_tu_stats (void)
6362 {
6363   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6364
6365   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6366   fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
6367                       dwarf2_per_objfile->n_type_units);
6368   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
6369                       tu_stats->nr_uniq_abbrev_tables);
6370   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
6371                       tu_stats->nr_symtabs);
6372   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
6373                       tu_stats->nr_symtab_sharers);
6374   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
6375                       tu_stats->nr_stmt_less_type_units);
6376   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
6377                       tu_stats->nr_all_type_units_reallocs);
6378 }
6379
6380 /* Traversal function for build_type_psymtabs.  */
6381
6382 static int
6383 build_type_psymtab_dependencies (void **slot, void *info)
6384 {
6385   struct objfile *objfile = dwarf2_per_objfile->objfile;
6386   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6387   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6388   struct partial_symtab *pst = per_cu->v.psymtab;
6389   int len = VEC_length (sig_type_ptr, tu_group->tus);
6390   struct signatured_type *iter;
6391   int i;
6392
6393   gdb_assert (len > 0);
6394   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6395
6396   pst->number_of_dependencies = len;
6397   pst->dependencies =
6398     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
6399   for (i = 0;
6400        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6401        ++i)
6402     {
6403       gdb_assert (iter->per_cu.is_debug_types);
6404       pst->dependencies[i] = iter->per_cu.v.psymtab;
6405       iter->type_unit_group = tu_group;
6406     }
6407
6408   VEC_free (sig_type_ptr, tu_group->tus);
6409
6410   return 1;
6411 }
6412
6413 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6414    Build partial symbol tables for the .debug_types comp-units.  */
6415
6416 static void
6417 build_type_psymtabs (struct objfile *objfile)
6418 {
6419   if (! create_all_type_units (objfile))
6420     return;
6421
6422   build_type_psymtabs_1 ();
6423 }
6424
6425 /* Traversal function for process_skeletonless_type_unit.
6426    Read a TU in a DWO file and build partial symbols for it.  */
6427
6428 static int
6429 process_skeletonless_type_unit (void **slot, void *info)
6430 {
6431   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6432   struct objfile *objfile = (struct objfile *) info;
6433   struct signatured_type find_entry, *entry;
6434
6435   /* If this TU doesn't exist in the global table, add it and read it in.  */
6436
6437   if (dwarf2_per_objfile->signatured_types == NULL)
6438     {
6439       dwarf2_per_objfile->signatured_types
6440         = allocate_signatured_type_table (objfile);
6441     }
6442
6443   find_entry.signature = dwo_unit->signature;
6444   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6445                          INSERT);
6446   /* If we've already seen this type there's nothing to do.  What's happening
6447      is we're doing our own version of comdat-folding here.  */
6448   if (*slot != NULL)
6449     return 1;
6450
6451   /* This does the job that create_all_type_units would have done for
6452      this TU.  */
6453   entry = add_type_unit (dwo_unit->signature, slot);
6454   fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6455   *slot = entry;
6456
6457   /* This does the job that build_type_psymtabs_1 would have done.  */
6458   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6459                            build_type_psymtabs_reader, NULL);
6460
6461   return 1;
6462 }
6463
6464 /* Traversal function for process_skeletonless_type_units.  */
6465
6466 static int
6467 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6468 {
6469   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6470
6471   if (dwo_file->tus != NULL)
6472     {
6473       htab_traverse_noresize (dwo_file->tus,
6474                               process_skeletonless_type_unit, info);
6475     }
6476
6477   return 1;
6478 }
6479
6480 /* Scan all TUs of DWO files, verifying we've processed them.
6481    This is needed in case a TU was emitted without its skeleton.
6482    Note: This can't be done until we know what all the DWO files are.  */
6483
6484 static void
6485 process_skeletonless_type_units (struct objfile *objfile)
6486 {
6487   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
6488   if (get_dwp_file () == NULL
6489       && dwarf2_per_objfile->dwo_files != NULL)
6490     {
6491       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6492                               process_dwo_file_for_skeletonless_type_units,
6493                               objfile);
6494     }
6495 }
6496
6497 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6498
6499 static void
6500 psymtabs_addrmap_cleanup (void *o)
6501 {
6502   struct objfile *objfile = (struct objfile *) o;
6503
6504   objfile->psymtabs_addrmap = NULL;
6505 }
6506
6507 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6508
6509 static void
6510 set_partial_user (struct objfile *objfile)
6511 {
6512   int i;
6513
6514   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6515     {
6516       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6517       struct partial_symtab *pst = per_cu->v.psymtab;
6518       int j;
6519
6520       if (pst == NULL)
6521         continue;
6522
6523       for (j = 0; j < pst->number_of_dependencies; ++j)
6524         {
6525           /* Set the 'user' field only if it is not already set.  */
6526           if (pst->dependencies[j]->user == NULL)
6527             pst->dependencies[j]->user = pst;
6528         }
6529     }
6530 }
6531
6532 /* Build the partial symbol table by doing a quick pass through the
6533    .debug_info and .debug_abbrev sections.  */
6534
6535 static void
6536 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6537 {
6538   struct cleanup *back_to, *addrmap_cleanup;
6539   struct obstack temp_obstack;
6540   int i;
6541
6542   if (dwarf_read_debug)
6543     {
6544       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6545                           objfile_name (objfile));
6546     }
6547
6548   dwarf2_per_objfile->reading_partial_symbols = 1;
6549
6550   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6551
6552   /* Any cached compilation units will be linked by the per-objfile
6553      read_in_chain.  Make sure to free them when we're done.  */
6554   back_to = make_cleanup (free_cached_comp_units, NULL);
6555
6556   build_type_psymtabs (objfile);
6557
6558   create_all_comp_units (objfile);
6559
6560   /* Create a temporary address map on a temporary obstack.  We later
6561      copy this to the final obstack.  */
6562   obstack_init (&temp_obstack);
6563   make_cleanup_obstack_free (&temp_obstack);
6564   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6565   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6566
6567   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6568     {
6569       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6570
6571       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6572     }
6573
6574   /* This has to wait until we read the CUs, we need the list of DWOs.  */
6575   process_skeletonless_type_units (objfile);
6576
6577   /* Now that all TUs have been processed we can fill in the dependencies.  */
6578   if (dwarf2_per_objfile->type_unit_groups != NULL)
6579     {
6580       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6581                               build_type_psymtab_dependencies, NULL);
6582     }
6583
6584   if (dwarf_read_debug)
6585     print_tu_stats ();
6586
6587   set_partial_user (objfile);
6588
6589   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6590                                                     &objfile->objfile_obstack);
6591   discard_cleanups (addrmap_cleanup);
6592
6593   do_cleanups (back_to);
6594
6595   if (dwarf_read_debug)
6596     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6597                         objfile_name (objfile));
6598 }
6599
6600 /* die_reader_func for load_partial_comp_unit.  */
6601
6602 static void
6603 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6604                                const gdb_byte *info_ptr,
6605                                struct die_info *comp_unit_die,
6606                                int has_children,
6607                                void *data)
6608 {
6609   struct dwarf2_cu *cu = reader->cu;
6610
6611   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6612
6613   /* Check if comp unit has_children.
6614      If so, read the rest of the partial symbols from this comp unit.
6615      If not, there's no more debug_info for this comp unit.  */
6616   if (has_children)
6617     load_partial_dies (reader, info_ptr, 0);
6618 }
6619
6620 /* Load the partial DIEs for a secondary CU into memory.
6621    This is also used when rereading a primary CU with load_all_dies.  */
6622
6623 static void
6624 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6625 {
6626   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6627                            load_partial_comp_unit_reader, NULL);
6628 }
6629
6630 static void
6631 read_comp_units_from_section (struct objfile *objfile,
6632                               struct dwarf2_section_info *section,
6633                               unsigned int is_dwz,
6634                               int *n_allocated,
6635                               int *n_comp_units,
6636                               struct dwarf2_per_cu_data ***all_comp_units)
6637 {
6638   const gdb_byte *info_ptr;
6639   bfd *abfd = get_section_bfd_owner (section);
6640
6641   if (dwarf_read_debug)
6642     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6643                         get_section_name (section),
6644                         get_section_file_name (section));
6645
6646   dwarf2_read_section (objfile, section);
6647
6648   info_ptr = section->buffer;
6649
6650   while (info_ptr < section->buffer + section->size)
6651     {
6652       unsigned int length, initial_length_size;
6653       struct dwarf2_per_cu_data *this_cu;
6654       sect_offset offset;
6655
6656       offset.sect_off = info_ptr - section->buffer;
6657
6658       /* Read just enough information to find out where the next
6659          compilation unit is.  */
6660       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6661
6662       /* Save the compilation unit for later lookup.  */
6663       this_cu = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_cu_data);
6664       memset (this_cu, 0, sizeof (*this_cu));
6665       this_cu->offset = offset;
6666       this_cu->length = length + initial_length_size;
6667       this_cu->is_dwz = is_dwz;
6668       this_cu->objfile = objfile;
6669       this_cu->section = section;
6670
6671       if (*n_comp_units == *n_allocated)
6672         {
6673           *n_allocated *= 2;
6674           *all_comp_units = XRESIZEVEC (struct dwarf2_per_cu_data *,
6675                                         *all_comp_units, *n_allocated);
6676         }
6677       (*all_comp_units)[*n_comp_units] = this_cu;
6678       ++*n_comp_units;
6679
6680       info_ptr = info_ptr + this_cu->length;
6681     }
6682 }
6683
6684 /* Create a list of all compilation units in OBJFILE.
6685    This is only done for -readnow and building partial symtabs.  */
6686
6687 static void
6688 create_all_comp_units (struct objfile *objfile)
6689 {
6690   int n_allocated;
6691   int n_comp_units;
6692   struct dwarf2_per_cu_data **all_comp_units;
6693   struct dwz_file *dwz;
6694
6695   n_comp_units = 0;
6696   n_allocated = 10;
6697   all_comp_units = XNEWVEC (struct dwarf2_per_cu_data *, n_allocated);
6698
6699   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6700                                 &n_allocated, &n_comp_units, &all_comp_units);
6701
6702   dwz = dwarf2_get_dwz_file ();
6703   if (dwz != NULL)
6704     read_comp_units_from_section (objfile, &dwz->info, 1,
6705                                   &n_allocated, &n_comp_units,
6706                                   &all_comp_units);
6707
6708   dwarf2_per_objfile->all_comp_units = XOBNEWVEC (&objfile->objfile_obstack,
6709                                                   struct dwarf2_per_cu_data *,
6710                                                   n_comp_units);
6711   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6712           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6713   xfree (all_comp_units);
6714   dwarf2_per_objfile->n_comp_units = n_comp_units;
6715 }
6716
6717 /* Process all loaded DIEs for compilation unit CU, starting at
6718    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
6719    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6720    DW_AT_ranges).  See the comments of add_partial_subprogram on how
6721    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
6722
6723 static void
6724 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6725                       CORE_ADDR *highpc, int set_addrmap,
6726                       struct dwarf2_cu *cu)
6727 {
6728   struct partial_die_info *pdi;
6729
6730   /* Now, march along the PDI's, descending into ones which have
6731      interesting children but skipping the children of the other ones,
6732      until we reach the end of the compilation unit.  */
6733
6734   pdi = first_die;
6735
6736   while (pdi != NULL)
6737     {
6738       fixup_partial_die (pdi, cu);
6739
6740       /* Anonymous namespaces or modules have no name but have interesting
6741          children, so we need to look at them.  Ditto for anonymous
6742          enums.  */
6743
6744       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6745           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6746           || pdi->tag == DW_TAG_imported_unit)
6747         {
6748           switch (pdi->tag)
6749             {
6750             case DW_TAG_subprogram:
6751               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
6752               break;
6753             case DW_TAG_constant:
6754             case DW_TAG_variable:
6755             case DW_TAG_typedef:
6756             case DW_TAG_union_type:
6757               if (!pdi->is_declaration)
6758                 {
6759                   add_partial_symbol (pdi, cu);
6760                 }
6761               break;
6762             case DW_TAG_class_type:
6763             case DW_TAG_interface_type:
6764             case DW_TAG_structure_type:
6765               if (!pdi->is_declaration)
6766                 {
6767                   add_partial_symbol (pdi, cu);
6768                 }
6769               if (cu->language == language_rust && pdi->has_children)
6770                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
6771                                       set_addrmap, cu);
6772               break;
6773             case DW_TAG_enumeration_type:
6774               if (!pdi->is_declaration)
6775                 add_partial_enumeration (pdi, cu);
6776               break;
6777             case DW_TAG_base_type:
6778             case DW_TAG_subrange_type:
6779               /* File scope base type definitions are added to the partial
6780                  symbol table.  */
6781               add_partial_symbol (pdi, cu);
6782               break;
6783             case DW_TAG_namespace:
6784               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
6785               break;
6786             case DW_TAG_module:
6787               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
6788               break;
6789             case DW_TAG_imported_unit:
6790               {
6791                 struct dwarf2_per_cu_data *per_cu;
6792
6793                 /* For now we don't handle imported units in type units.  */
6794                 if (cu->per_cu->is_debug_types)
6795                   {
6796                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6797                              " supported in type units [in module %s]"),
6798                            objfile_name (cu->objfile));
6799                   }
6800
6801                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6802                                                            pdi->is_dwz,
6803                                                            cu->objfile);
6804
6805                 /* Go read the partial unit, if needed.  */
6806                 if (per_cu->v.psymtab == NULL)
6807                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6808
6809                 VEC_safe_push (dwarf2_per_cu_ptr,
6810                                cu->per_cu->imported_symtabs, per_cu);
6811               }
6812               break;
6813             case DW_TAG_imported_declaration:
6814               add_partial_symbol (pdi, cu);
6815               break;
6816             default:
6817               break;
6818             }
6819         }
6820
6821       /* If the die has a sibling, skip to the sibling.  */
6822
6823       pdi = pdi->die_sibling;
6824     }
6825 }
6826
6827 /* Functions used to compute the fully scoped name of a partial DIE.
6828
6829    Normally, this is simple.  For C++, the parent DIE's fully scoped
6830    name is concatenated with "::" and the partial DIE's name.
6831    Enumerators are an exception; they use the scope of their parent
6832    enumeration type, i.e. the name of the enumeration type is not
6833    prepended to the enumerator.
6834
6835    There are two complexities.  One is DW_AT_specification; in this
6836    case "parent" means the parent of the target of the specification,
6837    instead of the direct parent of the DIE.  The other is compilers
6838    which do not emit DW_TAG_namespace; in this case we try to guess
6839    the fully qualified name of structure types from their members'
6840    linkage names.  This must be done using the DIE's children rather
6841    than the children of any DW_AT_specification target.  We only need
6842    to do this for structures at the top level, i.e. if the target of
6843    any DW_AT_specification (if any; otherwise the DIE itself) does not
6844    have a parent.  */
6845
6846 /* Compute the scope prefix associated with PDI's parent, in
6847    compilation unit CU.  The result will be allocated on CU's
6848    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6849    field.  NULL is returned if no prefix is necessary.  */
6850 static const char *
6851 partial_die_parent_scope (struct partial_die_info *pdi,
6852                           struct dwarf2_cu *cu)
6853 {
6854   const char *grandparent_scope;
6855   struct partial_die_info *parent, *real_pdi;
6856
6857   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6858      then this means the parent of the specification DIE.  */
6859
6860   real_pdi = pdi;
6861   while (real_pdi->has_specification)
6862     real_pdi = find_partial_die (real_pdi->spec_offset,
6863                                  real_pdi->spec_is_dwz, cu);
6864
6865   parent = real_pdi->die_parent;
6866   if (parent == NULL)
6867     return NULL;
6868
6869   if (parent->scope_set)
6870     return parent->scope;
6871
6872   fixup_partial_die (parent, cu);
6873
6874   grandparent_scope = partial_die_parent_scope (parent, cu);
6875
6876   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6877      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6878      Work around this problem here.  */
6879   if (cu->language == language_cplus
6880       && parent->tag == DW_TAG_namespace
6881       && strcmp (parent->name, "::") == 0
6882       && grandparent_scope == NULL)
6883     {
6884       parent->scope = NULL;
6885       parent->scope_set = 1;
6886       return NULL;
6887     }
6888
6889   if (pdi->tag == DW_TAG_enumerator)
6890     /* Enumerators should not get the name of the enumeration as a prefix.  */
6891     parent->scope = grandparent_scope;
6892   else if (parent->tag == DW_TAG_namespace
6893       || parent->tag == DW_TAG_module
6894       || parent->tag == DW_TAG_structure_type
6895       || parent->tag == DW_TAG_class_type
6896       || parent->tag == DW_TAG_interface_type
6897       || parent->tag == DW_TAG_union_type
6898       || parent->tag == DW_TAG_enumeration_type)
6899     {
6900       if (grandparent_scope == NULL)
6901         parent->scope = parent->name;
6902       else
6903         parent->scope = typename_concat (&cu->comp_unit_obstack,
6904                                          grandparent_scope,
6905                                          parent->name, 0, cu);
6906     }
6907   else
6908     {
6909       /* FIXME drow/2004-04-01: What should we be doing with
6910          function-local names?  For partial symbols, we should probably be
6911          ignoring them.  */
6912       complaint (&symfile_complaints,
6913                  _("unhandled containing DIE tag %d for DIE at %d"),
6914                  parent->tag, pdi->offset.sect_off);
6915       parent->scope = grandparent_scope;
6916     }
6917
6918   parent->scope_set = 1;
6919   return parent->scope;
6920 }
6921
6922 /* Return the fully scoped name associated with PDI, from compilation unit
6923    CU.  The result will be allocated with malloc.  */
6924
6925 static char *
6926 partial_die_full_name (struct partial_die_info *pdi,
6927                        struct dwarf2_cu *cu)
6928 {
6929   const char *parent_scope;
6930
6931   /* If this is a template instantiation, we can not work out the
6932      template arguments from partial DIEs.  So, unfortunately, we have
6933      to go through the full DIEs.  At least any work we do building
6934      types here will be reused if full symbols are loaded later.  */
6935   if (pdi->has_template_arguments)
6936     {
6937       fixup_partial_die (pdi, cu);
6938
6939       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6940         {
6941           struct die_info *die;
6942           struct attribute attr;
6943           struct dwarf2_cu *ref_cu = cu;
6944
6945           /* DW_FORM_ref_addr is using section offset.  */
6946           attr.name = (enum dwarf_attribute) 0;
6947           attr.form = DW_FORM_ref_addr;
6948           attr.u.unsnd = pdi->offset.sect_off;
6949           die = follow_die_ref (NULL, &attr, &ref_cu);
6950
6951           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6952         }
6953     }
6954
6955   parent_scope = partial_die_parent_scope (pdi, cu);
6956   if (parent_scope == NULL)
6957     return NULL;
6958   else
6959     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6960 }
6961
6962 static void
6963 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6964 {
6965   struct objfile *objfile = cu->objfile;
6966   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6967   CORE_ADDR addr = 0;
6968   const char *actual_name = NULL;
6969   CORE_ADDR baseaddr;
6970   char *built_actual_name;
6971
6972   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6973
6974   built_actual_name = partial_die_full_name (pdi, cu);
6975   if (built_actual_name != NULL)
6976     actual_name = built_actual_name;
6977
6978   if (actual_name == NULL)
6979     actual_name = pdi->name;
6980
6981   switch (pdi->tag)
6982     {
6983     case DW_TAG_subprogram:
6984       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
6985       if (pdi->is_external || cu->language == language_ada)
6986         {
6987           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6988              of the global scope.  But in Ada, we want to be able to access
6989              nested procedures globally.  So all Ada subprograms are stored
6990              in the global scope.  */
6991           add_psymbol_to_list (actual_name, strlen (actual_name),
6992                                built_actual_name != NULL,
6993                                VAR_DOMAIN, LOC_BLOCK,
6994                                &objfile->global_psymbols,
6995                                addr, cu->language, objfile);
6996         }
6997       else
6998         {
6999           add_psymbol_to_list (actual_name, strlen (actual_name),
7000                                built_actual_name != NULL,
7001                                VAR_DOMAIN, LOC_BLOCK,
7002                                &objfile->static_psymbols,
7003                                addr, cu->language, objfile);
7004         }
7005
7006       if (pdi->main_subprogram && actual_name != NULL)
7007         set_objfile_main_name (objfile, actual_name, cu->language);
7008       break;
7009     case DW_TAG_constant:
7010       {
7011         struct psymbol_allocation_list *list;
7012
7013         if (pdi->is_external)
7014           list = &objfile->global_psymbols;
7015         else
7016           list = &objfile->static_psymbols;
7017         add_psymbol_to_list (actual_name, strlen (actual_name),
7018                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
7019                              list, 0, cu->language, objfile);
7020       }
7021       break;
7022     case DW_TAG_variable:
7023       if (pdi->d.locdesc)
7024         addr = decode_locdesc (pdi->d.locdesc, cu);
7025
7026       if (pdi->d.locdesc
7027           && addr == 0
7028           && !dwarf2_per_objfile->has_section_at_zero)
7029         {
7030           /* A global or static variable may also have been stripped
7031              out by the linker if unused, in which case its address
7032              will be nullified; do not add such variables into partial
7033              symbol table then.  */
7034         }
7035       else if (pdi->is_external)
7036         {
7037           /* Global Variable.
7038              Don't enter into the minimal symbol tables as there is
7039              a minimal symbol table entry from the ELF symbols already.
7040              Enter into partial symbol table if it has a location
7041              descriptor or a type.
7042              If the location descriptor is missing, new_symbol will create
7043              a LOC_UNRESOLVED symbol, the address of the variable will then
7044              be determined from the minimal symbol table whenever the variable
7045              is referenced.
7046              The address for the partial symbol table entry is not
7047              used by GDB, but it comes in handy for debugging partial symbol
7048              table building.  */
7049
7050           if (pdi->d.locdesc || pdi->has_type)
7051             add_psymbol_to_list (actual_name, strlen (actual_name),
7052                                  built_actual_name != NULL,
7053                                  VAR_DOMAIN, LOC_STATIC,
7054                                  &objfile->global_psymbols,
7055                                  addr + baseaddr,
7056                                  cu->language, objfile);
7057         }
7058       else
7059         {
7060           int has_loc = pdi->d.locdesc != NULL;
7061
7062           /* Static Variable.  Skip symbols whose value we cannot know (those
7063              without location descriptors or constant values).  */
7064           if (!has_loc && !pdi->has_const_value)
7065             {
7066               xfree (built_actual_name);
7067               return;
7068             }
7069
7070           add_psymbol_to_list (actual_name, strlen (actual_name),
7071                                built_actual_name != NULL,
7072                                VAR_DOMAIN, LOC_STATIC,
7073                                &objfile->static_psymbols,
7074                                has_loc ? addr + baseaddr : (CORE_ADDR) 0,
7075                                cu->language, objfile);
7076         }
7077       break;
7078     case DW_TAG_typedef:
7079     case DW_TAG_base_type:
7080     case DW_TAG_subrange_type:
7081       add_psymbol_to_list (actual_name, strlen (actual_name),
7082                            built_actual_name != NULL,
7083                            VAR_DOMAIN, LOC_TYPEDEF,
7084                            &objfile->static_psymbols,
7085                            0, cu->language, objfile);
7086       break;
7087     case DW_TAG_imported_declaration:
7088     case DW_TAG_namespace:
7089       add_psymbol_to_list (actual_name, strlen (actual_name),
7090                            built_actual_name != NULL,
7091                            VAR_DOMAIN, LOC_TYPEDEF,
7092                            &objfile->global_psymbols,
7093                            0, cu->language, objfile);
7094       break;
7095     case DW_TAG_module:
7096       add_psymbol_to_list (actual_name, strlen (actual_name),
7097                            built_actual_name != NULL,
7098                            MODULE_DOMAIN, LOC_TYPEDEF,
7099                            &objfile->global_psymbols,
7100                            0, cu->language, objfile);
7101       break;
7102     case DW_TAG_class_type:
7103     case DW_TAG_interface_type:
7104     case DW_TAG_structure_type:
7105     case DW_TAG_union_type:
7106     case DW_TAG_enumeration_type:
7107       /* Skip external references.  The DWARF standard says in the section
7108          about "Structure, Union, and Class Type Entries": "An incomplete
7109          structure, union or class type is represented by a structure,
7110          union or class entry that does not have a byte size attribute
7111          and that has a DW_AT_declaration attribute."  */
7112       if (!pdi->has_byte_size && pdi->is_declaration)
7113         {
7114           xfree (built_actual_name);
7115           return;
7116         }
7117
7118       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7119          static vs. global.  */
7120       add_psymbol_to_list (actual_name, strlen (actual_name),
7121                            built_actual_name != NULL,
7122                            STRUCT_DOMAIN, LOC_TYPEDEF,
7123                            cu->language == language_cplus
7124                            ? &objfile->global_psymbols
7125                            : &objfile->static_psymbols,
7126                            0, cu->language, objfile);
7127
7128       break;
7129     case DW_TAG_enumerator:
7130       add_psymbol_to_list (actual_name, strlen (actual_name),
7131                            built_actual_name != NULL,
7132                            VAR_DOMAIN, LOC_CONST,
7133                            cu->language == language_cplus
7134                            ? &objfile->global_psymbols
7135                            : &objfile->static_psymbols,
7136                            0, cu->language, objfile);
7137       break;
7138     default:
7139       break;
7140     }
7141
7142   xfree (built_actual_name);
7143 }
7144
7145 /* Read a partial die corresponding to a namespace; also, add a symbol
7146    corresponding to that namespace to the symbol table.  NAMESPACE is
7147    the name of the enclosing namespace.  */
7148
7149 static void
7150 add_partial_namespace (struct partial_die_info *pdi,
7151                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
7152                        int set_addrmap, struct dwarf2_cu *cu)
7153 {
7154   /* Add a symbol for the namespace.  */
7155
7156   add_partial_symbol (pdi, cu);
7157
7158   /* Now scan partial symbols in that namespace.  */
7159
7160   if (pdi->has_children)
7161     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7162 }
7163
7164 /* Read a partial die corresponding to a Fortran module.  */
7165
7166 static void
7167 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
7168                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
7169 {
7170   /* Add a symbol for the namespace.  */
7171
7172   add_partial_symbol (pdi, cu);
7173
7174   /* Now scan partial symbols in that module.  */
7175
7176   if (pdi->has_children)
7177     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7178 }
7179
7180 /* Read a partial die corresponding to a subprogram and create a partial
7181    symbol for that subprogram.  When the CU language allows it, this
7182    routine also defines a partial symbol for each nested subprogram
7183    that this subprogram contains.  If SET_ADDRMAP is true, record the
7184    covered ranges in the addrmap.  Set *LOWPC and *HIGHPC to the lowest
7185    and highest PC values found in PDI.
7186
7187    PDI may also be a lexical block, in which case we simply search
7188    recursively for subprograms defined inside that lexical block.
7189    Again, this is only performed when the CU language allows this
7190    type of definitions.  */
7191
7192 static void
7193 add_partial_subprogram (struct partial_die_info *pdi,
7194                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
7195                         int set_addrmap, struct dwarf2_cu *cu)
7196 {
7197   if (pdi->tag == DW_TAG_subprogram)
7198     {
7199       if (pdi->has_pc_info)
7200         {
7201           if (pdi->lowpc < *lowpc)
7202             *lowpc = pdi->lowpc;
7203           if (pdi->highpc > *highpc)
7204             *highpc = pdi->highpc;
7205           if (set_addrmap)
7206             {
7207               struct objfile *objfile = cu->objfile;
7208               struct gdbarch *gdbarch = get_objfile_arch (objfile);
7209               CORE_ADDR baseaddr;
7210               CORE_ADDR highpc;
7211               CORE_ADDR lowpc;
7212
7213               baseaddr = ANOFFSET (objfile->section_offsets,
7214                                    SECT_OFF_TEXT (objfile));
7215               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7216                                                   pdi->lowpc + baseaddr);
7217               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7218                                                    pdi->highpc + baseaddr);
7219               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
7220                                  cu->per_cu->v.psymtab);
7221             }
7222         }
7223
7224       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7225         {
7226           if (!pdi->is_declaration)
7227             /* Ignore subprogram DIEs that do not have a name, they are
7228                illegal.  Do not emit a complaint at this point, we will
7229                do so when we convert this psymtab into a symtab.  */
7230             if (pdi->name)
7231               add_partial_symbol (pdi, cu);
7232         }
7233     }
7234
7235   if (! pdi->has_children)
7236     return;
7237
7238   if (cu->language == language_ada)
7239     {
7240       pdi = pdi->die_child;
7241       while (pdi != NULL)
7242         {
7243           fixup_partial_die (pdi, cu);
7244           if (pdi->tag == DW_TAG_subprogram
7245               || pdi->tag == DW_TAG_lexical_block)
7246             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
7247           pdi = pdi->die_sibling;
7248         }
7249     }
7250 }
7251
7252 /* Read a partial die corresponding to an enumeration type.  */
7253
7254 static void
7255 add_partial_enumeration (struct partial_die_info *enum_pdi,
7256                          struct dwarf2_cu *cu)
7257 {
7258   struct partial_die_info *pdi;
7259
7260   if (enum_pdi->name != NULL)
7261     add_partial_symbol (enum_pdi, cu);
7262
7263   pdi = enum_pdi->die_child;
7264   while (pdi)
7265     {
7266       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
7267         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
7268       else
7269         add_partial_symbol (pdi, cu);
7270       pdi = pdi->die_sibling;
7271     }
7272 }
7273
7274 /* Return the initial uleb128 in the die at INFO_PTR.  */
7275
7276 static unsigned int
7277 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
7278 {
7279   unsigned int bytes_read;
7280
7281   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7282 }
7283
7284 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7285    Return the corresponding abbrev, or NULL if the number is zero (indicating
7286    an empty DIE).  In either case *BYTES_READ will be set to the length of
7287    the initial number.  */
7288
7289 static struct abbrev_info *
7290 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
7291                  struct dwarf2_cu *cu)
7292 {
7293   bfd *abfd = cu->objfile->obfd;
7294   unsigned int abbrev_number;
7295   struct abbrev_info *abbrev;
7296
7297   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7298
7299   if (abbrev_number == 0)
7300     return NULL;
7301
7302   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
7303   if (!abbrev)
7304     {
7305       error (_("Dwarf Error: Could not find abbrev number %d in %s"
7306                " at offset 0x%x [in module %s]"),
7307              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7308              cu->header.offset.sect_off, bfd_get_filename (abfd));
7309     }
7310
7311   return abbrev;
7312 }
7313
7314 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7315    Returns a pointer to the end of a series of DIEs, terminated by an empty
7316    DIE.  Any children of the skipped DIEs will also be skipped.  */
7317
7318 static const gdb_byte *
7319 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
7320 {
7321   struct dwarf2_cu *cu = reader->cu;
7322   struct abbrev_info *abbrev;
7323   unsigned int bytes_read;
7324
7325   while (1)
7326     {
7327       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7328       if (abbrev == NULL)
7329         return info_ptr + bytes_read;
7330       else
7331         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7332     }
7333 }
7334
7335 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7336    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7337    abbrev corresponding to that skipped uleb128 should be passed in
7338    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7339    children.  */
7340
7341 static const gdb_byte *
7342 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7343               struct abbrev_info *abbrev)
7344 {
7345   unsigned int bytes_read;
7346   struct attribute attr;
7347   bfd *abfd = reader->abfd;
7348   struct dwarf2_cu *cu = reader->cu;
7349   const gdb_byte *buffer = reader->buffer;
7350   const gdb_byte *buffer_end = reader->buffer_end;
7351   unsigned int form, i;
7352
7353   for (i = 0; i < abbrev->num_attrs; i++)
7354     {
7355       /* The only abbrev we care about is DW_AT_sibling.  */
7356       if (abbrev->attrs[i].name == DW_AT_sibling)
7357         {
7358           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7359           if (attr.form == DW_FORM_ref_addr)
7360             complaint (&symfile_complaints,
7361                        _("ignoring absolute DW_AT_sibling"));
7362           else
7363             {
7364               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7365               const gdb_byte *sibling_ptr = buffer + off;
7366
7367               if (sibling_ptr < info_ptr)
7368                 complaint (&symfile_complaints,
7369                            _("DW_AT_sibling points backwards"));
7370               else if (sibling_ptr > reader->buffer_end)
7371                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
7372               else
7373                 return sibling_ptr;
7374             }
7375         }
7376
7377       /* If it isn't DW_AT_sibling, skip this attribute.  */
7378       form = abbrev->attrs[i].form;
7379     skip_attribute:
7380       switch (form)
7381         {
7382         case DW_FORM_ref_addr:
7383           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7384              and later it is offset sized.  */
7385           if (cu->header.version == 2)
7386             info_ptr += cu->header.addr_size;
7387           else
7388             info_ptr += cu->header.offset_size;
7389           break;
7390         case DW_FORM_GNU_ref_alt:
7391           info_ptr += cu->header.offset_size;
7392           break;
7393         case DW_FORM_addr:
7394           info_ptr += cu->header.addr_size;
7395           break;
7396         case DW_FORM_data1:
7397         case DW_FORM_ref1:
7398         case DW_FORM_flag:
7399           info_ptr += 1;
7400           break;
7401         case DW_FORM_flag_present:
7402         case DW_FORM_implicit_const:
7403           break;
7404         case DW_FORM_data2:
7405         case DW_FORM_ref2:
7406           info_ptr += 2;
7407           break;
7408         case DW_FORM_data4:
7409         case DW_FORM_ref4:
7410           info_ptr += 4;
7411           break;
7412         case DW_FORM_data8:
7413         case DW_FORM_ref8:
7414         case DW_FORM_ref_sig8:
7415           info_ptr += 8;
7416           break;
7417         case DW_FORM_data16:
7418           info_ptr += 16;
7419           break;
7420         case DW_FORM_string:
7421           read_direct_string (abfd, info_ptr, &bytes_read);
7422           info_ptr += bytes_read;
7423           break;
7424         case DW_FORM_sec_offset:
7425         case DW_FORM_strp:
7426         case DW_FORM_GNU_strp_alt:
7427           info_ptr += cu->header.offset_size;
7428           break;
7429         case DW_FORM_exprloc:
7430         case DW_FORM_block:
7431           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7432           info_ptr += bytes_read;
7433           break;
7434         case DW_FORM_block1:
7435           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7436           break;
7437         case DW_FORM_block2:
7438           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7439           break;
7440         case DW_FORM_block4:
7441           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7442           break;
7443         case DW_FORM_sdata:
7444         case DW_FORM_udata:
7445         case DW_FORM_ref_udata:
7446         case DW_FORM_GNU_addr_index:
7447         case DW_FORM_GNU_str_index:
7448           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7449           break;
7450         case DW_FORM_indirect:
7451           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7452           info_ptr += bytes_read;
7453           /* We need to continue parsing from here, so just go back to
7454              the top.  */
7455           goto skip_attribute;
7456
7457         default:
7458           error (_("Dwarf Error: Cannot handle %s "
7459                    "in DWARF reader [in module %s]"),
7460                  dwarf_form_name (form),
7461                  bfd_get_filename (abfd));
7462         }
7463     }
7464
7465   if (abbrev->has_children)
7466     return skip_children (reader, info_ptr);
7467   else
7468     return info_ptr;
7469 }
7470
7471 /* Locate ORIG_PDI's sibling.
7472    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7473
7474 static const gdb_byte *
7475 locate_pdi_sibling (const struct die_reader_specs *reader,
7476                     struct partial_die_info *orig_pdi,
7477                     const gdb_byte *info_ptr)
7478 {
7479   /* Do we know the sibling already?  */
7480
7481   if (orig_pdi->sibling)
7482     return orig_pdi->sibling;
7483
7484   /* Are there any children to deal with?  */
7485
7486   if (!orig_pdi->has_children)
7487     return info_ptr;
7488
7489   /* Skip the children the long way.  */
7490
7491   return skip_children (reader, info_ptr);
7492 }
7493
7494 /* Expand this partial symbol table into a full symbol table.  SELF is
7495    not NULL.  */
7496
7497 static void
7498 dwarf2_read_symtab (struct partial_symtab *self,
7499                     struct objfile *objfile)
7500 {
7501   if (self->readin)
7502     {
7503       warning (_("bug: psymtab for %s is already read in."),
7504                self->filename);
7505     }
7506   else
7507     {
7508       if (info_verbose)
7509         {
7510           printf_filtered (_("Reading in symbols for %s..."),
7511                            self->filename);
7512           gdb_flush (gdb_stdout);
7513         }
7514
7515       /* Restore our global data.  */
7516       dwarf2_per_objfile
7517         = (struct dwarf2_per_objfile *) objfile_data (objfile,
7518                                                       dwarf2_objfile_data_key);
7519
7520       /* If this psymtab is constructed from a debug-only objfile, the
7521          has_section_at_zero flag will not necessarily be correct.  We
7522          can get the correct value for this flag by looking at the data
7523          associated with the (presumably stripped) associated objfile.  */
7524       if (objfile->separate_debug_objfile_backlink)
7525         {
7526           struct dwarf2_per_objfile *dpo_backlink
7527             = ((struct dwarf2_per_objfile *)
7528                objfile_data (objfile->separate_debug_objfile_backlink,
7529                              dwarf2_objfile_data_key));
7530
7531           dwarf2_per_objfile->has_section_at_zero
7532             = dpo_backlink->has_section_at_zero;
7533         }
7534
7535       dwarf2_per_objfile->reading_partial_symbols = 0;
7536
7537       psymtab_to_symtab_1 (self);
7538
7539       /* Finish up the debug error message.  */
7540       if (info_verbose)
7541         printf_filtered (_("done.\n"));
7542     }
7543
7544   process_cu_includes ();
7545 }
7546 \f
7547 /* Reading in full CUs.  */
7548
7549 /* Add PER_CU to the queue.  */
7550
7551 static void
7552 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7553                  enum language pretend_language)
7554 {
7555   struct dwarf2_queue_item *item;
7556
7557   per_cu->queued = 1;
7558   item = XNEW (struct dwarf2_queue_item);
7559   item->per_cu = per_cu;
7560   item->pretend_language = pretend_language;
7561   item->next = NULL;
7562
7563   if (dwarf2_queue == NULL)
7564     dwarf2_queue = item;
7565   else
7566     dwarf2_queue_tail->next = item;
7567
7568   dwarf2_queue_tail = item;
7569 }
7570
7571 /* If PER_CU is not yet queued, add it to the queue.
7572    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7573    dependency.
7574    The result is non-zero if PER_CU was queued, otherwise the result is zero
7575    meaning either PER_CU is already queued or it is already loaded.
7576
7577    N.B. There is an invariant here that if a CU is queued then it is loaded.
7578    The caller is required to load PER_CU if we return non-zero.  */
7579
7580 static int
7581 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7582                        struct dwarf2_per_cu_data *per_cu,
7583                        enum language pretend_language)
7584 {
7585   /* We may arrive here during partial symbol reading, if we need full
7586      DIEs to process an unusual case (e.g. template arguments).  Do
7587      not queue PER_CU, just tell our caller to load its DIEs.  */
7588   if (dwarf2_per_objfile->reading_partial_symbols)
7589     {
7590       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7591         return 1;
7592       return 0;
7593     }
7594
7595   /* Mark the dependence relation so that we don't flush PER_CU
7596      too early.  */
7597   if (dependent_cu != NULL)
7598     dwarf2_add_dependence (dependent_cu, per_cu);
7599
7600   /* If it's already on the queue, we have nothing to do.  */
7601   if (per_cu->queued)
7602     return 0;
7603
7604   /* If the compilation unit is already loaded, just mark it as
7605      used.  */
7606   if (per_cu->cu != NULL)
7607     {
7608       per_cu->cu->last_used = 0;
7609       return 0;
7610     }
7611
7612   /* Add it to the queue.  */
7613   queue_comp_unit (per_cu, pretend_language);
7614
7615   return 1;
7616 }
7617
7618 /* Process the queue.  */
7619
7620 static void
7621 process_queue (void)
7622 {
7623   struct dwarf2_queue_item *item, *next_item;
7624
7625   if (dwarf_read_debug)
7626     {
7627       fprintf_unfiltered (gdb_stdlog,
7628                           "Expanding one or more symtabs of objfile %s ...\n",
7629                           objfile_name (dwarf2_per_objfile->objfile));
7630     }
7631
7632   /* The queue starts out with one item, but following a DIE reference
7633      may load a new CU, adding it to the end of the queue.  */
7634   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7635     {
7636       if ((dwarf2_per_objfile->using_index
7637            ? !item->per_cu->v.quick->compunit_symtab
7638            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7639           /* Skip dummy CUs.  */
7640           && item->per_cu->cu != NULL)
7641         {
7642           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7643           unsigned int debug_print_threshold;
7644           char buf[100];
7645
7646           if (per_cu->is_debug_types)
7647             {
7648               struct signatured_type *sig_type =
7649                 (struct signatured_type *) per_cu;
7650
7651               sprintf (buf, "TU %s at offset 0x%x",
7652                        hex_string (sig_type->signature),
7653                        per_cu->offset.sect_off);
7654               /* There can be 100s of TUs.
7655                  Only print them in verbose mode.  */
7656               debug_print_threshold = 2;
7657             }
7658           else
7659             {
7660               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7661               debug_print_threshold = 1;
7662             }
7663
7664           if (dwarf_read_debug >= debug_print_threshold)
7665             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7666
7667           if (per_cu->is_debug_types)
7668             process_full_type_unit (per_cu, item->pretend_language);
7669           else
7670             process_full_comp_unit (per_cu, item->pretend_language);
7671
7672           if (dwarf_read_debug >= debug_print_threshold)
7673             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7674         }
7675
7676       item->per_cu->queued = 0;
7677       next_item = item->next;
7678       xfree (item);
7679     }
7680
7681   dwarf2_queue_tail = NULL;
7682
7683   if (dwarf_read_debug)
7684     {
7685       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7686                           objfile_name (dwarf2_per_objfile->objfile));
7687     }
7688 }
7689
7690 /* Free all allocated queue entries.  This function only releases anything if
7691    an error was thrown; if the queue was processed then it would have been
7692    freed as we went along.  */
7693
7694 static void
7695 dwarf2_release_queue (void *dummy)
7696 {
7697   struct dwarf2_queue_item *item, *last;
7698
7699   item = dwarf2_queue;
7700   while (item)
7701     {
7702       /* Anything still marked queued is likely to be in an
7703          inconsistent state, so discard it.  */
7704       if (item->per_cu->queued)
7705         {
7706           if (item->per_cu->cu != NULL)
7707             free_one_cached_comp_unit (item->per_cu);
7708           item->per_cu->queued = 0;
7709         }
7710
7711       last = item;
7712       item = item->next;
7713       xfree (last);
7714     }
7715
7716   dwarf2_queue = dwarf2_queue_tail = NULL;
7717 }
7718
7719 /* Read in full symbols for PST, and anything it depends on.  */
7720
7721 static void
7722 psymtab_to_symtab_1 (struct partial_symtab *pst)
7723 {
7724   struct dwarf2_per_cu_data *per_cu;
7725   int i;
7726
7727   if (pst->readin)
7728     return;
7729
7730   for (i = 0; i < pst->number_of_dependencies; i++)
7731     if (!pst->dependencies[i]->readin
7732         && pst->dependencies[i]->user == NULL)
7733       {
7734         /* Inform about additional files that need to be read in.  */
7735         if (info_verbose)
7736           {
7737             /* FIXME: i18n: Need to make this a single string.  */
7738             fputs_filtered (" ", gdb_stdout);
7739             wrap_here ("");
7740             fputs_filtered ("and ", gdb_stdout);
7741             wrap_here ("");
7742             printf_filtered ("%s...", pst->dependencies[i]->filename);
7743             wrap_here ("");     /* Flush output.  */
7744             gdb_flush (gdb_stdout);
7745           }
7746         psymtab_to_symtab_1 (pst->dependencies[i]);
7747       }
7748
7749   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
7750
7751   if (per_cu == NULL)
7752     {
7753       /* It's an include file, no symbols to read for it.
7754          Everything is in the parent symtab.  */
7755       pst->readin = 1;
7756       return;
7757     }
7758
7759   dw2_do_instantiate_symtab (per_cu);
7760 }
7761
7762 /* Trivial hash function for die_info: the hash value of a DIE
7763    is its offset in .debug_info for this objfile.  */
7764
7765 static hashval_t
7766 die_hash (const void *item)
7767 {
7768   const struct die_info *die = (const struct die_info *) item;
7769
7770   return die->offset.sect_off;
7771 }
7772
7773 /* Trivial comparison function for die_info structures: two DIEs
7774    are equal if they have the same offset.  */
7775
7776 static int
7777 die_eq (const void *item_lhs, const void *item_rhs)
7778 {
7779   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
7780   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
7781
7782   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7783 }
7784
7785 /* die_reader_func for load_full_comp_unit.
7786    This is identical to read_signatured_type_reader,
7787    but is kept separate for now.  */
7788
7789 static void
7790 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7791                             const gdb_byte *info_ptr,
7792                             struct die_info *comp_unit_die,
7793                             int has_children,
7794                             void *data)
7795 {
7796   struct dwarf2_cu *cu = reader->cu;
7797   enum language *language_ptr = (enum language *) data;
7798
7799   gdb_assert (cu->die_hash == NULL);
7800   cu->die_hash =
7801     htab_create_alloc_ex (cu->header.length / 12,
7802                           die_hash,
7803                           die_eq,
7804                           NULL,
7805                           &cu->comp_unit_obstack,
7806                           hashtab_obstack_allocate,
7807                           dummy_obstack_deallocate);
7808
7809   if (has_children)
7810     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7811                                                   &info_ptr, comp_unit_die);
7812   cu->dies = comp_unit_die;
7813   /* comp_unit_die is not stored in die_hash, no need.  */
7814
7815   /* We try not to read any attributes in this function, because not
7816      all CUs needed for references have been loaded yet, and symbol
7817      table processing isn't initialized.  But we have to set the CU language,
7818      or we won't be able to build types correctly.
7819      Similarly, if we do not read the producer, we can not apply
7820      producer-specific interpretation.  */
7821   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7822 }
7823
7824 /* Load the DIEs associated with PER_CU into memory.  */
7825
7826 static void
7827 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7828                      enum language pretend_language)
7829 {
7830   gdb_assert (! this_cu->is_debug_types);
7831
7832   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7833                            load_full_comp_unit_reader, &pretend_language);
7834 }
7835
7836 /* Add a DIE to the delayed physname list.  */
7837
7838 static void
7839 add_to_method_list (struct type *type, int fnfield_index, int index,
7840                     const char *name, struct die_info *die,
7841                     struct dwarf2_cu *cu)
7842 {
7843   struct delayed_method_info mi;
7844   mi.type = type;
7845   mi.fnfield_index = fnfield_index;
7846   mi.index = index;
7847   mi.name = name;
7848   mi.die = die;
7849   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7850 }
7851
7852 /* A cleanup for freeing the delayed method list.  */
7853
7854 static void
7855 free_delayed_list (void *ptr)
7856 {
7857   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7858   if (cu->method_list != NULL)
7859     {
7860       VEC_free (delayed_method_info, cu->method_list);
7861       cu->method_list = NULL;
7862     }
7863 }
7864
7865 /* Compute the physnames of any methods on the CU's method list.
7866
7867    The computation of method physnames is delayed in order to avoid the
7868    (bad) condition that one of the method's formal parameters is of an as yet
7869    incomplete type.  */
7870
7871 static void
7872 compute_delayed_physnames (struct dwarf2_cu *cu)
7873 {
7874   int i;
7875   struct delayed_method_info *mi;
7876   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7877     {
7878       const char *physname;
7879       struct fn_fieldlist *fn_flp
7880         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7881       physname = dwarf2_physname (mi->name, mi->die, cu);
7882       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7883         = physname ? physname : "";
7884     }
7885 }
7886
7887 /* Go objects should be embedded in a DW_TAG_module DIE,
7888    and it's not clear if/how imported objects will appear.
7889    To keep Go support simple until that's worked out,
7890    go back through what we've read and create something usable.
7891    We could do this while processing each DIE, and feels kinda cleaner,
7892    but that way is more invasive.
7893    This is to, for example, allow the user to type "p var" or "b main"
7894    without having to specify the package name, and allow lookups
7895    of module.object to work in contexts that use the expression
7896    parser.  */
7897
7898 static void
7899 fixup_go_packaging (struct dwarf2_cu *cu)
7900 {
7901   char *package_name = NULL;
7902   struct pending *list;
7903   int i;
7904
7905   for (list = global_symbols; list != NULL; list = list->next)
7906     {
7907       for (i = 0; i < list->nsyms; ++i)
7908         {
7909           struct symbol *sym = list->symbol[i];
7910
7911           if (SYMBOL_LANGUAGE (sym) == language_go
7912               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7913             {
7914               char *this_package_name = go_symbol_package_name (sym);
7915
7916               if (this_package_name == NULL)
7917                 continue;
7918               if (package_name == NULL)
7919                 package_name = this_package_name;
7920               else
7921                 {
7922                   if (strcmp (package_name, this_package_name) != 0)
7923                     complaint (&symfile_complaints,
7924                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7925                                (symbol_symtab (sym) != NULL
7926                                 ? symtab_to_filename_for_display
7927                                     (symbol_symtab (sym))
7928                                 : objfile_name (cu->objfile)),
7929                                this_package_name, package_name);
7930                   xfree (this_package_name);
7931                 }
7932             }
7933         }
7934     }
7935
7936   if (package_name != NULL)
7937     {
7938       struct objfile *objfile = cu->objfile;
7939       const char *saved_package_name
7940         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
7941                                         package_name,
7942                                         strlen (package_name));
7943       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
7944                                      saved_package_name);
7945       struct symbol *sym;
7946
7947       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7948
7949       sym = allocate_symbol (objfile);
7950       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7951       SYMBOL_SET_NAMES (sym, saved_package_name,
7952                         strlen (saved_package_name), 0, objfile);
7953       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7954          e.g., "main" finds the "main" module and not C's main().  */
7955       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7956       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7957       SYMBOL_TYPE (sym) = type;
7958
7959       add_symbol_to_list (sym, &global_symbols);
7960
7961       xfree (package_name);
7962     }
7963 }
7964
7965 /* Return the symtab for PER_CU.  This works properly regardless of
7966    whether we're using the index or psymtabs.  */
7967
7968 static struct compunit_symtab *
7969 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
7970 {
7971   return (dwarf2_per_objfile->using_index
7972           ? per_cu->v.quick->compunit_symtab
7973           : per_cu->v.psymtab->compunit_symtab);
7974 }
7975
7976 /* A helper function for computing the list of all symbol tables
7977    included by PER_CU.  */
7978
7979 static void
7980 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
7981                                 htab_t all_children, htab_t all_type_symtabs,
7982                                 struct dwarf2_per_cu_data *per_cu,
7983                                 struct compunit_symtab *immediate_parent)
7984 {
7985   void **slot;
7986   int ix;
7987   struct compunit_symtab *cust;
7988   struct dwarf2_per_cu_data *iter;
7989
7990   slot = htab_find_slot (all_children, per_cu, INSERT);
7991   if (*slot != NULL)
7992     {
7993       /* This inclusion and its children have been processed.  */
7994       return;
7995     }
7996
7997   *slot = per_cu;
7998   /* Only add a CU if it has a symbol table.  */
7999   cust = get_compunit_symtab (per_cu);
8000   if (cust != NULL)
8001     {
8002       /* If this is a type unit only add its symbol table if we haven't
8003          seen it yet (type unit per_cu's can share symtabs).  */
8004       if (per_cu->is_debug_types)
8005         {
8006           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
8007           if (*slot == NULL)
8008             {
8009               *slot = cust;
8010               VEC_safe_push (compunit_symtab_ptr, *result, cust);
8011               if (cust->user == NULL)
8012                 cust->user = immediate_parent;
8013             }
8014         }
8015       else
8016         {
8017           VEC_safe_push (compunit_symtab_ptr, *result, cust);
8018           if (cust->user == NULL)
8019             cust->user = immediate_parent;
8020         }
8021     }
8022
8023   for (ix = 0;
8024        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
8025        ++ix)
8026     {
8027       recursively_compute_inclusions (result, all_children,
8028                                       all_type_symtabs, iter, cust);
8029     }
8030 }
8031
8032 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
8033    PER_CU.  */
8034
8035 static void
8036 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
8037 {
8038   gdb_assert (! per_cu->is_debug_types);
8039
8040   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
8041     {
8042       int ix, len;
8043       struct dwarf2_per_cu_data *per_cu_iter;
8044       struct compunit_symtab *compunit_symtab_iter;
8045       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
8046       htab_t all_children, all_type_symtabs;
8047       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
8048
8049       /* If we don't have a symtab, we can just skip this case.  */
8050       if (cust == NULL)
8051         return;
8052
8053       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
8054                                         NULL, xcalloc, xfree);
8055       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
8056                                             NULL, xcalloc, xfree);
8057
8058       for (ix = 0;
8059            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
8060                         ix, per_cu_iter);
8061            ++ix)
8062         {
8063           recursively_compute_inclusions (&result_symtabs, all_children,
8064                                           all_type_symtabs, per_cu_iter,
8065                                           cust);
8066         }
8067
8068       /* Now we have a transitive closure of all the included symtabs.  */
8069       len = VEC_length (compunit_symtab_ptr, result_symtabs);
8070       cust->includes
8071         = XOBNEWVEC (&dwarf2_per_objfile->objfile->objfile_obstack,
8072                      struct compunit_symtab *, len + 1);
8073       for (ix = 0;
8074            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
8075                         compunit_symtab_iter);
8076            ++ix)
8077         cust->includes[ix] = compunit_symtab_iter;
8078       cust->includes[len] = NULL;
8079
8080       VEC_free (compunit_symtab_ptr, result_symtabs);
8081       htab_delete (all_children);
8082       htab_delete (all_type_symtabs);
8083     }
8084 }
8085
8086 /* Compute the 'includes' field for the symtabs of all the CUs we just
8087    read.  */
8088
8089 static void
8090 process_cu_includes (void)
8091 {
8092   int ix;
8093   struct dwarf2_per_cu_data *iter;
8094
8095   for (ix = 0;
8096        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8097                     ix, iter);
8098        ++ix)
8099     {
8100       if (! iter->is_debug_types)
8101         compute_compunit_symtab_includes (iter);
8102     }
8103
8104   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8105 }
8106
8107 /* Generate full symbol information for PER_CU, whose DIEs have
8108    already been loaded into memory.  */
8109
8110 static void
8111 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8112                         enum language pretend_language)
8113 {
8114   struct dwarf2_cu *cu = per_cu->cu;
8115   struct objfile *objfile = per_cu->objfile;
8116   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8117   CORE_ADDR lowpc, highpc;
8118   struct compunit_symtab *cust;
8119   struct cleanup *back_to, *delayed_list_cleanup;
8120   CORE_ADDR baseaddr;
8121   struct block *static_block;
8122   CORE_ADDR addr;
8123
8124   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8125
8126   buildsym_init ();
8127   back_to = make_cleanup (really_free_pendings, NULL);
8128   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8129
8130   cu->list_in_scope = &file_symbols;
8131
8132   cu->language = pretend_language;
8133   cu->language_defn = language_def (cu->language);
8134
8135   /* Do line number decoding in read_file_scope () */
8136   process_die (cu->dies, cu);
8137
8138   /* For now fudge the Go package.  */
8139   if (cu->language == language_go)
8140     fixup_go_packaging (cu);
8141
8142   /* Now that we have processed all the DIEs in the CU, all the types 
8143      should be complete, and it should now be safe to compute all of the
8144      physnames.  */
8145   compute_delayed_physnames (cu);
8146   do_cleanups (delayed_list_cleanup);
8147
8148   /* Some compilers don't define a DW_AT_high_pc attribute for the
8149      compilation unit.  If the DW_AT_high_pc is missing, synthesize
8150      it, by scanning the DIE's below the compilation unit.  */
8151   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
8152
8153   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8154   static_block = end_symtab_get_static_block (addr, 0, 1);
8155
8156   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8157      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8158      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
8159      addrmap to help ensure it has an accurate map of pc values belonging to
8160      this comp unit.  */
8161   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8162
8163   cust = end_symtab_from_static_block (static_block,
8164                                        SECT_OFF_TEXT (objfile), 0);
8165
8166   if (cust != NULL)
8167     {
8168       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
8169
8170       /* Set symtab language to language from DW_AT_language.  If the
8171          compilation is from a C file generated by language preprocessors, do
8172          not set the language if it was already deduced by start_subfile.  */
8173       if (!(cu->language == language_c
8174             && COMPUNIT_FILETABS (cust)->language != language_unknown))
8175         COMPUNIT_FILETABS (cust)->language = cu->language;
8176
8177       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
8178          produce DW_AT_location with location lists but it can be possibly
8179          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
8180          there were bugs in prologue debug info, fixed later in GCC-4.5
8181          by "unwind info for epilogues" patch (which is not directly related).
8182
8183          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8184          needed, it would be wrong due to missing DW_AT_producer there.
8185
8186          Still one can confuse GDB by using non-standard GCC compilation
8187          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8188          */ 
8189       if (cu->has_loclist && gcc_4_minor >= 5)
8190         cust->locations_valid = 1;
8191
8192       if (gcc_4_minor >= 5)
8193         cust->epilogue_unwind_valid = 1;
8194
8195       cust->call_site_htab = cu->call_site_htab;
8196     }
8197
8198   if (dwarf2_per_objfile->using_index)
8199     per_cu->v.quick->compunit_symtab = cust;
8200   else
8201     {
8202       struct partial_symtab *pst = per_cu->v.psymtab;
8203       pst->compunit_symtab = cust;
8204       pst->readin = 1;
8205     }
8206
8207   /* Push it for inclusion processing later.  */
8208   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8209
8210   do_cleanups (back_to);
8211 }
8212
8213 /* Generate full symbol information for type unit PER_CU, whose DIEs have
8214    already been loaded into memory.  */
8215
8216 static void
8217 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8218                         enum language pretend_language)
8219 {
8220   struct dwarf2_cu *cu = per_cu->cu;
8221   struct objfile *objfile = per_cu->objfile;
8222   struct compunit_symtab *cust;
8223   struct cleanup *back_to, *delayed_list_cleanup;
8224   struct signatured_type *sig_type;
8225
8226   gdb_assert (per_cu->is_debug_types);
8227   sig_type = (struct signatured_type *) per_cu;
8228
8229   buildsym_init ();
8230   back_to = make_cleanup (really_free_pendings, NULL);
8231   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8232
8233   cu->list_in_scope = &file_symbols;
8234
8235   cu->language = pretend_language;
8236   cu->language_defn = language_def (cu->language);
8237
8238   /* The symbol tables are set up in read_type_unit_scope.  */
8239   process_die (cu->dies, cu);
8240
8241   /* For now fudge the Go package.  */
8242   if (cu->language == language_go)
8243     fixup_go_packaging (cu);
8244
8245   /* Now that we have processed all the DIEs in the CU, all the types 
8246      should be complete, and it should now be safe to compute all of the
8247      physnames.  */
8248   compute_delayed_physnames (cu);
8249   do_cleanups (delayed_list_cleanup);
8250
8251   /* TUs share symbol tables.
8252      If this is the first TU to use this symtab, complete the construction
8253      of it with end_expandable_symtab.  Otherwise, complete the addition of
8254      this TU's symbols to the existing symtab.  */
8255   if (sig_type->type_unit_group->compunit_symtab == NULL)
8256     {
8257       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8258       sig_type->type_unit_group->compunit_symtab = cust;
8259
8260       if (cust != NULL)
8261         {
8262           /* Set symtab language to language from DW_AT_language.  If the
8263              compilation is from a C file generated by language preprocessors,
8264              do not set the language if it was already deduced by
8265              start_subfile.  */
8266           if (!(cu->language == language_c
8267                 && COMPUNIT_FILETABS (cust)->language != language_c))
8268             COMPUNIT_FILETABS (cust)->language = cu->language;
8269         }
8270     }
8271   else
8272     {
8273       augment_type_symtab ();
8274       cust = sig_type->type_unit_group->compunit_symtab;
8275     }
8276
8277   if (dwarf2_per_objfile->using_index)
8278     per_cu->v.quick->compunit_symtab = cust;
8279   else
8280     {
8281       struct partial_symtab *pst = per_cu->v.psymtab;
8282       pst->compunit_symtab = cust;
8283       pst->readin = 1;
8284     }
8285
8286   do_cleanups (back_to);
8287 }
8288
8289 /* Process an imported unit DIE.  */
8290
8291 static void
8292 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8293 {
8294   struct attribute *attr;
8295
8296   /* For now we don't handle imported units in type units.  */
8297   if (cu->per_cu->is_debug_types)
8298     {
8299       error (_("Dwarf Error: DW_TAG_imported_unit is not"
8300                " supported in type units [in module %s]"),
8301              objfile_name (cu->objfile));
8302     }
8303
8304   attr = dwarf2_attr (die, DW_AT_import, cu);
8305   if (attr != NULL)
8306     {
8307       struct dwarf2_per_cu_data *per_cu;
8308       sect_offset offset;
8309       int is_dwz;
8310
8311       offset = dwarf2_get_ref_die_offset (attr);
8312       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8313       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
8314
8315       /* If necessary, add it to the queue and load its DIEs.  */
8316       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8317         load_full_comp_unit (per_cu, cu->language);
8318
8319       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8320                      per_cu);
8321     }
8322 }
8323
8324 /* Reset the in_process bit of a die.  */
8325
8326 static void
8327 reset_die_in_process (void *arg)
8328 {
8329   struct die_info *die = (struct die_info *) arg;
8330
8331   die->in_process = 0;
8332 }
8333
8334 /* Process a die and its children.  */
8335
8336 static void
8337 process_die (struct die_info *die, struct dwarf2_cu *cu)
8338 {
8339   struct cleanup *in_process;
8340
8341   /* We should only be processing those not already in process.  */
8342   gdb_assert (!die->in_process);
8343
8344   die->in_process = 1;
8345   in_process = make_cleanup (reset_die_in_process,die);
8346
8347   switch (die->tag)
8348     {
8349     case DW_TAG_padding:
8350       break;
8351     case DW_TAG_compile_unit:
8352     case DW_TAG_partial_unit:
8353       read_file_scope (die, cu);
8354       break;
8355     case DW_TAG_type_unit:
8356       read_type_unit_scope (die, cu);
8357       break;
8358     case DW_TAG_subprogram:
8359     case DW_TAG_inlined_subroutine:
8360       read_func_scope (die, cu);
8361       break;
8362     case DW_TAG_lexical_block:
8363     case DW_TAG_try_block:
8364     case DW_TAG_catch_block:
8365       read_lexical_block_scope (die, cu);
8366       break;
8367     case DW_TAG_call_site:
8368     case DW_TAG_GNU_call_site:
8369       read_call_site_scope (die, cu);
8370       break;
8371     case DW_TAG_class_type:
8372     case DW_TAG_interface_type:
8373     case DW_TAG_structure_type:
8374     case DW_TAG_union_type:
8375       process_structure_scope (die, cu);
8376       break;
8377     case DW_TAG_enumeration_type:
8378       process_enumeration_scope (die, cu);
8379       break;
8380
8381     /* These dies have a type, but processing them does not create
8382        a symbol or recurse to process the children.  Therefore we can
8383        read them on-demand through read_type_die.  */
8384     case DW_TAG_subroutine_type:
8385     case DW_TAG_set_type:
8386     case DW_TAG_array_type:
8387     case DW_TAG_pointer_type:
8388     case DW_TAG_ptr_to_member_type:
8389     case DW_TAG_reference_type:
8390     case DW_TAG_string_type:
8391       break;
8392
8393     case DW_TAG_base_type:
8394     case DW_TAG_subrange_type:
8395     case DW_TAG_typedef:
8396       /* Add a typedef symbol for the type definition, if it has a
8397          DW_AT_name.  */
8398       new_symbol (die, read_type_die (die, cu), cu);
8399       break;
8400     case DW_TAG_common_block:
8401       read_common_block (die, cu);
8402       break;
8403     case DW_TAG_common_inclusion:
8404       break;
8405     case DW_TAG_namespace:
8406       cu->processing_has_namespace_info = 1;
8407       read_namespace (die, cu);
8408       break;
8409     case DW_TAG_module:
8410       cu->processing_has_namespace_info = 1;
8411       read_module (die, cu);
8412       break;
8413     case DW_TAG_imported_declaration:
8414       cu->processing_has_namespace_info = 1;
8415       if (read_namespace_alias (die, cu))
8416         break;
8417       /* The declaration is not a global namespace alias: fall through.  */
8418     case DW_TAG_imported_module:
8419       cu->processing_has_namespace_info = 1;
8420       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8421                                  || cu->language != language_fortran))
8422         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8423                    dwarf_tag_name (die->tag));
8424       read_import_statement (die, cu);
8425       break;
8426
8427     case DW_TAG_imported_unit:
8428       process_imported_unit_die (die, cu);
8429       break;
8430
8431     default:
8432       new_symbol (die, NULL, cu);
8433       break;
8434     }
8435
8436   do_cleanups (in_process);
8437 }
8438 \f
8439 /* DWARF name computation.  */
8440
8441 /* A helper function for dwarf2_compute_name which determines whether DIE
8442    needs to have the name of the scope prepended to the name listed in the
8443    die.  */
8444
8445 static int
8446 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8447 {
8448   struct attribute *attr;
8449
8450   switch (die->tag)
8451     {
8452     case DW_TAG_namespace:
8453     case DW_TAG_typedef:
8454     case DW_TAG_class_type:
8455     case DW_TAG_interface_type:
8456     case DW_TAG_structure_type:
8457     case DW_TAG_union_type:
8458     case DW_TAG_enumeration_type:
8459     case DW_TAG_enumerator:
8460     case DW_TAG_subprogram:
8461     case DW_TAG_inlined_subroutine:
8462     case DW_TAG_member:
8463     case DW_TAG_imported_declaration:
8464       return 1;
8465
8466     case DW_TAG_variable:
8467     case DW_TAG_constant:
8468       /* We only need to prefix "globally" visible variables.  These include
8469          any variable marked with DW_AT_external or any variable that
8470          lives in a namespace.  [Variables in anonymous namespaces
8471          require prefixing, but they are not DW_AT_external.]  */
8472
8473       if (dwarf2_attr (die, DW_AT_specification, cu))
8474         {
8475           struct dwarf2_cu *spec_cu = cu;
8476
8477           return die_needs_namespace (die_specification (die, &spec_cu),
8478                                       spec_cu);
8479         }
8480
8481       attr = dwarf2_attr (die, DW_AT_external, cu);
8482       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8483           && die->parent->tag != DW_TAG_module)
8484         return 0;
8485       /* A variable in a lexical block of some kind does not need a
8486          namespace, even though in C++ such variables may be external
8487          and have a mangled name.  */
8488       if (die->parent->tag ==  DW_TAG_lexical_block
8489           || die->parent->tag ==  DW_TAG_try_block
8490           || die->parent->tag ==  DW_TAG_catch_block
8491           || die->parent->tag == DW_TAG_subprogram)
8492         return 0;
8493       return 1;
8494
8495     default:
8496       return 0;
8497     }
8498 }
8499
8500 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8501    compute the physname for the object, which include a method's:
8502    - formal parameters (C++),
8503    - receiver type (Go),
8504
8505    The term "physname" is a bit confusing.
8506    For C++, for example, it is the demangled name.
8507    For Go, for example, it's the mangled name.
8508
8509    For Ada, return the DIE's linkage name rather than the fully qualified
8510    name.  PHYSNAME is ignored..
8511
8512    The result is allocated on the objfile_obstack and canonicalized.  */
8513
8514 static const char *
8515 dwarf2_compute_name (const char *name,
8516                      struct die_info *die, struct dwarf2_cu *cu,
8517                      int physname)
8518 {
8519   struct objfile *objfile = cu->objfile;
8520
8521   if (name == NULL)
8522     name = dwarf2_name (die, cu);
8523
8524   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
8525      but otherwise compute it by typename_concat inside GDB.
8526      FIXME: Actually this is not really true, or at least not always true.
8527      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
8528      Fortran names because there is no mangling standard.  So new_symbol_full
8529      will set the demangled name to the result of dwarf2_full_name, and it is
8530      the demangled name that GDB uses if it exists.  */
8531   if (cu->language == language_ada
8532       || (cu->language == language_fortran && physname))
8533     {
8534       /* For Ada unit, we prefer the linkage name over the name, as
8535          the former contains the exported name, which the user expects
8536          to be able to reference.  Ideally, we want the user to be able
8537          to reference this entity using either natural or linkage name,
8538          but we haven't started looking at this enhancement yet.  */
8539       const char *linkage_name;
8540
8541       linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8542       if (linkage_name == NULL)
8543         linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8544       if (linkage_name != NULL)
8545         return linkage_name;
8546     }
8547
8548   /* These are the only languages we know how to qualify names in.  */
8549   if (name != NULL
8550       && (cu->language == language_cplus
8551           || cu->language == language_fortran || cu->language == language_d
8552           || cu->language == language_rust))
8553     {
8554       if (die_needs_namespace (die, cu))
8555         {
8556           long length;
8557           const char *prefix;
8558           const char *canonical_name = NULL;
8559
8560           string_file buf;
8561
8562           prefix = determine_prefix (die, cu);
8563           if (*prefix != '\0')
8564             {
8565               char *prefixed_name = typename_concat (NULL, prefix, name,
8566                                                      physname, cu);
8567
8568               buf.puts (prefixed_name);
8569               xfree (prefixed_name);
8570             }
8571           else
8572             buf.puts (name);
8573
8574           /* Template parameters may be specified in the DIE's DW_AT_name, or
8575              as children with DW_TAG_template_type_param or
8576              DW_TAG_value_type_param.  If the latter, add them to the name
8577              here.  If the name already has template parameters, then
8578              skip this step; some versions of GCC emit both, and
8579              it is more efficient to use the pre-computed name.
8580
8581              Something to keep in mind about this process: it is very
8582              unlikely, or in some cases downright impossible, to produce
8583              something that will match the mangled name of a function.
8584              If the definition of the function has the same debug info,
8585              we should be able to match up with it anyway.  But fallbacks
8586              using the minimal symbol, for instance to find a method
8587              implemented in a stripped copy of libstdc++, will not work.
8588              If we do not have debug info for the definition, we will have to
8589              match them up some other way.
8590
8591              When we do name matching there is a related problem with function
8592              templates; two instantiated function templates are allowed to
8593              differ only by their return types, which we do not add here.  */
8594
8595           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8596             {
8597               struct attribute *attr;
8598               struct die_info *child;
8599               int first = 1;
8600
8601               die->building_fullname = 1;
8602
8603               for (child = die->child; child != NULL; child = child->sibling)
8604                 {
8605                   struct type *type;
8606                   LONGEST value;
8607                   const gdb_byte *bytes;
8608                   struct dwarf2_locexpr_baton *baton;
8609                   struct value *v;
8610
8611                   if (child->tag != DW_TAG_template_type_param
8612                       && child->tag != DW_TAG_template_value_param)
8613                     continue;
8614
8615                   if (first)
8616                     {
8617                       buf.puts ("<");
8618                       first = 0;
8619                     }
8620                   else
8621                     buf.puts (", ");
8622
8623                   attr = dwarf2_attr (child, DW_AT_type, cu);
8624                   if (attr == NULL)
8625                     {
8626                       complaint (&symfile_complaints,
8627                                  _("template parameter missing DW_AT_type"));
8628                       buf.puts ("UNKNOWN_TYPE");
8629                       continue;
8630                     }
8631                   type = die_type (child, cu);
8632
8633                   if (child->tag == DW_TAG_template_type_param)
8634                     {
8635                       c_print_type (type, "", &buf, -1, 0, &type_print_raw_options);
8636                       continue;
8637                     }
8638
8639                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8640                   if (attr == NULL)
8641                     {
8642                       complaint (&symfile_complaints,
8643                                  _("template parameter missing "
8644                                    "DW_AT_const_value"));
8645                       buf.puts ("UNKNOWN_VALUE");
8646                       continue;
8647                     }
8648
8649                   dwarf2_const_value_attr (attr, type, name,
8650                                            &cu->comp_unit_obstack, cu,
8651                                            &value, &bytes, &baton);
8652
8653                   if (TYPE_NOSIGN (type))
8654                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8655                        changed, this can use value_print instead.  */
8656                     c_printchar (value, type, &buf);
8657                   else
8658                     {
8659                       struct value_print_options opts;
8660
8661                       if (baton != NULL)
8662                         v = dwarf2_evaluate_loc_desc (type, NULL,
8663                                                       baton->data,
8664                                                       baton->size,
8665                                                       baton->per_cu);
8666                       else if (bytes != NULL)
8667                         {
8668                           v = allocate_value (type);
8669                           memcpy (value_contents_writeable (v), bytes,
8670                                   TYPE_LENGTH (type));
8671                         }
8672                       else
8673                         v = value_from_longest (type, value);
8674
8675                       /* Specify decimal so that we do not depend on
8676                          the radix.  */
8677                       get_formatted_print_options (&opts, 'd');
8678                       opts.raw = 1;
8679                       value_print (v, &buf, &opts);
8680                       release_value (v);
8681                       value_free (v);
8682                     }
8683                 }
8684
8685               die->building_fullname = 0;
8686
8687               if (!first)
8688                 {
8689                   /* Close the argument list, with a space if necessary
8690                      (nested templates).  */
8691                   if (!buf.empty () && buf.string ().back () == '>')
8692                     buf.puts (" >");
8693                   else
8694                     buf.puts (">");
8695                 }
8696             }
8697
8698           /* For C++ methods, append formal parameter type
8699              information, if PHYSNAME.  */
8700
8701           if (physname && die->tag == DW_TAG_subprogram
8702               && cu->language == language_cplus)
8703             {
8704               struct type *type = read_type_die (die, cu);
8705
8706               c_type_print_args (type, &buf, 1, cu->language,
8707                                  &type_print_raw_options);
8708
8709               if (cu->language == language_cplus)
8710                 {
8711                   /* Assume that an artificial first parameter is
8712                      "this", but do not crash if it is not.  RealView
8713                      marks unnamed (and thus unused) parameters as
8714                      artificial; there is no way to differentiate
8715                      the two cases.  */
8716                   if (TYPE_NFIELDS (type) > 0
8717                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8718                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8719                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8720                                                                         0))))
8721                     buf.puts (" const");
8722                 }
8723             }
8724
8725           const std::string &intermediate_name = buf.string ();
8726
8727           if (cu->language == language_cplus)
8728             canonical_name
8729               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
8730                                           &objfile->per_bfd->storage_obstack);
8731
8732           /* If we only computed INTERMEDIATE_NAME, or if
8733              INTERMEDIATE_NAME is already canonical, then we need to
8734              copy it to the appropriate obstack.  */
8735           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
8736             name = ((const char *)
8737                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
8738                                    intermediate_name.c_str (),
8739                                    intermediate_name.length ()));
8740           else
8741             name = canonical_name;
8742         }
8743     }
8744
8745   return name;
8746 }
8747
8748 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8749    If scope qualifiers are appropriate they will be added.  The result
8750    will be allocated on the storage_obstack, or NULL if the DIE does
8751    not have a name.  NAME may either be from a previous call to
8752    dwarf2_name or NULL.
8753
8754    The output string will be canonicalized (if C++).  */
8755
8756 static const char *
8757 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8758 {
8759   return dwarf2_compute_name (name, die, cu, 0);
8760 }
8761
8762 /* Construct a physname for the given DIE in CU.  NAME may either be
8763    from a previous call to dwarf2_name or NULL.  The result will be
8764    allocated on the objfile_objstack or NULL if the DIE does not have a
8765    name.
8766
8767    The output string will be canonicalized (if C++).  */
8768
8769 static const char *
8770 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8771 {
8772   struct objfile *objfile = cu->objfile;
8773   const char *retval, *mangled = NULL, *canon = NULL;
8774   struct cleanup *back_to;
8775   int need_copy = 1;
8776
8777   /* In this case dwarf2_compute_name is just a shortcut not building anything
8778      on its own.  */
8779   if (!die_needs_namespace (die, cu))
8780     return dwarf2_compute_name (name, die, cu, 1);
8781
8782   back_to = make_cleanup (null_cleanup, NULL);
8783
8784   mangled = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8785   if (mangled == NULL)
8786     mangled = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8787
8788   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
8789      See https://github.com/rust-lang/rust/issues/32925.  */
8790   if (cu->language == language_rust && mangled != NULL
8791       && strchr (mangled, '{') != NULL)
8792     mangled = NULL;
8793
8794   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8795      has computed.  */
8796   if (mangled != NULL)
8797     {
8798       char *demangled;
8799
8800       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8801          type.  It is easier for GDB users to search for such functions as
8802          `name(params)' than `long name(params)'.  In such case the minimal
8803          symbol names do not match the full symbol names but for template
8804          functions there is never a need to look up their definition from their
8805          declaration so the only disadvantage remains the minimal symbol
8806          variant `long name(params)' does not have the proper inferior type.
8807          */
8808
8809       if (cu->language == language_go)
8810         {
8811           /* This is a lie, but we already lie to the caller new_symbol_full.
8812              new_symbol_full assumes we return the mangled name.
8813              This just undoes that lie until things are cleaned up.  */
8814           demangled = NULL;
8815         }
8816       else
8817         {
8818           demangled = gdb_demangle (mangled,
8819                                     (DMGL_PARAMS | DMGL_ANSI | DMGL_RET_DROP));
8820         }
8821       if (demangled)
8822         {
8823           make_cleanup (xfree, demangled);
8824           canon = demangled;
8825         }
8826       else
8827         {
8828           canon = mangled;
8829           need_copy = 0;
8830         }
8831     }
8832
8833   if (canon == NULL || check_physname)
8834     {
8835       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8836
8837       if (canon != NULL && strcmp (physname, canon) != 0)
8838         {
8839           /* It may not mean a bug in GDB.  The compiler could also
8840              compute DW_AT_linkage_name incorrectly.  But in such case
8841              GDB would need to be bug-to-bug compatible.  */
8842
8843           complaint (&symfile_complaints,
8844                      _("Computed physname <%s> does not match demangled <%s> "
8845                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8846                      physname, canon, mangled, die->offset.sect_off,
8847                      objfile_name (objfile));
8848
8849           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8850              is available here - over computed PHYSNAME.  It is safer
8851              against both buggy GDB and buggy compilers.  */
8852
8853           retval = canon;
8854         }
8855       else
8856         {
8857           retval = physname;
8858           need_copy = 0;
8859         }
8860     }
8861   else
8862     retval = canon;
8863
8864   if (need_copy)
8865     retval = ((const char *)
8866               obstack_copy0 (&objfile->per_bfd->storage_obstack,
8867                              retval, strlen (retval)));
8868
8869   do_cleanups (back_to);
8870   return retval;
8871 }
8872
8873 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8874    a new symbol for it.
8875
8876    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8877
8878 static int
8879 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8880 {
8881   struct attribute *attr;
8882
8883   /* If the die does not have a name, this is not a namespace
8884      alias.  */
8885   attr = dwarf2_attr (die, DW_AT_name, cu);
8886   if (attr != NULL)
8887     {
8888       int num;
8889       struct die_info *d = die;
8890       struct dwarf2_cu *imported_cu = cu;
8891
8892       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8893          keep inspecting DIEs until we hit the underlying import.  */
8894 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8895       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8896         {
8897           attr = dwarf2_attr (d, DW_AT_import, cu);
8898           if (attr == NULL)
8899             break;
8900
8901           d = follow_die_ref (d, attr, &imported_cu);
8902           if (d->tag != DW_TAG_imported_declaration)
8903             break;
8904         }
8905
8906       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8907         {
8908           complaint (&symfile_complaints,
8909                      _("DIE at 0x%x has too many recursively imported "
8910                        "declarations"), d->offset.sect_off);
8911           return 0;
8912         }
8913
8914       if (attr != NULL)
8915         {
8916           struct type *type;
8917           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8918
8919           type = get_die_type_at_offset (offset, cu->per_cu);
8920           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8921             {
8922               /* This declaration is a global namespace alias.  Add
8923                  a symbol for it whose type is the aliased namespace.  */
8924               new_symbol (die, type, cu);
8925               return 1;
8926             }
8927         }
8928     }
8929
8930   return 0;
8931 }
8932
8933 /* Return the using directives repository (global or local?) to use in the
8934    current context for LANGUAGE.
8935
8936    For Ada, imported declarations can materialize renamings, which *may* be
8937    global.  However it is impossible (for now?) in DWARF to distinguish
8938    "external" imported declarations and "static" ones.  As all imported
8939    declarations seem to be static in all other languages, make them all CU-wide
8940    global only in Ada.  */
8941
8942 static struct using_direct **
8943 using_directives (enum language language)
8944 {
8945   if (language == language_ada && context_stack_depth == 0)
8946     return &global_using_directives;
8947   else
8948     return &local_using_directives;
8949 }
8950
8951 /* Read the import statement specified by the given die and record it.  */
8952
8953 static void
8954 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8955 {
8956   struct objfile *objfile = cu->objfile;
8957   struct attribute *import_attr;
8958   struct die_info *imported_die, *child_die;
8959   struct dwarf2_cu *imported_cu;
8960   const char *imported_name;
8961   const char *imported_name_prefix;
8962   const char *canonical_name;
8963   const char *import_alias;
8964   const char *imported_declaration = NULL;
8965   const char *import_prefix;
8966   VEC (const_char_ptr) *excludes = NULL;
8967   struct cleanup *cleanups;
8968
8969   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8970   if (import_attr == NULL)
8971     {
8972       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8973                  dwarf_tag_name (die->tag));
8974       return;
8975     }
8976
8977   imported_cu = cu;
8978   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8979   imported_name = dwarf2_name (imported_die, imported_cu);
8980   if (imported_name == NULL)
8981     {
8982       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8983
8984         The import in the following code:
8985         namespace A
8986           {
8987             typedef int B;
8988           }
8989
8990         int main ()
8991           {
8992             using A::B;
8993             B b;
8994             return b;
8995           }
8996
8997         ...
8998          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8999             <52>   DW_AT_decl_file   : 1
9000             <53>   DW_AT_decl_line   : 6
9001             <54>   DW_AT_import      : <0x75>
9002          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
9003             <59>   DW_AT_name        : B
9004             <5b>   DW_AT_decl_file   : 1
9005             <5c>   DW_AT_decl_line   : 2
9006             <5d>   DW_AT_type        : <0x6e>
9007         ...
9008          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
9009             <76>   DW_AT_byte_size   : 4
9010             <77>   DW_AT_encoding    : 5        (signed)
9011
9012         imports the wrong die ( 0x75 instead of 0x58 ).
9013         This case will be ignored until the gcc bug is fixed.  */
9014       return;
9015     }
9016
9017   /* Figure out the local name after import.  */
9018   import_alias = dwarf2_name (die, cu);
9019
9020   /* Figure out where the statement is being imported to.  */
9021   import_prefix = determine_prefix (die, cu);
9022
9023   /* Figure out what the scope of the imported die is and prepend it
9024      to the name of the imported die.  */
9025   imported_name_prefix = determine_prefix (imported_die, imported_cu);
9026
9027   if (imported_die->tag != DW_TAG_namespace
9028       && imported_die->tag != DW_TAG_module)
9029     {
9030       imported_declaration = imported_name;
9031       canonical_name = imported_name_prefix;
9032     }
9033   else if (strlen (imported_name_prefix) > 0)
9034     canonical_name = obconcat (&objfile->objfile_obstack,
9035                                imported_name_prefix,
9036                                (cu->language == language_d ? "." : "::"),
9037                                imported_name, (char *) NULL);
9038   else
9039     canonical_name = imported_name;
9040
9041   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
9042
9043   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
9044     for (child_die = die->child; child_die && child_die->tag;
9045          child_die = sibling_die (child_die))
9046       {
9047         /* DWARF-4: A Fortran use statement with a “rename list” may be
9048            represented by an imported module entry with an import attribute
9049            referring to the module and owned entries corresponding to those
9050            entities that are renamed as part of being imported.  */
9051
9052         if (child_die->tag != DW_TAG_imported_declaration)
9053           {
9054             complaint (&symfile_complaints,
9055                        _("child DW_TAG_imported_declaration expected "
9056                          "- DIE at 0x%x [in module %s]"),
9057                        child_die->offset.sect_off, objfile_name (objfile));
9058             continue;
9059           }
9060
9061         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
9062         if (import_attr == NULL)
9063           {
9064             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
9065                        dwarf_tag_name (child_die->tag));
9066             continue;
9067           }
9068
9069         imported_cu = cu;
9070         imported_die = follow_die_ref_or_sig (child_die, import_attr,
9071                                               &imported_cu);
9072         imported_name = dwarf2_name (imported_die, imported_cu);
9073         if (imported_name == NULL)
9074           {
9075             complaint (&symfile_complaints,
9076                        _("child DW_TAG_imported_declaration has unknown "
9077                          "imported name - DIE at 0x%x [in module %s]"),
9078                        child_die->offset.sect_off, objfile_name (objfile));
9079             continue;
9080           }
9081
9082         VEC_safe_push (const_char_ptr, excludes, imported_name);
9083
9084         process_die (child_die, cu);
9085       }
9086
9087   add_using_directive (using_directives (cu->language),
9088                        import_prefix,
9089                        canonical_name,
9090                        import_alias,
9091                        imported_declaration,
9092                        excludes,
9093                        0,
9094                        &objfile->objfile_obstack);
9095
9096   do_cleanups (cleanups);
9097 }
9098
9099 /* Cleanup function for handle_DW_AT_stmt_list.  */
9100
9101 static void
9102 free_cu_line_header (void *arg)
9103 {
9104   struct dwarf2_cu *cu = (struct dwarf2_cu *) arg;
9105
9106   free_line_header (cu->line_header);
9107   cu->line_header = NULL;
9108 }
9109
9110 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9111    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9112    this, it was first present in GCC release 4.3.0.  */
9113
9114 static int
9115 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9116 {
9117   if (!cu->checked_producer)
9118     check_producer (cu);
9119
9120   return cu->producer_is_gcc_lt_4_3;
9121 }
9122
9123 static void
9124 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
9125                          const char **name, const char **comp_dir)
9126 {
9127   /* Find the filename.  Do not use dwarf2_name here, since the filename
9128      is not a source language identifier.  */
9129   *name = dwarf2_string_attr (die, DW_AT_name, cu);
9130   *comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9131
9132   if (*comp_dir == NULL
9133       && producer_is_gcc_lt_4_3 (cu) && *name != NULL
9134       && IS_ABSOLUTE_PATH (*name))
9135     {
9136       char *d = ldirname (*name);
9137
9138       *comp_dir = d;
9139       if (d != NULL)
9140         make_cleanup (xfree, d);
9141     }
9142   if (*comp_dir != NULL)
9143     {
9144       /* Irix 6.2 native cc prepends <machine>.: to the compilation
9145          directory, get rid of it.  */
9146       const char *cp = strchr (*comp_dir, ':');
9147
9148       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9149         *comp_dir = cp + 1;
9150     }
9151
9152   if (*name == NULL)
9153     *name = "<unknown>";
9154 }
9155
9156 /* Handle DW_AT_stmt_list for a compilation unit.
9157    DIE is the DW_TAG_compile_unit die for CU.
9158    COMP_DIR is the compilation directory.  LOWPC is passed to
9159    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
9160
9161 static void
9162 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
9163                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
9164 {
9165   struct objfile *objfile = dwarf2_per_objfile->objfile;
9166   struct attribute *attr;
9167   unsigned int line_offset;
9168   struct line_header line_header_local;
9169   hashval_t line_header_local_hash;
9170   unsigned u;
9171   void **slot;
9172   int decode_mapping;
9173
9174   gdb_assert (! cu->per_cu->is_debug_types);
9175
9176   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9177   if (attr == NULL)
9178     return;
9179
9180   line_offset = DW_UNSND (attr);
9181
9182   /* The line header hash table is only created if needed (it exists to
9183      prevent redundant reading of the line table for partial_units).
9184      If we're given a partial_unit, we'll need it.  If we're given a
9185      compile_unit, then use the line header hash table if it's already
9186      created, but don't create one just yet.  */
9187
9188   if (dwarf2_per_objfile->line_header_hash == NULL
9189       && die->tag == DW_TAG_partial_unit)
9190     {
9191       dwarf2_per_objfile->line_header_hash
9192         = htab_create_alloc_ex (127, line_header_hash_voidp,
9193                                 line_header_eq_voidp,
9194                                 free_line_header_voidp,
9195                                 &objfile->objfile_obstack,
9196                                 hashtab_obstack_allocate,
9197                                 dummy_obstack_deallocate);
9198     }
9199
9200   line_header_local.offset.sect_off = line_offset;
9201   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9202   line_header_local_hash = line_header_hash (&line_header_local);
9203   if (dwarf2_per_objfile->line_header_hash != NULL)
9204     {
9205       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9206                                        &line_header_local,
9207                                        line_header_local_hash, NO_INSERT);
9208
9209       /* For DW_TAG_compile_unit we need info like symtab::linetable which
9210          is not present in *SLOT (since if there is something in *SLOT then
9211          it will be for a partial_unit).  */
9212       if (die->tag == DW_TAG_partial_unit && slot != NULL)
9213         {
9214           gdb_assert (*slot != NULL);
9215           cu->line_header = (struct line_header *) *slot;
9216           return;
9217         }
9218     }
9219
9220   /* dwarf_decode_line_header does not yet provide sufficient information.
9221      We always have to call also dwarf_decode_lines for it.  */
9222   cu->line_header = dwarf_decode_line_header (line_offset, cu);
9223   if (cu->line_header == NULL)
9224     return;
9225
9226   if (dwarf2_per_objfile->line_header_hash == NULL)
9227     slot = NULL;
9228   else
9229     {
9230       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9231                                        &line_header_local,
9232                                        line_header_local_hash, INSERT);
9233       gdb_assert (slot != NULL);
9234     }
9235   if (slot != NULL && *slot == NULL)
9236     {
9237       /* This newly decoded line number information unit will be owned
9238          by line_header_hash hash table.  */
9239       *slot = cu->line_header;
9240     }
9241   else
9242     {
9243       /* We cannot free any current entry in (*slot) as that struct line_header
9244          may be already used by multiple CUs.  Create only temporary decoded
9245          line_header for this CU - it may happen at most once for each line
9246          number information unit.  And if we're not using line_header_hash
9247          then this is what we want as well.  */
9248       gdb_assert (die->tag != DW_TAG_partial_unit);
9249       make_cleanup (free_cu_line_header, cu);
9250     }
9251   decode_mapping = (die->tag != DW_TAG_partial_unit);
9252   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9253                       decode_mapping);
9254 }
9255
9256 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
9257
9258 static void
9259 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
9260 {
9261   struct objfile *objfile = dwarf2_per_objfile->objfile;
9262   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9263   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
9264   CORE_ADDR lowpc = ((CORE_ADDR) -1);
9265   CORE_ADDR highpc = ((CORE_ADDR) 0);
9266   struct attribute *attr;
9267   const char *name = NULL;
9268   const char *comp_dir = NULL;
9269   struct die_info *child_die;
9270   CORE_ADDR baseaddr;
9271
9272   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9273
9274   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
9275
9276   /* If we didn't find a lowpc, set it to highpc to avoid complaints
9277      from finish_block.  */
9278   if (lowpc == ((CORE_ADDR) -1))
9279     lowpc = highpc;
9280   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
9281
9282   find_file_and_directory (die, cu, &name, &comp_dir);
9283
9284   prepare_one_comp_unit (cu, die, cu->language);
9285
9286   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9287      standardised yet.  As a workaround for the language detection we fall
9288      back to the DW_AT_producer string.  */
9289   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9290     cu->language = language_opencl;
9291
9292   /* Similar hack for Go.  */
9293   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9294     set_cu_language (DW_LANG_Go, cu);
9295
9296   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
9297
9298   /* Decode line number information if present.  We do this before
9299      processing child DIEs, so that the line header table is available
9300      for DW_AT_decl_file.  */
9301   handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
9302
9303   /* Process all dies in compilation unit.  */
9304   if (die->child != NULL)
9305     {
9306       child_die = die->child;
9307       while (child_die && child_die->tag)
9308         {
9309           process_die (child_die, cu);
9310           child_die = sibling_die (child_die);
9311         }
9312     }
9313
9314   /* Decode macro information, if present.  Dwarf 2 macro information
9315      refers to information in the line number info statement program
9316      header, so we can only read it if we've read the header
9317      successfully.  */
9318   attr = dwarf2_attr (die, DW_AT_macros, cu);
9319   if (attr == NULL)
9320     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9321   if (attr && cu->line_header)
9322     {
9323       if (dwarf2_attr (die, DW_AT_macro_info, cu))
9324         complaint (&symfile_complaints,
9325                    _("CU refers to both DW_AT_macros and DW_AT_macro_info"));
9326
9327       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
9328     }
9329   else
9330     {
9331       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9332       if (attr && cu->line_header)
9333         {
9334           unsigned int macro_offset = DW_UNSND (attr);
9335
9336           dwarf_decode_macros (cu, macro_offset, 0);
9337         }
9338     }
9339
9340   do_cleanups (back_to);
9341 }
9342
9343 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9344    Create the set of symtabs used by this TU, or if this TU is sharing
9345    symtabs with another TU and the symtabs have already been created
9346    then restore those symtabs in the line header.
9347    We don't need the pc/line-number mapping for type units.  */
9348
9349 static void
9350 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
9351 {
9352   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9353   struct type_unit_group *tu_group;
9354   int first_time;
9355   struct line_header *lh;
9356   struct attribute *attr;
9357   unsigned int i, line_offset;
9358   struct signatured_type *sig_type;
9359
9360   gdb_assert (per_cu->is_debug_types);
9361   sig_type = (struct signatured_type *) per_cu;
9362
9363   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9364
9365   /* If we're using .gdb_index (includes -readnow) then
9366      per_cu->type_unit_group may not have been set up yet.  */
9367   if (sig_type->type_unit_group == NULL)
9368     sig_type->type_unit_group = get_type_unit_group (cu, attr);
9369   tu_group = sig_type->type_unit_group;
9370
9371   /* If we've already processed this stmt_list there's no real need to
9372      do it again, we could fake it and just recreate the part we need
9373      (file name,index -> symtab mapping).  If data shows this optimization
9374      is useful we can do it then.  */
9375   first_time = tu_group->compunit_symtab == NULL;
9376
9377   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9378      debug info.  */
9379   lh = NULL;
9380   if (attr != NULL)
9381     {
9382       line_offset = DW_UNSND (attr);
9383       lh = dwarf_decode_line_header (line_offset, cu);
9384     }
9385   if (lh == NULL)
9386     {
9387       if (first_time)
9388         dwarf2_start_symtab (cu, "", NULL, 0);
9389       else
9390         {
9391           gdb_assert (tu_group->symtabs == NULL);
9392           restart_symtab (tu_group->compunit_symtab, "", 0);
9393         }
9394       return;
9395     }
9396
9397   cu->line_header = lh;
9398   make_cleanup (free_cu_line_header, cu);
9399
9400   if (first_time)
9401     {
9402       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
9403
9404       /* Note: We don't assign tu_group->compunit_symtab yet because we're
9405          still initializing it, and our caller (a few levels up)
9406          process_full_type_unit still needs to know if this is the first
9407          time.  */
9408
9409       tu_group->num_symtabs = lh->num_file_names;
9410       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
9411
9412       for (i = 0; i < lh->num_file_names; ++i)
9413         {
9414           const char *dir = NULL;
9415           struct file_entry *fe = &lh->file_names[i];
9416
9417           if (fe->dir_index && lh->include_dirs != NULL)
9418             dir = lh->include_dirs[fe->dir_index - 1];
9419           dwarf2_start_subfile (fe->name, dir);
9420
9421           if (current_subfile->symtab == NULL)
9422             {
9423               /* NOTE: start_subfile will recognize when it's been passed
9424                  a file it has already seen.  So we can't assume there's a
9425                  simple mapping from lh->file_names to subfiles, plus
9426                  lh->file_names may contain dups.  */
9427               current_subfile->symtab
9428                 = allocate_symtab (cust, current_subfile->name);
9429             }
9430
9431           fe->symtab = current_subfile->symtab;
9432           tu_group->symtabs[i] = fe->symtab;
9433         }
9434     }
9435   else
9436     {
9437       restart_symtab (tu_group->compunit_symtab, "", 0);
9438
9439       for (i = 0; i < lh->num_file_names; ++i)
9440         {
9441           struct file_entry *fe = &lh->file_names[i];
9442
9443           fe->symtab = tu_group->symtabs[i];
9444         }
9445     }
9446
9447   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9448      so they don't have a "real" (so to speak) symtab anyway.
9449      There is later code that will assign the main symtab to all symbols
9450      that don't have one.  We need to handle the case of a symbol with a
9451      missing symtab (DW_AT_decl_file) anyway.  */
9452 }
9453
9454 /* Process DW_TAG_type_unit.
9455    For TUs we want to skip the first top level sibling if it's not the
9456    actual type being defined by this TU.  In this case the first top
9457    level sibling is there to provide context only.  */
9458
9459 static void
9460 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9461 {
9462   struct die_info *child_die;
9463
9464   prepare_one_comp_unit (cu, die, language_minimal);
9465
9466   /* Initialize (or reinitialize) the machinery for building symtabs.
9467      We do this before processing child DIEs, so that the line header table
9468      is available for DW_AT_decl_file.  */
9469   setup_type_unit_groups (die, cu);
9470
9471   if (die->child != NULL)
9472     {
9473       child_die = die->child;
9474       while (child_die && child_die->tag)
9475         {
9476           process_die (child_die, cu);
9477           child_die = sibling_die (child_die);
9478         }
9479     }
9480 }
9481 \f
9482 /* DWO/DWP files.
9483
9484    http://gcc.gnu.org/wiki/DebugFission
9485    http://gcc.gnu.org/wiki/DebugFissionDWP
9486
9487    To simplify handling of both DWO files ("object" files with the DWARF info)
9488    and DWP files (a file with the DWOs packaged up into one file), we treat
9489    DWP files as having a collection of virtual DWO files.  */
9490
9491 static hashval_t
9492 hash_dwo_file (const void *item)
9493 {
9494   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
9495   hashval_t hash;
9496
9497   hash = htab_hash_string (dwo_file->dwo_name);
9498   if (dwo_file->comp_dir != NULL)
9499     hash += htab_hash_string (dwo_file->comp_dir);
9500   return hash;
9501 }
9502
9503 static int
9504 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9505 {
9506   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
9507   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
9508
9509   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9510     return 0;
9511   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9512     return lhs->comp_dir == rhs->comp_dir;
9513   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9514 }
9515
9516 /* Allocate a hash table for DWO files.  */
9517
9518 static htab_t
9519 allocate_dwo_file_hash_table (void)
9520 {
9521   struct objfile *objfile = dwarf2_per_objfile->objfile;
9522
9523   return htab_create_alloc_ex (41,
9524                                hash_dwo_file,
9525                                eq_dwo_file,
9526                                NULL,
9527                                &objfile->objfile_obstack,
9528                                hashtab_obstack_allocate,
9529                                dummy_obstack_deallocate);
9530 }
9531
9532 /* Lookup DWO file DWO_NAME.  */
9533
9534 static void **
9535 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9536 {
9537   struct dwo_file find_entry;
9538   void **slot;
9539
9540   if (dwarf2_per_objfile->dwo_files == NULL)
9541     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9542
9543   memset (&find_entry, 0, sizeof (find_entry));
9544   find_entry.dwo_name = dwo_name;
9545   find_entry.comp_dir = comp_dir;
9546   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9547
9548   return slot;
9549 }
9550
9551 static hashval_t
9552 hash_dwo_unit (const void *item)
9553 {
9554   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
9555
9556   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9557   return dwo_unit->signature;
9558 }
9559
9560 static int
9561 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9562 {
9563   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
9564   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
9565
9566   /* The signature is assumed to be unique within the DWO file.
9567      So while object file CU dwo_id's always have the value zero,
9568      that's OK, assuming each object file DWO file has only one CU,
9569      and that's the rule for now.  */
9570   return lhs->signature == rhs->signature;
9571 }
9572
9573 /* Allocate a hash table for DWO CUs,TUs.
9574    There is one of these tables for each of CUs,TUs for each DWO file.  */
9575
9576 static htab_t
9577 allocate_dwo_unit_table (struct objfile *objfile)
9578 {
9579   /* Start out with a pretty small number.
9580      Generally DWO files contain only one CU and maybe some TUs.  */
9581   return htab_create_alloc_ex (3,
9582                                hash_dwo_unit,
9583                                eq_dwo_unit,
9584                                NULL,
9585                                &objfile->objfile_obstack,
9586                                hashtab_obstack_allocate,
9587                                dummy_obstack_deallocate);
9588 }
9589
9590 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9591
9592 struct create_dwo_cu_data
9593 {
9594   struct dwo_file *dwo_file;
9595   struct dwo_unit dwo_unit;
9596 };
9597
9598 /* die_reader_func for create_dwo_cu.  */
9599
9600 static void
9601 create_dwo_cu_reader (const struct die_reader_specs *reader,
9602                       const gdb_byte *info_ptr,
9603                       struct die_info *comp_unit_die,
9604                       int has_children,
9605                       void *datap)
9606 {
9607   struct dwarf2_cu *cu = reader->cu;
9608   sect_offset offset = cu->per_cu->offset;
9609   struct dwarf2_section_info *section = cu->per_cu->section;
9610   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
9611   struct dwo_file *dwo_file = data->dwo_file;
9612   struct dwo_unit *dwo_unit = &data->dwo_unit;
9613   struct attribute *attr;
9614
9615   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9616   if (attr == NULL)
9617     {
9618       complaint (&symfile_complaints,
9619                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9620                    " its dwo_id [in module %s]"),
9621                  offset.sect_off, dwo_file->dwo_name);
9622       return;
9623     }
9624
9625   dwo_unit->dwo_file = dwo_file;
9626   dwo_unit->signature = DW_UNSND (attr);
9627   dwo_unit->section = section;
9628   dwo_unit->offset = offset;
9629   dwo_unit->length = cu->per_cu->length;
9630
9631   if (dwarf_read_debug)
9632     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9633                         offset.sect_off, hex_string (dwo_unit->signature));
9634 }
9635
9636 /* Create the dwo_unit for the lone CU in DWO_FILE.
9637    Note: This function processes DWO files only, not DWP files.  */
9638
9639 static struct dwo_unit *
9640 create_dwo_cu (struct dwo_file *dwo_file)
9641 {
9642   struct objfile *objfile = dwarf2_per_objfile->objfile;
9643   struct dwarf2_section_info *section = &dwo_file->sections.info;
9644   const gdb_byte *info_ptr, *end_ptr;
9645   struct create_dwo_cu_data create_dwo_cu_data;
9646   struct dwo_unit *dwo_unit;
9647
9648   dwarf2_read_section (objfile, section);
9649   info_ptr = section->buffer;
9650
9651   if (info_ptr == NULL)
9652     return NULL;
9653
9654   if (dwarf_read_debug)
9655     {
9656       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9657                           get_section_name (section),
9658                           get_section_file_name (section));
9659     }
9660
9661   create_dwo_cu_data.dwo_file = dwo_file;
9662   dwo_unit = NULL;
9663
9664   end_ptr = info_ptr + section->size;
9665   while (info_ptr < end_ptr)
9666     {
9667       struct dwarf2_per_cu_data per_cu;
9668
9669       memset (&create_dwo_cu_data.dwo_unit, 0,
9670               sizeof (create_dwo_cu_data.dwo_unit));
9671       memset (&per_cu, 0, sizeof (per_cu));
9672       per_cu.objfile = objfile;
9673       per_cu.is_debug_types = 0;
9674       per_cu.offset.sect_off = info_ptr - section->buffer;
9675       per_cu.section = section;
9676
9677       init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
9678                                          create_dwo_cu_reader,
9679                                          &create_dwo_cu_data);
9680
9681       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9682         {
9683           /* If we've already found one, complain.  We only support one
9684              because having more than one requires hacking the dwo_name of
9685              each to match, which is highly unlikely to happen.  */
9686           if (dwo_unit != NULL)
9687             {
9688               complaint (&symfile_complaints,
9689                          _("Multiple CUs in DWO file %s [in module %s]"),
9690                          dwo_file->dwo_name, objfile_name (objfile));
9691               break;
9692             }
9693
9694           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9695           *dwo_unit = create_dwo_cu_data.dwo_unit;
9696         }
9697
9698       info_ptr += per_cu.length;
9699     }
9700
9701   return dwo_unit;
9702 }
9703
9704 /* DWP file .debug_{cu,tu}_index section format:
9705    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9706
9707    DWP Version 1:
9708
9709    Both index sections have the same format, and serve to map a 64-bit
9710    signature to a set of section numbers.  Each section begins with a header,
9711    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9712    indexes, and a pool of 32-bit section numbers.  The index sections will be
9713    aligned at 8-byte boundaries in the file.
9714
9715    The index section header consists of:
9716
9717     V, 32 bit version number
9718     -, 32 bits unused
9719     N, 32 bit number of compilation units or type units in the index
9720     M, 32 bit number of slots in the hash table
9721
9722    Numbers are recorded using the byte order of the application binary.
9723
9724    The hash table begins at offset 16 in the section, and consists of an array
9725    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9726    order of the application binary).  Unused slots in the hash table are 0.
9727    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9728
9729    The parallel table begins immediately after the hash table
9730    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9731    array of 32-bit indexes (using the byte order of the application binary),
9732    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9733    table contains a 32-bit index into the pool of section numbers.  For unused
9734    hash table slots, the corresponding entry in the parallel table will be 0.
9735
9736    The pool of section numbers begins immediately following the hash table
9737    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9738    section numbers consists of an array of 32-bit words (using the byte order
9739    of the application binary).  Each item in the array is indexed starting
9740    from 0.  The hash table entry provides the index of the first section
9741    number in the set.  Additional section numbers in the set follow, and the
9742    set is terminated by a 0 entry (section number 0 is not used in ELF).
9743
9744    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9745    section must be the first entry in the set, and the .debug_abbrev.dwo must
9746    be the second entry. Other members of the set may follow in any order.
9747
9748    ---
9749
9750    DWP Version 2:
9751
9752    DWP Version 2 combines all the .debug_info, etc. sections into one,
9753    and the entries in the index tables are now offsets into these sections.
9754    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9755    section.
9756
9757    Index Section Contents:
9758     Header
9759     Hash Table of Signatures   dwp_hash_table.hash_table
9760     Parallel Table of Indices  dwp_hash_table.unit_table
9761     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9762     Table of Section Sizes     dwp_hash_table.v2.sizes
9763
9764    The index section header consists of:
9765
9766     V, 32 bit version number
9767     L, 32 bit number of columns in the table of section offsets
9768     N, 32 bit number of compilation units or type units in the index
9769     M, 32 bit number of slots in the hash table
9770
9771    Numbers are recorded using the byte order of the application binary.
9772
9773    The hash table has the same format as version 1.
9774    The parallel table of indices has the same format as version 1,
9775    except that the entries are origin-1 indices into the table of sections
9776    offsets and the table of section sizes.
9777
9778    The table of offsets begins immediately following the parallel table
9779    (at offset 16 + 12 * M from the beginning of the section).  The table is
9780    a two-dimensional array of 32-bit words (using the byte order of the
9781    application binary), with L columns and N+1 rows, in row-major order.
9782    Each row in the array is indexed starting from 0.  The first row provides
9783    a key to the remaining rows: each column in this row provides an identifier
9784    for a debug section, and the offsets in the same column of subsequent rows
9785    refer to that section.  The section identifiers are:
9786
9787     DW_SECT_INFO         1  .debug_info.dwo
9788     DW_SECT_TYPES        2  .debug_types.dwo
9789     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9790     DW_SECT_LINE         4  .debug_line.dwo
9791     DW_SECT_LOC          5  .debug_loc.dwo
9792     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9793     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9794     DW_SECT_MACRO        8  .debug_macro.dwo
9795
9796    The offsets provided by the CU and TU index sections are the base offsets
9797    for the contributions made by each CU or TU to the corresponding section
9798    in the package file.  Each CU and TU header contains an abbrev_offset
9799    field, used to find the abbreviations table for that CU or TU within the
9800    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9801    be interpreted as relative to the base offset given in the index section.
9802    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9803    should be interpreted as relative to the base offset for .debug_line.dwo,
9804    and offsets into other debug sections obtained from DWARF attributes should
9805    also be interpreted as relative to the corresponding base offset.
9806
9807    The table of sizes begins immediately following the table of offsets.
9808    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9809    with L columns and N rows, in row-major order.  Each row in the array is
9810    indexed starting from 1 (row 0 is shared by the two tables).
9811
9812    ---
9813
9814    Hash table lookup is handled the same in version 1 and 2:
9815
9816    We assume that N and M will not exceed 2^32 - 1.
9817    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9818
9819    Given a 64-bit compilation unit signature or a type signature S, an entry
9820    in the hash table is located as follows:
9821
9822    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9823       the low-order k bits all set to 1.
9824
9825    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9826
9827    3) If the hash table entry at index H matches the signature, use that
9828       entry.  If the hash table entry at index H is unused (all zeroes),
9829       terminate the search: the signature is not present in the table.
9830
9831    4) Let H = (H + H') modulo M. Repeat at Step 3.
9832
9833    Because M > N and H' and M are relatively prime, the search is guaranteed
9834    to stop at an unused slot or find the match.  */
9835
9836 /* Create a hash table to map DWO IDs to their CU/TU entry in
9837    .debug_{info,types}.dwo in DWP_FILE.
9838    Returns NULL if there isn't one.
9839    Note: This function processes DWP files only, not DWO files.  */
9840
9841 static struct dwp_hash_table *
9842 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9843 {
9844   struct objfile *objfile = dwarf2_per_objfile->objfile;
9845   bfd *dbfd = dwp_file->dbfd;
9846   const gdb_byte *index_ptr, *index_end;
9847   struct dwarf2_section_info *index;
9848   uint32_t version, nr_columns, nr_units, nr_slots;
9849   struct dwp_hash_table *htab;
9850
9851   if (is_debug_types)
9852     index = &dwp_file->sections.tu_index;
9853   else
9854     index = &dwp_file->sections.cu_index;
9855
9856   if (dwarf2_section_empty_p (index))
9857     return NULL;
9858   dwarf2_read_section (objfile, index);
9859
9860   index_ptr = index->buffer;
9861   index_end = index_ptr + index->size;
9862
9863   version = read_4_bytes (dbfd, index_ptr);
9864   index_ptr += 4;
9865   if (version == 2)
9866     nr_columns = read_4_bytes (dbfd, index_ptr);
9867   else
9868     nr_columns = 0;
9869   index_ptr += 4;
9870   nr_units = read_4_bytes (dbfd, index_ptr);
9871   index_ptr += 4;
9872   nr_slots = read_4_bytes (dbfd, index_ptr);
9873   index_ptr += 4;
9874
9875   if (version != 1 && version != 2)
9876     {
9877       error (_("Dwarf Error: unsupported DWP file version (%s)"
9878                " [in module %s]"),
9879              pulongest (version), dwp_file->name);
9880     }
9881   if (nr_slots != (nr_slots & -nr_slots))
9882     {
9883       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9884                " is not power of 2 [in module %s]"),
9885              pulongest (nr_slots), dwp_file->name);
9886     }
9887
9888   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9889   htab->version = version;
9890   htab->nr_columns = nr_columns;
9891   htab->nr_units = nr_units;
9892   htab->nr_slots = nr_slots;
9893   htab->hash_table = index_ptr;
9894   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9895
9896   /* Exit early if the table is empty.  */
9897   if (nr_slots == 0 || nr_units == 0
9898       || (version == 2 && nr_columns == 0))
9899     {
9900       /* All must be zero.  */
9901       if (nr_slots != 0 || nr_units != 0
9902           || (version == 2 && nr_columns != 0))
9903         {
9904           complaint (&symfile_complaints,
9905                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9906                        " all zero [in modules %s]"),
9907                      dwp_file->name);
9908         }
9909       return htab;
9910     }
9911
9912   if (version == 1)
9913     {
9914       htab->section_pool.v1.indices =
9915         htab->unit_table + sizeof (uint32_t) * nr_slots;
9916       /* It's harder to decide whether the section is too small in v1.
9917          V1 is deprecated anyway so we punt.  */
9918     }
9919   else
9920     {
9921       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9922       int *ids = htab->section_pool.v2.section_ids;
9923       /* Reverse map for error checking.  */
9924       int ids_seen[DW_SECT_MAX + 1];
9925       int i;
9926
9927       if (nr_columns < 2)
9928         {
9929           error (_("Dwarf Error: bad DWP hash table, too few columns"
9930                    " in section table [in module %s]"),
9931                  dwp_file->name);
9932         }
9933       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9934         {
9935           error (_("Dwarf Error: bad DWP hash table, too many columns"
9936                    " in section table [in module %s]"),
9937                  dwp_file->name);
9938         }
9939       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9940       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9941       for (i = 0; i < nr_columns; ++i)
9942         {
9943           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9944
9945           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9946             {
9947               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9948                        " in section table [in module %s]"),
9949                      id, dwp_file->name);
9950             }
9951           if (ids_seen[id] != -1)
9952             {
9953               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9954                        " id %d in section table [in module %s]"),
9955                      id, dwp_file->name);
9956             }
9957           ids_seen[id] = i;
9958           ids[i] = id;
9959         }
9960       /* Must have exactly one info or types section.  */
9961       if (((ids_seen[DW_SECT_INFO] != -1)
9962            + (ids_seen[DW_SECT_TYPES] != -1))
9963           != 1)
9964         {
9965           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9966                    " DWO info/types section [in module %s]"),
9967                  dwp_file->name);
9968         }
9969       /* Must have an abbrev section.  */
9970       if (ids_seen[DW_SECT_ABBREV] == -1)
9971         {
9972           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9973                    " section [in module %s]"),
9974                  dwp_file->name);
9975         }
9976       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9977       htab->section_pool.v2.sizes =
9978         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9979                                          * nr_units * nr_columns);
9980       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9981                                           * nr_units * nr_columns))
9982           > index_end)
9983         {
9984           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9985                    " [in module %s]"),
9986                  dwp_file->name);
9987         }
9988     }
9989
9990   return htab;
9991 }
9992
9993 /* Update SECTIONS with the data from SECTP.
9994
9995    This function is like the other "locate" section routines that are
9996    passed to bfd_map_over_sections, but in this context the sections to
9997    read comes from the DWP V1 hash table, not the full ELF section table.
9998
9999    The result is non-zero for success, or zero if an error was found.  */
10000
10001 static int
10002 locate_v1_virtual_dwo_sections (asection *sectp,
10003                                 struct virtual_v1_dwo_sections *sections)
10004 {
10005   const struct dwop_section_names *names = &dwop_section_names;
10006
10007   if (section_is_p (sectp->name, &names->abbrev_dwo))
10008     {
10009       /* There can be only one.  */
10010       if (sections->abbrev.s.section != NULL)
10011         return 0;
10012       sections->abbrev.s.section = sectp;
10013       sections->abbrev.size = bfd_get_section_size (sectp);
10014     }
10015   else if (section_is_p (sectp->name, &names->info_dwo)
10016            || section_is_p (sectp->name, &names->types_dwo))
10017     {
10018       /* There can be only one.  */
10019       if (sections->info_or_types.s.section != NULL)
10020         return 0;
10021       sections->info_or_types.s.section = sectp;
10022       sections->info_or_types.size = bfd_get_section_size (sectp);
10023     }
10024   else if (section_is_p (sectp->name, &names->line_dwo))
10025     {
10026       /* There can be only one.  */
10027       if (sections->line.s.section != NULL)
10028         return 0;
10029       sections->line.s.section = sectp;
10030       sections->line.size = bfd_get_section_size (sectp);
10031     }
10032   else if (section_is_p (sectp->name, &names->loc_dwo))
10033     {
10034       /* There can be only one.  */
10035       if (sections->loc.s.section != NULL)
10036         return 0;
10037       sections->loc.s.section = sectp;
10038       sections->loc.size = bfd_get_section_size (sectp);
10039     }
10040   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10041     {
10042       /* There can be only one.  */
10043       if (sections->macinfo.s.section != NULL)
10044         return 0;
10045       sections->macinfo.s.section = sectp;
10046       sections->macinfo.size = bfd_get_section_size (sectp);
10047     }
10048   else if (section_is_p (sectp->name, &names->macro_dwo))
10049     {
10050       /* There can be only one.  */
10051       if (sections->macro.s.section != NULL)
10052         return 0;
10053       sections->macro.s.section = sectp;
10054       sections->macro.size = bfd_get_section_size (sectp);
10055     }
10056   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10057     {
10058       /* There can be only one.  */
10059       if (sections->str_offsets.s.section != NULL)
10060         return 0;
10061       sections->str_offsets.s.section = sectp;
10062       sections->str_offsets.size = bfd_get_section_size (sectp);
10063     }
10064   else
10065     {
10066       /* No other kind of section is valid.  */
10067       return 0;
10068     }
10069
10070   return 1;
10071 }
10072
10073 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10074    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10075    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10076    This is for DWP version 1 files.  */
10077
10078 static struct dwo_unit *
10079 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
10080                            uint32_t unit_index,
10081                            const char *comp_dir,
10082                            ULONGEST signature, int is_debug_types)
10083 {
10084   struct objfile *objfile = dwarf2_per_objfile->objfile;
10085   const struct dwp_hash_table *dwp_htab =
10086     is_debug_types ? dwp_file->tus : dwp_file->cus;
10087   bfd *dbfd = dwp_file->dbfd;
10088   const char *kind = is_debug_types ? "TU" : "CU";
10089   struct dwo_file *dwo_file;
10090   struct dwo_unit *dwo_unit;
10091   struct virtual_v1_dwo_sections sections;
10092   void **dwo_file_slot;
10093   char *virtual_dwo_name;
10094   struct cleanup *cleanups;
10095   int i;
10096
10097   gdb_assert (dwp_file->version == 1);
10098
10099   if (dwarf_read_debug)
10100     {
10101       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
10102                           kind,
10103                           pulongest (unit_index), hex_string (signature),
10104                           dwp_file->name);
10105     }
10106
10107   /* Fetch the sections of this DWO unit.
10108      Put a limit on the number of sections we look for so that bad data
10109      doesn't cause us to loop forever.  */
10110
10111 #define MAX_NR_V1_DWO_SECTIONS \
10112   (1 /* .debug_info or .debug_types */ \
10113    + 1 /* .debug_abbrev */ \
10114    + 1 /* .debug_line */ \
10115    + 1 /* .debug_loc */ \
10116    + 1 /* .debug_str_offsets */ \
10117    + 1 /* .debug_macro or .debug_macinfo */ \
10118    + 1 /* trailing zero */)
10119
10120   memset (&sections, 0, sizeof (sections));
10121   cleanups = make_cleanup (null_cleanup, 0);
10122
10123   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
10124     {
10125       asection *sectp;
10126       uint32_t section_nr =
10127         read_4_bytes (dbfd,
10128                       dwp_htab->section_pool.v1.indices
10129                       + (unit_index + i) * sizeof (uint32_t));
10130
10131       if (section_nr == 0)
10132         break;
10133       if (section_nr >= dwp_file->num_sections)
10134         {
10135           error (_("Dwarf Error: bad DWP hash table, section number too large"
10136                    " [in module %s]"),
10137                  dwp_file->name);
10138         }
10139
10140       sectp = dwp_file->elf_sections[section_nr];
10141       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
10142         {
10143           error (_("Dwarf Error: bad DWP hash table, invalid section found"
10144                    " [in module %s]"),
10145                  dwp_file->name);
10146         }
10147     }
10148
10149   if (i < 2
10150       || dwarf2_section_empty_p (&sections.info_or_types)
10151       || dwarf2_section_empty_p (&sections.abbrev))
10152     {
10153       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10154                " [in module %s]"),
10155              dwp_file->name);
10156     }
10157   if (i == MAX_NR_V1_DWO_SECTIONS)
10158     {
10159       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10160                " [in module %s]"),
10161              dwp_file->name);
10162     }
10163
10164   /* It's easier for the rest of the code if we fake a struct dwo_file and
10165      have dwo_unit "live" in that.  At least for now.
10166
10167      The DWP file can be made up of a random collection of CUs and TUs.
10168      However, for each CU + set of TUs that came from the same original DWO
10169      file, we can combine them back into a virtual DWO file to save space
10170      (fewer struct dwo_file objects to allocate).  Remember that for really
10171      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10172
10173   virtual_dwo_name =
10174     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
10175                 get_section_id (&sections.abbrev),
10176                 get_section_id (&sections.line),
10177                 get_section_id (&sections.loc),
10178                 get_section_id (&sections.str_offsets));
10179   make_cleanup (xfree, virtual_dwo_name);
10180   /* Can we use an existing virtual DWO file?  */
10181   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10182   /* Create one if necessary.  */
10183   if (*dwo_file_slot == NULL)
10184     {
10185       if (dwarf_read_debug)
10186         {
10187           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10188                               virtual_dwo_name);
10189         }
10190       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10191       dwo_file->dwo_name
10192         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
10193                                         virtual_dwo_name,
10194                                         strlen (virtual_dwo_name));
10195       dwo_file->comp_dir = comp_dir;
10196       dwo_file->sections.abbrev = sections.abbrev;
10197       dwo_file->sections.line = sections.line;
10198       dwo_file->sections.loc = sections.loc;
10199       dwo_file->sections.macinfo = sections.macinfo;
10200       dwo_file->sections.macro = sections.macro;
10201       dwo_file->sections.str_offsets = sections.str_offsets;
10202       /* The "str" section is global to the entire DWP file.  */
10203       dwo_file->sections.str = dwp_file->sections.str;
10204       /* The info or types section is assigned below to dwo_unit,
10205          there's no need to record it in dwo_file.
10206          Also, we can't simply record type sections in dwo_file because
10207          we record a pointer into the vector in dwo_unit.  As we collect more
10208          types we'll grow the vector and eventually have to reallocate space
10209          for it, invalidating all copies of pointers into the previous
10210          contents.  */
10211       *dwo_file_slot = dwo_file;
10212     }
10213   else
10214     {
10215       if (dwarf_read_debug)
10216         {
10217           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10218                               virtual_dwo_name);
10219         }
10220       dwo_file = (struct dwo_file *) *dwo_file_slot;
10221     }
10222   do_cleanups (cleanups);
10223
10224   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10225   dwo_unit->dwo_file = dwo_file;
10226   dwo_unit->signature = signature;
10227   dwo_unit->section =
10228     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
10229   *dwo_unit->section = sections.info_or_types;
10230   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10231
10232   return dwo_unit;
10233 }
10234
10235 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10236    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10237    piece within that section used by a TU/CU, return a virtual section
10238    of just that piece.  */
10239
10240 static struct dwarf2_section_info
10241 create_dwp_v2_section (struct dwarf2_section_info *section,
10242                        bfd_size_type offset, bfd_size_type size)
10243 {
10244   struct dwarf2_section_info result;
10245   asection *sectp;
10246
10247   gdb_assert (section != NULL);
10248   gdb_assert (!section->is_virtual);
10249
10250   memset (&result, 0, sizeof (result));
10251   result.s.containing_section = section;
10252   result.is_virtual = 1;
10253
10254   if (size == 0)
10255     return result;
10256
10257   sectp = get_section_bfd_section (section);
10258
10259   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10260      bounds of the real section.  This is a pretty-rare event, so just
10261      flag an error (easier) instead of a warning and trying to cope.  */
10262   if (sectp == NULL
10263       || offset + size > bfd_get_section_size (sectp))
10264     {
10265       bfd *abfd = sectp->owner;
10266
10267       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10268                " in section %s [in module %s]"),
10269              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10270              objfile_name (dwarf2_per_objfile->objfile));
10271     }
10272
10273   result.virtual_offset = offset;
10274   result.size = size;
10275   return result;
10276 }
10277
10278 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10279    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10280    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10281    This is for DWP version 2 files.  */
10282
10283 static struct dwo_unit *
10284 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10285                            uint32_t unit_index,
10286                            const char *comp_dir,
10287                            ULONGEST signature, int is_debug_types)
10288 {
10289   struct objfile *objfile = dwarf2_per_objfile->objfile;
10290   const struct dwp_hash_table *dwp_htab =
10291     is_debug_types ? dwp_file->tus : dwp_file->cus;
10292   bfd *dbfd = dwp_file->dbfd;
10293   const char *kind = is_debug_types ? "TU" : "CU";
10294   struct dwo_file *dwo_file;
10295   struct dwo_unit *dwo_unit;
10296   struct virtual_v2_dwo_sections sections;
10297   void **dwo_file_slot;
10298   char *virtual_dwo_name;
10299   struct cleanup *cleanups;
10300   int i;
10301
10302   gdb_assert (dwp_file->version == 2);
10303
10304   if (dwarf_read_debug)
10305     {
10306       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10307                           kind,
10308                           pulongest (unit_index), hex_string (signature),
10309                           dwp_file->name);
10310     }
10311
10312   /* Fetch the section offsets of this DWO unit.  */
10313
10314   memset (&sections, 0, sizeof (sections));
10315   cleanups = make_cleanup (null_cleanup, 0);
10316
10317   for (i = 0; i < dwp_htab->nr_columns; ++i)
10318     {
10319       uint32_t offset = read_4_bytes (dbfd,
10320                                       dwp_htab->section_pool.v2.offsets
10321                                       + (((unit_index - 1) * dwp_htab->nr_columns
10322                                           + i)
10323                                          * sizeof (uint32_t)));
10324       uint32_t size = read_4_bytes (dbfd,
10325                                     dwp_htab->section_pool.v2.sizes
10326                                     + (((unit_index - 1) * dwp_htab->nr_columns
10327                                         + i)
10328                                        * sizeof (uint32_t)));
10329
10330       switch (dwp_htab->section_pool.v2.section_ids[i])
10331         {
10332         case DW_SECT_INFO:
10333         case DW_SECT_TYPES:
10334           sections.info_or_types_offset = offset;
10335           sections.info_or_types_size = size;
10336           break;
10337         case DW_SECT_ABBREV:
10338           sections.abbrev_offset = offset;
10339           sections.abbrev_size = size;
10340           break;
10341         case DW_SECT_LINE:
10342           sections.line_offset = offset;
10343           sections.line_size = size;
10344           break;
10345         case DW_SECT_LOC:
10346           sections.loc_offset = offset;
10347           sections.loc_size = size;
10348           break;
10349         case DW_SECT_STR_OFFSETS:
10350           sections.str_offsets_offset = offset;
10351           sections.str_offsets_size = size;
10352           break;
10353         case DW_SECT_MACINFO:
10354           sections.macinfo_offset = offset;
10355           sections.macinfo_size = size;
10356           break;
10357         case DW_SECT_MACRO:
10358           sections.macro_offset = offset;
10359           sections.macro_size = size;
10360           break;
10361         }
10362     }
10363
10364   /* It's easier for the rest of the code if we fake a struct dwo_file and
10365      have dwo_unit "live" in that.  At least for now.
10366
10367      The DWP file can be made up of a random collection of CUs and TUs.
10368      However, for each CU + set of TUs that came from the same original DWO
10369      file, we can combine them back into a virtual DWO file to save space
10370      (fewer struct dwo_file objects to allocate).  Remember that for really
10371      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10372
10373   virtual_dwo_name =
10374     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10375                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10376                 (long) (sections.line_size ? sections.line_offset : 0),
10377                 (long) (sections.loc_size ? sections.loc_offset : 0),
10378                 (long) (sections.str_offsets_size
10379                         ? sections.str_offsets_offset : 0));
10380   make_cleanup (xfree, virtual_dwo_name);
10381   /* Can we use an existing virtual DWO file?  */
10382   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10383   /* Create one if necessary.  */
10384   if (*dwo_file_slot == NULL)
10385     {
10386       if (dwarf_read_debug)
10387         {
10388           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10389                               virtual_dwo_name);
10390         }
10391       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10392       dwo_file->dwo_name
10393         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
10394                                         virtual_dwo_name,
10395                                         strlen (virtual_dwo_name));
10396       dwo_file->comp_dir = comp_dir;
10397       dwo_file->sections.abbrev =
10398         create_dwp_v2_section (&dwp_file->sections.abbrev,
10399                                sections.abbrev_offset, sections.abbrev_size);
10400       dwo_file->sections.line =
10401         create_dwp_v2_section (&dwp_file->sections.line,
10402                                sections.line_offset, sections.line_size);
10403       dwo_file->sections.loc =
10404         create_dwp_v2_section (&dwp_file->sections.loc,
10405                                sections.loc_offset, sections.loc_size);
10406       dwo_file->sections.macinfo =
10407         create_dwp_v2_section (&dwp_file->sections.macinfo,
10408                                sections.macinfo_offset, sections.macinfo_size);
10409       dwo_file->sections.macro =
10410         create_dwp_v2_section (&dwp_file->sections.macro,
10411                                sections.macro_offset, sections.macro_size);
10412       dwo_file->sections.str_offsets =
10413         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10414                                sections.str_offsets_offset,
10415                                sections.str_offsets_size);
10416       /* The "str" section is global to the entire DWP file.  */
10417       dwo_file->sections.str = dwp_file->sections.str;
10418       /* The info or types section is assigned below to dwo_unit,
10419          there's no need to record it in dwo_file.
10420          Also, we can't simply record type sections in dwo_file because
10421          we record a pointer into the vector in dwo_unit.  As we collect more
10422          types we'll grow the vector and eventually have to reallocate space
10423          for it, invalidating all copies of pointers into the previous
10424          contents.  */
10425       *dwo_file_slot = dwo_file;
10426     }
10427   else
10428     {
10429       if (dwarf_read_debug)
10430         {
10431           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10432                               virtual_dwo_name);
10433         }
10434       dwo_file = (struct dwo_file *) *dwo_file_slot;
10435     }
10436   do_cleanups (cleanups);
10437
10438   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10439   dwo_unit->dwo_file = dwo_file;
10440   dwo_unit->signature = signature;
10441   dwo_unit->section =
10442     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
10443   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10444                                               ? &dwp_file->sections.types
10445                                               : &dwp_file->sections.info,
10446                                               sections.info_or_types_offset,
10447                                               sections.info_or_types_size);
10448   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10449
10450   return dwo_unit;
10451 }
10452
10453 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10454    Returns NULL if the signature isn't found.  */
10455
10456 static struct dwo_unit *
10457 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10458                         ULONGEST signature, int is_debug_types)
10459 {
10460   const struct dwp_hash_table *dwp_htab =
10461     is_debug_types ? dwp_file->tus : dwp_file->cus;
10462   bfd *dbfd = dwp_file->dbfd;
10463   uint32_t mask = dwp_htab->nr_slots - 1;
10464   uint32_t hash = signature & mask;
10465   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10466   unsigned int i;
10467   void **slot;
10468   struct dwo_unit find_dwo_cu;
10469
10470   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10471   find_dwo_cu.signature = signature;
10472   slot = htab_find_slot (is_debug_types
10473                          ? dwp_file->loaded_tus
10474                          : dwp_file->loaded_cus,
10475                          &find_dwo_cu, INSERT);
10476
10477   if (*slot != NULL)
10478     return (struct dwo_unit *) *slot;
10479
10480   /* Use a for loop so that we don't loop forever on bad debug info.  */
10481   for (i = 0; i < dwp_htab->nr_slots; ++i)
10482     {
10483       ULONGEST signature_in_table;
10484
10485       signature_in_table =
10486         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10487       if (signature_in_table == signature)
10488         {
10489           uint32_t unit_index =
10490             read_4_bytes (dbfd,
10491                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10492
10493           if (dwp_file->version == 1)
10494             {
10495               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10496                                                  comp_dir, signature,
10497                                                  is_debug_types);
10498             }
10499           else
10500             {
10501               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10502                                                  comp_dir, signature,
10503                                                  is_debug_types);
10504             }
10505           return (struct dwo_unit *) *slot;
10506         }
10507       if (signature_in_table == 0)
10508         return NULL;
10509       hash = (hash + hash2) & mask;
10510     }
10511
10512   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10513            " [in module %s]"),
10514          dwp_file->name);
10515 }
10516
10517 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10518    Open the file specified by FILE_NAME and hand it off to BFD for
10519    preliminary analysis.  Return a newly initialized bfd *, which
10520    includes a canonicalized copy of FILE_NAME.
10521    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10522    SEARCH_CWD is true if the current directory is to be searched.
10523    It will be searched before debug-file-directory.
10524    If successful, the file is added to the bfd include table of the
10525    objfile's bfd (see gdb_bfd_record_inclusion).
10526    If unable to find/open the file, return NULL.
10527    NOTE: This function is derived from symfile_bfd_open.  */
10528
10529 static gdb_bfd_ref_ptr
10530 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10531 {
10532   int desc, flags;
10533   char *absolute_name;
10534   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10535      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10536      to debug_file_directory.  */
10537   char *search_path;
10538   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10539
10540   if (search_cwd)
10541     {
10542       if (*debug_file_directory != '\0')
10543         search_path = concat (".", dirname_separator_string,
10544                               debug_file_directory, (char *) NULL);
10545       else
10546         search_path = xstrdup (".");
10547     }
10548   else
10549     search_path = xstrdup (debug_file_directory);
10550
10551   flags = OPF_RETURN_REALPATH;
10552   if (is_dwp)
10553     flags |= OPF_SEARCH_IN_PATH;
10554   desc = openp (search_path, flags, file_name,
10555                 O_RDONLY | O_BINARY, &absolute_name);
10556   xfree (search_path);
10557   if (desc < 0)
10558     return NULL;
10559
10560   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name, gnutarget, desc));
10561   xfree (absolute_name);
10562   if (sym_bfd == NULL)
10563     return NULL;
10564   bfd_set_cacheable (sym_bfd.get (), 1);
10565
10566   if (!bfd_check_format (sym_bfd.get (), bfd_object))
10567     return NULL;
10568
10569   /* Success.  Record the bfd as having been included by the objfile's bfd.
10570      This is important because things like demangled_names_hash lives in the
10571      objfile's per_bfd space and may have references to things like symbol
10572      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
10573   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
10574
10575   return sym_bfd;
10576 }
10577
10578 /* Try to open DWO file FILE_NAME.
10579    COMP_DIR is the DW_AT_comp_dir attribute.
10580    The result is the bfd handle of the file.
10581    If there is a problem finding or opening the file, return NULL.
10582    Upon success, the canonicalized path of the file is stored in the bfd,
10583    same as symfile_bfd_open.  */
10584
10585 static gdb_bfd_ref_ptr
10586 open_dwo_file (const char *file_name, const char *comp_dir)
10587 {
10588   if (IS_ABSOLUTE_PATH (file_name))
10589     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10590
10591   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10592
10593   if (comp_dir != NULL)
10594     {
10595       char *path_to_try = concat (comp_dir, SLASH_STRING,
10596                                   file_name, (char *) NULL);
10597
10598       /* NOTE: If comp_dir is a relative path, this will also try the
10599          search path, which seems useful.  */
10600       gdb_bfd_ref_ptr abfd (try_open_dwop_file (path_to_try, 0 /*is_dwp*/,
10601                                                 1 /*search_cwd*/));
10602       xfree (path_to_try);
10603       if (abfd != NULL)
10604         return abfd;
10605     }
10606
10607   /* That didn't work, try debug-file-directory, which, despite its name,
10608      is a list of paths.  */
10609
10610   if (*debug_file_directory == '\0')
10611     return NULL;
10612
10613   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10614 }
10615
10616 /* This function is mapped across the sections and remembers the offset and
10617    size of each of the DWO debugging sections we are interested in.  */
10618
10619 static void
10620 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10621 {
10622   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
10623   const struct dwop_section_names *names = &dwop_section_names;
10624
10625   if (section_is_p (sectp->name, &names->abbrev_dwo))
10626     {
10627       dwo_sections->abbrev.s.section = sectp;
10628       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10629     }
10630   else if (section_is_p (sectp->name, &names->info_dwo))
10631     {
10632       dwo_sections->info.s.section = sectp;
10633       dwo_sections->info.size = bfd_get_section_size (sectp);
10634     }
10635   else if (section_is_p (sectp->name, &names->line_dwo))
10636     {
10637       dwo_sections->line.s.section = sectp;
10638       dwo_sections->line.size = bfd_get_section_size (sectp);
10639     }
10640   else if (section_is_p (sectp->name, &names->loc_dwo))
10641     {
10642       dwo_sections->loc.s.section = sectp;
10643       dwo_sections->loc.size = bfd_get_section_size (sectp);
10644     }
10645   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10646     {
10647       dwo_sections->macinfo.s.section = sectp;
10648       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10649     }
10650   else if (section_is_p (sectp->name, &names->macro_dwo))
10651     {
10652       dwo_sections->macro.s.section = sectp;
10653       dwo_sections->macro.size = bfd_get_section_size (sectp);
10654     }
10655   else if (section_is_p (sectp->name, &names->str_dwo))
10656     {
10657       dwo_sections->str.s.section = sectp;
10658       dwo_sections->str.size = bfd_get_section_size (sectp);
10659     }
10660   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10661     {
10662       dwo_sections->str_offsets.s.section = sectp;
10663       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10664     }
10665   else if (section_is_p (sectp->name, &names->types_dwo))
10666     {
10667       struct dwarf2_section_info type_section;
10668
10669       memset (&type_section, 0, sizeof (type_section));
10670       type_section.s.section = sectp;
10671       type_section.size = bfd_get_section_size (sectp);
10672       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10673                      &type_section);
10674     }
10675 }
10676
10677 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10678    by PER_CU.  This is for the non-DWP case.
10679    The result is NULL if DWO_NAME can't be found.  */
10680
10681 static struct dwo_file *
10682 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10683                         const char *dwo_name, const char *comp_dir)
10684 {
10685   struct objfile *objfile = dwarf2_per_objfile->objfile;
10686   struct dwo_file *dwo_file;
10687   struct cleanup *cleanups;
10688
10689   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwo_name, comp_dir));
10690   if (dbfd == NULL)
10691     {
10692       if (dwarf_read_debug)
10693         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10694       return NULL;
10695     }
10696   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10697   dwo_file->dwo_name = dwo_name;
10698   dwo_file->comp_dir = comp_dir;
10699   dwo_file->dbfd = dbfd.release ();
10700
10701   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10702
10703   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
10704                          &dwo_file->sections);
10705
10706   dwo_file->cu = create_dwo_cu (dwo_file);
10707
10708   create_debug_types_hash_table (dwo_file, dwo_file->sections.types,
10709                                  dwo_file->tus);
10710
10711   discard_cleanups (cleanups);
10712
10713   if (dwarf_read_debug)
10714     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10715
10716   return dwo_file;
10717 }
10718
10719 /* This function is mapped across the sections and remembers the offset and
10720    size of each of the DWP debugging sections common to version 1 and 2 that
10721    we are interested in.  */
10722
10723 static void
10724 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10725                                    void *dwp_file_ptr)
10726 {
10727   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
10728   const struct dwop_section_names *names = &dwop_section_names;
10729   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10730
10731   /* Record the ELF section number for later lookup: this is what the
10732      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10733   gdb_assert (elf_section_nr < dwp_file->num_sections);
10734   dwp_file->elf_sections[elf_section_nr] = sectp;
10735
10736   /* Look for specific sections that we need.  */
10737   if (section_is_p (sectp->name, &names->str_dwo))
10738     {
10739       dwp_file->sections.str.s.section = sectp;
10740       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10741     }
10742   else if (section_is_p (sectp->name, &names->cu_index))
10743     {
10744       dwp_file->sections.cu_index.s.section = sectp;
10745       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10746     }
10747   else if (section_is_p (sectp->name, &names->tu_index))
10748     {
10749       dwp_file->sections.tu_index.s.section = sectp;
10750       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10751     }
10752 }
10753
10754 /* This function is mapped across the sections and remembers the offset and
10755    size of each of the DWP version 2 debugging sections that we are interested
10756    in.  This is split into a separate function because we don't know if we
10757    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10758
10759 static void
10760 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10761 {
10762   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
10763   const struct dwop_section_names *names = &dwop_section_names;
10764   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10765
10766   /* Record the ELF section number for later lookup: this is what the
10767      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10768   gdb_assert (elf_section_nr < dwp_file->num_sections);
10769   dwp_file->elf_sections[elf_section_nr] = sectp;
10770
10771   /* Look for specific sections that we need.  */
10772   if (section_is_p (sectp->name, &names->abbrev_dwo))
10773     {
10774       dwp_file->sections.abbrev.s.section = sectp;
10775       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10776     }
10777   else if (section_is_p (sectp->name, &names->info_dwo))
10778     {
10779       dwp_file->sections.info.s.section = sectp;
10780       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10781     }
10782   else if (section_is_p (sectp->name, &names->line_dwo))
10783     {
10784       dwp_file->sections.line.s.section = sectp;
10785       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10786     }
10787   else if (section_is_p (sectp->name, &names->loc_dwo))
10788     {
10789       dwp_file->sections.loc.s.section = sectp;
10790       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10791     }
10792   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10793     {
10794       dwp_file->sections.macinfo.s.section = sectp;
10795       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10796     }
10797   else if (section_is_p (sectp->name, &names->macro_dwo))
10798     {
10799       dwp_file->sections.macro.s.section = sectp;
10800       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10801     }
10802   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10803     {
10804       dwp_file->sections.str_offsets.s.section = sectp;
10805       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10806     }
10807   else if (section_is_p (sectp->name, &names->types_dwo))
10808     {
10809       dwp_file->sections.types.s.section = sectp;
10810       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10811     }
10812 }
10813
10814 /* Hash function for dwp_file loaded CUs/TUs.  */
10815
10816 static hashval_t
10817 hash_dwp_loaded_cutus (const void *item)
10818 {
10819   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
10820
10821   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10822   return dwo_unit->signature;
10823 }
10824
10825 /* Equality function for dwp_file loaded CUs/TUs.  */
10826
10827 static int
10828 eq_dwp_loaded_cutus (const void *a, const void *b)
10829 {
10830   const struct dwo_unit *dua = (const struct dwo_unit *) a;
10831   const struct dwo_unit *dub = (const struct dwo_unit *) b;
10832
10833   return dua->signature == dub->signature;
10834 }
10835
10836 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10837
10838 static htab_t
10839 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10840 {
10841   return htab_create_alloc_ex (3,
10842                                hash_dwp_loaded_cutus,
10843                                eq_dwp_loaded_cutus,
10844                                NULL,
10845                                &objfile->objfile_obstack,
10846                                hashtab_obstack_allocate,
10847                                dummy_obstack_deallocate);
10848 }
10849
10850 /* Try to open DWP file FILE_NAME.
10851    The result is the bfd handle of the file.
10852    If there is a problem finding or opening the file, return NULL.
10853    Upon success, the canonicalized path of the file is stored in the bfd,
10854    same as symfile_bfd_open.  */
10855
10856 static gdb_bfd_ref_ptr
10857 open_dwp_file (const char *file_name)
10858 {
10859   gdb_bfd_ref_ptr abfd (try_open_dwop_file (file_name, 1 /*is_dwp*/,
10860                                             1 /*search_cwd*/));
10861   if (abfd != NULL)
10862     return abfd;
10863
10864   /* Work around upstream bug 15652.
10865      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10866      [Whether that's a "bug" is debatable, but it is getting in our way.]
10867      We have no real idea where the dwp file is, because gdb's realpath-ing
10868      of the executable's path may have discarded the needed info.
10869      [IWBN if the dwp file name was recorded in the executable, akin to
10870      .gnu_debuglink, but that doesn't exist yet.]
10871      Strip the directory from FILE_NAME and search again.  */
10872   if (*debug_file_directory != '\0')
10873     {
10874       /* Don't implicitly search the current directory here.
10875          If the user wants to search "." to handle this case,
10876          it must be added to debug-file-directory.  */
10877       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10878                                  0 /*search_cwd*/);
10879     }
10880
10881   return NULL;
10882 }
10883
10884 /* Initialize the use of the DWP file for the current objfile.
10885    By convention the name of the DWP file is ${objfile}.dwp.
10886    The result is NULL if it can't be found.  */
10887
10888 static struct dwp_file *
10889 open_and_init_dwp_file (void)
10890 {
10891   struct objfile *objfile = dwarf2_per_objfile->objfile;
10892   struct dwp_file *dwp_file;
10893   char *dwp_name;
10894   struct cleanup *cleanups = make_cleanup (null_cleanup, 0);
10895
10896   /* Try to find first .dwp for the binary file before any symbolic links
10897      resolving.  */
10898
10899   /* If the objfile is a debug file, find the name of the real binary
10900      file and get the name of dwp file from there.  */
10901   if (objfile->separate_debug_objfile_backlink != NULL)
10902     {
10903       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
10904       const char *backlink_basename = lbasename (backlink->original_name);
10905       char *debug_dirname = ldirname (objfile->original_name);
10906
10907       make_cleanup (xfree, debug_dirname);
10908       dwp_name = xstrprintf ("%s%s%s.dwp", debug_dirname,
10909                              SLASH_STRING, backlink_basename);
10910     }
10911   else
10912     dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10913   make_cleanup (xfree, dwp_name);
10914
10915   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwp_name));
10916   if (dbfd == NULL
10917       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10918     {
10919       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10920       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10921       make_cleanup (xfree, dwp_name);
10922       dbfd = open_dwp_file (dwp_name);
10923     }
10924
10925   if (dbfd == NULL)
10926     {
10927       if (dwarf_read_debug)
10928         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10929       do_cleanups (cleanups);
10930       return NULL;
10931     }
10932   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10933   dwp_file->name = bfd_get_filename (dbfd.get ());
10934   dwp_file->dbfd = dbfd.release ();
10935   do_cleanups (cleanups);
10936
10937   /* +1: section 0 is unused */
10938   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
10939   dwp_file->elf_sections =
10940     OBSTACK_CALLOC (&objfile->objfile_obstack,
10941                     dwp_file->num_sections, asection *);
10942
10943   bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_common_dwp_sections,
10944                          dwp_file);
10945
10946   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10947
10948   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10949
10950   /* The DWP file version is stored in the hash table.  Oh well.  */
10951   if (dwp_file->cus->version != dwp_file->tus->version)
10952     {
10953       /* Technically speaking, we should try to limp along, but this is
10954          pretty bizarre.  We use pulongest here because that's the established
10955          portability solution (e.g, we cannot use %u for uint32_t).  */
10956       error (_("Dwarf Error: DWP file CU version %s doesn't match"
10957                " TU version %s [in DWP file %s]"),
10958              pulongest (dwp_file->cus->version),
10959              pulongest (dwp_file->tus->version), dwp_name);
10960     }
10961   dwp_file->version = dwp_file->cus->version;
10962
10963   if (dwp_file->version == 2)
10964     bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,
10965                            dwp_file);
10966
10967   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10968   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10969
10970   if (dwarf_read_debug)
10971     {
10972       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10973       fprintf_unfiltered (gdb_stdlog,
10974                           "    %s CUs, %s TUs\n",
10975                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10976                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10977     }
10978
10979   return dwp_file;
10980 }
10981
10982 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10983
10984 static struct dwp_file *
10985 get_dwp_file (void)
10986 {
10987   if (! dwarf2_per_objfile->dwp_checked)
10988     {
10989       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10990       dwarf2_per_objfile->dwp_checked = 1;
10991     }
10992   return dwarf2_per_objfile->dwp_file;
10993 }
10994
10995 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10996    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10997    or in the DWP file for the objfile, referenced by THIS_UNIT.
10998    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10999    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
11000
11001    This is called, for example, when wanting to read a variable with a
11002    complex location.  Therefore we don't want to do file i/o for every call.
11003    Therefore we don't want to look for a DWO file on every call.
11004    Therefore we first see if we've already seen SIGNATURE in a DWP file,
11005    then we check if we've already seen DWO_NAME, and only THEN do we check
11006    for a DWO file.
11007
11008    The result is a pointer to the dwo_unit object or NULL if we didn't find it
11009    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
11010
11011 static struct dwo_unit *
11012 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
11013                  const char *dwo_name, const char *comp_dir,
11014                  ULONGEST signature, int is_debug_types)
11015 {
11016   struct objfile *objfile = dwarf2_per_objfile->objfile;
11017   const char *kind = is_debug_types ? "TU" : "CU";
11018   void **dwo_file_slot;
11019   struct dwo_file *dwo_file;
11020   struct dwp_file *dwp_file;
11021
11022   /* First see if there's a DWP file.
11023      If we have a DWP file but didn't find the DWO inside it, don't
11024      look for the original DWO file.  It makes gdb behave differently
11025      depending on whether one is debugging in the build tree.  */
11026
11027   dwp_file = get_dwp_file ();
11028   if (dwp_file != NULL)
11029     {
11030       const struct dwp_hash_table *dwp_htab =
11031         is_debug_types ? dwp_file->tus : dwp_file->cus;
11032
11033       if (dwp_htab != NULL)
11034         {
11035           struct dwo_unit *dwo_cutu =
11036             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
11037                                     signature, is_debug_types);
11038
11039           if (dwo_cutu != NULL)
11040             {
11041               if (dwarf_read_debug)
11042                 {
11043                   fprintf_unfiltered (gdb_stdlog,
11044                                       "Virtual DWO %s %s found: @%s\n",
11045                                       kind, hex_string (signature),
11046                                       host_address_to_string (dwo_cutu));
11047                 }
11048               return dwo_cutu;
11049             }
11050         }
11051     }
11052   else
11053     {
11054       /* No DWP file, look for the DWO file.  */
11055
11056       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
11057       if (*dwo_file_slot == NULL)
11058         {
11059           /* Read in the file and build a table of the CUs/TUs it contains.  */
11060           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
11061         }
11062       /* NOTE: This will be NULL if unable to open the file.  */
11063       dwo_file = (struct dwo_file *) *dwo_file_slot;
11064
11065       if (dwo_file != NULL)
11066         {
11067           struct dwo_unit *dwo_cutu = NULL;
11068
11069           if (is_debug_types && dwo_file->tus)
11070             {
11071               struct dwo_unit find_dwo_cutu;
11072
11073               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
11074               find_dwo_cutu.signature = signature;
11075               dwo_cutu
11076                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
11077             }
11078           else if (!is_debug_types && dwo_file->cu)
11079             {
11080               if (signature == dwo_file->cu->signature)
11081                 dwo_cutu = dwo_file->cu;
11082             }
11083
11084           if (dwo_cutu != NULL)
11085             {
11086               if (dwarf_read_debug)
11087                 {
11088                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
11089                                       kind, dwo_name, hex_string (signature),
11090                                       host_address_to_string (dwo_cutu));
11091                 }
11092               return dwo_cutu;
11093             }
11094         }
11095     }
11096
11097   /* We didn't find it.  This could mean a dwo_id mismatch, or
11098      someone deleted the DWO/DWP file, or the search path isn't set up
11099      correctly to find the file.  */
11100
11101   if (dwarf_read_debug)
11102     {
11103       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11104                           kind, dwo_name, hex_string (signature));
11105     }
11106
11107   /* This is a warning and not a complaint because it can be caused by
11108      pilot error (e.g., user accidentally deleting the DWO).  */
11109   {
11110     /* Print the name of the DWP file if we looked there, helps the user
11111        better diagnose the problem.  */
11112     char *dwp_text = NULL;
11113     struct cleanup *cleanups;
11114
11115     if (dwp_file != NULL)
11116       dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11117     cleanups = make_cleanup (xfree, dwp_text);
11118
11119     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11120                " [in module %s]"),
11121              kind, dwo_name, hex_string (signature),
11122              dwp_text != NULL ? dwp_text : "",
11123              this_unit->is_debug_types ? "TU" : "CU",
11124              this_unit->offset.sect_off, objfile_name (objfile));
11125
11126     do_cleanups (cleanups);
11127   }
11128   return NULL;
11129 }
11130
11131 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11132    See lookup_dwo_cutu_unit for details.  */
11133
11134 static struct dwo_unit *
11135 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11136                       const char *dwo_name, const char *comp_dir,
11137                       ULONGEST signature)
11138 {
11139   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11140 }
11141
11142 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11143    See lookup_dwo_cutu_unit for details.  */
11144
11145 static struct dwo_unit *
11146 lookup_dwo_type_unit (struct signatured_type *this_tu,
11147                       const char *dwo_name, const char *comp_dir)
11148 {
11149   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11150 }
11151
11152 /* Traversal function for queue_and_load_all_dwo_tus.  */
11153
11154 static int
11155 queue_and_load_dwo_tu (void **slot, void *info)
11156 {
11157   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11158   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11159   ULONGEST signature = dwo_unit->signature;
11160   struct signatured_type *sig_type =
11161     lookup_dwo_signatured_type (per_cu->cu, signature);
11162
11163   if (sig_type != NULL)
11164     {
11165       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11166
11167       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11168          a real dependency of PER_CU on SIG_TYPE.  That is detected later
11169          while processing PER_CU.  */
11170       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11171         load_full_type_unit (sig_cu);
11172       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11173     }
11174
11175   return 1;
11176 }
11177
11178 /* Queue all TUs contained in the DWO of PER_CU to be read in.
11179    The DWO may have the only definition of the type, though it may not be
11180    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
11181    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
11182
11183 static void
11184 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11185 {
11186   struct dwo_unit *dwo_unit;
11187   struct dwo_file *dwo_file;
11188
11189   gdb_assert (!per_cu->is_debug_types);
11190   gdb_assert (get_dwp_file () == NULL);
11191   gdb_assert (per_cu->cu != NULL);
11192
11193   dwo_unit = per_cu->cu->dwo_unit;
11194   gdb_assert (dwo_unit != NULL);
11195
11196   dwo_file = dwo_unit->dwo_file;
11197   if (dwo_file->tus != NULL)
11198     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11199 }
11200
11201 /* Free all resources associated with DWO_FILE.
11202    Close the DWO file and munmap the sections.
11203    All memory should be on the objfile obstack.  */
11204
11205 static void
11206 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
11207 {
11208
11209   /* Note: dbfd is NULL for virtual DWO files.  */
11210   gdb_bfd_unref (dwo_file->dbfd);
11211
11212   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11213 }
11214
11215 /* Wrapper for free_dwo_file for use in cleanups.  */
11216
11217 static void
11218 free_dwo_file_cleanup (void *arg)
11219 {
11220   struct dwo_file *dwo_file = (struct dwo_file *) arg;
11221   struct objfile *objfile = dwarf2_per_objfile->objfile;
11222
11223   free_dwo_file (dwo_file, objfile);
11224 }
11225
11226 /* Traversal function for free_dwo_files.  */
11227
11228 static int
11229 free_dwo_file_from_slot (void **slot, void *info)
11230 {
11231   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11232   struct objfile *objfile = (struct objfile *) info;
11233
11234   free_dwo_file (dwo_file, objfile);
11235
11236   return 1;
11237 }
11238
11239 /* Free all resources associated with DWO_FILES.  */
11240
11241 static void
11242 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11243 {
11244   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
11245 }
11246 \f
11247 /* Read in various DIEs.  */
11248
11249 /* qsort helper for inherit_abstract_dies.  */
11250
11251 static int
11252 unsigned_int_compar (const void *ap, const void *bp)
11253 {
11254   unsigned int a = *(unsigned int *) ap;
11255   unsigned int b = *(unsigned int *) bp;
11256
11257   return (a > b) - (b > a);
11258 }
11259
11260 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
11261    Inherit only the children of the DW_AT_abstract_origin DIE not being
11262    already referenced by DW_AT_abstract_origin from the children of the
11263    current DIE.  */
11264
11265 static void
11266 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11267 {
11268   struct die_info *child_die;
11269   unsigned die_children_count;
11270   /* CU offsets which were referenced by children of the current DIE.  */
11271   sect_offset *offsets;
11272   sect_offset *offsets_end, *offsetp;
11273   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
11274   struct die_info *origin_die;
11275   /* Iterator of the ORIGIN_DIE children.  */
11276   struct die_info *origin_child_die;
11277   struct cleanup *cleanups;
11278   struct attribute *attr;
11279   struct dwarf2_cu *origin_cu;
11280   struct pending **origin_previous_list_in_scope;
11281
11282   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11283   if (!attr)
11284     return;
11285
11286   /* Note that following die references may follow to a die in a
11287      different cu.  */
11288
11289   origin_cu = cu;
11290   origin_die = follow_die_ref (die, attr, &origin_cu);
11291
11292   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11293      symbols in.  */
11294   origin_previous_list_in_scope = origin_cu->list_in_scope;
11295   origin_cu->list_in_scope = cu->list_in_scope;
11296
11297   if (die->tag != origin_die->tag
11298       && !(die->tag == DW_TAG_inlined_subroutine
11299            && origin_die->tag == DW_TAG_subprogram))
11300     complaint (&symfile_complaints,
11301                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
11302                die->offset.sect_off, origin_die->offset.sect_off);
11303
11304   child_die = die->child;
11305   die_children_count = 0;
11306   while (child_die && child_die->tag)
11307     {
11308       child_die = sibling_die (child_die);
11309       die_children_count++;
11310     }
11311   offsets = XNEWVEC (sect_offset, die_children_count);
11312   cleanups = make_cleanup (xfree, offsets);
11313
11314   offsets_end = offsets;
11315   for (child_die = die->child;
11316        child_die && child_die->tag;
11317        child_die = sibling_die (child_die))
11318     {
11319       struct die_info *child_origin_die;
11320       struct dwarf2_cu *child_origin_cu;
11321
11322       /* We are trying to process concrete instance entries:
11323          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11324          it's not relevant to our analysis here. i.e. detecting DIEs that are
11325          present in the abstract instance but not referenced in the concrete
11326          one.  */
11327       if (child_die->tag == DW_TAG_call_site
11328           || child_die->tag == DW_TAG_GNU_call_site)
11329         continue;
11330
11331       /* For each CHILD_DIE, find the corresponding child of
11332          ORIGIN_DIE.  If there is more than one layer of
11333          DW_AT_abstract_origin, follow them all; there shouldn't be,
11334          but GCC versions at least through 4.4 generate this (GCC PR
11335          40573).  */
11336       child_origin_die = child_die;
11337       child_origin_cu = cu;
11338       while (1)
11339         {
11340           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11341                               child_origin_cu);
11342           if (attr == NULL)
11343             break;
11344           child_origin_die = follow_die_ref (child_origin_die, attr,
11345                                              &child_origin_cu);
11346         }
11347
11348       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11349          counterpart may exist.  */
11350       if (child_origin_die != child_die)
11351         {
11352           if (child_die->tag != child_origin_die->tag
11353               && !(child_die->tag == DW_TAG_inlined_subroutine
11354                    && child_origin_die->tag == DW_TAG_subprogram))
11355             complaint (&symfile_complaints,
11356                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11357                          "different tags"), child_die->offset.sect_off,
11358                        child_origin_die->offset.sect_off);
11359           if (child_origin_die->parent != origin_die)
11360             complaint (&symfile_complaints,
11361                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11362                          "different parents"), child_die->offset.sect_off,
11363                        child_origin_die->offset.sect_off);
11364           else
11365             *offsets_end++ = child_origin_die->offset;
11366         }
11367     }
11368   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11369          unsigned_int_compar);
11370   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
11371     if (offsetp[-1].sect_off == offsetp->sect_off)
11372       complaint (&symfile_complaints,
11373                  _("Multiple children of DIE 0x%x refer "
11374                    "to DIE 0x%x as their abstract origin"),
11375                  die->offset.sect_off, offsetp->sect_off);
11376
11377   offsetp = offsets;
11378   origin_child_die = origin_die->child;
11379   while (origin_child_die && origin_child_die->tag)
11380     {
11381       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
11382       while (offsetp < offsets_end
11383              && offsetp->sect_off < origin_child_die->offset.sect_off)
11384         offsetp++;
11385       if (offsetp >= offsets_end
11386           || offsetp->sect_off > origin_child_die->offset.sect_off)
11387         {
11388           /* Found that ORIGIN_CHILD_DIE is really not referenced.
11389              Check whether we're already processing ORIGIN_CHILD_DIE.
11390              This can happen with mutually referenced abstract_origins.
11391              PR 16581.  */
11392           if (!origin_child_die->in_process)
11393             process_die (origin_child_die, origin_cu);
11394         }
11395       origin_child_die = sibling_die (origin_child_die);
11396     }
11397   origin_cu->list_in_scope = origin_previous_list_in_scope;
11398
11399   do_cleanups (cleanups);
11400 }
11401
11402 static void
11403 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
11404 {
11405   struct objfile *objfile = cu->objfile;
11406   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11407   struct context_stack *newobj;
11408   CORE_ADDR lowpc;
11409   CORE_ADDR highpc;
11410   struct die_info *child_die;
11411   struct attribute *attr, *call_line, *call_file;
11412   const char *name;
11413   CORE_ADDR baseaddr;
11414   struct block *block;
11415   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
11416   VEC (symbolp) *template_args = NULL;
11417   struct template_symbol *templ_func = NULL;
11418
11419   if (inlined_func)
11420     {
11421       /* If we do not have call site information, we can't show the
11422          caller of this inlined function.  That's too confusing, so
11423          only use the scope for local variables.  */
11424       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11425       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11426       if (call_line == NULL || call_file == NULL)
11427         {
11428           read_lexical_block_scope (die, cu);
11429           return;
11430         }
11431     }
11432
11433   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11434
11435   name = dwarf2_name (die, cu);
11436
11437   /* Ignore functions with missing or empty names.  These are actually
11438      illegal according to the DWARF standard.  */
11439   if (name == NULL)
11440     {
11441       complaint (&symfile_complaints,
11442                  _("missing name for subprogram DIE at %d"),
11443                  die->offset.sect_off);
11444       return;
11445     }
11446
11447   /* Ignore functions with missing or invalid low and high pc attributes.  */
11448   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
11449       <= PC_BOUNDS_INVALID)
11450     {
11451       attr = dwarf2_attr (die, DW_AT_external, cu);
11452       if (!attr || !DW_UNSND (attr))
11453         complaint (&symfile_complaints,
11454                    _("cannot get low and high bounds "
11455                      "for subprogram DIE at %d"),
11456                    die->offset.sect_off);
11457       return;
11458     }
11459
11460   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11461   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
11462
11463   /* If we have any template arguments, then we must allocate a
11464      different sort of symbol.  */
11465   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11466     {
11467       if (child_die->tag == DW_TAG_template_type_param
11468           || child_die->tag == DW_TAG_template_value_param)
11469         {
11470           templ_func = allocate_template_symbol (objfile);
11471           templ_func->base.is_cplus_template_function = 1;
11472           break;
11473         }
11474     }
11475
11476   newobj = push_context (0, lowpc);
11477   newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
11478                                (struct symbol *) templ_func);
11479
11480   /* If there is a location expression for DW_AT_frame_base, record
11481      it.  */
11482   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11483   if (attr)
11484     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
11485
11486   /* If there is a location for the static link, record it.  */
11487   newobj->static_link = NULL;
11488   attr = dwarf2_attr (die, DW_AT_static_link, cu);
11489   if (attr)
11490     {
11491       newobj->static_link
11492         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
11493       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
11494     }
11495
11496   cu->list_in_scope = &local_symbols;
11497
11498   if (die->child != NULL)
11499     {
11500       child_die = die->child;
11501       while (child_die && child_die->tag)
11502         {
11503           if (child_die->tag == DW_TAG_template_type_param
11504               || child_die->tag == DW_TAG_template_value_param)
11505             {
11506               struct symbol *arg = new_symbol (child_die, NULL, cu);
11507
11508               if (arg != NULL)
11509                 VEC_safe_push (symbolp, template_args, arg);
11510             }
11511           else
11512             process_die (child_die, cu);
11513           child_die = sibling_die (child_die);
11514         }
11515     }
11516
11517   inherit_abstract_dies (die, cu);
11518
11519   /* If we have a DW_AT_specification, we might need to import using
11520      directives from the context of the specification DIE.  See the
11521      comment in determine_prefix.  */
11522   if (cu->language == language_cplus
11523       && dwarf2_attr (die, DW_AT_specification, cu))
11524     {
11525       struct dwarf2_cu *spec_cu = cu;
11526       struct die_info *spec_die = die_specification (die, &spec_cu);
11527
11528       while (spec_die)
11529         {
11530           child_die = spec_die->child;
11531           while (child_die && child_die->tag)
11532             {
11533               if (child_die->tag == DW_TAG_imported_module)
11534                 process_die (child_die, spec_cu);
11535               child_die = sibling_die (child_die);
11536             }
11537
11538           /* In some cases, GCC generates specification DIEs that
11539              themselves contain DW_AT_specification attributes.  */
11540           spec_die = die_specification (spec_die, &spec_cu);
11541         }
11542     }
11543
11544   newobj = pop_context ();
11545   /* Make a block for the local symbols within.  */
11546   block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
11547                         newobj->static_link, lowpc, highpc);
11548
11549   /* For C++, set the block's scope.  */
11550   if ((cu->language == language_cplus
11551        || cu->language == language_fortran
11552        || cu->language == language_d
11553        || cu->language == language_rust)
11554       && cu->processing_has_namespace_info)
11555     block_set_scope (block, determine_prefix (die, cu),
11556                      &objfile->objfile_obstack);
11557
11558   /* If we have address ranges, record them.  */
11559   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11560
11561   gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
11562
11563   /* Attach template arguments to function.  */
11564   if (! VEC_empty (symbolp, template_args))
11565     {
11566       gdb_assert (templ_func != NULL);
11567
11568       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11569       templ_func->template_arguments
11570         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
11571                      templ_func->n_template_arguments);
11572       memcpy (templ_func->template_arguments,
11573               VEC_address (symbolp, template_args),
11574               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11575       VEC_free (symbolp, template_args);
11576     }
11577
11578   /* In C++, we can have functions nested inside functions (e.g., when
11579      a function declares a class that has methods).  This means that
11580      when we finish processing a function scope, we may need to go
11581      back to building a containing block's symbol lists.  */
11582   local_symbols = newobj->locals;
11583   local_using_directives = newobj->local_using_directives;
11584
11585   /* If we've finished processing a top-level function, subsequent
11586      symbols go in the file symbol list.  */
11587   if (outermost_context_p ())
11588     cu->list_in_scope = &file_symbols;
11589 }
11590
11591 /* Process all the DIES contained within a lexical block scope.  Start
11592    a new scope, process the dies, and then close the scope.  */
11593
11594 static void
11595 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11596 {
11597   struct objfile *objfile = cu->objfile;
11598   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11599   struct context_stack *newobj;
11600   CORE_ADDR lowpc, highpc;
11601   struct die_info *child_die;
11602   CORE_ADDR baseaddr;
11603
11604   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11605
11606   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11607   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11608      as multiple lexical blocks?  Handling children in a sane way would
11609      be nasty.  Might be easier to properly extend generic blocks to
11610      describe ranges.  */
11611   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11612     {
11613     case PC_BOUNDS_NOT_PRESENT:
11614       /* DW_TAG_lexical_block has no attributes, process its children as if
11615          there was no wrapping by that DW_TAG_lexical_block.
11616          GCC does no longer produces such DWARF since GCC r224161.  */
11617       for (child_die = die->child;
11618            child_die != NULL && child_die->tag;
11619            child_die = sibling_die (child_die))
11620         process_die (child_die, cu);
11621       return;
11622     case PC_BOUNDS_INVALID:
11623       return;
11624     }
11625   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11626   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
11627
11628   push_context (0, lowpc);
11629   if (die->child != NULL)
11630     {
11631       child_die = die->child;
11632       while (child_die && child_die->tag)
11633         {
11634           process_die (child_die, cu);
11635           child_die = sibling_die (child_die);
11636         }
11637     }
11638   inherit_abstract_dies (die, cu);
11639   newobj = pop_context ();
11640
11641   if (local_symbols != NULL || local_using_directives != NULL)
11642     {
11643       struct block *block
11644         = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
11645                         newobj->start_addr, highpc);
11646
11647       /* Note that recording ranges after traversing children, as we
11648          do here, means that recording a parent's ranges entails
11649          walking across all its children's ranges as they appear in
11650          the address map, which is quadratic behavior.
11651
11652          It would be nicer to record the parent's ranges before
11653          traversing its children, simply overriding whatever you find
11654          there.  But since we don't even decide whether to create a
11655          block until after we've traversed its children, that's hard
11656          to do.  */
11657       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11658     }
11659   local_symbols = newobj->locals;
11660   local_using_directives = newobj->local_using_directives;
11661 }
11662
11663 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
11664
11665 static void
11666 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11667 {
11668   struct objfile *objfile = cu->objfile;
11669   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11670   CORE_ADDR pc, baseaddr;
11671   struct attribute *attr;
11672   struct call_site *call_site, call_site_local;
11673   void **slot;
11674   int nparams;
11675   struct die_info *child_die;
11676
11677   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11678
11679   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
11680   if (attr == NULL)
11681     {
11682       /* This was a pre-DWARF-5 GNU extension alias
11683          for DW_AT_call_return_pc.  */
11684       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11685     }
11686   if (!attr)
11687     {
11688       complaint (&symfile_complaints,
11689                  _("missing DW_AT_call_return_pc for DW_TAG_call_site "
11690                    "DIE 0x%x [in module %s]"),
11691                  die->offset.sect_off, objfile_name (objfile));
11692       return;
11693     }
11694   pc = attr_value_as_address (attr) + baseaddr;
11695   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
11696
11697   if (cu->call_site_htab == NULL)
11698     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11699                                                NULL, &objfile->objfile_obstack,
11700                                                hashtab_obstack_allocate, NULL);
11701   call_site_local.pc = pc;
11702   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11703   if (*slot != NULL)
11704     {
11705       complaint (&symfile_complaints,
11706                  _("Duplicate PC %s for DW_TAG_call_site "
11707                    "DIE 0x%x [in module %s]"),
11708                  paddress (gdbarch, pc), die->offset.sect_off,
11709                  objfile_name (objfile));
11710       return;
11711     }
11712
11713   /* Count parameters at the caller.  */
11714
11715   nparams = 0;
11716   for (child_die = die->child; child_die && child_die->tag;
11717        child_die = sibling_die (child_die))
11718     {
11719       if (child_die->tag != DW_TAG_call_site_parameter
11720           && child_die->tag != DW_TAG_GNU_call_site_parameter)
11721         {
11722           complaint (&symfile_complaints,
11723                      _("Tag %d is not DW_TAG_call_site_parameter in "
11724                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
11725                      child_die->tag, child_die->offset.sect_off,
11726                      objfile_name (objfile));
11727           continue;
11728         }
11729
11730       nparams++;
11731     }
11732
11733   call_site
11734     = ((struct call_site *)
11735        obstack_alloc (&objfile->objfile_obstack,
11736                       sizeof (*call_site)
11737                       + (sizeof (*call_site->parameter) * (nparams - 1))));
11738   *slot = call_site;
11739   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11740   call_site->pc = pc;
11741
11742   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
11743       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11744     {
11745       struct die_info *func_die;
11746
11747       /* Skip also over DW_TAG_inlined_subroutine.  */
11748       for (func_die = die->parent;
11749            func_die && func_die->tag != DW_TAG_subprogram
11750            && func_die->tag != DW_TAG_subroutine_type;
11751            func_die = func_die->parent);
11752
11753       /* DW_AT_call_all_calls is a superset
11754          of DW_AT_call_all_tail_calls.  */
11755       if (func_die
11756           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
11757           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11758           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
11759           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11760         {
11761           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11762              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11763              both the initial caller containing the real return address PC and
11764              the final callee containing the current PC of a chain of tail
11765              calls do not need to have the tail call list complete.  But any
11766              function candidate for a virtual tail call frame searched via
11767              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11768              determined unambiguously.  */
11769         }
11770       else
11771         {
11772           struct type *func_type = NULL;
11773
11774           if (func_die)
11775             func_type = get_die_type (func_die, cu);
11776           if (func_type != NULL)
11777             {
11778               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11779
11780               /* Enlist this call site to the function.  */
11781               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11782               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11783             }
11784           else
11785             complaint (&symfile_complaints,
11786                        _("Cannot find function owning DW_TAG_call_site "
11787                          "DIE 0x%x [in module %s]"),
11788                        die->offset.sect_off, objfile_name (objfile));
11789         }
11790     }
11791
11792   attr = dwarf2_attr (die, DW_AT_call_target, cu);
11793   if (attr == NULL)
11794     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11795   if (attr == NULL)
11796     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
11797   if (attr == NULL)
11798     {
11799       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
11800       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11801     }
11802   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11803   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11804     /* Keep NULL DWARF_BLOCK.  */;
11805   else if (attr_form_is_block (attr))
11806     {
11807       struct dwarf2_locexpr_baton *dlbaton;
11808
11809       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
11810       dlbaton->data = DW_BLOCK (attr)->data;
11811       dlbaton->size = DW_BLOCK (attr)->size;
11812       dlbaton->per_cu = cu->per_cu;
11813
11814       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11815     }
11816   else if (attr_form_is_ref (attr))
11817     {
11818       struct dwarf2_cu *target_cu = cu;
11819       struct die_info *target_die;
11820
11821       target_die = follow_die_ref (die, attr, &target_cu);
11822       gdb_assert (target_cu->objfile == objfile);
11823       if (die_is_declaration (target_die, target_cu))
11824         {
11825           const char *target_physname;
11826
11827           /* Prefer the mangled name; otherwise compute the demangled one.  */
11828           target_physname = dwarf2_string_attr (target_die,
11829                                                 DW_AT_linkage_name,
11830                                                 target_cu);
11831           if (target_physname == NULL)
11832             target_physname = dwarf2_string_attr (target_die,
11833                                                  DW_AT_MIPS_linkage_name,
11834                                                  target_cu);
11835           if (target_physname == NULL)
11836             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11837           if (target_physname == NULL)
11838             complaint (&symfile_complaints,
11839                        _("DW_AT_call_target target DIE has invalid "
11840                          "physname, for referencing DIE 0x%x [in module %s]"),
11841                        die->offset.sect_off, objfile_name (objfile));
11842           else
11843             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11844         }
11845       else
11846         {
11847           CORE_ADDR lowpc;
11848
11849           /* DW_AT_entry_pc should be preferred.  */
11850           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
11851               <= PC_BOUNDS_INVALID)
11852             complaint (&symfile_complaints,
11853                        _("DW_AT_call_target target DIE has invalid "
11854                          "low pc, for referencing DIE 0x%x [in module %s]"),
11855                        die->offset.sect_off, objfile_name (objfile));
11856           else
11857             {
11858               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11859               SET_FIELD_PHYSADDR (call_site->target, lowpc);
11860             }
11861         }
11862     }
11863   else
11864     complaint (&symfile_complaints,
11865                _("DW_TAG_call_site DW_AT_call_target is neither "
11866                  "block nor reference, for DIE 0x%x [in module %s]"),
11867                die->offset.sect_off, objfile_name (objfile));
11868
11869   call_site->per_cu = cu->per_cu;
11870
11871   for (child_die = die->child;
11872        child_die && child_die->tag;
11873        child_die = sibling_die (child_die))
11874     {
11875       struct call_site_parameter *parameter;
11876       struct attribute *loc, *origin;
11877
11878       if (child_die->tag != DW_TAG_call_site_parameter
11879           && child_die->tag != DW_TAG_GNU_call_site_parameter)
11880         {
11881           /* Already printed the complaint above.  */
11882           continue;
11883         }
11884
11885       gdb_assert (call_site->parameter_count < nparams);
11886       parameter = &call_site->parameter[call_site->parameter_count];
11887
11888       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11889          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11890          register is contained in DW_AT_call_value.  */
11891
11892       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11893       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
11894       if (origin == NULL)
11895         {
11896           /* This was a pre-DWARF-5 GNU extension alias
11897              for DW_AT_call_parameter.  */
11898           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11899         }
11900       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11901         {
11902           sect_offset offset;
11903
11904           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11905           offset = dwarf2_get_ref_die_offset (origin);
11906           if (!offset_in_cu_p (&cu->header, offset))
11907             {
11908               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11909                  binding can be done only inside one CU.  Such referenced DIE
11910                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11911               complaint (&symfile_complaints,
11912                          _("DW_AT_call_parameter offset is not in CU for "
11913                            "DW_TAG_call_site child DIE 0x%x [in module %s]"),
11914                          child_die->offset.sect_off, objfile_name (objfile));
11915               continue;
11916             }
11917           parameter->u.param_offset.cu_off = (offset.sect_off
11918                                               - cu->header.offset.sect_off);
11919         }
11920       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11921         {
11922           complaint (&symfile_complaints,
11923                      _("No DW_FORM_block* DW_AT_location for "
11924                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
11925                      child_die->offset.sect_off, objfile_name (objfile));
11926           continue;
11927         }
11928       else
11929         {
11930           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11931             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11932           if (parameter->u.dwarf_reg != -1)
11933             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11934           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11935                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11936                                              &parameter->u.fb_offset))
11937             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11938           else
11939             {
11940               complaint (&symfile_complaints,
11941                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11942                            "for DW_FORM_block* DW_AT_location is supported for "
11943                            "DW_TAG_call_site child DIE 0x%x "
11944                            "[in module %s]"),
11945                          child_die->offset.sect_off, objfile_name (objfile));
11946               continue;
11947             }
11948         }
11949
11950       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
11951       if (attr == NULL)
11952         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11953       if (!attr_form_is_block (attr))
11954         {
11955           complaint (&symfile_complaints,
11956                      _("No DW_FORM_block* DW_AT_call_value for "
11957                        "DW_TAG_call_site child DIE 0x%x [in module %s]"),
11958                      child_die->offset.sect_off, objfile_name (objfile));
11959           continue;
11960         }
11961       parameter->value = DW_BLOCK (attr)->data;
11962       parameter->value_size = DW_BLOCK (attr)->size;
11963
11964       /* Parameters are not pre-cleared by memset above.  */
11965       parameter->data_value = NULL;
11966       parameter->data_value_size = 0;
11967       call_site->parameter_count++;
11968
11969       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
11970       if (attr == NULL)
11971         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11972       if (attr)
11973         {
11974           if (!attr_form_is_block (attr))
11975             complaint (&symfile_complaints,
11976                        _("No DW_FORM_block* DW_AT_call_data_value for "
11977                          "DW_TAG_call_site child DIE 0x%x [in module %s]"),
11978                        child_die->offset.sect_off, objfile_name (objfile));
11979           else
11980             {
11981               parameter->data_value = DW_BLOCK (attr)->data;
11982               parameter->data_value_size = DW_BLOCK (attr)->size;
11983             }
11984         }
11985     }
11986 }
11987
11988 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
11989    reading .debug_rnglists.
11990    Callback's type should be:
11991     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
11992    Return true if the attributes are present and valid, otherwise,
11993    return false.  */
11994
11995 template <typename Callback>
11996 static bool
11997 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
11998                          Callback &&callback)
11999 {
12000   struct objfile *objfile = cu->objfile;
12001   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12002   struct comp_unit_head *cu_header = &cu->header;
12003   bfd *obfd = objfile->obfd;
12004   unsigned int addr_size = cu_header->addr_size;
12005   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12006   /* Base address selection entry.  */
12007   CORE_ADDR base;
12008   int found_base;
12009   unsigned int dummy;
12010   const gdb_byte *buffer;
12011   CORE_ADDR low = 0;
12012   CORE_ADDR high = 0;
12013   CORE_ADDR baseaddr;
12014   bool overflow = false;
12015
12016   found_base = cu->base_known;
12017   base = cu->base_address;
12018
12019   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
12020   if (offset >= dwarf2_per_objfile->rnglists.size)
12021     {
12022       complaint (&symfile_complaints,
12023                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
12024                  offset);
12025       return false;
12026     }
12027   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
12028
12029   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
12030
12031   while (1)
12032     {
12033       /* Initialize it due to a false compiler warning.  */
12034       CORE_ADDR range_beginning = 0, range_end = 0;
12035       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
12036                                  + dwarf2_per_objfile->rnglists.size);
12037       unsigned int bytes_read;
12038
12039       if (buffer == buf_end)
12040         {
12041           overflow = true;
12042           break;
12043         }
12044       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
12045       switch (rlet)
12046         {
12047         case DW_RLE_end_of_list:
12048           break;
12049         case DW_RLE_base_address:
12050           if (buffer + cu->header.addr_size > buf_end)
12051             {
12052               overflow = true;
12053               break;
12054             }
12055           base = read_address (obfd, buffer, cu, &bytes_read);
12056           found_base = 1;
12057           buffer += bytes_read;
12058           break;
12059         case DW_RLE_start_length:
12060           if (buffer + cu->header.addr_size > buf_end)
12061             {
12062               overflow = true;
12063               break;
12064             }
12065           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
12066           buffer += bytes_read;
12067           range_end = (range_beginning
12068                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
12069           buffer += bytes_read;
12070           if (buffer > buf_end)
12071             {
12072               overflow = true;
12073               break;
12074             }
12075           break;
12076         case DW_RLE_offset_pair:
12077           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
12078           buffer += bytes_read;
12079           if (buffer > buf_end)
12080             {
12081               overflow = true;
12082               break;
12083             }
12084           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
12085           buffer += bytes_read;
12086           if (buffer > buf_end)
12087             {
12088               overflow = true;
12089               break;
12090             }
12091           break;
12092         case DW_RLE_start_end:
12093           if (buffer + 2 * cu->header.addr_size > buf_end)
12094             {
12095               overflow = true;
12096               break;
12097             }
12098           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
12099           buffer += bytes_read;
12100           range_end = read_address (obfd, buffer, cu, &bytes_read);
12101           buffer += bytes_read;
12102           break;
12103         default:
12104           complaint (&symfile_complaints,
12105                      _("Invalid .debug_rnglists data (no base address)"));
12106           return false;
12107         }
12108       if (rlet == DW_RLE_end_of_list || overflow)
12109         break;
12110       if (rlet == DW_RLE_base_address)
12111         continue;
12112
12113       if (!found_base)
12114         {
12115           /* We have no valid base address for the ranges
12116              data.  */
12117           complaint (&symfile_complaints,
12118                      _("Invalid .debug_rnglists data (no base address)"));
12119           return false;
12120         }
12121
12122       if (range_beginning > range_end)
12123         {
12124           /* Inverted range entries are invalid.  */
12125           complaint (&symfile_complaints,
12126                      _("Invalid .debug_rnglists data (inverted range)"));
12127           return false;
12128         }
12129
12130       /* Empty range entries have no effect.  */
12131       if (range_beginning == range_end)
12132         continue;
12133
12134       range_beginning += base;
12135       range_end += base;
12136
12137       /* A not-uncommon case of bad debug info.
12138          Don't pollute the addrmap with bad data.  */
12139       if (range_beginning + baseaddr == 0
12140           && !dwarf2_per_objfile->has_section_at_zero)
12141         {
12142           complaint (&symfile_complaints,
12143                      _(".debug_rnglists entry has start address of zero"
12144                        " [in module %s]"), objfile_name (objfile));
12145           continue;
12146         }
12147
12148       callback (range_beginning, range_end);
12149     }
12150
12151   if (overflow)
12152     {
12153       complaint (&symfile_complaints,
12154                  _("Offset %d is not terminated "
12155                    "for DW_AT_ranges attribute"),
12156                  offset);
12157       return false;
12158     }
12159
12160   return true;
12161 }
12162
12163 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
12164    Callback's type should be:
12165     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
12166    Return 1 if the attributes are present and valid, otherwise, return 0.  */
12167
12168 template <typename Callback>
12169 static int
12170 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
12171                        Callback &&callback)
12172 {
12173   struct objfile *objfile = cu->objfile;
12174   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12175   struct comp_unit_head *cu_header = &cu->header;
12176   bfd *obfd = objfile->obfd;
12177   unsigned int addr_size = cu_header->addr_size;
12178   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12179   /* Base address selection entry.  */
12180   CORE_ADDR base;
12181   int found_base;
12182   unsigned int dummy;
12183   const gdb_byte *buffer;
12184   CORE_ADDR baseaddr;
12185
12186   if (cu_header->version >= 5)
12187     return dwarf2_rnglists_process (offset, cu, callback);
12188
12189   found_base = cu->base_known;
12190   base = cu->base_address;
12191
12192   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
12193   if (offset >= dwarf2_per_objfile->ranges.size)
12194     {
12195       complaint (&symfile_complaints,
12196                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
12197                  offset);
12198       return 0;
12199     }
12200   buffer = dwarf2_per_objfile->ranges.buffer + offset;
12201
12202   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
12203
12204   while (1)
12205     {
12206       CORE_ADDR range_beginning, range_end;
12207
12208       range_beginning = read_address (obfd, buffer, cu, &dummy);
12209       buffer += addr_size;
12210       range_end = read_address (obfd, buffer, cu, &dummy);
12211       buffer += addr_size;
12212       offset += 2 * addr_size;
12213
12214       /* An end of list marker is a pair of zero addresses.  */
12215       if (range_beginning == 0 && range_end == 0)
12216         /* Found the end of list entry.  */
12217         break;
12218
12219       /* Each base address selection entry is a pair of 2 values.
12220          The first is the largest possible address, the second is
12221          the base address.  Check for a base address here.  */
12222       if ((range_beginning & mask) == mask)
12223         {
12224           /* If we found the largest possible address, then we already
12225              have the base address in range_end.  */
12226           base = range_end;
12227           found_base = 1;
12228           continue;
12229         }
12230
12231       if (!found_base)
12232         {
12233           /* We have no valid base address for the ranges
12234              data.  */
12235           complaint (&symfile_complaints,
12236                      _("Invalid .debug_ranges data (no base address)"));
12237           return 0;
12238         }
12239
12240       if (range_beginning > range_end)
12241         {
12242           /* Inverted range entries are invalid.  */
12243           complaint (&symfile_complaints,
12244                      _("Invalid .debug_ranges data (inverted range)"));
12245           return 0;
12246         }
12247
12248       /* Empty range entries have no effect.  */
12249       if (range_beginning == range_end)
12250         continue;
12251
12252       range_beginning += base;
12253       range_end += base;
12254
12255       /* A not-uncommon case of bad debug info.
12256          Don't pollute the addrmap with bad data.  */
12257       if (range_beginning + baseaddr == 0
12258           && !dwarf2_per_objfile->has_section_at_zero)
12259         {
12260           complaint (&symfile_complaints,
12261                      _(".debug_ranges entry has start address of zero"
12262                        " [in module %s]"), objfile_name (objfile));
12263           continue;
12264         }
12265
12266       callback (range_beginning, range_end);
12267     }
12268
12269   return 1;
12270 }
12271
12272 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
12273    Return 1 if the attributes are present and valid, otherwise, return 0.
12274    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
12275
12276 static int
12277 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
12278                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
12279                     struct partial_symtab *ranges_pst)
12280 {
12281   struct objfile *objfile = cu->objfile;
12282   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12283   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
12284                                        SECT_OFF_TEXT (objfile));
12285   int low_set = 0;
12286   CORE_ADDR low = 0;
12287   CORE_ADDR high = 0;
12288   int retval;
12289
12290   retval = dwarf2_ranges_process (offset, cu,
12291     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
12292     {
12293       if (ranges_pst != NULL)
12294         {
12295           CORE_ADDR lowpc;
12296           CORE_ADDR highpc;
12297
12298           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
12299                                               range_beginning + baseaddr);
12300           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
12301                                                range_end + baseaddr);
12302           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
12303                              ranges_pst);
12304         }
12305
12306       /* FIXME: This is recording everything as a low-high
12307          segment of consecutive addresses.  We should have a
12308          data structure for discontiguous block ranges
12309          instead.  */
12310       if (! low_set)
12311         {
12312           low = range_beginning;
12313           high = range_end;
12314           low_set = 1;
12315         }
12316       else
12317         {
12318           if (range_beginning < low)
12319             low = range_beginning;
12320           if (range_end > high)
12321             high = range_end;
12322         }
12323     });
12324   if (!retval)
12325     return 0;
12326
12327   if (! low_set)
12328     /* If the first entry is an end-of-list marker, the range
12329        describes an empty scope, i.e. no instructions.  */
12330     return 0;
12331
12332   if (low_return)
12333     *low_return = low;
12334   if (high_return)
12335     *high_return = high;
12336   return 1;
12337 }
12338
12339 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
12340    definition for the return value.  *LOWPC and *HIGHPC are set iff
12341    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
12342
12343 static enum pc_bounds_kind
12344 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
12345                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
12346                       struct partial_symtab *pst)
12347 {
12348   struct attribute *attr;
12349   struct attribute *attr_high;
12350   CORE_ADDR low = 0;
12351   CORE_ADDR high = 0;
12352   enum pc_bounds_kind ret;
12353
12354   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12355   if (attr_high)
12356     {
12357       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12358       if (attr)
12359         {
12360           low = attr_value_as_address (attr);
12361           high = attr_value_as_address (attr_high);
12362           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12363             high += low;
12364         }
12365       else
12366         /* Found high w/o low attribute.  */
12367         return PC_BOUNDS_INVALID;
12368
12369       /* Found consecutive range of addresses.  */
12370       ret = PC_BOUNDS_HIGH_LOW;
12371     }
12372   else
12373     {
12374       attr = dwarf2_attr (die, DW_AT_ranges, cu);
12375       if (attr != NULL)
12376         {
12377           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12378              We take advantage of the fact that DW_AT_ranges does not appear
12379              in DW_TAG_compile_unit of DWO files.  */
12380           int need_ranges_base = die->tag != DW_TAG_compile_unit;
12381           unsigned int ranges_offset = (DW_UNSND (attr)
12382                                         + (need_ranges_base
12383                                            ? cu->ranges_base
12384                                            : 0));
12385
12386           /* Value of the DW_AT_ranges attribute is the offset in the
12387              .debug_ranges section.  */
12388           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
12389             return PC_BOUNDS_INVALID;
12390           /* Found discontinuous range of addresses.  */
12391           ret = PC_BOUNDS_RANGES;
12392         }
12393       else
12394         return PC_BOUNDS_NOT_PRESENT;
12395     }
12396
12397   /* read_partial_die has also the strict LOW < HIGH requirement.  */
12398   if (high <= low)
12399     return PC_BOUNDS_INVALID;
12400
12401   /* When using the GNU linker, .gnu.linkonce. sections are used to
12402      eliminate duplicate copies of functions and vtables and such.
12403      The linker will arbitrarily choose one and discard the others.
12404      The AT_*_pc values for such functions refer to local labels in
12405      these sections.  If the section from that file was discarded, the
12406      labels are not in the output, so the relocs get a value of 0.
12407      If this is a discarded function, mark the pc bounds as invalid,
12408      so that GDB will ignore it.  */
12409   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
12410     return PC_BOUNDS_INVALID;
12411
12412   *lowpc = low;
12413   if (highpc)
12414     *highpc = high;
12415   return ret;
12416 }
12417
12418 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
12419    its low and high PC addresses.  Do nothing if these addresses could not
12420    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
12421    and HIGHPC to the high address if greater than HIGHPC.  */
12422
12423 static void
12424 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12425                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
12426                                  struct dwarf2_cu *cu)
12427 {
12428   CORE_ADDR low, high;
12429   struct die_info *child = die->child;
12430
12431   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
12432     {
12433       *lowpc = std::min (*lowpc, low);
12434       *highpc = std::max (*highpc, high);
12435     }
12436
12437   /* If the language does not allow nested subprograms (either inside
12438      subprograms or lexical blocks), we're done.  */
12439   if (cu->language != language_ada)
12440     return;
12441
12442   /* Check all the children of the given DIE.  If it contains nested
12443      subprograms, then check their pc bounds.  Likewise, we need to
12444      check lexical blocks as well, as they may also contain subprogram
12445      definitions.  */
12446   while (child && child->tag)
12447     {
12448       if (child->tag == DW_TAG_subprogram
12449           || child->tag == DW_TAG_lexical_block)
12450         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12451       child = sibling_die (child);
12452     }
12453 }
12454
12455 /* Get the low and high pc's represented by the scope DIE, and store
12456    them in *LOWPC and *HIGHPC.  If the correct values can't be
12457    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
12458
12459 static void
12460 get_scope_pc_bounds (struct die_info *die,
12461                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
12462                      struct dwarf2_cu *cu)
12463 {
12464   CORE_ADDR best_low = (CORE_ADDR) -1;
12465   CORE_ADDR best_high = (CORE_ADDR) 0;
12466   CORE_ADDR current_low, current_high;
12467
12468   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
12469       >= PC_BOUNDS_RANGES)
12470     {
12471       best_low = current_low;
12472       best_high = current_high;
12473     }
12474   else
12475     {
12476       struct die_info *child = die->child;
12477
12478       while (child && child->tag)
12479         {
12480           switch (child->tag) {
12481           case DW_TAG_subprogram:
12482             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
12483             break;
12484           case DW_TAG_namespace:
12485           case DW_TAG_module:
12486             /* FIXME: carlton/2004-01-16: Should we do this for
12487                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
12488                that current GCC's always emit the DIEs corresponding
12489                to definitions of methods of classes as children of a
12490                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12491                the DIEs giving the declarations, which could be
12492                anywhere).  But I don't see any reason why the
12493                standards says that they have to be there.  */
12494             get_scope_pc_bounds (child, &current_low, &current_high, cu);
12495
12496             if (current_low != ((CORE_ADDR) -1))
12497               {
12498                 best_low = std::min (best_low, current_low);
12499                 best_high = std::max (best_high, current_high);
12500               }
12501             break;
12502           default:
12503             /* Ignore.  */
12504             break;
12505           }
12506
12507           child = sibling_die (child);
12508         }
12509     }
12510
12511   *lowpc = best_low;
12512   *highpc = best_high;
12513 }
12514
12515 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
12516    in DIE.  */
12517
12518 static void
12519 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12520                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12521 {
12522   struct objfile *objfile = cu->objfile;
12523   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12524   struct attribute *attr;
12525   struct attribute *attr_high;
12526
12527   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12528   if (attr_high)
12529     {
12530       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12531       if (attr)
12532         {
12533           CORE_ADDR low = attr_value_as_address (attr);
12534           CORE_ADDR high = attr_value_as_address (attr_high);
12535
12536           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12537             high += low;
12538
12539           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12540           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12541           record_block_range (block, low, high - 1);
12542         }
12543     }
12544
12545   attr = dwarf2_attr (die, DW_AT_ranges, cu);
12546   if (attr)
12547     {
12548       bfd *obfd = objfile->obfd;
12549       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12550          We take advantage of the fact that DW_AT_ranges does not appear
12551          in DW_TAG_compile_unit of DWO files.  */
12552       int need_ranges_base = die->tag != DW_TAG_compile_unit;
12553
12554       /* The value of the DW_AT_ranges attribute is the offset of the
12555          address range list in the .debug_ranges section.  */
12556       unsigned long offset = (DW_UNSND (attr)
12557                               + (need_ranges_base ? cu->ranges_base : 0));
12558       const gdb_byte *buffer;
12559
12560       /* For some target architectures, but not others, the
12561          read_address function sign-extends the addresses it returns.
12562          To recognize base address selection entries, we need a
12563          mask.  */
12564       unsigned int addr_size = cu->header.addr_size;
12565       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12566
12567       /* The base address, to which the next pair is relative.  Note
12568          that this 'base' is a DWARF concept: most entries in a range
12569          list are relative, to reduce the number of relocs against the
12570          debugging information.  This is separate from this function's
12571          'baseaddr' argument, which GDB uses to relocate debugging
12572          information from a shared library based on the address at
12573          which the library was loaded.  */
12574       CORE_ADDR base = cu->base_address;
12575       int base_known = cu->base_known;
12576
12577       dwarf2_ranges_process (offset, cu,
12578         [&] (CORE_ADDR start, CORE_ADDR end)
12579         {
12580           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12581           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
12582           record_block_range (block, start, end - 1);
12583         });
12584     }
12585 }
12586
12587 /* Check whether the producer field indicates either of GCC < 4.6, or the
12588    Intel C/C++ compiler, and cache the result in CU.  */
12589
12590 static void
12591 check_producer (struct dwarf2_cu *cu)
12592 {
12593   int major, minor;
12594
12595   if (cu->producer == NULL)
12596     {
12597       /* For unknown compilers expect their behavior is DWARF version
12598          compliant.
12599
12600          GCC started to support .debug_types sections by -gdwarf-4 since
12601          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
12602          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12603          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12604          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
12605     }
12606   else if (producer_is_gcc (cu->producer, &major, &minor))
12607     {
12608       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12609       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
12610     }
12611   else if (startswith (cu->producer, "Intel(R) C"))
12612     cu->producer_is_icc = 1;
12613   else
12614     {
12615       /* For other non-GCC compilers, expect their behavior is DWARF version
12616          compliant.  */
12617     }
12618
12619   cu->checked_producer = 1;
12620 }
12621
12622 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12623    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12624    during 4.6.0 experimental.  */
12625
12626 static int
12627 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12628 {
12629   if (!cu->checked_producer)
12630     check_producer (cu);
12631
12632   return cu->producer_is_gxx_lt_4_6;
12633 }
12634
12635 /* Return the default accessibility type if it is not overriden by
12636    DW_AT_accessibility.  */
12637
12638 static enum dwarf_access_attribute
12639 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12640 {
12641   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12642     {
12643       /* The default DWARF 2 accessibility for members is public, the default
12644          accessibility for inheritance is private.  */
12645
12646       if (die->tag != DW_TAG_inheritance)
12647         return DW_ACCESS_public;
12648       else
12649         return DW_ACCESS_private;
12650     }
12651   else
12652     {
12653       /* DWARF 3+ defines the default accessibility a different way.  The same
12654          rules apply now for DW_TAG_inheritance as for the members and it only
12655          depends on the container kind.  */
12656
12657       if (die->parent->tag == DW_TAG_class_type)
12658         return DW_ACCESS_private;
12659       else
12660         return DW_ACCESS_public;
12661     }
12662 }
12663
12664 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12665    offset.  If the attribute was not found return 0, otherwise return
12666    1.  If it was found but could not properly be handled, set *OFFSET
12667    to 0.  */
12668
12669 static int
12670 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12671                              LONGEST *offset)
12672 {
12673   struct attribute *attr;
12674
12675   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12676   if (attr != NULL)
12677     {
12678       *offset = 0;
12679
12680       /* Note that we do not check for a section offset first here.
12681          This is because DW_AT_data_member_location is new in DWARF 4,
12682          so if we see it, we can assume that a constant form is really
12683          a constant and not a section offset.  */
12684       if (attr_form_is_constant (attr))
12685         *offset = dwarf2_get_attr_constant_value (attr, 0);
12686       else if (attr_form_is_section_offset (attr))
12687         dwarf2_complex_location_expr_complaint ();
12688       else if (attr_form_is_block (attr))
12689         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12690       else
12691         dwarf2_complex_location_expr_complaint ();
12692
12693       return 1;
12694     }
12695
12696   return 0;
12697 }
12698
12699 /* Add an aggregate field to the field list.  */
12700
12701 static void
12702 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12703                   struct dwarf2_cu *cu)
12704 {
12705   struct objfile *objfile = cu->objfile;
12706   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12707   struct nextfield *new_field;
12708   struct attribute *attr;
12709   struct field *fp;
12710   const char *fieldname = "";
12711
12712   /* Allocate a new field list entry and link it in.  */
12713   new_field = XNEW (struct nextfield);
12714   make_cleanup (xfree, new_field);
12715   memset (new_field, 0, sizeof (struct nextfield));
12716
12717   if (die->tag == DW_TAG_inheritance)
12718     {
12719       new_field->next = fip->baseclasses;
12720       fip->baseclasses = new_field;
12721     }
12722   else
12723     {
12724       new_field->next = fip->fields;
12725       fip->fields = new_field;
12726     }
12727   fip->nfields++;
12728
12729   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12730   if (attr)
12731     new_field->accessibility = DW_UNSND (attr);
12732   else
12733     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12734   if (new_field->accessibility != DW_ACCESS_public)
12735     fip->non_public_fields = 1;
12736
12737   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12738   if (attr)
12739     new_field->virtuality = DW_UNSND (attr);
12740   else
12741     new_field->virtuality = DW_VIRTUALITY_none;
12742
12743   fp = &new_field->field;
12744
12745   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12746     {
12747       LONGEST offset;
12748
12749       /* Data member other than a C++ static data member.  */
12750
12751       /* Get type of field.  */
12752       fp->type = die_type (die, cu);
12753
12754       SET_FIELD_BITPOS (*fp, 0);
12755
12756       /* Get bit size of field (zero if none).  */
12757       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12758       if (attr)
12759         {
12760           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12761         }
12762       else
12763         {
12764           FIELD_BITSIZE (*fp) = 0;
12765         }
12766
12767       /* Get bit offset of field.  */
12768       if (handle_data_member_location (die, cu, &offset))
12769         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12770       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12771       if (attr)
12772         {
12773           if (gdbarch_bits_big_endian (gdbarch))
12774             {
12775               /* For big endian bits, the DW_AT_bit_offset gives the
12776                  additional bit offset from the MSB of the containing
12777                  anonymous object to the MSB of the field.  We don't
12778                  have to do anything special since we don't need to
12779                  know the size of the anonymous object.  */
12780               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12781             }
12782           else
12783             {
12784               /* For little endian bits, compute the bit offset to the
12785                  MSB of the anonymous object, subtract off the number of
12786                  bits from the MSB of the field to the MSB of the
12787                  object, and then subtract off the number of bits of
12788                  the field itself.  The result is the bit offset of
12789                  the LSB of the field.  */
12790               int anonymous_size;
12791               int bit_offset = DW_UNSND (attr);
12792
12793               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12794               if (attr)
12795                 {
12796                   /* The size of the anonymous object containing
12797                      the bit field is explicit, so use the
12798                      indicated size (in bytes).  */
12799                   anonymous_size = DW_UNSND (attr);
12800                 }
12801               else
12802                 {
12803                   /* The size of the anonymous object containing
12804                      the bit field must be inferred from the type
12805                      attribute of the data member containing the
12806                      bit field.  */
12807                   anonymous_size = TYPE_LENGTH (fp->type);
12808                 }
12809               SET_FIELD_BITPOS (*fp,
12810                                 (FIELD_BITPOS (*fp)
12811                                  + anonymous_size * bits_per_byte
12812                                  - bit_offset - FIELD_BITSIZE (*fp)));
12813             }
12814         }
12815       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
12816       if (attr != NULL)
12817         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
12818                                 + dwarf2_get_attr_constant_value (attr, 0)));
12819
12820       /* Get name of field.  */
12821       fieldname = dwarf2_name (die, cu);
12822       if (fieldname == NULL)
12823         fieldname = "";
12824
12825       /* The name is already allocated along with this objfile, so we don't
12826          need to duplicate it for the type.  */
12827       fp->name = fieldname;
12828
12829       /* Change accessibility for artificial fields (e.g. virtual table
12830          pointer or virtual base class pointer) to private.  */
12831       if (dwarf2_attr (die, DW_AT_artificial, cu))
12832         {
12833           FIELD_ARTIFICIAL (*fp) = 1;
12834           new_field->accessibility = DW_ACCESS_private;
12835           fip->non_public_fields = 1;
12836         }
12837     }
12838   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12839     {
12840       /* C++ static member.  */
12841
12842       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12843          is a declaration, but all versions of G++ as of this writing
12844          (so through at least 3.2.1) incorrectly generate
12845          DW_TAG_variable tags.  */
12846
12847       const char *physname;
12848
12849       /* Get name of field.  */
12850       fieldname = dwarf2_name (die, cu);
12851       if (fieldname == NULL)
12852         return;
12853
12854       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12855       if (attr
12856           /* Only create a symbol if this is an external value.
12857              new_symbol checks this and puts the value in the global symbol
12858              table, which we want.  If it is not external, new_symbol
12859              will try to put the value in cu->list_in_scope which is wrong.  */
12860           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12861         {
12862           /* A static const member, not much different than an enum as far as
12863              we're concerned, except that we can support more types.  */
12864           new_symbol (die, NULL, cu);
12865         }
12866
12867       /* Get physical name.  */
12868       physname = dwarf2_physname (fieldname, die, cu);
12869
12870       /* The name is already allocated along with this objfile, so we don't
12871          need to duplicate it for the type.  */
12872       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12873       FIELD_TYPE (*fp) = die_type (die, cu);
12874       FIELD_NAME (*fp) = fieldname;
12875     }
12876   else if (die->tag == DW_TAG_inheritance)
12877     {
12878       LONGEST offset;
12879
12880       /* C++ base class field.  */
12881       if (handle_data_member_location (die, cu, &offset))
12882         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12883       FIELD_BITSIZE (*fp) = 0;
12884       FIELD_TYPE (*fp) = die_type (die, cu);
12885       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12886       fip->nbaseclasses++;
12887     }
12888 }
12889
12890 /* Add a typedef defined in the scope of the FIP's class.  */
12891
12892 static void
12893 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12894                     struct dwarf2_cu *cu)
12895 {
12896   struct typedef_field_list *new_field;
12897   struct typedef_field *fp;
12898
12899   /* Allocate a new field list entry and link it in.  */
12900   new_field = XCNEW (struct typedef_field_list);
12901   make_cleanup (xfree, new_field);
12902
12903   gdb_assert (die->tag == DW_TAG_typedef);
12904
12905   fp = &new_field->field;
12906
12907   /* Get name of field.  */
12908   fp->name = dwarf2_name (die, cu);
12909   if (fp->name == NULL)
12910     return;
12911
12912   fp->type = read_type_die (die, cu);
12913
12914   new_field->next = fip->typedef_field_list;
12915   fip->typedef_field_list = new_field;
12916   fip->typedef_field_list_count++;
12917 }
12918
12919 /* Create the vector of fields, and attach it to the type.  */
12920
12921 static void
12922 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12923                               struct dwarf2_cu *cu)
12924 {
12925   int nfields = fip->nfields;
12926
12927   /* Record the field count, allocate space for the array of fields,
12928      and create blank accessibility bitfields if necessary.  */
12929   TYPE_NFIELDS (type) = nfields;
12930   TYPE_FIELDS (type) = (struct field *)
12931     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12932   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12933
12934   if (fip->non_public_fields && cu->language != language_ada)
12935     {
12936       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12937
12938       TYPE_FIELD_PRIVATE_BITS (type) =
12939         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12940       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12941
12942       TYPE_FIELD_PROTECTED_BITS (type) =
12943         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12944       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12945
12946       TYPE_FIELD_IGNORE_BITS (type) =
12947         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12948       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12949     }
12950
12951   /* If the type has baseclasses, allocate and clear a bit vector for
12952      TYPE_FIELD_VIRTUAL_BITS.  */
12953   if (fip->nbaseclasses && cu->language != language_ada)
12954     {
12955       int num_bytes = B_BYTES (fip->nbaseclasses);
12956       unsigned char *pointer;
12957
12958       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12959       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
12960       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12961       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12962       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12963     }
12964
12965   /* Copy the saved-up fields into the field vector.  Start from the head of
12966      the list, adding to the tail of the field array, so that they end up in
12967      the same order in the array in which they were added to the list.  */
12968   while (nfields-- > 0)
12969     {
12970       struct nextfield *fieldp;
12971
12972       if (fip->fields)
12973         {
12974           fieldp = fip->fields;
12975           fip->fields = fieldp->next;
12976         }
12977       else
12978         {
12979           fieldp = fip->baseclasses;
12980           fip->baseclasses = fieldp->next;
12981         }
12982
12983       TYPE_FIELD (type, nfields) = fieldp->field;
12984       switch (fieldp->accessibility)
12985         {
12986         case DW_ACCESS_private:
12987           if (cu->language != language_ada)
12988             SET_TYPE_FIELD_PRIVATE (type, nfields);
12989           break;
12990
12991         case DW_ACCESS_protected:
12992           if (cu->language != language_ada)
12993             SET_TYPE_FIELD_PROTECTED (type, nfields);
12994           break;
12995
12996         case DW_ACCESS_public:
12997           break;
12998
12999         default:
13000           /* Unknown accessibility.  Complain and treat it as public.  */
13001           {
13002             complaint (&symfile_complaints, _("unsupported accessibility %d"),
13003                        fieldp->accessibility);
13004           }
13005           break;
13006         }
13007       if (nfields < fip->nbaseclasses)
13008         {
13009           switch (fieldp->virtuality)
13010             {
13011             case DW_VIRTUALITY_virtual:
13012             case DW_VIRTUALITY_pure_virtual:
13013               if (cu->language == language_ada)
13014                 error (_("unexpected virtuality in component of Ada type"));
13015               SET_TYPE_FIELD_VIRTUAL (type, nfields);
13016               break;
13017             }
13018         }
13019     }
13020 }
13021
13022 /* Return true if this member function is a constructor, false
13023    otherwise.  */
13024
13025 static int
13026 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
13027 {
13028   const char *fieldname;
13029   const char *type_name;
13030   int len;
13031
13032   if (die->parent == NULL)
13033     return 0;
13034
13035   if (die->parent->tag != DW_TAG_structure_type
13036       && die->parent->tag != DW_TAG_union_type
13037       && die->parent->tag != DW_TAG_class_type)
13038     return 0;
13039
13040   fieldname = dwarf2_name (die, cu);
13041   type_name = dwarf2_name (die->parent, cu);
13042   if (fieldname == NULL || type_name == NULL)
13043     return 0;
13044
13045   len = strlen (fieldname);
13046   return (strncmp (fieldname, type_name, len) == 0
13047           && (type_name[len] == '\0' || type_name[len] == '<'));
13048 }
13049
13050 /* Add a member function to the proper fieldlist.  */
13051
13052 static void
13053 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
13054                       struct type *type, struct dwarf2_cu *cu)
13055 {
13056   struct objfile *objfile = cu->objfile;
13057   struct attribute *attr;
13058   struct fnfieldlist *flp;
13059   int i;
13060   struct fn_field *fnp;
13061   const char *fieldname;
13062   struct nextfnfield *new_fnfield;
13063   struct type *this_type;
13064   enum dwarf_access_attribute accessibility;
13065
13066   if (cu->language == language_ada)
13067     error (_("unexpected member function in Ada type"));
13068
13069   /* Get name of member function.  */
13070   fieldname = dwarf2_name (die, cu);
13071   if (fieldname == NULL)
13072     return;
13073
13074   /* Look up member function name in fieldlist.  */
13075   for (i = 0; i < fip->nfnfields; i++)
13076     {
13077       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
13078         break;
13079     }
13080
13081   /* Create new list element if necessary.  */
13082   if (i < fip->nfnfields)
13083     flp = &fip->fnfieldlists[i];
13084   else
13085     {
13086       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
13087         {
13088           fip->fnfieldlists = (struct fnfieldlist *)
13089             xrealloc (fip->fnfieldlists,
13090                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
13091                       * sizeof (struct fnfieldlist));
13092           if (fip->nfnfields == 0)
13093             make_cleanup (free_current_contents, &fip->fnfieldlists);
13094         }
13095       flp = &fip->fnfieldlists[fip->nfnfields];
13096       flp->name = fieldname;
13097       flp->length = 0;
13098       flp->head = NULL;
13099       i = fip->nfnfields++;
13100     }
13101
13102   /* Create a new member function field and chain it to the field list
13103      entry.  */
13104   new_fnfield = XNEW (struct nextfnfield);
13105   make_cleanup (xfree, new_fnfield);
13106   memset (new_fnfield, 0, sizeof (struct nextfnfield));
13107   new_fnfield->next = flp->head;
13108   flp->head = new_fnfield;
13109   flp->length++;
13110
13111   /* Fill in the member function field info.  */
13112   fnp = &new_fnfield->fnfield;
13113
13114   /* Delay processing of the physname until later.  */
13115   if (cu->language == language_cplus)
13116     {
13117       add_to_method_list (type, i, flp->length - 1, fieldname,
13118                           die, cu);
13119     }
13120   else
13121     {
13122       const char *physname = dwarf2_physname (fieldname, die, cu);
13123       fnp->physname = physname ? physname : "";
13124     }
13125
13126   fnp->type = alloc_type (objfile);
13127   this_type = read_type_die (die, cu);
13128   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
13129     {
13130       int nparams = TYPE_NFIELDS (this_type);
13131
13132       /* TYPE is the domain of this method, and THIS_TYPE is the type
13133            of the method itself (TYPE_CODE_METHOD).  */
13134       smash_to_method_type (fnp->type, type,
13135                             TYPE_TARGET_TYPE (this_type),
13136                             TYPE_FIELDS (this_type),
13137                             TYPE_NFIELDS (this_type),
13138                             TYPE_VARARGS (this_type));
13139
13140       /* Handle static member functions.
13141          Dwarf2 has no clean way to discern C++ static and non-static
13142          member functions.  G++ helps GDB by marking the first
13143          parameter for non-static member functions (which is the this
13144          pointer) as artificial.  We obtain this information from
13145          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
13146       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
13147         fnp->voffset = VOFFSET_STATIC;
13148     }
13149   else
13150     complaint (&symfile_complaints, _("member function type missing for '%s'"),
13151                dwarf2_full_name (fieldname, die, cu));
13152
13153   /* Get fcontext from DW_AT_containing_type if present.  */
13154   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
13155     fnp->fcontext = die_containing_type (die, cu);
13156
13157   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
13158      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
13159
13160   /* Get accessibility.  */
13161   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
13162   if (attr)
13163     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
13164   else
13165     accessibility = dwarf2_default_access_attribute (die, cu);
13166   switch (accessibility)
13167     {
13168     case DW_ACCESS_private:
13169       fnp->is_private = 1;
13170       break;
13171     case DW_ACCESS_protected:
13172       fnp->is_protected = 1;
13173       break;
13174     }
13175
13176   /* Check for artificial methods.  */
13177   attr = dwarf2_attr (die, DW_AT_artificial, cu);
13178   if (attr && DW_UNSND (attr) != 0)
13179     fnp->is_artificial = 1;
13180
13181   fnp->is_constructor = dwarf2_is_constructor (die, cu);
13182
13183   /* Get index in virtual function table if it is a virtual member
13184      function.  For older versions of GCC, this is an offset in the
13185      appropriate virtual table, as specified by DW_AT_containing_type.
13186      For everyone else, it is an expression to be evaluated relative
13187      to the object address.  */
13188
13189   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
13190   if (attr)
13191     {
13192       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
13193         {
13194           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
13195             {
13196               /* Old-style GCC.  */
13197               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
13198             }
13199           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
13200                    || (DW_BLOCK (attr)->size > 1
13201                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
13202                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
13203             {
13204               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
13205               if ((fnp->voffset % cu->header.addr_size) != 0)
13206                 dwarf2_complex_location_expr_complaint ();
13207               else
13208                 fnp->voffset /= cu->header.addr_size;
13209               fnp->voffset += 2;
13210             }
13211           else
13212             dwarf2_complex_location_expr_complaint ();
13213
13214           if (!fnp->fcontext)
13215             {
13216               /* If there is no `this' field and no DW_AT_containing_type,
13217                  we cannot actually find a base class context for the
13218                  vtable!  */
13219               if (TYPE_NFIELDS (this_type) == 0
13220                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
13221                 {
13222                   complaint (&symfile_complaints,
13223                              _("cannot determine context for virtual member "
13224                                "function \"%s\" (offset %d)"),
13225                              fieldname, die->offset.sect_off);
13226                 }
13227               else
13228                 {
13229                   fnp->fcontext
13230                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
13231                 }
13232             }
13233         }
13234       else if (attr_form_is_section_offset (attr))
13235         {
13236           dwarf2_complex_location_expr_complaint ();
13237         }
13238       else
13239         {
13240           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
13241                                                  fieldname);
13242         }
13243     }
13244   else
13245     {
13246       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
13247       if (attr && DW_UNSND (attr))
13248         {
13249           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
13250           complaint (&symfile_complaints,
13251                      _("Member function \"%s\" (offset %d) is virtual "
13252                        "but the vtable offset is not specified"),
13253                      fieldname, die->offset.sect_off);
13254           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13255           TYPE_CPLUS_DYNAMIC (type) = 1;
13256         }
13257     }
13258 }
13259
13260 /* Create the vector of member function fields, and attach it to the type.  */
13261
13262 static void
13263 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
13264                                  struct dwarf2_cu *cu)
13265 {
13266   struct fnfieldlist *flp;
13267   int i;
13268
13269   if (cu->language == language_ada)
13270     error (_("unexpected member functions in Ada type"));
13271
13272   ALLOCATE_CPLUS_STRUCT_TYPE (type);
13273   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13274     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13275
13276   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13277     {
13278       struct nextfnfield *nfp = flp->head;
13279       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13280       int k;
13281
13282       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13283       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13284       fn_flp->fn_fields = (struct fn_field *)
13285         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13286       for (k = flp->length; (k--, nfp); nfp = nfp->next)
13287         fn_flp->fn_fields[k] = nfp->fnfield;
13288     }
13289
13290   TYPE_NFN_FIELDS (type) = fip->nfnfields;
13291 }
13292
13293 /* Returns non-zero if NAME is the name of a vtable member in CU's
13294    language, zero otherwise.  */
13295 static int
13296 is_vtable_name (const char *name, struct dwarf2_cu *cu)
13297 {
13298   static const char vptr[] = "_vptr";
13299   static const char vtable[] = "vtable";
13300
13301   /* Look for the C++ form of the vtable.  */
13302   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
13303     return 1;
13304
13305   return 0;
13306 }
13307
13308 /* GCC outputs unnamed structures that are really pointers to member
13309    functions, with the ABI-specified layout.  If TYPE describes
13310    such a structure, smash it into a member function type.
13311
13312    GCC shouldn't do this; it should just output pointer to member DIEs.
13313    This is GCC PR debug/28767.  */
13314
13315 static void
13316 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
13317 {
13318   struct type *pfn_type, *self_type, *new_type;
13319
13320   /* Check for a structure with no name and two children.  */
13321   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13322     return;
13323
13324   /* Check for __pfn and __delta members.  */
13325   if (TYPE_FIELD_NAME (type, 0) == NULL
13326       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13327       || TYPE_FIELD_NAME (type, 1) == NULL
13328       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13329     return;
13330
13331   /* Find the type of the method.  */
13332   pfn_type = TYPE_FIELD_TYPE (type, 0);
13333   if (pfn_type == NULL
13334       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13335       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
13336     return;
13337
13338   /* Look for the "this" argument.  */
13339   pfn_type = TYPE_TARGET_TYPE (pfn_type);
13340   if (TYPE_NFIELDS (pfn_type) == 0
13341       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
13342       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
13343     return;
13344
13345   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
13346   new_type = alloc_type (objfile);
13347   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
13348                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13349                         TYPE_VARARGS (pfn_type));
13350   smash_to_methodptr_type (type, new_type);
13351 }
13352
13353 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13354    (icc).  */
13355
13356 static int
13357 producer_is_icc (struct dwarf2_cu *cu)
13358 {
13359   if (!cu->checked_producer)
13360     check_producer (cu);
13361
13362   return cu->producer_is_icc;
13363 }
13364
13365 /* Called when we find the DIE that starts a structure or union scope
13366    (definition) to create a type for the structure or union.  Fill in
13367    the type's name and general properties; the members will not be
13368    processed until process_structure_scope.  A symbol table entry for
13369    the type will also not be done until process_structure_scope (assuming
13370    the type has a name).
13371
13372    NOTE: we need to call these functions regardless of whether or not the
13373    DIE has a DW_AT_name attribute, since it might be an anonymous
13374    structure or union.  This gets the type entered into our set of
13375    user defined types.  */
13376
13377 static struct type *
13378 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
13379 {
13380   struct objfile *objfile = cu->objfile;
13381   struct type *type;
13382   struct attribute *attr;
13383   const char *name;
13384
13385   /* If the definition of this type lives in .debug_types, read that type.
13386      Don't follow DW_AT_specification though, that will take us back up
13387      the chain and we want to go down.  */
13388   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13389   if (attr)
13390     {
13391       type = get_DW_AT_signature_type (die, attr, cu);
13392
13393       /* The type's CU may not be the same as CU.
13394          Ensure TYPE is recorded with CU in die_type_hash.  */
13395       return set_die_type (die, type, cu);
13396     }
13397
13398   type = alloc_type (objfile);
13399   INIT_CPLUS_SPECIFIC (type);
13400
13401   name = dwarf2_name (die, cu);
13402   if (name != NULL)
13403     {
13404       if (cu->language == language_cplus
13405           || cu->language == language_d
13406           || cu->language == language_rust)
13407         {
13408           const char *full_name = dwarf2_full_name (name, die, cu);
13409
13410           /* dwarf2_full_name might have already finished building the DIE's
13411              type.  If so, there is no need to continue.  */
13412           if (get_die_type (die, cu) != NULL)
13413             return get_die_type (die, cu);
13414
13415           TYPE_TAG_NAME (type) = full_name;
13416           if (die->tag == DW_TAG_structure_type
13417               || die->tag == DW_TAG_class_type)
13418             TYPE_NAME (type) = TYPE_TAG_NAME (type);
13419         }
13420       else
13421         {
13422           /* The name is already allocated along with this objfile, so
13423              we don't need to duplicate it for the type.  */
13424           TYPE_TAG_NAME (type) = name;
13425           if (die->tag == DW_TAG_class_type)
13426             TYPE_NAME (type) = TYPE_TAG_NAME (type);
13427         }
13428     }
13429
13430   if (die->tag == DW_TAG_structure_type)
13431     {
13432       TYPE_CODE (type) = TYPE_CODE_STRUCT;
13433     }
13434   else if (die->tag == DW_TAG_union_type)
13435     {
13436       TYPE_CODE (type) = TYPE_CODE_UNION;
13437     }
13438   else
13439     {
13440       TYPE_CODE (type) = TYPE_CODE_STRUCT;
13441     }
13442
13443   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13444     TYPE_DECLARED_CLASS (type) = 1;
13445
13446   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13447   if (attr)
13448     {
13449       if (attr_form_is_constant (attr))
13450         TYPE_LENGTH (type) = DW_UNSND (attr);
13451       else
13452         {
13453           /* For the moment, dynamic type sizes are not supported
13454              by GDB's struct type.  The actual size is determined
13455              on-demand when resolving the type of a given object,
13456              so set the type's length to zero for now.  Otherwise,
13457              we record an expression as the length, and that expression
13458              could lead to a very large value, which could eventually
13459              lead to us trying to allocate that much memory when creating
13460              a value of that type.  */
13461           TYPE_LENGTH (type) = 0;
13462         }
13463     }
13464   else
13465     {
13466       TYPE_LENGTH (type) = 0;
13467     }
13468
13469   if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
13470     {
13471       /* ICC does not output the required DW_AT_declaration
13472          on incomplete types, but gives them a size of zero.  */
13473       TYPE_STUB (type) = 1;
13474     }
13475   else
13476     TYPE_STUB_SUPPORTED (type) = 1;
13477
13478   if (die_is_declaration (die, cu))
13479     TYPE_STUB (type) = 1;
13480   else if (attr == NULL && die->child == NULL
13481            && producer_is_realview (cu->producer))
13482     /* RealView does not output the required DW_AT_declaration
13483        on incomplete types.  */
13484     TYPE_STUB (type) = 1;
13485
13486   /* We need to add the type field to the die immediately so we don't
13487      infinitely recurse when dealing with pointers to the structure
13488      type within the structure itself.  */
13489   set_die_type (die, type, cu);
13490
13491   /* set_die_type should be already done.  */
13492   set_descriptive_type (type, die, cu);
13493
13494   return type;
13495 }
13496
13497 /* Finish creating a structure or union type, including filling in
13498    its members and creating a symbol for it.  */
13499
13500 static void
13501 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13502 {
13503   struct objfile *objfile = cu->objfile;
13504   struct die_info *child_die;
13505   struct type *type;
13506
13507   type = get_die_type (die, cu);
13508   if (type == NULL)
13509     type = read_structure_type (die, cu);
13510
13511   if (die->child != NULL && ! die_is_declaration (die, cu))
13512     {
13513       struct field_info fi;
13514       VEC (symbolp) *template_args = NULL;
13515       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
13516
13517       memset (&fi, 0, sizeof (struct field_info));
13518
13519       child_die = die->child;
13520
13521       while (child_die && child_die->tag)
13522         {
13523           if (child_die->tag == DW_TAG_member
13524               || child_die->tag == DW_TAG_variable)
13525             {
13526               /* NOTE: carlton/2002-11-05: A C++ static data member
13527                  should be a DW_TAG_member that is a declaration, but
13528                  all versions of G++ as of this writing (so through at
13529                  least 3.2.1) incorrectly generate DW_TAG_variable
13530                  tags for them instead.  */
13531               dwarf2_add_field (&fi, child_die, cu);
13532             }
13533           else if (child_die->tag == DW_TAG_subprogram)
13534             {
13535               /* Rust doesn't have member functions in the C++ sense.
13536                  However, it does emit ordinary functions as children
13537                  of a struct DIE.  */
13538               if (cu->language == language_rust)
13539                 read_func_scope (child_die, cu);
13540               else
13541                 {
13542                   /* C++ member function.  */
13543                   dwarf2_add_member_fn (&fi, child_die, type, cu);
13544                 }
13545             }
13546           else if (child_die->tag == DW_TAG_inheritance)
13547             {
13548               /* C++ base class field.  */
13549               dwarf2_add_field (&fi, child_die, cu);
13550             }
13551           else if (child_die->tag == DW_TAG_typedef)
13552             dwarf2_add_typedef (&fi, child_die, cu);
13553           else if (child_die->tag == DW_TAG_template_type_param
13554                    || child_die->tag == DW_TAG_template_value_param)
13555             {
13556               struct symbol *arg = new_symbol (child_die, NULL, cu);
13557
13558               if (arg != NULL)
13559                 VEC_safe_push (symbolp, template_args, arg);
13560             }
13561
13562           child_die = sibling_die (child_die);
13563         }
13564
13565       /* Attach template arguments to type.  */
13566       if (! VEC_empty (symbolp, template_args))
13567         {
13568           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13569           TYPE_N_TEMPLATE_ARGUMENTS (type)
13570             = VEC_length (symbolp, template_args);
13571           TYPE_TEMPLATE_ARGUMENTS (type)
13572             = XOBNEWVEC (&objfile->objfile_obstack,
13573                          struct symbol *,
13574                          TYPE_N_TEMPLATE_ARGUMENTS (type));
13575           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13576                   VEC_address (symbolp, template_args),
13577                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
13578                    * sizeof (struct symbol *)));
13579           VEC_free (symbolp, template_args);
13580         }
13581
13582       /* Attach fields and member functions to the type.  */
13583       if (fi.nfields)
13584         dwarf2_attach_fields_to_type (&fi, type, cu);
13585       if (fi.nfnfields)
13586         {
13587           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
13588
13589           /* Get the type which refers to the base class (possibly this
13590              class itself) which contains the vtable pointer for the current
13591              class from the DW_AT_containing_type attribute.  This use of
13592              DW_AT_containing_type is a GNU extension.  */
13593
13594           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
13595             {
13596               struct type *t = die_containing_type (die, cu);
13597
13598               set_type_vptr_basetype (type, t);
13599               if (type == t)
13600                 {
13601                   int i;
13602
13603                   /* Our own class provides vtbl ptr.  */
13604                   for (i = TYPE_NFIELDS (t) - 1;
13605                        i >= TYPE_N_BASECLASSES (t);
13606                        --i)
13607                     {
13608                       const char *fieldname = TYPE_FIELD_NAME (t, i);
13609
13610                       if (is_vtable_name (fieldname, cu))
13611                         {
13612                           set_type_vptr_fieldno (type, i);
13613                           break;
13614                         }
13615                     }
13616
13617                   /* Complain if virtual function table field not found.  */
13618                   if (i < TYPE_N_BASECLASSES (t))
13619                     complaint (&symfile_complaints,
13620                                _("virtual function table pointer "
13621                                  "not found when defining class '%s'"),
13622                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13623                                "");
13624                 }
13625               else
13626                 {
13627                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
13628                 }
13629             }
13630           else if (cu->producer
13631                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
13632             {
13633               /* The IBM XLC compiler does not provide direct indication
13634                  of the containing type, but the vtable pointer is
13635                  always named __vfp.  */
13636
13637               int i;
13638
13639               for (i = TYPE_NFIELDS (type) - 1;
13640                    i >= TYPE_N_BASECLASSES (type);
13641                    --i)
13642                 {
13643                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13644                     {
13645                       set_type_vptr_fieldno (type, i);
13646                       set_type_vptr_basetype (type, type);
13647                       break;
13648                     }
13649                 }
13650             }
13651         }
13652
13653       /* Copy fi.typedef_field_list linked list elements content into the
13654          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
13655       if (fi.typedef_field_list)
13656         {
13657           int i = fi.typedef_field_list_count;
13658
13659           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13660           TYPE_TYPEDEF_FIELD_ARRAY (type)
13661             = ((struct typedef_field *)
13662                TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i));
13663           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13664
13665           /* Reverse the list order to keep the debug info elements order.  */
13666           while (--i >= 0)
13667             {
13668               struct typedef_field *dest, *src;
13669
13670               dest = &TYPE_TYPEDEF_FIELD (type, i);
13671               src = &fi.typedef_field_list->field;
13672               fi.typedef_field_list = fi.typedef_field_list->next;
13673               *dest = *src;
13674             }
13675         }
13676
13677       do_cleanups (back_to);
13678     }
13679
13680   quirk_gcc_member_function_pointer (type, objfile);
13681
13682   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13683      snapshots) has been known to create a die giving a declaration
13684      for a class that has, as a child, a die giving a definition for a
13685      nested class.  So we have to process our children even if the
13686      current die is a declaration.  Normally, of course, a declaration
13687      won't have any children at all.  */
13688
13689   child_die = die->child;
13690
13691   while (child_die != NULL && child_die->tag)
13692     {
13693       if (child_die->tag == DW_TAG_member
13694           || child_die->tag == DW_TAG_variable
13695           || child_die->tag == DW_TAG_inheritance
13696           || child_die->tag == DW_TAG_template_value_param
13697           || child_die->tag == DW_TAG_template_type_param)
13698         {
13699           /* Do nothing.  */
13700         }
13701       else
13702         process_die (child_die, cu);
13703
13704       child_die = sibling_die (child_die);
13705     }
13706
13707   /* Do not consider external references.  According to the DWARF standard,
13708      these DIEs are identified by the fact that they have no byte_size
13709      attribute, and a declaration attribute.  */
13710   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13711       || !die_is_declaration (die, cu))
13712     new_symbol (die, type, cu);
13713 }
13714
13715 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
13716    update TYPE using some information only available in DIE's children.  */
13717
13718 static void
13719 update_enumeration_type_from_children (struct die_info *die,
13720                                        struct type *type,
13721                                        struct dwarf2_cu *cu)
13722 {
13723   struct obstack obstack;
13724   struct die_info *child_die;
13725   int unsigned_enum = 1;
13726   int flag_enum = 1;
13727   ULONGEST mask = 0;
13728   struct cleanup *old_chain;
13729
13730   obstack_init (&obstack);
13731   old_chain = make_cleanup_obstack_free (&obstack);
13732
13733   for (child_die = die->child;
13734        child_die != NULL && child_die->tag;
13735        child_die = sibling_die (child_die))
13736     {
13737       struct attribute *attr;
13738       LONGEST value;
13739       const gdb_byte *bytes;
13740       struct dwarf2_locexpr_baton *baton;
13741       const char *name;
13742
13743       if (child_die->tag != DW_TAG_enumerator)
13744         continue;
13745
13746       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13747       if (attr == NULL)
13748         continue;
13749
13750       name = dwarf2_name (child_die, cu);
13751       if (name == NULL)
13752         name = "<anonymous enumerator>";
13753
13754       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13755                                &value, &bytes, &baton);
13756       if (value < 0)
13757         {
13758           unsigned_enum = 0;
13759           flag_enum = 0;
13760         }
13761       else if ((mask & value) != 0)
13762         flag_enum = 0;
13763       else
13764         mask |= value;
13765
13766       /* If we already know that the enum type is neither unsigned, nor
13767          a flag type, no need to look at the rest of the enumerates.  */
13768       if (!unsigned_enum && !flag_enum)
13769         break;
13770     }
13771
13772   if (unsigned_enum)
13773     TYPE_UNSIGNED (type) = 1;
13774   if (flag_enum)
13775     TYPE_FLAG_ENUM (type) = 1;
13776
13777   do_cleanups (old_chain);
13778 }
13779
13780 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13781    complete the type's fields yet, or create any symbols.  */
13782
13783 static struct type *
13784 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13785 {
13786   struct objfile *objfile = cu->objfile;
13787   struct type *type;
13788   struct attribute *attr;
13789   const char *name;
13790
13791   /* If the definition of this type lives in .debug_types, read that type.
13792      Don't follow DW_AT_specification though, that will take us back up
13793      the chain and we want to go down.  */
13794   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13795   if (attr)
13796     {
13797       type = get_DW_AT_signature_type (die, attr, cu);
13798
13799       /* The type's CU may not be the same as CU.
13800          Ensure TYPE is recorded with CU in die_type_hash.  */
13801       return set_die_type (die, type, cu);
13802     }
13803
13804   type = alloc_type (objfile);
13805
13806   TYPE_CODE (type) = TYPE_CODE_ENUM;
13807   name = dwarf2_full_name (NULL, die, cu);
13808   if (name != NULL)
13809     TYPE_TAG_NAME (type) = name;
13810
13811   attr = dwarf2_attr (die, DW_AT_type, cu);
13812   if (attr != NULL)
13813     {
13814       struct type *underlying_type = die_type (die, cu);
13815
13816       TYPE_TARGET_TYPE (type) = underlying_type;
13817     }
13818
13819   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13820   if (attr)
13821     {
13822       TYPE_LENGTH (type) = DW_UNSND (attr);
13823     }
13824   else
13825     {
13826       TYPE_LENGTH (type) = 0;
13827     }
13828
13829   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13830      declared as private in the package spec, and then defined only
13831      inside the package body.  Such types are known as Taft Amendment
13832      Types.  When another package uses such a type, an incomplete DIE
13833      may be generated by the compiler.  */
13834   if (die_is_declaration (die, cu))
13835     TYPE_STUB (type) = 1;
13836
13837   /* Finish the creation of this type by using the enum's children.
13838      We must call this even when the underlying type has been provided
13839      so that we can determine if we're looking at a "flag" enum.  */
13840   update_enumeration_type_from_children (die, type, cu);
13841
13842   /* If this type has an underlying type that is not a stub, then we
13843      may use its attributes.  We always use the "unsigned" attribute
13844      in this situation, because ordinarily we guess whether the type
13845      is unsigned -- but the guess can be wrong and the underlying type
13846      can tell us the reality.  However, we defer to a local size
13847      attribute if one exists, because this lets the compiler override
13848      the underlying type if needed.  */
13849   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13850     {
13851       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13852       if (TYPE_LENGTH (type) == 0)
13853         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13854     }
13855
13856   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13857
13858   return set_die_type (die, type, cu);
13859 }
13860
13861 /* Given a pointer to a die which begins an enumeration, process all
13862    the dies that define the members of the enumeration, and create the
13863    symbol for the enumeration type.
13864
13865    NOTE: We reverse the order of the element list.  */
13866
13867 static void
13868 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13869 {
13870   struct type *this_type;
13871
13872   this_type = get_die_type (die, cu);
13873   if (this_type == NULL)
13874     this_type = read_enumeration_type (die, cu);
13875
13876   if (die->child != NULL)
13877     {
13878       struct die_info *child_die;
13879       struct symbol *sym;
13880       struct field *fields = NULL;
13881       int num_fields = 0;
13882       const char *name;
13883
13884       child_die = die->child;
13885       while (child_die && child_die->tag)
13886         {
13887           if (child_die->tag != DW_TAG_enumerator)
13888             {
13889               process_die (child_die, cu);
13890             }
13891           else
13892             {
13893               name = dwarf2_name (child_die, cu);
13894               if (name)
13895                 {
13896                   sym = new_symbol (child_die, this_type, cu);
13897
13898                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13899                     {
13900                       fields = (struct field *)
13901                         xrealloc (fields,
13902                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13903                                   * sizeof (struct field));
13904                     }
13905
13906                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13907                   FIELD_TYPE (fields[num_fields]) = NULL;
13908                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13909                   FIELD_BITSIZE (fields[num_fields]) = 0;
13910
13911                   num_fields++;
13912                 }
13913             }
13914
13915           child_die = sibling_die (child_die);
13916         }
13917
13918       if (num_fields)
13919         {
13920           TYPE_NFIELDS (this_type) = num_fields;
13921           TYPE_FIELDS (this_type) = (struct field *)
13922             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13923           memcpy (TYPE_FIELDS (this_type), fields,
13924                   sizeof (struct field) * num_fields);
13925           xfree (fields);
13926         }
13927     }
13928
13929   /* If we are reading an enum from a .debug_types unit, and the enum
13930      is a declaration, and the enum is not the signatured type in the
13931      unit, then we do not want to add a symbol for it.  Adding a
13932      symbol would in some cases obscure the true definition of the
13933      enum, giving users an incomplete type when the definition is
13934      actually available.  Note that we do not want to do this for all
13935      enums which are just declarations, because C++0x allows forward
13936      enum declarations.  */
13937   if (cu->per_cu->is_debug_types
13938       && die_is_declaration (die, cu))
13939     {
13940       struct signatured_type *sig_type;
13941
13942       sig_type = (struct signatured_type *) cu->per_cu;
13943       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13944       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13945         return;
13946     }
13947
13948   new_symbol (die, this_type, cu);
13949 }
13950
13951 /* Extract all information from a DW_TAG_array_type DIE and put it in
13952    the DIE's type field.  For now, this only handles one dimensional
13953    arrays.  */
13954
13955 static struct type *
13956 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13957 {
13958   struct objfile *objfile = cu->objfile;
13959   struct die_info *child_die;
13960   struct type *type;
13961   struct type *element_type, *range_type, *index_type;
13962   struct type **range_types = NULL;
13963   struct attribute *attr;
13964   int ndim = 0;
13965   struct cleanup *back_to;
13966   const char *name;
13967   unsigned int bit_stride = 0;
13968
13969   element_type = die_type (die, cu);
13970
13971   /* The die_type call above may have already set the type for this DIE.  */
13972   type = get_die_type (die, cu);
13973   if (type)
13974     return type;
13975
13976   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13977   if (attr != NULL)
13978     bit_stride = DW_UNSND (attr) * 8;
13979
13980   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13981   if (attr != NULL)
13982     bit_stride = DW_UNSND (attr);
13983
13984   /* Irix 6.2 native cc creates array types without children for
13985      arrays with unspecified length.  */
13986   if (die->child == NULL)
13987     {
13988       index_type = objfile_type (objfile)->builtin_int;
13989       range_type = create_static_range_type (NULL, index_type, 0, -1);
13990       type = create_array_type_with_stride (NULL, element_type, range_type,
13991                                             bit_stride);
13992       return set_die_type (die, type, cu);
13993     }
13994
13995   back_to = make_cleanup (null_cleanup, NULL);
13996   child_die = die->child;
13997   while (child_die && child_die->tag)
13998     {
13999       if (child_die->tag == DW_TAG_subrange_type)
14000         {
14001           struct type *child_type = read_type_die (child_die, cu);
14002
14003           if (child_type != NULL)
14004             {
14005               /* The range type was succesfully read.  Save it for the
14006                  array type creation.  */
14007               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
14008                 {
14009                   range_types = (struct type **)
14010                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
14011                               * sizeof (struct type *));
14012                   if (ndim == 0)
14013                     make_cleanup (free_current_contents, &range_types);
14014                 }
14015               range_types[ndim++] = child_type;
14016             }
14017         }
14018       child_die = sibling_die (child_die);
14019     }
14020
14021   /* Dwarf2 dimensions are output from left to right, create the
14022      necessary array types in backwards order.  */
14023
14024   type = element_type;
14025
14026   if (read_array_order (die, cu) == DW_ORD_col_major)
14027     {
14028       int i = 0;
14029
14030       while (i < ndim)
14031         type = create_array_type_with_stride (NULL, type, range_types[i++],
14032                                               bit_stride);
14033     }
14034   else
14035     {
14036       while (ndim-- > 0)
14037         type = create_array_type_with_stride (NULL, type, range_types[ndim],
14038                                               bit_stride);
14039     }
14040
14041   /* Understand Dwarf2 support for vector types (like they occur on
14042      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
14043      array type.  This is not part of the Dwarf2/3 standard yet, but a
14044      custom vendor extension.  The main difference between a regular
14045      array and the vector variant is that vectors are passed by value
14046      to functions.  */
14047   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
14048   if (attr)
14049     make_vector_type (type);
14050
14051   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
14052      implementation may choose to implement triple vectors using this
14053      attribute.  */
14054   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14055   if (attr)
14056     {
14057       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
14058         TYPE_LENGTH (type) = DW_UNSND (attr);
14059       else
14060         complaint (&symfile_complaints,
14061                    _("DW_AT_byte_size for array type smaller "
14062                      "than the total size of elements"));
14063     }
14064
14065   name = dwarf2_name (die, cu);
14066   if (name)
14067     TYPE_NAME (type) = name;
14068
14069   /* Install the type in the die.  */
14070   set_die_type (die, type, cu);
14071
14072   /* set_die_type should be already done.  */
14073   set_descriptive_type (type, die, cu);
14074
14075   do_cleanups (back_to);
14076
14077   return type;
14078 }
14079
14080 static enum dwarf_array_dim_ordering
14081 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
14082 {
14083   struct attribute *attr;
14084
14085   attr = dwarf2_attr (die, DW_AT_ordering, cu);
14086
14087   if (attr)
14088     return (enum dwarf_array_dim_ordering) DW_SND (attr);
14089
14090   /* GNU F77 is a special case, as at 08/2004 array type info is the
14091      opposite order to the dwarf2 specification, but data is still
14092      laid out as per normal fortran.
14093
14094      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
14095      version checking.  */
14096
14097   if (cu->language == language_fortran
14098       && cu->producer && strstr (cu->producer, "GNU F77"))
14099     {
14100       return DW_ORD_row_major;
14101     }
14102
14103   switch (cu->language_defn->la_array_ordering)
14104     {
14105     case array_column_major:
14106       return DW_ORD_col_major;
14107     case array_row_major:
14108     default:
14109       return DW_ORD_row_major;
14110     };
14111 }
14112
14113 /* Extract all information from a DW_TAG_set_type DIE and put it in
14114    the DIE's type field.  */
14115
14116 static struct type *
14117 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
14118 {
14119   struct type *domain_type, *set_type;
14120   struct attribute *attr;
14121
14122   domain_type = die_type (die, cu);
14123
14124   /* The die_type call above may have already set the type for this DIE.  */
14125   set_type = get_die_type (die, cu);
14126   if (set_type)
14127     return set_type;
14128
14129   set_type = create_set_type (NULL, domain_type);
14130
14131   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14132   if (attr)
14133     TYPE_LENGTH (set_type) = DW_UNSND (attr);
14134
14135   return set_die_type (die, set_type, cu);
14136 }
14137
14138 /* A helper for read_common_block that creates a locexpr baton.
14139    SYM is the symbol which we are marking as computed.
14140    COMMON_DIE is the DIE for the common block.
14141    COMMON_LOC is the location expression attribute for the common
14142    block itself.
14143    MEMBER_LOC is the location expression attribute for the particular
14144    member of the common block that we are processing.
14145    CU is the CU from which the above come.  */
14146
14147 static void
14148 mark_common_block_symbol_computed (struct symbol *sym,
14149                                    struct die_info *common_die,
14150                                    struct attribute *common_loc,
14151                                    struct attribute *member_loc,
14152                                    struct dwarf2_cu *cu)
14153 {
14154   struct objfile *objfile = dwarf2_per_objfile->objfile;
14155   struct dwarf2_locexpr_baton *baton;
14156   gdb_byte *ptr;
14157   unsigned int cu_off;
14158   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
14159   LONGEST offset = 0;
14160
14161   gdb_assert (common_loc && member_loc);
14162   gdb_assert (attr_form_is_block (common_loc));
14163   gdb_assert (attr_form_is_block (member_loc)
14164               || attr_form_is_constant (member_loc));
14165
14166   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14167   baton->per_cu = cu->per_cu;
14168   gdb_assert (baton->per_cu);
14169
14170   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
14171
14172   if (attr_form_is_constant (member_loc))
14173     {
14174       offset = dwarf2_get_attr_constant_value (member_loc, 0);
14175       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
14176     }
14177   else
14178     baton->size += DW_BLOCK (member_loc)->size;
14179
14180   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
14181   baton->data = ptr;
14182
14183   *ptr++ = DW_OP_call4;
14184   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
14185   store_unsigned_integer (ptr, 4, byte_order, cu_off);
14186   ptr += 4;
14187
14188   if (attr_form_is_constant (member_loc))
14189     {
14190       *ptr++ = DW_OP_addr;
14191       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
14192       ptr += cu->header.addr_size;
14193     }
14194   else
14195     {
14196       /* We have to copy the data here, because DW_OP_call4 will only
14197          use a DW_AT_location attribute.  */
14198       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
14199       ptr += DW_BLOCK (member_loc)->size;
14200     }
14201
14202   *ptr++ = DW_OP_plus;
14203   gdb_assert (ptr - baton->data == baton->size);
14204
14205   SYMBOL_LOCATION_BATON (sym) = baton;
14206   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
14207 }
14208
14209 /* Create appropriate locally-scoped variables for all the
14210    DW_TAG_common_block entries.  Also create a struct common_block
14211    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
14212    is used to sepate the common blocks name namespace from regular
14213    variable names.  */
14214
14215 static void
14216 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
14217 {
14218   struct attribute *attr;
14219
14220   attr = dwarf2_attr (die, DW_AT_location, cu);
14221   if (attr)
14222     {
14223       /* Support the .debug_loc offsets.  */
14224       if (attr_form_is_block (attr))
14225         {
14226           /* Ok.  */
14227         }
14228       else if (attr_form_is_section_offset (attr))
14229         {
14230           dwarf2_complex_location_expr_complaint ();
14231           attr = NULL;
14232         }
14233       else
14234         {
14235           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14236                                                  "common block member");
14237           attr = NULL;
14238         }
14239     }
14240
14241   if (die->child != NULL)
14242     {
14243       struct objfile *objfile = cu->objfile;
14244       struct die_info *child_die;
14245       size_t n_entries = 0, size;
14246       struct common_block *common_block;
14247       struct symbol *sym;
14248
14249       for (child_die = die->child;
14250            child_die && child_die->tag;
14251            child_die = sibling_die (child_die))
14252         ++n_entries;
14253
14254       size = (sizeof (struct common_block)
14255               + (n_entries - 1) * sizeof (struct symbol *));
14256       common_block
14257         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
14258                                                  size);
14259       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
14260       common_block->n_entries = 0;
14261
14262       for (child_die = die->child;
14263            child_die && child_die->tag;
14264            child_die = sibling_die (child_die))
14265         {
14266           /* Create the symbol in the DW_TAG_common_block block in the current
14267              symbol scope.  */
14268           sym = new_symbol (child_die, NULL, cu);
14269           if (sym != NULL)
14270             {
14271               struct attribute *member_loc;
14272
14273               common_block->contents[common_block->n_entries++] = sym;
14274
14275               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
14276                                         cu);
14277               if (member_loc)
14278                 {
14279                   /* GDB has handled this for a long time, but it is
14280                      not specified by DWARF.  It seems to have been
14281                      emitted by gfortran at least as recently as:
14282                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
14283                   complaint (&symfile_complaints,
14284                              _("Variable in common block has "
14285                                "DW_AT_data_member_location "
14286                                "- DIE at 0x%x [in module %s]"),
14287                              child_die->offset.sect_off,
14288                              objfile_name (cu->objfile));
14289
14290                   if (attr_form_is_section_offset (member_loc))
14291                     dwarf2_complex_location_expr_complaint ();
14292                   else if (attr_form_is_constant (member_loc)
14293                            || attr_form_is_block (member_loc))
14294                     {
14295                       if (attr)
14296                         mark_common_block_symbol_computed (sym, die, attr,
14297                                                            member_loc, cu);
14298                     }
14299                   else
14300                     dwarf2_complex_location_expr_complaint ();
14301                 }
14302             }
14303         }
14304
14305       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14306       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
14307     }
14308 }
14309
14310 /* Create a type for a C++ namespace.  */
14311
14312 static struct type *
14313 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
14314 {
14315   struct objfile *objfile = cu->objfile;
14316   const char *previous_prefix, *name;
14317   int is_anonymous;
14318   struct type *type;
14319
14320   /* For extensions, reuse the type of the original namespace.  */
14321   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14322     {
14323       struct die_info *ext_die;
14324       struct dwarf2_cu *ext_cu = cu;
14325
14326       ext_die = dwarf2_extension (die, &ext_cu);
14327       type = read_type_die (ext_die, ext_cu);
14328
14329       /* EXT_CU may not be the same as CU.
14330          Ensure TYPE is recorded with CU in die_type_hash.  */
14331       return set_die_type (die, type, cu);
14332     }
14333
14334   name = namespace_name (die, &is_anonymous, cu);
14335
14336   /* Now build the name of the current namespace.  */
14337
14338   previous_prefix = determine_prefix (die, cu);
14339   if (previous_prefix[0] != '\0')
14340     name = typename_concat (&objfile->objfile_obstack,
14341                             previous_prefix, name, 0, cu);
14342
14343   /* Create the type.  */
14344   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
14345   TYPE_TAG_NAME (type) = TYPE_NAME (type);
14346
14347   return set_die_type (die, type, cu);
14348 }
14349
14350 /* Read a namespace scope.  */
14351
14352 static void
14353 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14354 {
14355   struct objfile *objfile = cu->objfile;
14356   int is_anonymous;
14357
14358   /* Add a symbol associated to this if we haven't seen the namespace
14359      before.  Also, add a using directive if it's an anonymous
14360      namespace.  */
14361
14362   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
14363     {
14364       struct type *type;
14365
14366       type = read_type_die (die, cu);
14367       new_symbol (die, type, cu);
14368
14369       namespace_name (die, &is_anonymous, cu);
14370       if (is_anonymous)
14371         {
14372           const char *previous_prefix = determine_prefix (die, cu);
14373
14374           add_using_directive (using_directives (cu->language),
14375                                previous_prefix, TYPE_NAME (type), NULL,
14376                                NULL, NULL, 0, &objfile->objfile_obstack);
14377         }
14378     }
14379
14380   if (die->child != NULL)
14381     {
14382       struct die_info *child_die = die->child;
14383
14384       while (child_die && child_die->tag)
14385         {
14386           process_die (child_die, cu);
14387           child_die = sibling_die (child_die);
14388         }
14389     }
14390 }
14391
14392 /* Read a Fortran module as type.  This DIE can be only a declaration used for
14393    imported module.  Still we need that type as local Fortran "use ... only"
14394    declaration imports depend on the created type in determine_prefix.  */
14395
14396 static struct type *
14397 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14398 {
14399   struct objfile *objfile = cu->objfile;
14400   const char *module_name;
14401   struct type *type;
14402
14403   module_name = dwarf2_name (die, cu);
14404   if (!module_name)
14405     complaint (&symfile_complaints,
14406                _("DW_TAG_module has no name, offset 0x%x"),
14407                die->offset.sect_off);
14408   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
14409
14410   /* determine_prefix uses TYPE_TAG_NAME.  */
14411   TYPE_TAG_NAME (type) = TYPE_NAME (type);
14412
14413   return set_die_type (die, type, cu);
14414 }
14415
14416 /* Read a Fortran module.  */
14417
14418 static void
14419 read_module (struct die_info *die, struct dwarf2_cu *cu)
14420 {
14421   struct die_info *child_die = die->child;
14422   struct type *type;
14423
14424   type = read_type_die (die, cu);
14425   new_symbol (die, type, cu);
14426
14427   while (child_die && child_die->tag)
14428     {
14429       process_die (child_die, cu);
14430       child_die = sibling_die (child_die);
14431     }
14432 }
14433
14434 /* Return the name of the namespace represented by DIE.  Set
14435    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14436    namespace.  */
14437
14438 static const char *
14439 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
14440 {
14441   struct die_info *current_die;
14442   const char *name = NULL;
14443
14444   /* Loop through the extensions until we find a name.  */
14445
14446   for (current_die = die;
14447        current_die != NULL;
14448        current_die = dwarf2_extension (die, &cu))
14449     {
14450       /* We don't use dwarf2_name here so that we can detect the absence
14451          of a name -> anonymous namespace.  */
14452       name = dwarf2_string_attr (die, DW_AT_name, cu);
14453
14454       if (name != NULL)
14455         break;
14456     }
14457
14458   /* Is it an anonymous namespace?  */
14459
14460   *is_anonymous = (name == NULL);
14461   if (*is_anonymous)
14462     name = CP_ANONYMOUS_NAMESPACE_STR;
14463
14464   return name;
14465 }
14466
14467 /* Extract all information from a DW_TAG_pointer_type DIE and add to
14468    the user defined type vector.  */
14469
14470 static struct type *
14471 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
14472 {
14473   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
14474   struct comp_unit_head *cu_header = &cu->header;
14475   struct type *type;
14476   struct attribute *attr_byte_size;
14477   struct attribute *attr_address_class;
14478   int byte_size, addr_class;
14479   struct type *target_type;
14480
14481   target_type = die_type (die, cu);
14482
14483   /* The die_type call above may have already set the type for this DIE.  */
14484   type = get_die_type (die, cu);
14485   if (type)
14486     return type;
14487
14488   type = lookup_pointer_type (target_type);
14489
14490   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
14491   if (attr_byte_size)
14492     byte_size = DW_UNSND (attr_byte_size);
14493   else
14494     byte_size = cu_header->addr_size;
14495
14496   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
14497   if (attr_address_class)
14498     addr_class = DW_UNSND (attr_address_class);
14499   else
14500     addr_class = DW_ADDR_none;
14501
14502   /* If the pointer size or address class is different than the
14503      default, create a type variant marked as such and set the
14504      length accordingly.  */
14505   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
14506     {
14507       if (gdbarch_address_class_type_flags_p (gdbarch))
14508         {
14509           int type_flags;
14510
14511           type_flags = gdbarch_address_class_type_flags
14512                          (gdbarch, byte_size, addr_class);
14513           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14514                       == 0);
14515           type = make_type_with_address_space (type, type_flags);
14516         }
14517       else if (TYPE_LENGTH (type) != byte_size)
14518         {
14519           complaint (&symfile_complaints,
14520                      _("invalid pointer size %d"), byte_size);
14521         }
14522       else
14523         {
14524           /* Should we also complain about unhandled address classes?  */
14525         }
14526     }
14527
14528   TYPE_LENGTH (type) = byte_size;
14529   return set_die_type (die, type, cu);
14530 }
14531
14532 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14533    the user defined type vector.  */
14534
14535 static struct type *
14536 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
14537 {
14538   struct type *type;
14539   struct type *to_type;
14540   struct type *domain;
14541
14542   to_type = die_type (die, cu);
14543   domain = die_containing_type (die, cu);
14544
14545   /* The calls above may have already set the type for this DIE.  */
14546   type = get_die_type (die, cu);
14547   if (type)
14548     return type;
14549
14550   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14551     type = lookup_methodptr_type (to_type);
14552   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14553     {
14554       struct type *new_type = alloc_type (cu->objfile);
14555
14556       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14557                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14558                             TYPE_VARARGS (to_type));
14559       type = lookup_methodptr_type (new_type);
14560     }
14561   else
14562     type = lookup_memberptr_type (to_type, domain);
14563
14564   return set_die_type (die, type, cu);
14565 }
14566
14567 /* Extract all information from a DW_TAG_reference_type DIE and add to
14568    the user defined type vector.  */
14569
14570 static struct type *
14571 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
14572 {
14573   struct comp_unit_head *cu_header = &cu->header;
14574   struct type *type, *target_type;
14575   struct attribute *attr;
14576
14577   target_type = die_type (die, cu);
14578
14579   /* The die_type call above may have already set the type for this DIE.  */
14580   type = get_die_type (die, cu);
14581   if (type)
14582     return type;
14583
14584   type = lookup_reference_type (target_type);
14585   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14586   if (attr)
14587     {
14588       TYPE_LENGTH (type) = DW_UNSND (attr);
14589     }
14590   else
14591     {
14592       TYPE_LENGTH (type) = cu_header->addr_size;
14593     }
14594   return set_die_type (die, type, cu);
14595 }
14596
14597 /* Add the given cv-qualifiers to the element type of the array.  GCC
14598    outputs DWARF type qualifiers that apply to an array, not the
14599    element type.  But GDB relies on the array element type to carry
14600    the cv-qualifiers.  This mimics section 6.7.3 of the C99
14601    specification.  */
14602
14603 static struct type *
14604 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14605                    struct type *base_type, int cnst, int voltl)
14606 {
14607   struct type *el_type, *inner_array;
14608
14609   base_type = copy_type (base_type);
14610   inner_array = base_type;
14611
14612   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14613     {
14614       TYPE_TARGET_TYPE (inner_array) =
14615         copy_type (TYPE_TARGET_TYPE (inner_array));
14616       inner_array = TYPE_TARGET_TYPE (inner_array);
14617     }
14618
14619   el_type = TYPE_TARGET_TYPE (inner_array);
14620   cnst |= TYPE_CONST (el_type);
14621   voltl |= TYPE_VOLATILE (el_type);
14622   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14623
14624   return set_die_type (die, base_type, cu);
14625 }
14626
14627 static struct type *
14628 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
14629 {
14630   struct type *base_type, *cv_type;
14631
14632   base_type = die_type (die, cu);
14633
14634   /* The die_type call above may have already set the type for this DIE.  */
14635   cv_type = get_die_type (die, cu);
14636   if (cv_type)
14637     return cv_type;
14638
14639   /* In case the const qualifier is applied to an array type, the element type
14640      is so qualified, not the array type (section 6.7.3 of C99).  */
14641   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14642     return add_array_cv_type (die, cu, base_type, 1, 0);
14643
14644   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14645   return set_die_type (die, cv_type, cu);
14646 }
14647
14648 static struct type *
14649 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
14650 {
14651   struct type *base_type, *cv_type;
14652
14653   base_type = die_type (die, cu);
14654
14655   /* The die_type call above may have already set the type for this DIE.  */
14656   cv_type = get_die_type (die, cu);
14657   if (cv_type)
14658     return cv_type;
14659
14660   /* In case the volatile qualifier is applied to an array type, the
14661      element type is so qualified, not the array type (section 6.7.3
14662      of C99).  */
14663   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14664     return add_array_cv_type (die, cu, base_type, 0, 1);
14665
14666   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14667   return set_die_type (die, cv_type, cu);
14668 }
14669
14670 /* Handle DW_TAG_restrict_type.  */
14671
14672 static struct type *
14673 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14674 {
14675   struct type *base_type, *cv_type;
14676
14677   base_type = die_type (die, cu);
14678
14679   /* The die_type call above may have already set the type for this DIE.  */
14680   cv_type = get_die_type (die, cu);
14681   if (cv_type)
14682     return cv_type;
14683
14684   cv_type = make_restrict_type (base_type);
14685   return set_die_type (die, cv_type, cu);
14686 }
14687
14688 /* Handle DW_TAG_atomic_type.  */
14689
14690 static struct type *
14691 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14692 {
14693   struct type *base_type, *cv_type;
14694
14695   base_type = die_type (die, cu);
14696
14697   /* The die_type call above may have already set the type for this DIE.  */
14698   cv_type = get_die_type (die, cu);
14699   if (cv_type)
14700     return cv_type;
14701
14702   cv_type = make_atomic_type (base_type);
14703   return set_die_type (die, cv_type, cu);
14704 }
14705
14706 /* Extract all information from a DW_TAG_string_type DIE and add to
14707    the user defined type vector.  It isn't really a user defined type,
14708    but it behaves like one, with other DIE's using an AT_user_def_type
14709    attribute to reference it.  */
14710
14711 static struct type *
14712 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
14713 {
14714   struct objfile *objfile = cu->objfile;
14715   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14716   struct type *type, *range_type, *index_type, *char_type;
14717   struct attribute *attr;
14718   unsigned int length;
14719
14720   attr = dwarf2_attr (die, DW_AT_string_length, cu);
14721   if (attr)
14722     {
14723       length = DW_UNSND (attr);
14724     }
14725   else
14726     {
14727       /* Check for the DW_AT_byte_size attribute.  */
14728       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14729       if (attr)
14730         {
14731           length = DW_UNSND (attr);
14732         }
14733       else
14734         {
14735           length = 1;
14736         }
14737     }
14738
14739   index_type = objfile_type (objfile)->builtin_int;
14740   range_type = create_static_range_type (NULL, index_type, 1, length);
14741   char_type = language_string_char_type (cu->language_defn, gdbarch);
14742   type = create_string_type (NULL, char_type, range_type);
14743
14744   return set_die_type (die, type, cu);
14745 }
14746
14747 /* Assuming that DIE corresponds to a function, returns nonzero
14748    if the function is prototyped.  */
14749
14750 static int
14751 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14752 {
14753   struct attribute *attr;
14754
14755   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14756   if (attr && (DW_UNSND (attr) != 0))
14757     return 1;
14758
14759   /* The DWARF standard implies that the DW_AT_prototyped attribute
14760      is only meaninful for C, but the concept also extends to other
14761      languages that allow unprototyped functions (Eg: Objective C).
14762      For all other languages, assume that functions are always
14763      prototyped.  */
14764   if (cu->language != language_c
14765       && cu->language != language_objc
14766       && cu->language != language_opencl)
14767     return 1;
14768
14769   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
14770      prototyped and unprototyped functions; default to prototyped,
14771      since that is more common in modern code (and RealView warns
14772      about unprototyped functions).  */
14773   if (producer_is_realview (cu->producer))
14774     return 1;
14775
14776   return 0;
14777 }
14778
14779 /* Handle DIES due to C code like:
14780
14781    struct foo
14782    {
14783    int (*funcp)(int a, long l);
14784    int b;
14785    };
14786
14787    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
14788
14789 static struct type *
14790 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
14791 {
14792   struct objfile *objfile = cu->objfile;
14793   struct type *type;            /* Type that this function returns.  */
14794   struct type *ftype;           /* Function that returns above type.  */
14795   struct attribute *attr;
14796
14797   type = die_type (die, cu);
14798
14799   /* The die_type call above may have already set the type for this DIE.  */
14800   ftype = get_die_type (die, cu);
14801   if (ftype)
14802     return ftype;
14803
14804   ftype = lookup_function_type (type);
14805
14806   if (prototyped_function_p (die, cu))
14807     TYPE_PROTOTYPED (ftype) = 1;
14808
14809   /* Store the calling convention in the type if it's available in
14810      the subroutine die.  Otherwise set the calling convention to
14811      the default value DW_CC_normal.  */
14812   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14813   if (attr)
14814     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14815   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14816     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14817   else
14818     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14819
14820   /* Record whether the function returns normally to its caller or not
14821      if the DWARF producer set that information.  */
14822   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14823   if (attr && (DW_UNSND (attr) != 0))
14824     TYPE_NO_RETURN (ftype) = 1;
14825
14826   /* We need to add the subroutine type to the die immediately so
14827      we don't infinitely recurse when dealing with parameters
14828      declared as the same subroutine type.  */
14829   set_die_type (die, ftype, cu);
14830
14831   if (die->child != NULL)
14832     {
14833       struct type *void_type = objfile_type (objfile)->builtin_void;
14834       struct die_info *child_die;
14835       int nparams, iparams;
14836
14837       /* Count the number of parameters.
14838          FIXME: GDB currently ignores vararg functions, but knows about
14839          vararg member functions.  */
14840       nparams = 0;
14841       child_die = die->child;
14842       while (child_die && child_die->tag)
14843         {
14844           if (child_die->tag == DW_TAG_formal_parameter)
14845             nparams++;
14846           else if (child_die->tag == DW_TAG_unspecified_parameters)
14847             TYPE_VARARGS (ftype) = 1;
14848           child_die = sibling_die (child_die);
14849         }
14850
14851       /* Allocate storage for parameters and fill them in.  */
14852       TYPE_NFIELDS (ftype) = nparams;
14853       TYPE_FIELDS (ftype) = (struct field *)
14854         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14855
14856       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14857          even if we error out during the parameters reading below.  */
14858       for (iparams = 0; iparams < nparams; iparams++)
14859         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14860
14861       iparams = 0;
14862       child_die = die->child;
14863       while (child_die && child_die->tag)
14864         {
14865           if (child_die->tag == DW_TAG_formal_parameter)
14866             {
14867               struct type *arg_type;
14868
14869               /* DWARF version 2 has no clean way to discern C++
14870                  static and non-static member functions.  G++ helps
14871                  GDB by marking the first parameter for non-static
14872                  member functions (which is the this pointer) as
14873                  artificial.  We pass this information to
14874                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14875
14876                  DWARF version 3 added DW_AT_object_pointer, which GCC
14877                  4.5 does not yet generate.  */
14878               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14879               if (attr)
14880                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14881               else
14882                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14883               arg_type = die_type (child_die, cu);
14884
14885               /* RealView does not mark THIS as const, which the testsuite
14886                  expects.  GCC marks THIS as const in method definitions,
14887                  but not in the class specifications (GCC PR 43053).  */
14888               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14889                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14890                 {
14891                   int is_this = 0;
14892                   struct dwarf2_cu *arg_cu = cu;
14893                   const char *name = dwarf2_name (child_die, cu);
14894
14895                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14896                   if (attr)
14897                     {
14898                       /* If the compiler emits this, use it.  */
14899                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14900                         is_this = 1;
14901                     }
14902                   else if (name && strcmp (name, "this") == 0)
14903                     /* Function definitions will have the argument names.  */
14904                     is_this = 1;
14905                   else if (name == NULL && iparams == 0)
14906                     /* Declarations may not have the names, so like
14907                        elsewhere in GDB, assume an artificial first
14908                        argument is "this".  */
14909                     is_this = 1;
14910
14911                   if (is_this)
14912                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14913                                              arg_type, 0);
14914                 }
14915
14916               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14917               iparams++;
14918             }
14919           child_die = sibling_die (child_die);
14920         }
14921     }
14922
14923   return ftype;
14924 }
14925
14926 static struct type *
14927 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14928 {
14929   struct objfile *objfile = cu->objfile;
14930   const char *name = NULL;
14931   struct type *this_type, *target_type;
14932
14933   name = dwarf2_full_name (NULL, die, cu);
14934   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
14935   TYPE_TARGET_STUB (this_type) = 1;
14936   set_die_type (die, this_type, cu);
14937   target_type = die_type (die, cu);
14938   if (target_type != this_type)
14939     TYPE_TARGET_TYPE (this_type) = target_type;
14940   else
14941     {
14942       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14943          spec and cause infinite loops in GDB.  */
14944       complaint (&symfile_complaints,
14945                  _("Self-referential DW_TAG_typedef "
14946                    "- DIE at 0x%x [in module %s]"),
14947                  die->offset.sect_off, objfile_name (objfile));
14948       TYPE_TARGET_TYPE (this_type) = NULL;
14949     }
14950   return this_type;
14951 }
14952
14953 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
14954    (which may be different from NAME) to the architecture back-end to allow
14955    it to guess the correct format if necessary.  */
14956
14957 static struct type *
14958 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
14959                         const char *name_hint)
14960 {
14961   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14962   const struct floatformat **format;
14963   struct type *type;
14964
14965   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
14966   if (format)
14967     type = init_float_type (objfile, bits, name, format);
14968   else
14969     type = init_type (objfile, TYPE_CODE_ERROR, bits / TARGET_CHAR_BIT, name);
14970
14971   return type;
14972 }
14973
14974 /* Find a representation of a given base type and install
14975    it in the TYPE field of the die.  */
14976
14977 static struct type *
14978 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14979 {
14980   struct objfile *objfile = cu->objfile;
14981   struct type *type;
14982   struct attribute *attr;
14983   int encoding = 0, bits = 0;
14984   const char *name;
14985
14986   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14987   if (attr)
14988     {
14989       encoding = DW_UNSND (attr);
14990     }
14991   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14992   if (attr)
14993     {
14994       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
14995     }
14996   name = dwarf2_name (die, cu);
14997   if (!name)
14998     {
14999       complaint (&symfile_complaints,
15000                  _("DW_AT_name missing from DW_TAG_base_type"));
15001     }
15002
15003   switch (encoding)
15004     {
15005       case DW_ATE_address:
15006         /* Turn DW_ATE_address into a void * pointer.  */
15007         type = init_type (objfile, TYPE_CODE_VOID, 1, NULL);
15008         type = init_pointer_type (objfile, bits, name, type);
15009         break;
15010       case DW_ATE_boolean:
15011         type = init_boolean_type (objfile, bits, 1, name);
15012         break;
15013       case DW_ATE_complex_float:
15014         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
15015         type = init_complex_type (objfile, name, type);
15016         break;
15017       case DW_ATE_decimal_float:
15018         type = init_decfloat_type (objfile, bits, name);
15019         break;
15020       case DW_ATE_float:
15021         type = dwarf2_init_float_type (objfile, bits, name, name);
15022         break;
15023       case DW_ATE_signed:
15024         type = init_integer_type (objfile, bits, 0, name);
15025         break;
15026       case DW_ATE_unsigned:
15027         if (cu->language == language_fortran
15028             && name
15029             && startswith (name, "character("))
15030           type = init_character_type (objfile, bits, 1, name);
15031         else
15032           type = init_integer_type (objfile, bits, 1, name);
15033         break;
15034       case DW_ATE_signed_char:
15035         if (cu->language == language_ada || cu->language == language_m2
15036             || cu->language == language_pascal
15037             || cu->language == language_fortran)
15038           type = init_character_type (objfile, bits, 0, name);
15039         else
15040           type = init_integer_type (objfile, bits, 0, name);
15041         break;
15042       case DW_ATE_unsigned_char:
15043         if (cu->language == language_ada || cu->language == language_m2
15044             || cu->language == language_pascal
15045             || cu->language == language_fortran
15046             || cu->language == language_rust)
15047           type = init_character_type (objfile, bits, 1, name);
15048         else
15049           type = init_integer_type (objfile, bits, 1, name);
15050         break;
15051       case DW_ATE_UTF:
15052         /* We just treat this as an integer and then recognize the
15053            type by name elsewhere.  */
15054         type = init_integer_type (objfile, bits, 0, name);
15055         break;
15056
15057       default:
15058         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
15059                    dwarf_type_encoding_name (encoding));
15060         type = init_type (objfile, TYPE_CODE_ERROR,
15061                           bits / TARGET_CHAR_BIT, name);
15062         break;
15063     }
15064
15065   if (name && strcmp (name, "char") == 0)
15066     TYPE_NOSIGN (type) = 1;
15067
15068   return set_die_type (die, type, cu);
15069 }
15070
15071 /* Parse dwarf attribute if it's a block, reference or constant and put the
15072    resulting value of the attribute into struct bound_prop.
15073    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
15074
15075 static int
15076 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
15077                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
15078 {
15079   struct dwarf2_property_baton *baton;
15080   struct obstack *obstack = &cu->objfile->objfile_obstack;
15081
15082   if (attr == NULL || prop == NULL)
15083     return 0;
15084
15085   if (attr_form_is_block (attr))
15086     {
15087       baton = XOBNEW (obstack, struct dwarf2_property_baton);
15088       baton->referenced_type = NULL;
15089       baton->locexpr.per_cu = cu->per_cu;
15090       baton->locexpr.size = DW_BLOCK (attr)->size;
15091       baton->locexpr.data = DW_BLOCK (attr)->data;
15092       prop->data.baton = baton;
15093       prop->kind = PROP_LOCEXPR;
15094       gdb_assert (prop->data.baton != NULL);
15095     }
15096   else if (attr_form_is_ref (attr))
15097     {
15098       struct dwarf2_cu *target_cu = cu;
15099       struct die_info *target_die;
15100       struct attribute *target_attr;
15101
15102       target_die = follow_die_ref (die, attr, &target_cu);
15103       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
15104       if (target_attr == NULL)
15105         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
15106                                    target_cu);
15107       if (target_attr == NULL)
15108         return 0;
15109
15110       switch (target_attr->name)
15111         {
15112           case DW_AT_location:
15113             if (attr_form_is_section_offset (target_attr))
15114               {
15115                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
15116                 baton->referenced_type = die_type (target_die, target_cu);
15117                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
15118                 prop->data.baton = baton;
15119                 prop->kind = PROP_LOCLIST;
15120                 gdb_assert (prop->data.baton != NULL);
15121               }
15122             else if (attr_form_is_block (target_attr))
15123               {
15124                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
15125                 baton->referenced_type = die_type (target_die, target_cu);
15126                 baton->locexpr.per_cu = cu->per_cu;
15127                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
15128                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
15129                 prop->data.baton = baton;
15130                 prop->kind = PROP_LOCEXPR;
15131                 gdb_assert (prop->data.baton != NULL);
15132               }
15133             else
15134               {
15135                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15136                                                        "dynamic property");
15137                 return 0;
15138               }
15139             break;
15140           case DW_AT_data_member_location:
15141             {
15142               LONGEST offset;
15143
15144               if (!handle_data_member_location (target_die, target_cu,
15145                                                 &offset))
15146                 return 0;
15147
15148               baton = XOBNEW (obstack, struct dwarf2_property_baton);
15149               baton->referenced_type = read_type_die (target_die->parent,
15150                                                       target_cu);
15151               baton->offset_info.offset = offset;
15152               baton->offset_info.type = die_type (target_die, target_cu);
15153               prop->data.baton = baton;
15154               prop->kind = PROP_ADDR_OFFSET;
15155               break;
15156             }
15157         }
15158     }
15159   else if (attr_form_is_constant (attr))
15160     {
15161       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
15162       prop->kind = PROP_CONST;
15163     }
15164   else
15165     {
15166       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
15167                                              dwarf2_name (die, cu));
15168       return 0;
15169     }
15170
15171   return 1;
15172 }
15173
15174 /* Read the given DW_AT_subrange DIE.  */
15175
15176 static struct type *
15177 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
15178 {
15179   struct type *base_type, *orig_base_type;
15180   struct type *range_type;
15181   struct attribute *attr;
15182   struct dynamic_prop low, high;
15183   int low_default_is_valid;
15184   int high_bound_is_count = 0;
15185   const char *name;
15186   LONGEST negative_mask;
15187
15188   orig_base_type = die_type (die, cu);
15189   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
15190      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
15191      creating the range type, but we use the result of check_typedef
15192      when examining properties of the type.  */
15193   base_type = check_typedef (orig_base_type);
15194
15195   /* The die_type call above may have already set the type for this DIE.  */
15196   range_type = get_die_type (die, cu);
15197   if (range_type)
15198     return range_type;
15199
15200   low.kind = PROP_CONST;
15201   high.kind = PROP_CONST;
15202   high.data.const_val = 0;
15203
15204   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
15205      omitting DW_AT_lower_bound.  */
15206   switch (cu->language)
15207     {
15208     case language_c:
15209     case language_cplus:
15210       low.data.const_val = 0;
15211       low_default_is_valid = 1;
15212       break;
15213     case language_fortran:
15214       low.data.const_val = 1;
15215       low_default_is_valid = 1;
15216       break;
15217     case language_d:
15218     case language_objc:
15219     case language_rust:
15220       low.data.const_val = 0;
15221       low_default_is_valid = (cu->header.version >= 4);
15222       break;
15223     case language_ada:
15224     case language_m2:
15225     case language_pascal:
15226       low.data.const_val = 1;
15227       low_default_is_valid = (cu->header.version >= 4);
15228       break;
15229     default:
15230       low.data.const_val = 0;
15231       low_default_is_valid = 0;
15232       break;
15233     }
15234
15235   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
15236   if (attr)
15237     attr_to_dynamic_prop (attr, die, cu, &low);
15238   else if (!low_default_is_valid)
15239     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
15240                                       "- DIE at 0x%x [in module %s]"),
15241                die->offset.sect_off, objfile_name (cu->objfile));
15242
15243   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
15244   if (!attr_to_dynamic_prop (attr, die, cu, &high))
15245     {
15246       attr = dwarf2_attr (die, DW_AT_count, cu);
15247       if (attr_to_dynamic_prop (attr, die, cu, &high))
15248         {
15249           /* If bounds are constant do the final calculation here.  */
15250           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
15251             high.data.const_val = low.data.const_val + high.data.const_val - 1;
15252           else
15253             high_bound_is_count = 1;
15254         }
15255     }
15256
15257   /* Dwarf-2 specifications explicitly allows to create subrange types
15258      without specifying a base type.
15259      In that case, the base type must be set to the type of
15260      the lower bound, upper bound or count, in that order, if any of these
15261      three attributes references an object that has a type.
15262      If no base type is found, the Dwarf-2 specifications say that
15263      a signed integer type of size equal to the size of an address should
15264      be used.
15265      For the following C code: `extern char gdb_int [];'
15266      GCC produces an empty range DIE.
15267      FIXME: muller/2010-05-28: Possible references to object for low bound,
15268      high bound or count are not yet handled by this code.  */
15269   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
15270     {
15271       struct objfile *objfile = cu->objfile;
15272       struct gdbarch *gdbarch = get_objfile_arch (objfile);
15273       int addr_size = gdbarch_addr_bit (gdbarch) /8;
15274       struct type *int_type = objfile_type (objfile)->builtin_int;
15275
15276       /* Test "int", "long int", and "long long int" objfile types,
15277          and select the first one having a size above or equal to the
15278          architecture address size.  */
15279       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15280         base_type = int_type;
15281       else
15282         {
15283           int_type = objfile_type (objfile)->builtin_long;
15284           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15285             base_type = int_type;
15286           else
15287             {
15288               int_type = objfile_type (objfile)->builtin_long_long;
15289               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15290                 base_type = int_type;
15291             }
15292         }
15293     }
15294
15295   /* Normally, the DWARF producers are expected to use a signed
15296      constant form (Eg. DW_FORM_sdata) to express negative bounds.
15297      But this is unfortunately not always the case, as witnessed
15298      with GCC, for instance, where the ambiguous DW_FORM_dataN form
15299      is used instead.  To work around that ambiguity, we treat
15300      the bounds as signed, and thus sign-extend their values, when
15301      the base type is signed.  */
15302   negative_mask =
15303     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
15304   if (low.kind == PROP_CONST
15305       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15306     low.data.const_val |= negative_mask;
15307   if (high.kind == PROP_CONST
15308       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15309     high.data.const_val |= negative_mask;
15310
15311   range_type = create_range_type (NULL, orig_base_type, &low, &high);
15312
15313   if (high_bound_is_count)
15314     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15315
15316   /* Ada expects an empty array on no boundary attributes.  */
15317   if (attr == NULL && cu->language != language_ada)
15318     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
15319
15320   name = dwarf2_name (die, cu);
15321   if (name)
15322     TYPE_NAME (range_type) = name;
15323
15324   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15325   if (attr)
15326     TYPE_LENGTH (range_type) = DW_UNSND (attr);
15327
15328   set_die_type (die, range_type, cu);
15329
15330   /* set_die_type should be already done.  */
15331   set_descriptive_type (range_type, die, cu);
15332
15333   return range_type;
15334 }
15335
15336 static struct type *
15337 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15338 {
15339   struct type *type;
15340
15341   /* For now, we only support the C meaning of an unspecified type: void.  */
15342
15343   type = init_type (cu->objfile, TYPE_CODE_VOID, 0, NULL);
15344   TYPE_NAME (type) = dwarf2_name (die, cu);
15345
15346   return set_die_type (die, type, cu);
15347 }
15348
15349 /* Read a single die and all its descendents.  Set the die's sibling
15350    field to NULL; set other fields in the die correctly, and set all
15351    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
15352    location of the info_ptr after reading all of those dies.  PARENT
15353    is the parent of the die in question.  */
15354
15355 static struct die_info *
15356 read_die_and_children (const struct die_reader_specs *reader,
15357                        const gdb_byte *info_ptr,
15358                        const gdb_byte **new_info_ptr,
15359                        struct die_info *parent)
15360 {
15361   struct die_info *die;
15362   const gdb_byte *cur_ptr;
15363   int has_children;
15364
15365   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
15366   if (die == NULL)
15367     {
15368       *new_info_ptr = cur_ptr;
15369       return NULL;
15370     }
15371   store_in_ref_table (die, reader->cu);
15372
15373   if (has_children)
15374     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
15375   else
15376     {
15377       die->child = NULL;
15378       *new_info_ptr = cur_ptr;
15379     }
15380
15381   die->sibling = NULL;
15382   die->parent = parent;
15383   return die;
15384 }
15385
15386 /* Read a die, all of its descendents, and all of its siblings; set
15387    all of the fields of all of the dies correctly.  Arguments are as
15388    in read_die_and_children.  */
15389
15390 static struct die_info *
15391 read_die_and_siblings_1 (const struct die_reader_specs *reader,
15392                          const gdb_byte *info_ptr,
15393                          const gdb_byte **new_info_ptr,
15394                          struct die_info *parent)
15395 {
15396   struct die_info *first_die, *last_sibling;
15397   const gdb_byte *cur_ptr;
15398
15399   cur_ptr = info_ptr;
15400   first_die = last_sibling = NULL;
15401
15402   while (1)
15403     {
15404       struct die_info *die
15405         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
15406
15407       if (die == NULL)
15408         {
15409           *new_info_ptr = cur_ptr;
15410           return first_die;
15411         }
15412
15413       if (!first_die)
15414         first_die = die;
15415       else
15416         last_sibling->sibling = die;
15417
15418       last_sibling = die;
15419     }
15420 }
15421
15422 /* Read a die, all of its descendents, and all of its siblings; set
15423    all of the fields of all of the dies correctly.  Arguments are as
15424    in read_die_and_children.
15425    This the main entry point for reading a DIE and all its children.  */
15426
15427 static struct die_info *
15428 read_die_and_siblings (const struct die_reader_specs *reader,
15429                        const gdb_byte *info_ptr,
15430                        const gdb_byte **new_info_ptr,
15431                        struct die_info *parent)
15432 {
15433   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15434                                                   new_info_ptr, parent);
15435
15436   if (dwarf_die_debug)
15437     {
15438       fprintf_unfiltered (gdb_stdlog,
15439                           "Read die from %s@0x%x of %s:\n",
15440                           get_section_name (reader->die_section),
15441                           (unsigned) (info_ptr - reader->die_section->buffer),
15442                           bfd_get_filename (reader->abfd));
15443       dump_die (die, dwarf_die_debug);
15444     }
15445
15446   return die;
15447 }
15448
15449 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15450    attributes.
15451    The caller is responsible for filling in the extra attributes
15452    and updating (*DIEP)->num_attrs.
15453    Set DIEP to point to a newly allocated die with its information,
15454    except for its child, sibling, and parent fields.
15455    Set HAS_CHILDREN to tell whether the die has children or not.  */
15456
15457 static const gdb_byte *
15458 read_full_die_1 (const struct die_reader_specs *reader,
15459                  struct die_info **diep, const gdb_byte *info_ptr,
15460                  int *has_children, int num_extra_attrs)
15461 {
15462   unsigned int abbrev_number, bytes_read, i;
15463   sect_offset offset;
15464   struct abbrev_info *abbrev;
15465   struct die_info *die;
15466   struct dwarf2_cu *cu = reader->cu;
15467   bfd *abfd = reader->abfd;
15468
15469   offset.sect_off = info_ptr - reader->buffer;
15470   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15471   info_ptr += bytes_read;
15472   if (!abbrev_number)
15473     {
15474       *diep = NULL;
15475       *has_children = 0;
15476       return info_ptr;
15477     }
15478
15479   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
15480   if (!abbrev)
15481     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15482            abbrev_number,
15483            bfd_get_filename (abfd));
15484
15485   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
15486   die->offset = offset;
15487   die->tag = abbrev->tag;
15488   die->abbrev = abbrev_number;
15489
15490   /* Make the result usable.
15491      The caller needs to update num_attrs after adding the extra
15492      attributes.  */
15493   die->num_attrs = abbrev->num_attrs;
15494
15495   for (i = 0; i < abbrev->num_attrs; ++i)
15496     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15497                                info_ptr);
15498
15499   *diep = die;
15500   *has_children = abbrev->has_children;
15501   return info_ptr;
15502 }
15503
15504 /* Read a die and all its attributes.
15505    Set DIEP to point to a newly allocated die with its information,
15506    except for its child, sibling, and parent fields.
15507    Set HAS_CHILDREN to tell whether the die has children or not.  */
15508
15509 static const gdb_byte *
15510 read_full_die (const struct die_reader_specs *reader,
15511                struct die_info **diep, const gdb_byte *info_ptr,
15512                int *has_children)
15513 {
15514   const gdb_byte *result;
15515
15516   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15517
15518   if (dwarf_die_debug)
15519     {
15520       fprintf_unfiltered (gdb_stdlog,
15521                           "Read die from %s@0x%x of %s:\n",
15522                           get_section_name (reader->die_section),
15523                           (unsigned) (info_ptr - reader->die_section->buffer),
15524                           bfd_get_filename (reader->abfd));
15525       dump_die (*diep, dwarf_die_debug);
15526     }
15527
15528   return result;
15529 }
15530 \f
15531 /* Abbreviation tables.
15532
15533    In DWARF version 2, the description of the debugging information is
15534    stored in a separate .debug_abbrev section.  Before we read any
15535    dies from a section we read in all abbreviations and install them
15536    in a hash table.  */
15537
15538 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
15539
15540 static struct abbrev_info *
15541 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15542 {
15543   struct abbrev_info *abbrev;
15544
15545   abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
15546   memset (abbrev, 0, sizeof (struct abbrev_info));
15547
15548   return abbrev;
15549 }
15550
15551 /* Add an abbreviation to the table.  */
15552
15553 static void
15554 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15555                          unsigned int abbrev_number,
15556                          struct abbrev_info *abbrev)
15557 {
15558   unsigned int hash_number;
15559
15560   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15561   abbrev->next = abbrev_table->abbrevs[hash_number];
15562   abbrev_table->abbrevs[hash_number] = abbrev;
15563 }
15564
15565 /* Look up an abbrev in the table.
15566    Returns NULL if the abbrev is not found.  */
15567
15568 static struct abbrev_info *
15569 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15570                             unsigned int abbrev_number)
15571 {
15572   unsigned int hash_number;
15573   struct abbrev_info *abbrev;
15574
15575   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15576   abbrev = abbrev_table->abbrevs[hash_number];
15577
15578   while (abbrev)
15579     {
15580       if (abbrev->number == abbrev_number)
15581         return abbrev;
15582       abbrev = abbrev->next;
15583     }
15584   return NULL;
15585 }
15586
15587 /* Read in an abbrev table.  */
15588
15589 static struct abbrev_table *
15590 abbrev_table_read_table (struct dwarf2_section_info *section,
15591                          sect_offset offset)
15592 {
15593   struct objfile *objfile = dwarf2_per_objfile->objfile;
15594   bfd *abfd = get_section_bfd_owner (section);
15595   struct abbrev_table *abbrev_table;
15596   const gdb_byte *abbrev_ptr;
15597   struct abbrev_info *cur_abbrev;
15598   unsigned int abbrev_number, bytes_read, abbrev_name;
15599   unsigned int abbrev_form;
15600   struct attr_abbrev *cur_attrs;
15601   unsigned int allocated_attrs;
15602
15603   abbrev_table = XNEW (struct abbrev_table);
15604   abbrev_table->offset = offset;
15605   obstack_init (&abbrev_table->abbrev_obstack);
15606   abbrev_table->abbrevs =
15607     XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
15608                ABBREV_HASH_SIZE);
15609   memset (abbrev_table->abbrevs, 0,
15610           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
15611
15612   dwarf2_read_section (objfile, section);
15613   abbrev_ptr = section->buffer + offset.sect_off;
15614   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15615   abbrev_ptr += bytes_read;
15616
15617   allocated_attrs = ATTR_ALLOC_CHUNK;
15618   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
15619
15620   /* Loop until we reach an abbrev number of 0.  */
15621   while (abbrev_number)
15622     {
15623       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
15624
15625       /* read in abbrev header */
15626       cur_abbrev->number = abbrev_number;
15627       cur_abbrev->tag
15628         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15629       abbrev_ptr += bytes_read;
15630       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15631       abbrev_ptr += 1;
15632
15633       /* now read in declarations */
15634       for (;;)
15635         {
15636           LONGEST implicit_const;
15637
15638           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15639           abbrev_ptr += bytes_read;
15640           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15641           abbrev_ptr += bytes_read;
15642           if (abbrev_form == DW_FORM_implicit_const)
15643             {
15644               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
15645                                                    &bytes_read);
15646               abbrev_ptr += bytes_read;
15647             }
15648           else
15649             {
15650               /* Initialize it due to a false compiler warning.  */
15651               implicit_const = -1;
15652             }
15653
15654           if (abbrev_name == 0)
15655             break;
15656
15657           if (cur_abbrev->num_attrs == allocated_attrs)
15658             {
15659               allocated_attrs += ATTR_ALLOC_CHUNK;
15660               cur_attrs
15661                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
15662             }
15663
15664           cur_attrs[cur_abbrev->num_attrs].name
15665             = (enum dwarf_attribute) abbrev_name;
15666           cur_attrs[cur_abbrev->num_attrs].form
15667             = (enum dwarf_form) abbrev_form;
15668           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
15669           ++cur_abbrev->num_attrs;
15670         }
15671
15672       cur_abbrev->attrs =
15673         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
15674                    cur_abbrev->num_attrs);
15675       memcpy (cur_abbrev->attrs, cur_attrs,
15676               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15677
15678       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
15679
15680       /* Get next abbreviation.
15681          Under Irix6 the abbreviations for a compilation unit are not
15682          always properly terminated with an abbrev number of 0.
15683          Exit loop if we encounter an abbreviation which we have
15684          already read (which means we are about to read the abbreviations
15685          for the next compile unit) or if the end of the abbreviation
15686          table is reached.  */
15687       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
15688         break;
15689       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15690       abbrev_ptr += bytes_read;
15691       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
15692         break;
15693     }
15694
15695   xfree (cur_attrs);
15696   return abbrev_table;
15697 }
15698
15699 /* Free the resources held by ABBREV_TABLE.  */
15700
15701 static void
15702 abbrev_table_free (struct abbrev_table *abbrev_table)
15703 {
15704   obstack_free (&abbrev_table->abbrev_obstack, NULL);
15705   xfree (abbrev_table);
15706 }
15707
15708 /* Same as abbrev_table_free but as a cleanup.
15709    We pass in a pointer to the pointer to the table so that we can
15710    set the pointer to NULL when we're done.  It also simplifies
15711    build_type_psymtabs_1.  */
15712
15713 static void
15714 abbrev_table_free_cleanup (void *table_ptr)
15715 {
15716   struct abbrev_table **abbrev_table_ptr = (struct abbrev_table **) table_ptr;
15717
15718   if (*abbrev_table_ptr != NULL)
15719     abbrev_table_free (*abbrev_table_ptr);
15720   *abbrev_table_ptr = NULL;
15721 }
15722
15723 /* Read the abbrev table for CU from ABBREV_SECTION.  */
15724
15725 static void
15726 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15727                      struct dwarf2_section_info *abbrev_section)
15728 {
15729   cu->abbrev_table =
15730     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15731 }
15732
15733 /* Release the memory used by the abbrev table for a compilation unit.  */
15734
15735 static void
15736 dwarf2_free_abbrev_table (void *ptr_to_cu)
15737 {
15738   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr_to_cu;
15739
15740   if (cu->abbrev_table != NULL)
15741     abbrev_table_free (cu->abbrev_table);
15742   /* Set this to NULL so that we SEGV if we try to read it later,
15743      and also because free_comp_unit verifies this is NULL.  */
15744   cu->abbrev_table = NULL;
15745 }
15746 \f
15747 /* Returns nonzero if TAG represents a type that we might generate a partial
15748    symbol for.  */
15749
15750 static int
15751 is_type_tag_for_partial (int tag)
15752 {
15753   switch (tag)
15754     {
15755 #if 0
15756     /* Some types that would be reasonable to generate partial symbols for,
15757        that we don't at present.  */
15758     case DW_TAG_array_type:
15759     case DW_TAG_file_type:
15760     case DW_TAG_ptr_to_member_type:
15761     case DW_TAG_set_type:
15762     case DW_TAG_string_type:
15763     case DW_TAG_subroutine_type:
15764 #endif
15765     case DW_TAG_base_type:
15766     case DW_TAG_class_type:
15767     case DW_TAG_interface_type:
15768     case DW_TAG_enumeration_type:
15769     case DW_TAG_structure_type:
15770     case DW_TAG_subrange_type:
15771     case DW_TAG_typedef:
15772     case DW_TAG_union_type:
15773       return 1;
15774     default:
15775       return 0;
15776     }
15777 }
15778
15779 /* Load all DIEs that are interesting for partial symbols into memory.  */
15780
15781 static struct partial_die_info *
15782 load_partial_dies (const struct die_reader_specs *reader,
15783                    const gdb_byte *info_ptr, int building_psymtab)
15784 {
15785   struct dwarf2_cu *cu = reader->cu;
15786   struct objfile *objfile = cu->objfile;
15787   struct partial_die_info *part_die;
15788   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15789   struct abbrev_info *abbrev;
15790   unsigned int bytes_read;
15791   unsigned int load_all = 0;
15792   int nesting_level = 1;
15793
15794   parent_die = NULL;
15795   last_die = NULL;
15796
15797   gdb_assert (cu->per_cu != NULL);
15798   if (cu->per_cu->load_all_dies)
15799     load_all = 1;
15800
15801   cu->partial_dies
15802     = htab_create_alloc_ex (cu->header.length / 12,
15803                             partial_die_hash,
15804                             partial_die_eq,
15805                             NULL,
15806                             &cu->comp_unit_obstack,
15807                             hashtab_obstack_allocate,
15808                             dummy_obstack_deallocate);
15809
15810   part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
15811
15812   while (1)
15813     {
15814       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15815
15816       /* A NULL abbrev means the end of a series of children.  */
15817       if (abbrev == NULL)
15818         {
15819           if (--nesting_level == 0)
15820             {
15821               /* PART_DIE was probably the last thing allocated on the
15822                  comp_unit_obstack, so we could call obstack_free
15823                  here.  We don't do that because the waste is small,
15824                  and will be cleaned up when we're done with this
15825                  compilation unit.  This way, we're also more robust
15826                  against other users of the comp_unit_obstack.  */
15827               return first_die;
15828             }
15829           info_ptr += bytes_read;
15830           last_die = parent_die;
15831           parent_die = parent_die->die_parent;
15832           continue;
15833         }
15834
15835       /* Check for template arguments.  We never save these; if
15836          they're seen, we just mark the parent, and go on our way.  */
15837       if (parent_die != NULL
15838           && cu->language == language_cplus
15839           && (abbrev->tag == DW_TAG_template_type_param
15840               || abbrev->tag == DW_TAG_template_value_param))
15841         {
15842           parent_die->has_template_arguments = 1;
15843
15844           if (!load_all)
15845             {
15846               /* We don't need a partial DIE for the template argument.  */
15847               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15848               continue;
15849             }
15850         }
15851
15852       /* We only recurse into c++ subprograms looking for template arguments.
15853          Skip their other children.  */
15854       if (!load_all
15855           && cu->language == language_cplus
15856           && parent_die != NULL
15857           && parent_die->tag == DW_TAG_subprogram)
15858         {
15859           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15860           continue;
15861         }
15862
15863       /* Check whether this DIE is interesting enough to save.  Normally
15864          we would not be interested in members here, but there may be
15865          later variables referencing them via DW_AT_specification (for
15866          static members).  */
15867       if (!load_all
15868           && !is_type_tag_for_partial (abbrev->tag)
15869           && abbrev->tag != DW_TAG_constant
15870           && abbrev->tag != DW_TAG_enumerator
15871           && abbrev->tag != DW_TAG_subprogram
15872           && abbrev->tag != DW_TAG_lexical_block
15873           && abbrev->tag != DW_TAG_variable
15874           && abbrev->tag != DW_TAG_namespace
15875           && abbrev->tag != DW_TAG_module
15876           && abbrev->tag != DW_TAG_member
15877           && abbrev->tag != DW_TAG_imported_unit
15878           && abbrev->tag != DW_TAG_imported_declaration)
15879         {
15880           /* Otherwise we skip to the next sibling, if any.  */
15881           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15882           continue;
15883         }
15884
15885       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15886                                    info_ptr);
15887
15888       /* This two-pass algorithm for processing partial symbols has a
15889          high cost in cache pressure.  Thus, handle some simple cases
15890          here which cover the majority of C partial symbols.  DIEs
15891          which neither have specification tags in them, nor could have
15892          specification tags elsewhere pointing at them, can simply be
15893          processed and discarded.
15894
15895          This segment is also optional; scan_partial_symbols and
15896          add_partial_symbol will handle these DIEs if we chain
15897          them in normally.  When compilers which do not emit large
15898          quantities of duplicate debug information are more common,
15899          this code can probably be removed.  */
15900
15901       /* Any complete simple types at the top level (pretty much all
15902          of them, for a language without namespaces), can be processed
15903          directly.  */
15904       if (parent_die == NULL
15905           && part_die->has_specification == 0
15906           && part_die->is_declaration == 0
15907           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
15908               || part_die->tag == DW_TAG_base_type
15909               || part_die->tag == DW_TAG_subrange_type))
15910         {
15911           if (building_psymtab && part_die->name != NULL)
15912             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15913                                  VAR_DOMAIN, LOC_TYPEDEF,
15914                                  &objfile->static_psymbols,
15915                                  0, cu->language, objfile);
15916           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15917           continue;
15918         }
15919
15920       /* The exception for DW_TAG_typedef with has_children above is
15921          a workaround of GCC PR debug/47510.  In the case of this complaint
15922          type_name_no_tag_or_error will error on such types later.
15923
15924          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15925          it could not find the child DIEs referenced later, this is checked
15926          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15927
15928       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15929         complaint (&symfile_complaints,
15930                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15931                      "- DIE at 0x%x [in module %s]"),
15932                    part_die->offset.sect_off, objfile_name (objfile));
15933
15934       /* If we're at the second level, and we're an enumerator, and
15935          our parent has no specification (meaning possibly lives in a
15936          namespace elsewhere), then we can add the partial symbol now
15937          instead of queueing it.  */
15938       if (part_die->tag == DW_TAG_enumerator
15939           && parent_die != NULL
15940           && parent_die->die_parent == NULL
15941           && parent_die->tag == DW_TAG_enumeration_type
15942           && parent_die->has_specification == 0)
15943         {
15944           if (part_die->name == NULL)
15945             complaint (&symfile_complaints,
15946                        _("malformed enumerator DIE ignored"));
15947           else if (building_psymtab)
15948             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15949                                  VAR_DOMAIN, LOC_CONST,
15950                                  cu->language == language_cplus
15951                                  ? &objfile->global_psymbols
15952                                  : &objfile->static_psymbols,
15953                                  0, cu->language, objfile);
15954
15955           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15956           continue;
15957         }
15958
15959       /* We'll save this DIE so link it in.  */
15960       part_die->die_parent = parent_die;
15961       part_die->die_sibling = NULL;
15962       part_die->die_child = NULL;
15963
15964       if (last_die && last_die == parent_die)
15965         last_die->die_child = part_die;
15966       else if (last_die)
15967         last_die->die_sibling = part_die;
15968
15969       last_die = part_die;
15970
15971       if (first_die == NULL)
15972         first_die = part_die;
15973
15974       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15975          find interesting need to be in the hash table, because we
15976          also have the parent/sibling/child chains; only those that we
15977          might refer to by offset later during partial symbol reading.
15978
15979          For now this means things that might have be the target of a
15980          DW_AT_specification, DW_AT_abstract_origin, or
15981          DW_AT_extension.  DW_AT_extension will refer only to
15982          namespaces; DW_AT_abstract_origin refers to functions (and
15983          many things under the function DIE, but we do not recurse
15984          into function DIEs during partial symbol reading) and
15985          possibly variables as well; DW_AT_specification refers to
15986          declarations.  Declarations ought to have the DW_AT_declaration
15987          flag.  It happens that GCC forgets to put it in sometimes, but
15988          only for functions, not for types.
15989
15990          Adding more things than necessary to the hash table is harmless
15991          except for the performance cost.  Adding too few will result in
15992          wasted time in find_partial_die, when we reread the compilation
15993          unit with load_all_dies set.  */
15994
15995       if (load_all
15996           || abbrev->tag == DW_TAG_constant
15997           || abbrev->tag == DW_TAG_subprogram
15998           || abbrev->tag == DW_TAG_variable
15999           || abbrev->tag == DW_TAG_namespace
16000           || part_die->is_declaration)
16001         {
16002           void **slot;
16003
16004           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
16005                                            part_die->offset.sect_off, INSERT);
16006           *slot = part_die;
16007         }
16008
16009       part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
16010
16011       /* For some DIEs we want to follow their children (if any).  For C
16012          we have no reason to follow the children of structures; for other
16013          languages we have to, so that we can get at method physnames
16014          to infer fully qualified class names, for DW_AT_specification,
16015          and for C++ template arguments.  For C++, we also look one level
16016          inside functions to find template arguments (if the name of the
16017          function does not already contain the template arguments).
16018
16019          For Ada, we need to scan the children of subprograms and lexical
16020          blocks as well because Ada allows the definition of nested
16021          entities that could be interesting for the debugger, such as
16022          nested subprograms for instance.  */
16023       if (last_die->has_children
16024           && (load_all
16025               || last_die->tag == DW_TAG_namespace
16026               || last_die->tag == DW_TAG_module
16027               || last_die->tag == DW_TAG_enumeration_type
16028               || (cu->language == language_cplus
16029                   && last_die->tag == DW_TAG_subprogram
16030                   && (last_die->name == NULL
16031                       || strchr (last_die->name, '<') == NULL))
16032               || (cu->language != language_c
16033                   && (last_die->tag == DW_TAG_class_type
16034                       || last_die->tag == DW_TAG_interface_type
16035                       || last_die->tag == DW_TAG_structure_type
16036                       || last_die->tag == DW_TAG_union_type))
16037               || (cu->language == language_ada
16038                   && (last_die->tag == DW_TAG_subprogram
16039                       || last_die->tag == DW_TAG_lexical_block))))
16040         {
16041           nesting_level++;
16042           parent_die = last_die;
16043           continue;
16044         }
16045
16046       /* Otherwise we skip to the next sibling, if any.  */
16047       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
16048
16049       /* Back to the top, do it again.  */
16050     }
16051 }
16052
16053 /* Read a minimal amount of information into the minimal die structure.  */
16054
16055 static const gdb_byte *
16056 read_partial_die (const struct die_reader_specs *reader,
16057                   struct partial_die_info *part_die,
16058                   struct abbrev_info *abbrev, unsigned int abbrev_len,
16059                   const gdb_byte *info_ptr)
16060 {
16061   struct dwarf2_cu *cu = reader->cu;
16062   struct objfile *objfile = cu->objfile;
16063   const gdb_byte *buffer = reader->buffer;
16064   unsigned int i;
16065   struct attribute attr;
16066   int has_low_pc_attr = 0;
16067   int has_high_pc_attr = 0;
16068   int high_pc_relative = 0;
16069
16070   memset (part_die, 0, sizeof (struct partial_die_info));
16071
16072   part_die->offset.sect_off = info_ptr - buffer;
16073
16074   info_ptr += abbrev_len;
16075
16076   if (abbrev == NULL)
16077     return info_ptr;
16078
16079   part_die->tag = abbrev->tag;
16080   part_die->has_children = abbrev->has_children;
16081
16082   for (i = 0; i < abbrev->num_attrs; ++i)
16083     {
16084       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
16085
16086       /* Store the data if it is of an attribute we want to keep in a
16087          partial symbol table.  */
16088       switch (attr.name)
16089         {
16090         case DW_AT_name:
16091           switch (part_die->tag)
16092             {
16093             case DW_TAG_compile_unit:
16094             case DW_TAG_partial_unit:
16095             case DW_TAG_type_unit:
16096               /* Compilation units have a DW_AT_name that is a filename, not
16097                  a source language identifier.  */
16098             case DW_TAG_enumeration_type:
16099             case DW_TAG_enumerator:
16100               /* These tags always have simple identifiers already; no need
16101                  to canonicalize them.  */
16102               part_die->name = DW_STRING (&attr);
16103               break;
16104             default:
16105               part_die->name
16106                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
16107                                             &objfile->per_bfd->storage_obstack);
16108               break;
16109             }
16110           break;
16111         case DW_AT_linkage_name:
16112         case DW_AT_MIPS_linkage_name:
16113           /* Note that both forms of linkage name might appear.  We
16114              assume they will be the same, and we only store the last
16115              one we see.  */
16116           if (cu->language == language_ada)
16117             part_die->name = DW_STRING (&attr);
16118           part_die->linkage_name = DW_STRING (&attr);
16119           break;
16120         case DW_AT_low_pc:
16121           has_low_pc_attr = 1;
16122           part_die->lowpc = attr_value_as_address (&attr);
16123           break;
16124         case DW_AT_high_pc:
16125           has_high_pc_attr = 1;
16126           part_die->highpc = attr_value_as_address (&attr);
16127           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
16128                 high_pc_relative = 1;
16129           break;
16130         case DW_AT_location:
16131           /* Support the .debug_loc offsets.  */
16132           if (attr_form_is_block (&attr))
16133             {
16134                part_die->d.locdesc = DW_BLOCK (&attr);
16135             }
16136           else if (attr_form_is_section_offset (&attr))
16137             {
16138               dwarf2_complex_location_expr_complaint ();
16139             }
16140           else
16141             {
16142               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16143                                                      "partial symbol information");
16144             }
16145           break;
16146         case DW_AT_external:
16147           part_die->is_external = DW_UNSND (&attr);
16148           break;
16149         case DW_AT_declaration:
16150           part_die->is_declaration = DW_UNSND (&attr);
16151           break;
16152         case DW_AT_type:
16153           part_die->has_type = 1;
16154           break;
16155         case DW_AT_abstract_origin:
16156         case DW_AT_specification:
16157         case DW_AT_extension:
16158           part_die->has_specification = 1;
16159           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
16160           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
16161                                    || cu->per_cu->is_dwz);
16162           break;
16163         case DW_AT_sibling:
16164           /* Ignore absolute siblings, they might point outside of
16165              the current compile unit.  */
16166           if (attr.form == DW_FORM_ref_addr)
16167             complaint (&symfile_complaints,
16168                        _("ignoring absolute DW_AT_sibling"));
16169           else
16170             {
16171               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
16172               const gdb_byte *sibling_ptr = buffer + off;
16173
16174               if (sibling_ptr < info_ptr)
16175                 complaint (&symfile_complaints,
16176                            _("DW_AT_sibling points backwards"));
16177               else if (sibling_ptr > reader->buffer_end)
16178                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
16179               else
16180                 part_die->sibling = sibling_ptr;
16181             }
16182           break;
16183         case DW_AT_byte_size:
16184           part_die->has_byte_size = 1;
16185           break;
16186         case DW_AT_const_value:
16187           part_die->has_const_value = 1;
16188           break;
16189         case DW_AT_calling_convention:
16190           /* DWARF doesn't provide a way to identify a program's source-level
16191              entry point.  DW_AT_calling_convention attributes are only meant
16192              to describe functions' calling conventions.
16193
16194              However, because it's a necessary piece of information in
16195              Fortran, and before DWARF 4 DW_CC_program was the only
16196              piece of debugging information whose definition refers to
16197              a 'main program' at all, several compilers marked Fortran
16198              main programs with DW_CC_program --- even when those
16199              functions use the standard calling conventions.
16200
16201              Although DWARF now specifies a way to provide this
16202              information, we support this practice for backward
16203              compatibility.  */
16204           if (DW_UNSND (&attr) == DW_CC_program
16205               && cu->language == language_fortran)
16206             part_die->main_subprogram = 1;
16207           break;
16208         case DW_AT_inline:
16209           if (DW_UNSND (&attr) == DW_INL_inlined
16210               || DW_UNSND (&attr) == DW_INL_declared_inlined)
16211             part_die->may_be_inlined = 1;
16212           break;
16213
16214         case DW_AT_import:
16215           if (part_die->tag == DW_TAG_imported_unit)
16216             {
16217               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
16218               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
16219                                   || cu->per_cu->is_dwz);
16220             }
16221           break;
16222
16223         case DW_AT_main_subprogram:
16224           part_die->main_subprogram = DW_UNSND (&attr);
16225           break;
16226
16227         default:
16228           break;
16229         }
16230     }
16231
16232   if (high_pc_relative)
16233     part_die->highpc += part_die->lowpc;
16234
16235   if (has_low_pc_attr && has_high_pc_attr)
16236     {
16237       /* When using the GNU linker, .gnu.linkonce. sections are used to
16238          eliminate duplicate copies of functions and vtables and such.
16239          The linker will arbitrarily choose one and discard the others.
16240          The AT_*_pc values for such functions refer to local labels in
16241          these sections.  If the section from that file was discarded, the
16242          labels are not in the output, so the relocs get a value of 0.
16243          If this is a discarded function, mark the pc bounds as invalid,
16244          so that GDB will ignore it.  */
16245       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
16246         {
16247           struct gdbarch *gdbarch = get_objfile_arch (objfile);
16248
16249           complaint (&symfile_complaints,
16250                      _("DW_AT_low_pc %s is zero "
16251                        "for DIE at 0x%x [in module %s]"),
16252                      paddress (gdbarch, part_die->lowpc),
16253                      part_die->offset.sect_off, objfile_name (objfile));
16254         }
16255       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
16256       else if (part_die->lowpc >= part_die->highpc)
16257         {
16258           struct gdbarch *gdbarch = get_objfile_arch (objfile);
16259
16260           complaint (&symfile_complaints,
16261                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
16262                        "for DIE at 0x%x [in module %s]"),
16263                      paddress (gdbarch, part_die->lowpc),
16264                      paddress (gdbarch, part_die->highpc),
16265                      part_die->offset.sect_off, objfile_name (objfile));
16266         }
16267       else
16268         part_die->has_pc_info = 1;
16269     }
16270
16271   return info_ptr;
16272 }
16273
16274 /* Find a cached partial DIE at OFFSET in CU.  */
16275
16276 static struct partial_die_info *
16277 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
16278 {
16279   struct partial_die_info *lookup_die = NULL;
16280   struct partial_die_info part_die;
16281
16282   part_die.offset = offset;
16283   lookup_die = ((struct partial_die_info *)
16284                 htab_find_with_hash (cu->partial_dies, &part_die,
16285                                      offset.sect_off));
16286
16287   return lookup_die;
16288 }
16289
16290 /* Find a partial DIE at OFFSET, which may or may not be in CU,
16291    except in the case of .debug_types DIEs which do not reference
16292    outside their CU (they do however referencing other types via
16293    DW_FORM_ref_sig8).  */
16294
16295 static struct partial_die_info *
16296 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
16297 {
16298   struct objfile *objfile = cu->objfile;
16299   struct dwarf2_per_cu_data *per_cu = NULL;
16300   struct partial_die_info *pd = NULL;
16301
16302   if (offset_in_dwz == cu->per_cu->is_dwz
16303       && offset_in_cu_p (&cu->header, offset))
16304     {
16305       pd = find_partial_die_in_comp_unit (offset, cu);
16306       if (pd != NULL)
16307         return pd;
16308       /* We missed recording what we needed.
16309          Load all dies and try again.  */
16310       per_cu = cu->per_cu;
16311     }
16312   else
16313     {
16314       /* TUs don't reference other CUs/TUs (except via type signatures).  */
16315       if (cu->per_cu->is_debug_types)
16316         {
16317           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16318                    " external reference to offset 0x%lx [in module %s].\n"),
16319                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
16320                  bfd_get_filename (objfile->obfd));
16321         }
16322       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16323                                                  objfile);
16324
16325       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16326         load_partial_comp_unit (per_cu);
16327
16328       per_cu->cu->last_used = 0;
16329       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16330     }
16331
16332   /* If we didn't find it, and not all dies have been loaded,
16333      load them all and try again.  */
16334
16335   if (pd == NULL && per_cu->load_all_dies == 0)
16336     {
16337       per_cu->load_all_dies = 1;
16338
16339       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
16340          THIS_CU->cu may already be in use.  So we can't just free it and
16341          replace its DIEs with the ones we read in.  Instead, we leave those
16342          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16343          and clobber THIS_CU->cu->partial_dies with the hash table for the new
16344          set.  */
16345       load_partial_comp_unit (per_cu);
16346
16347       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16348     }
16349
16350   if (pd == NULL)
16351     internal_error (__FILE__, __LINE__,
16352                     _("could not find partial DIE 0x%x "
16353                       "in cache [from module %s]\n"),
16354                     offset.sect_off, bfd_get_filename (objfile->obfd));
16355   return pd;
16356 }
16357
16358 /* See if we can figure out if the class lives in a namespace.  We do
16359    this by looking for a member function; its demangled name will
16360    contain namespace info, if there is any.  */
16361
16362 static void
16363 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16364                                   struct dwarf2_cu *cu)
16365 {
16366   /* NOTE: carlton/2003-10-07: Getting the info this way changes
16367      what template types look like, because the demangler
16368      frequently doesn't give the same name as the debug info.  We
16369      could fix this by only using the demangled name to get the
16370      prefix (but see comment in read_structure_type).  */
16371
16372   struct partial_die_info *real_pdi;
16373   struct partial_die_info *child_pdi;
16374
16375   /* If this DIE (this DIE's specification, if any) has a parent, then
16376      we should not do this.  We'll prepend the parent's fully qualified
16377      name when we create the partial symbol.  */
16378
16379   real_pdi = struct_pdi;
16380   while (real_pdi->has_specification)
16381     real_pdi = find_partial_die (real_pdi->spec_offset,
16382                                  real_pdi->spec_is_dwz, cu);
16383
16384   if (real_pdi->die_parent != NULL)
16385     return;
16386
16387   for (child_pdi = struct_pdi->die_child;
16388        child_pdi != NULL;
16389        child_pdi = child_pdi->die_sibling)
16390     {
16391       if (child_pdi->tag == DW_TAG_subprogram
16392           && child_pdi->linkage_name != NULL)
16393         {
16394           char *actual_class_name
16395             = language_class_name_from_physname (cu->language_defn,
16396                                                  child_pdi->linkage_name);
16397           if (actual_class_name != NULL)
16398             {
16399               struct_pdi->name
16400                 = ((const char *)
16401                    obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16402                                   actual_class_name,
16403                                   strlen (actual_class_name)));
16404               xfree (actual_class_name);
16405             }
16406           break;
16407         }
16408     }
16409 }
16410
16411 /* Adjust PART_DIE before generating a symbol for it.  This function
16412    may set the is_external flag or change the DIE's name.  */
16413
16414 static void
16415 fixup_partial_die (struct partial_die_info *part_die,
16416                    struct dwarf2_cu *cu)
16417 {
16418   /* Once we've fixed up a die, there's no point in doing so again.
16419      This also avoids a memory leak if we were to call
16420      guess_partial_die_structure_name multiple times.  */
16421   if (part_die->fixup_called)
16422     return;
16423
16424   /* If we found a reference attribute and the DIE has no name, try
16425      to find a name in the referred to DIE.  */
16426
16427   if (part_die->name == NULL && part_die->has_specification)
16428     {
16429       struct partial_die_info *spec_die;
16430
16431       spec_die = find_partial_die (part_die->spec_offset,
16432                                    part_die->spec_is_dwz, cu);
16433
16434       fixup_partial_die (spec_die, cu);
16435
16436       if (spec_die->name)
16437         {
16438           part_die->name = spec_die->name;
16439
16440           /* Copy DW_AT_external attribute if it is set.  */
16441           if (spec_die->is_external)
16442             part_die->is_external = spec_die->is_external;
16443         }
16444     }
16445
16446   /* Set default names for some unnamed DIEs.  */
16447
16448   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
16449     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
16450
16451   /* If there is no parent die to provide a namespace, and there are
16452      children, see if we can determine the namespace from their linkage
16453      name.  */
16454   if (cu->language == language_cplus
16455       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
16456       && part_die->die_parent == NULL
16457       && part_die->has_children
16458       && (part_die->tag == DW_TAG_class_type
16459           || part_die->tag == DW_TAG_structure_type
16460           || part_die->tag == DW_TAG_union_type))
16461     guess_partial_die_structure_name (part_die, cu);
16462
16463   /* GCC might emit a nameless struct or union that has a linkage
16464      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
16465   if (part_die->name == NULL
16466       && (part_die->tag == DW_TAG_class_type
16467           || part_die->tag == DW_TAG_interface_type
16468           || part_die->tag == DW_TAG_structure_type
16469           || part_die->tag == DW_TAG_union_type)
16470       && part_die->linkage_name != NULL)
16471     {
16472       char *demangled;
16473
16474       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
16475       if (demangled)
16476         {
16477           const char *base;
16478
16479           /* Strip any leading namespaces/classes, keep only the base name.
16480              DW_AT_name for named DIEs does not contain the prefixes.  */
16481           base = strrchr (demangled, ':');
16482           if (base && base > demangled && base[-1] == ':')
16483             base++;
16484           else
16485             base = demangled;
16486
16487           part_die->name
16488             = ((const char *)
16489                obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16490                               base, strlen (base)));
16491           xfree (demangled);
16492         }
16493     }
16494
16495   part_die->fixup_called = 1;
16496 }
16497
16498 /* Read an attribute value described by an attribute form.  */
16499
16500 static const gdb_byte *
16501 read_attribute_value (const struct die_reader_specs *reader,
16502                       struct attribute *attr, unsigned form,
16503                       LONGEST implicit_const, const gdb_byte *info_ptr)
16504 {
16505   struct dwarf2_cu *cu = reader->cu;
16506   struct objfile *objfile = cu->objfile;
16507   struct gdbarch *gdbarch = get_objfile_arch (objfile);
16508   bfd *abfd = reader->abfd;
16509   struct comp_unit_head *cu_header = &cu->header;
16510   unsigned int bytes_read;
16511   struct dwarf_block *blk;
16512
16513   attr->form = (enum dwarf_form) form;
16514   switch (form)
16515     {
16516     case DW_FORM_ref_addr:
16517       if (cu->header.version == 2)
16518         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
16519       else
16520         DW_UNSND (attr) = read_offset (abfd, info_ptr,
16521                                        &cu->header, &bytes_read);
16522       info_ptr += bytes_read;
16523       break;
16524     case DW_FORM_GNU_ref_alt:
16525       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16526       info_ptr += bytes_read;
16527       break;
16528     case DW_FORM_addr:
16529       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
16530       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
16531       info_ptr += bytes_read;
16532       break;
16533     case DW_FORM_block2:
16534       blk = dwarf_alloc_block (cu);
16535       blk->size = read_2_bytes (abfd, info_ptr);
16536       info_ptr += 2;
16537       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16538       info_ptr += blk->size;
16539       DW_BLOCK (attr) = blk;
16540       break;
16541     case DW_FORM_block4:
16542       blk = dwarf_alloc_block (cu);
16543       blk->size = read_4_bytes (abfd, info_ptr);
16544       info_ptr += 4;
16545       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16546       info_ptr += blk->size;
16547       DW_BLOCK (attr) = blk;
16548       break;
16549     case DW_FORM_data2:
16550       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16551       info_ptr += 2;
16552       break;
16553     case DW_FORM_data4:
16554       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16555       info_ptr += 4;
16556       break;
16557     case DW_FORM_data8:
16558       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16559       info_ptr += 8;
16560       break;
16561     case DW_FORM_data16:
16562       blk = dwarf_alloc_block (cu);
16563       blk->size = 16;
16564       blk->data = read_n_bytes (abfd, info_ptr, 16);
16565       info_ptr += 16;
16566       DW_BLOCK (attr) = blk;
16567       break;
16568     case DW_FORM_sec_offset:
16569       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16570       info_ptr += bytes_read;
16571       break;
16572     case DW_FORM_string:
16573       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
16574       DW_STRING_IS_CANONICAL (attr) = 0;
16575       info_ptr += bytes_read;
16576       break;
16577     case DW_FORM_strp:
16578       if (!cu->per_cu->is_dwz)
16579         {
16580           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16581                                                    &bytes_read);
16582           DW_STRING_IS_CANONICAL (attr) = 0;
16583           info_ptr += bytes_read;
16584           break;
16585         }
16586       /* FALLTHROUGH */
16587     case DW_FORM_line_strp:
16588       if (!cu->per_cu->is_dwz)
16589         {
16590           DW_STRING (attr) = read_indirect_line_string (abfd, info_ptr,
16591                                                         cu_header, &bytes_read);
16592           DW_STRING_IS_CANONICAL (attr) = 0;
16593           info_ptr += bytes_read;
16594           break;
16595         }
16596       /* FALLTHROUGH */
16597     case DW_FORM_GNU_strp_alt:
16598       {
16599         struct dwz_file *dwz = dwarf2_get_dwz_file ();
16600         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16601                                           &bytes_read);
16602
16603         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16604         DW_STRING_IS_CANONICAL (attr) = 0;
16605         info_ptr += bytes_read;
16606       }
16607       break;
16608     case DW_FORM_exprloc:
16609     case DW_FORM_block:
16610       blk = dwarf_alloc_block (cu);
16611       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16612       info_ptr += bytes_read;
16613       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16614       info_ptr += blk->size;
16615       DW_BLOCK (attr) = blk;
16616       break;
16617     case DW_FORM_block1:
16618       blk = dwarf_alloc_block (cu);
16619       blk->size = read_1_byte (abfd, info_ptr);
16620       info_ptr += 1;
16621       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16622       info_ptr += blk->size;
16623       DW_BLOCK (attr) = blk;
16624       break;
16625     case DW_FORM_data1:
16626       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16627       info_ptr += 1;
16628       break;
16629     case DW_FORM_flag:
16630       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16631       info_ptr += 1;
16632       break;
16633     case DW_FORM_flag_present:
16634       DW_UNSND (attr) = 1;
16635       break;
16636     case DW_FORM_sdata:
16637       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16638       info_ptr += bytes_read;
16639       break;
16640     case DW_FORM_udata:
16641       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16642       info_ptr += bytes_read;
16643       break;
16644     case DW_FORM_ref1:
16645       DW_UNSND (attr) = (cu->header.offset.sect_off
16646                          + read_1_byte (abfd, info_ptr));
16647       info_ptr += 1;
16648       break;
16649     case DW_FORM_ref2:
16650       DW_UNSND (attr) = (cu->header.offset.sect_off
16651                          + read_2_bytes (abfd, info_ptr));
16652       info_ptr += 2;
16653       break;
16654     case DW_FORM_ref4:
16655       DW_UNSND (attr) = (cu->header.offset.sect_off
16656                          + read_4_bytes (abfd, info_ptr));
16657       info_ptr += 4;
16658       break;
16659     case DW_FORM_ref8:
16660       DW_UNSND (attr) = (cu->header.offset.sect_off
16661                          + read_8_bytes (abfd, info_ptr));
16662       info_ptr += 8;
16663       break;
16664     case DW_FORM_ref_sig8:
16665       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
16666       info_ptr += 8;
16667       break;
16668     case DW_FORM_ref_udata:
16669       DW_UNSND (attr) = (cu->header.offset.sect_off
16670                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
16671       info_ptr += bytes_read;
16672       break;
16673     case DW_FORM_indirect:
16674       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16675       info_ptr += bytes_read;
16676       if (form == DW_FORM_implicit_const)
16677         {
16678           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16679           info_ptr += bytes_read;
16680         }
16681       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
16682                                        info_ptr);
16683       break;
16684     case DW_FORM_implicit_const:
16685       DW_SND (attr) = implicit_const;
16686       break;
16687     case DW_FORM_GNU_addr_index:
16688       if (reader->dwo_file == NULL)
16689         {
16690           /* For now flag a hard error.
16691              Later we can turn this into a complaint.  */
16692           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16693                  dwarf_form_name (form),
16694                  bfd_get_filename (abfd));
16695         }
16696       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16697       info_ptr += bytes_read;
16698       break;
16699     case DW_FORM_GNU_str_index:
16700       if (reader->dwo_file == NULL)
16701         {
16702           /* For now flag a hard error.
16703              Later we can turn this into a complaint if warranted.  */
16704           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16705                  dwarf_form_name (form),
16706                  bfd_get_filename (abfd));
16707         }
16708       {
16709         ULONGEST str_index =
16710           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16711
16712         DW_STRING (attr) = read_str_index (reader, str_index);
16713         DW_STRING_IS_CANONICAL (attr) = 0;
16714         info_ptr += bytes_read;
16715       }
16716       break;
16717     default:
16718       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
16719              dwarf_form_name (form),
16720              bfd_get_filename (abfd));
16721     }
16722
16723   /* Super hack.  */
16724   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
16725     attr->form = DW_FORM_GNU_ref_alt;
16726
16727   /* We have seen instances where the compiler tried to emit a byte
16728      size attribute of -1 which ended up being encoded as an unsigned
16729      0xffffffff.  Although 0xffffffff is technically a valid size value,
16730      an object of this size seems pretty unlikely so we can relatively
16731      safely treat these cases as if the size attribute was invalid and
16732      treat them as zero by default.  */
16733   if (attr->name == DW_AT_byte_size
16734       && form == DW_FORM_data4
16735       && DW_UNSND (attr) >= 0xffffffff)
16736     {
16737       complaint
16738         (&symfile_complaints,
16739          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16740          hex_string (DW_UNSND (attr)));
16741       DW_UNSND (attr) = 0;
16742     }
16743
16744   return info_ptr;
16745 }
16746
16747 /* Read an attribute described by an abbreviated attribute.  */
16748
16749 static const gdb_byte *
16750 read_attribute (const struct die_reader_specs *reader,
16751                 struct attribute *attr, struct attr_abbrev *abbrev,
16752                 const gdb_byte *info_ptr)
16753 {
16754   attr->name = abbrev->name;
16755   return read_attribute_value (reader, attr, abbrev->form,
16756                                abbrev->implicit_const, info_ptr);
16757 }
16758
16759 /* Read dwarf information from a buffer.  */
16760
16761 static unsigned int
16762 read_1_byte (bfd *abfd, const gdb_byte *buf)
16763 {
16764   return bfd_get_8 (abfd, buf);
16765 }
16766
16767 static int
16768 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
16769 {
16770   return bfd_get_signed_8 (abfd, buf);
16771 }
16772
16773 static unsigned int
16774 read_2_bytes (bfd *abfd, const gdb_byte *buf)
16775 {
16776   return bfd_get_16 (abfd, buf);
16777 }
16778
16779 static int
16780 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
16781 {
16782   return bfd_get_signed_16 (abfd, buf);
16783 }
16784
16785 static unsigned int
16786 read_4_bytes (bfd *abfd, const gdb_byte *buf)
16787 {
16788   return bfd_get_32 (abfd, buf);
16789 }
16790
16791 static int
16792 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
16793 {
16794   return bfd_get_signed_32 (abfd, buf);
16795 }
16796
16797 static ULONGEST
16798 read_8_bytes (bfd *abfd, const gdb_byte *buf)
16799 {
16800   return bfd_get_64 (abfd, buf);
16801 }
16802
16803 static CORE_ADDR
16804 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
16805               unsigned int *bytes_read)
16806 {
16807   struct comp_unit_head *cu_header = &cu->header;
16808   CORE_ADDR retval = 0;
16809
16810   if (cu_header->signed_addr_p)
16811     {
16812       switch (cu_header->addr_size)
16813         {
16814         case 2:
16815           retval = bfd_get_signed_16 (abfd, buf);
16816           break;
16817         case 4:
16818           retval = bfd_get_signed_32 (abfd, buf);
16819           break;
16820         case 8:
16821           retval = bfd_get_signed_64 (abfd, buf);
16822           break;
16823         default:
16824           internal_error (__FILE__, __LINE__,
16825                           _("read_address: bad switch, signed [in module %s]"),
16826                           bfd_get_filename (abfd));
16827         }
16828     }
16829   else
16830     {
16831       switch (cu_header->addr_size)
16832         {
16833         case 2:
16834           retval = bfd_get_16 (abfd, buf);
16835           break;
16836         case 4:
16837           retval = bfd_get_32 (abfd, buf);
16838           break;
16839         case 8:
16840           retval = bfd_get_64 (abfd, buf);
16841           break;
16842         default:
16843           internal_error (__FILE__, __LINE__,
16844                           _("read_address: bad switch, "
16845                             "unsigned [in module %s]"),
16846                           bfd_get_filename (abfd));
16847         }
16848     }
16849
16850   *bytes_read = cu_header->addr_size;
16851   return retval;
16852 }
16853
16854 /* Read the initial length from a section.  The (draft) DWARF 3
16855    specification allows the initial length to take up either 4 bytes
16856    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
16857    bytes describe the length and all offsets will be 8 bytes in length
16858    instead of 4.
16859
16860    An older, non-standard 64-bit format is also handled by this
16861    function.  The older format in question stores the initial length
16862    as an 8-byte quantity without an escape value.  Lengths greater
16863    than 2^32 aren't very common which means that the initial 4 bytes
16864    is almost always zero.  Since a length value of zero doesn't make
16865    sense for the 32-bit format, this initial zero can be considered to
16866    be an escape value which indicates the presence of the older 64-bit
16867    format.  As written, the code can't detect (old format) lengths
16868    greater than 4GB.  If it becomes necessary to handle lengths
16869    somewhat larger than 4GB, we could allow other small values (such
16870    as the non-sensical values of 1, 2, and 3) to also be used as
16871    escape values indicating the presence of the old format.
16872
16873    The value returned via bytes_read should be used to increment the
16874    relevant pointer after calling read_initial_length().
16875
16876    [ Note:  read_initial_length() and read_offset() are based on the
16877      document entitled "DWARF Debugging Information Format", revision
16878      3, draft 8, dated November 19, 2001.  This document was obtained
16879      from:
16880
16881         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
16882
16883      This document is only a draft and is subject to change.  (So beware.)
16884
16885      Details regarding the older, non-standard 64-bit format were
16886      determined empirically by examining 64-bit ELF files produced by
16887      the SGI toolchain on an IRIX 6.5 machine.
16888
16889      - Kevin, July 16, 2002
16890    ] */
16891
16892 static LONGEST
16893 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
16894 {
16895   LONGEST length = bfd_get_32 (abfd, buf);
16896
16897   if (length == 0xffffffff)
16898     {
16899       length = bfd_get_64 (abfd, buf + 4);
16900       *bytes_read = 12;
16901     }
16902   else if (length == 0)
16903     {
16904       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
16905       length = bfd_get_64 (abfd, buf);
16906       *bytes_read = 8;
16907     }
16908   else
16909     {
16910       *bytes_read = 4;
16911     }
16912
16913   return length;
16914 }
16915
16916 /* Cover function for read_initial_length.
16917    Returns the length of the object at BUF, and stores the size of the
16918    initial length in *BYTES_READ and stores the size that offsets will be in
16919    *OFFSET_SIZE.
16920    If the initial length size is not equivalent to that specified in
16921    CU_HEADER then issue a complaint.
16922    This is useful when reading non-comp-unit headers.  */
16923
16924 static LONGEST
16925 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
16926                                         const struct comp_unit_head *cu_header,
16927                                         unsigned int *bytes_read,
16928                                         unsigned int *offset_size)
16929 {
16930   LONGEST length = read_initial_length (abfd, buf, bytes_read);
16931
16932   gdb_assert (cu_header->initial_length_size == 4
16933               || cu_header->initial_length_size == 8
16934               || cu_header->initial_length_size == 12);
16935
16936   if (cu_header->initial_length_size != *bytes_read)
16937     complaint (&symfile_complaints,
16938                _("intermixed 32-bit and 64-bit DWARF sections"));
16939
16940   *offset_size = (*bytes_read == 4) ? 4 : 8;
16941   return length;
16942 }
16943
16944 /* Read an offset from the data stream.  The size of the offset is
16945    given by cu_header->offset_size.  */
16946
16947 static LONGEST
16948 read_offset (bfd *abfd, const gdb_byte *buf,
16949              const struct comp_unit_head *cu_header,
16950              unsigned int *bytes_read)
16951 {
16952   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16953
16954   *bytes_read = cu_header->offset_size;
16955   return offset;
16956 }
16957
16958 /* Read an offset from the data stream.  */
16959
16960 static LONGEST
16961 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16962 {
16963   LONGEST retval = 0;
16964
16965   switch (offset_size)
16966     {
16967     case 4:
16968       retval = bfd_get_32 (abfd, buf);
16969       break;
16970     case 8:
16971       retval = bfd_get_64 (abfd, buf);
16972       break;
16973     default:
16974       internal_error (__FILE__, __LINE__,
16975                       _("read_offset_1: bad switch [in module %s]"),
16976                       bfd_get_filename (abfd));
16977     }
16978
16979   return retval;
16980 }
16981
16982 static const gdb_byte *
16983 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16984 {
16985   /* If the size of a host char is 8 bits, we can return a pointer
16986      to the buffer, otherwise we have to copy the data to a buffer
16987      allocated on the temporary obstack.  */
16988   gdb_assert (HOST_CHAR_BIT == 8);
16989   return buf;
16990 }
16991
16992 static const char *
16993 read_direct_string (bfd *abfd, const gdb_byte *buf,
16994                     unsigned int *bytes_read_ptr)
16995 {
16996   /* If the size of a host char is 8 bits, we can return a pointer
16997      to the string, otherwise we have to copy the string to a buffer
16998      allocated on the temporary obstack.  */
16999   gdb_assert (HOST_CHAR_BIT == 8);
17000   if (*buf == '\0')
17001     {
17002       *bytes_read_ptr = 1;
17003       return NULL;
17004     }
17005   *bytes_read_ptr = strlen ((const char *) buf) + 1;
17006   return (const char *) buf;
17007 }
17008
17009 /* Return pointer to string at section SECT offset STR_OFFSET with error
17010    reporting strings FORM_NAME and SECT_NAME.  */
17011
17012 static const char *
17013 read_indirect_string_at_offset_from (bfd *abfd, LONGEST str_offset,
17014                                      struct dwarf2_section_info *sect,
17015                                      const char *form_name,
17016                                      const char *sect_name)
17017 {
17018   dwarf2_read_section (dwarf2_per_objfile->objfile, sect);
17019   if (sect->buffer == NULL)
17020     error (_("%s used without %s section [in module %s]"),
17021            form_name, sect_name, bfd_get_filename (abfd));
17022   if (str_offset >= sect->size)
17023     error (_("%s pointing outside of %s section [in module %s]"),
17024            form_name, sect_name, bfd_get_filename (abfd));
17025   gdb_assert (HOST_CHAR_BIT == 8);
17026   if (sect->buffer[str_offset] == '\0')
17027     return NULL;
17028   return (const char *) (sect->buffer + str_offset);
17029 }
17030
17031 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
17032
17033 static const char *
17034 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
17035 {
17036   return read_indirect_string_at_offset_from (abfd, str_offset,
17037                                               &dwarf2_per_objfile->str,
17038                                               "DW_FORM_strp", ".debug_str");
17039 }
17040
17041 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
17042
17043 static const char *
17044 read_indirect_line_string_at_offset (bfd *abfd, LONGEST str_offset)
17045 {
17046   return read_indirect_string_at_offset_from (abfd, str_offset,
17047                                               &dwarf2_per_objfile->line_str,
17048                                               "DW_FORM_line_strp",
17049                                               ".debug_line_str");
17050 }
17051
17052 /* Read a string at offset STR_OFFSET in the .debug_str section from
17053    the .dwz file DWZ.  Throw an error if the offset is too large.  If
17054    the string consists of a single NUL byte, return NULL; otherwise
17055    return a pointer to the string.  */
17056
17057 static const char *
17058 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
17059 {
17060   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
17061
17062   if (dwz->str.buffer == NULL)
17063     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
17064              "section [in module %s]"),
17065            bfd_get_filename (dwz->dwz_bfd));
17066   if (str_offset >= dwz->str.size)
17067     error (_("DW_FORM_GNU_strp_alt pointing outside of "
17068              ".debug_str section [in module %s]"),
17069            bfd_get_filename (dwz->dwz_bfd));
17070   gdb_assert (HOST_CHAR_BIT == 8);
17071   if (dwz->str.buffer[str_offset] == '\0')
17072     return NULL;
17073   return (const char *) (dwz->str.buffer + str_offset);
17074 }
17075
17076 /* Return pointer to string at .debug_str offset as read from BUF.
17077    BUF is assumed to be in a compilation unit described by CU_HEADER.
17078    Return *BYTES_READ_PTR count of bytes read from BUF.  */
17079
17080 static const char *
17081 read_indirect_string (bfd *abfd, const gdb_byte *buf,
17082                       const struct comp_unit_head *cu_header,
17083                       unsigned int *bytes_read_ptr)
17084 {
17085   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
17086
17087   return read_indirect_string_at_offset (abfd, str_offset);
17088 }
17089
17090 /* Return pointer to string at .debug_line_str offset as read from BUF.
17091    BUF is assumed to be in a compilation unit described by CU_HEADER.
17092    Return *BYTES_READ_PTR count of bytes read from BUF.  */
17093
17094 static const char *
17095 read_indirect_line_string (bfd *abfd, const gdb_byte *buf,
17096                            const struct comp_unit_head *cu_header,
17097                            unsigned int *bytes_read_ptr)
17098 {
17099   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
17100
17101   return read_indirect_line_string_at_offset (abfd, str_offset);
17102 }
17103
17104 ULONGEST
17105 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
17106                           unsigned int *bytes_read_ptr)
17107 {
17108   ULONGEST result;
17109   unsigned int num_read;
17110   int shift;
17111   unsigned char byte;
17112
17113   result = 0;
17114   shift = 0;
17115   num_read = 0;
17116   while (1)
17117     {
17118       byte = bfd_get_8 (abfd, buf);
17119       buf++;
17120       num_read++;
17121       result |= ((ULONGEST) (byte & 127) << shift);
17122       if ((byte & 128) == 0)
17123         {
17124           break;
17125         }
17126       shift += 7;
17127     }
17128   *bytes_read_ptr = num_read;
17129   return result;
17130 }
17131
17132 static LONGEST
17133 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
17134                     unsigned int *bytes_read_ptr)
17135 {
17136   LONGEST result;
17137   int shift, num_read;
17138   unsigned char byte;
17139
17140   result = 0;
17141   shift = 0;
17142   num_read = 0;
17143   while (1)
17144     {
17145       byte = bfd_get_8 (abfd, buf);
17146       buf++;
17147       num_read++;
17148       result |= ((LONGEST) (byte & 127) << shift);
17149       shift += 7;
17150       if ((byte & 128) == 0)
17151         {
17152           break;
17153         }
17154     }
17155   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
17156     result |= -(((LONGEST) 1) << shift);
17157   *bytes_read_ptr = num_read;
17158   return result;
17159 }
17160
17161 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
17162    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
17163    ADDR_SIZE is the size of addresses from the CU header.  */
17164
17165 static CORE_ADDR
17166 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
17167 {
17168   struct objfile *objfile = dwarf2_per_objfile->objfile;
17169   bfd *abfd = objfile->obfd;
17170   const gdb_byte *info_ptr;
17171
17172   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
17173   if (dwarf2_per_objfile->addr.buffer == NULL)
17174     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
17175            objfile_name (objfile));
17176   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
17177     error (_("DW_FORM_addr_index pointing outside of "
17178              ".debug_addr section [in module %s]"),
17179            objfile_name (objfile));
17180   info_ptr = (dwarf2_per_objfile->addr.buffer
17181               + addr_base + addr_index * addr_size);
17182   if (addr_size == 4)
17183     return bfd_get_32 (abfd, info_ptr);
17184   else
17185     return bfd_get_64 (abfd, info_ptr);
17186 }
17187
17188 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
17189
17190 static CORE_ADDR
17191 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
17192 {
17193   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
17194 }
17195
17196 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
17197
17198 static CORE_ADDR
17199 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
17200                              unsigned int *bytes_read)
17201 {
17202   bfd *abfd = cu->objfile->obfd;
17203   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
17204
17205   return read_addr_index (cu, addr_index);
17206 }
17207
17208 /* Data structure to pass results from dwarf2_read_addr_index_reader
17209    back to dwarf2_read_addr_index.  */
17210
17211 struct dwarf2_read_addr_index_data
17212 {
17213   ULONGEST addr_base;
17214   int addr_size;
17215 };
17216
17217 /* die_reader_func for dwarf2_read_addr_index.  */
17218
17219 static void
17220 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
17221                                const gdb_byte *info_ptr,
17222                                struct die_info *comp_unit_die,
17223                                int has_children,
17224                                void *data)
17225 {
17226   struct dwarf2_cu *cu = reader->cu;
17227   struct dwarf2_read_addr_index_data *aidata =
17228     (struct dwarf2_read_addr_index_data *) data;
17229
17230   aidata->addr_base = cu->addr_base;
17231   aidata->addr_size = cu->header.addr_size;
17232 }
17233
17234 /* Given an index in .debug_addr, fetch the value.
17235    NOTE: This can be called during dwarf expression evaluation,
17236    long after the debug information has been read, and thus per_cu->cu
17237    may no longer exist.  */
17238
17239 CORE_ADDR
17240 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
17241                         unsigned int addr_index)
17242 {
17243   struct objfile *objfile = per_cu->objfile;
17244   struct dwarf2_cu *cu = per_cu->cu;
17245   ULONGEST addr_base;
17246   int addr_size;
17247
17248   /* This is intended to be called from outside this file.  */
17249   dw2_setup (objfile);
17250
17251   /* We need addr_base and addr_size.
17252      If we don't have PER_CU->cu, we have to get it.
17253      Nasty, but the alternative is storing the needed info in PER_CU,
17254      which at this point doesn't seem justified: it's not clear how frequently
17255      it would get used and it would increase the size of every PER_CU.
17256      Entry points like dwarf2_per_cu_addr_size do a similar thing
17257      so we're not in uncharted territory here.
17258      Alas we need to be a bit more complicated as addr_base is contained
17259      in the DIE.
17260
17261      We don't need to read the entire CU(/TU).
17262      We just need the header and top level die.
17263
17264      IWBN to use the aging mechanism to let us lazily later discard the CU.
17265      For now we skip this optimization.  */
17266
17267   if (cu != NULL)
17268     {
17269       addr_base = cu->addr_base;
17270       addr_size = cu->header.addr_size;
17271     }
17272   else
17273     {
17274       struct dwarf2_read_addr_index_data aidata;
17275
17276       /* Note: We can't use init_cutu_and_read_dies_simple here,
17277          we need addr_base.  */
17278       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
17279                                dwarf2_read_addr_index_reader, &aidata);
17280       addr_base = aidata.addr_base;
17281       addr_size = aidata.addr_size;
17282     }
17283
17284   return read_addr_index_1 (addr_index, addr_base, addr_size);
17285 }
17286
17287 /* Given a DW_FORM_GNU_str_index, fetch the string.
17288    This is only used by the Fission support.  */
17289
17290 static const char *
17291 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
17292 {
17293   struct objfile *objfile = dwarf2_per_objfile->objfile;
17294   const char *objf_name = objfile_name (objfile);
17295   bfd *abfd = objfile->obfd;
17296   struct dwarf2_cu *cu = reader->cu;
17297   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
17298   struct dwarf2_section_info *str_offsets_section =
17299     &reader->dwo_file->sections.str_offsets;
17300   const gdb_byte *info_ptr;
17301   ULONGEST str_offset;
17302   static const char form_name[] = "DW_FORM_GNU_str_index";
17303
17304   dwarf2_read_section (objfile, str_section);
17305   dwarf2_read_section (objfile, str_offsets_section);
17306   if (str_section->buffer == NULL)
17307     error (_("%s used without .debug_str.dwo section"
17308              " in CU at offset 0x%lx [in module %s]"),
17309            form_name, (long) cu->header.offset.sect_off, objf_name);
17310   if (str_offsets_section->buffer == NULL)
17311     error (_("%s used without .debug_str_offsets.dwo section"
17312              " in CU at offset 0x%lx [in module %s]"),
17313            form_name, (long) cu->header.offset.sect_off, objf_name);
17314   if (str_index * cu->header.offset_size >= str_offsets_section->size)
17315     error (_("%s pointing outside of .debug_str_offsets.dwo"
17316              " section in CU at offset 0x%lx [in module %s]"),
17317            form_name, (long) cu->header.offset.sect_off, objf_name);
17318   info_ptr = (str_offsets_section->buffer
17319               + str_index * cu->header.offset_size);
17320   if (cu->header.offset_size == 4)
17321     str_offset = bfd_get_32 (abfd, info_ptr);
17322   else
17323     str_offset = bfd_get_64 (abfd, info_ptr);
17324   if (str_offset >= str_section->size)
17325     error (_("Offset from %s pointing outside of"
17326              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
17327            form_name, (long) cu->header.offset.sect_off, objf_name);
17328   return (const char *) (str_section->buffer + str_offset);
17329 }
17330
17331 /* Return the length of an LEB128 number in BUF.  */
17332
17333 static int
17334 leb128_size (const gdb_byte *buf)
17335 {
17336   const gdb_byte *begin = buf;
17337   gdb_byte byte;
17338
17339   while (1)
17340     {
17341       byte = *buf++;
17342       if ((byte & 128) == 0)
17343         return buf - begin;
17344     }
17345 }
17346
17347 static void
17348 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
17349 {
17350   switch (lang)
17351     {
17352     case DW_LANG_C89:
17353     case DW_LANG_C99:
17354     case DW_LANG_C11:
17355     case DW_LANG_C:
17356     case DW_LANG_UPC:
17357       cu->language = language_c;
17358       break;
17359     case DW_LANG_Java:
17360     case DW_LANG_C_plus_plus:
17361     case DW_LANG_C_plus_plus_11:
17362     case DW_LANG_C_plus_plus_14:
17363       cu->language = language_cplus;
17364       break;
17365     case DW_LANG_D:
17366       cu->language = language_d;
17367       break;
17368     case DW_LANG_Fortran77:
17369     case DW_LANG_Fortran90:
17370     case DW_LANG_Fortran95:
17371     case DW_LANG_Fortran03:
17372     case DW_LANG_Fortran08:
17373       cu->language = language_fortran;
17374       break;
17375     case DW_LANG_Go:
17376       cu->language = language_go;
17377       break;
17378     case DW_LANG_Mips_Assembler:
17379       cu->language = language_asm;
17380       break;
17381     case DW_LANG_Ada83:
17382     case DW_LANG_Ada95:
17383       cu->language = language_ada;
17384       break;
17385     case DW_LANG_Modula2:
17386       cu->language = language_m2;
17387       break;
17388     case DW_LANG_Pascal83:
17389       cu->language = language_pascal;
17390       break;
17391     case DW_LANG_ObjC:
17392       cu->language = language_objc;
17393       break;
17394     case DW_LANG_Rust:
17395     case DW_LANG_Rust_old:
17396       cu->language = language_rust;
17397       break;
17398     case DW_LANG_Cobol74:
17399     case DW_LANG_Cobol85:
17400     default:
17401       cu->language = language_minimal;
17402       break;
17403     }
17404   cu->language_defn = language_def (cu->language);
17405 }
17406
17407 /* Return the named attribute or NULL if not there.  */
17408
17409 static struct attribute *
17410 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17411 {
17412   for (;;)
17413     {
17414       unsigned int i;
17415       struct attribute *spec = NULL;
17416
17417       for (i = 0; i < die->num_attrs; ++i)
17418         {
17419           if (die->attrs[i].name == name)
17420             return &die->attrs[i];
17421           if (die->attrs[i].name == DW_AT_specification
17422               || die->attrs[i].name == DW_AT_abstract_origin)
17423             spec = &die->attrs[i];
17424         }
17425
17426       if (!spec)
17427         break;
17428
17429       die = follow_die_ref (die, spec, &cu);
17430     }
17431
17432   return NULL;
17433 }
17434
17435 /* Return the named attribute or NULL if not there,
17436    but do not follow DW_AT_specification, etc.
17437    This is for use in contexts where we're reading .debug_types dies.
17438    Following DW_AT_specification, DW_AT_abstract_origin will take us
17439    back up the chain, and we want to go down.  */
17440
17441 static struct attribute *
17442 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
17443 {
17444   unsigned int i;
17445
17446   for (i = 0; i < die->num_attrs; ++i)
17447     if (die->attrs[i].name == name)
17448       return &die->attrs[i];
17449
17450   return NULL;
17451 }
17452
17453 /* Return the string associated with a string-typed attribute, or NULL if it
17454    is either not found or is of an incorrect type.  */
17455
17456 static const char *
17457 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17458 {
17459   struct attribute *attr;
17460   const char *str = NULL;
17461
17462   attr = dwarf2_attr (die, name, cu);
17463
17464   if (attr != NULL)
17465     {
17466       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
17467           || attr->form == DW_FORM_string || attr->form == DW_FORM_GNU_strp_alt)
17468         str = DW_STRING (attr);
17469       else
17470         complaint (&symfile_complaints,
17471                    _("string type expected for attribute %s for "
17472                      "DIE at 0x%x in module %s"),
17473                    dwarf_attr_name (name), die->offset.sect_off,
17474                    objfile_name (cu->objfile));
17475     }
17476
17477   return str;
17478 }
17479
17480 /* Return non-zero iff the attribute NAME is defined for the given DIE,
17481    and holds a non-zero value.  This function should only be used for
17482    DW_FORM_flag or DW_FORM_flag_present attributes.  */
17483
17484 static int
17485 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17486 {
17487   struct attribute *attr = dwarf2_attr (die, name, cu);
17488
17489   return (attr && DW_UNSND (attr));
17490 }
17491
17492 static int
17493 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
17494 {
17495   /* A DIE is a declaration if it has a DW_AT_declaration attribute
17496      which value is non-zero.  However, we have to be careful with
17497      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17498      (via dwarf2_flag_true_p) follows this attribute.  So we may
17499      end up accidently finding a declaration attribute that belongs
17500      to a different DIE referenced by the specification attribute,
17501      even though the given DIE does not have a declaration attribute.  */
17502   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17503           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
17504 }
17505
17506 /* Return the die giving the specification for DIE, if there is
17507    one.  *SPEC_CU is the CU containing DIE on input, and the CU
17508    containing the return value on output.  If there is no
17509    specification, but there is an abstract origin, that is
17510    returned.  */
17511
17512 static struct die_info *
17513 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
17514 {
17515   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17516                                              *spec_cu);
17517
17518   if (spec_attr == NULL)
17519     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17520
17521   if (spec_attr == NULL)
17522     return NULL;
17523   else
17524     return follow_die_ref (die, spec_attr, spec_cu);
17525 }
17526
17527 /* Free the line_header structure *LH, and any arrays and strings it
17528    refers to.
17529    NOTE: This is also used as a "cleanup" function.  */
17530
17531 static void
17532 free_line_header (struct line_header *lh)
17533 {
17534   if (lh->standard_opcode_lengths)
17535     xfree (lh->standard_opcode_lengths);
17536
17537   /* Remember that all the lh->file_names[i].name pointers are
17538      pointers into debug_line_buffer, and don't need to be freed.  */
17539   if (lh->file_names)
17540     xfree (lh->file_names);
17541
17542   /* Similarly for the include directory names.  */
17543   if (lh->include_dirs)
17544     xfree (lh->include_dirs);
17545
17546   xfree (lh);
17547 }
17548
17549 /* Stub for free_line_header to match void * callback types.  */
17550
17551 static void
17552 free_line_header_voidp (void *arg)
17553 {
17554   struct line_header *lh = (struct line_header *) arg;
17555
17556   free_line_header (lh);
17557 }
17558
17559 /* Add an entry to LH's include directory table.  */
17560
17561 static void
17562 add_include_dir (struct line_header *lh, const char *include_dir)
17563 {
17564   if (dwarf_line_debug >= 2)
17565     fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17566                         lh->num_include_dirs + 1, include_dir);
17567
17568   /* Grow the array if necessary.  */
17569   if (lh->include_dirs_size == 0)
17570     {
17571       lh->include_dirs_size = 1; /* for testing */
17572       lh->include_dirs = XNEWVEC (const char *, lh->include_dirs_size);
17573     }
17574   else if (lh->num_include_dirs >= lh->include_dirs_size)
17575     {
17576       lh->include_dirs_size *= 2;
17577       lh->include_dirs = XRESIZEVEC (const char *, lh->include_dirs,
17578                                      lh->include_dirs_size);
17579     }
17580
17581   lh->include_dirs[lh->num_include_dirs++] = include_dir;
17582 }
17583
17584 /* Add an entry to LH's file name table.  */
17585
17586 static void
17587 add_file_name (struct line_header *lh,
17588                const char *name,
17589                unsigned int dir_index,
17590                unsigned int mod_time,
17591                unsigned int length)
17592 {
17593   struct file_entry *fe;
17594
17595   if (dwarf_line_debug >= 2)
17596     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17597                         lh->num_file_names + 1, name);
17598
17599   /* Grow the array if necessary.  */
17600   if (lh->file_names_size == 0)
17601     {
17602       lh->file_names_size = 1; /* for testing */
17603       lh->file_names = XNEWVEC (struct file_entry, lh->file_names_size);
17604     }
17605   else if (lh->num_file_names >= lh->file_names_size)
17606     {
17607       lh->file_names_size *= 2;
17608       lh->file_names
17609         = XRESIZEVEC (struct file_entry, lh->file_names, lh->file_names_size);
17610     }
17611
17612   fe = &lh->file_names[lh->num_file_names++];
17613   fe->name = name;
17614   fe->dir_index = dir_index;
17615   fe->mod_time = mod_time;
17616   fe->length = length;
17617   fe->included_p = 0;
17618   fe->symtab = NULL;
17619 }
17620
17621 /* A convenience function to find the proper .debug_line section for a CU.  */
17622
17623 static struct dwarf2_section_info *
17624 get_debug_line_section (struct dwarf2_cu *cu)
17625 {
17626   struct dwarf2_section_info *section;
17627
17628   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17629      DWO file.  */
17630   if (cu->dwo_unit && cu->per_cu->is_debug_types)
17631     section = &cu->dwo_unit->dwo_file->sections.line;
17632   else if (cu->per_cu->is_dwz)
17633     {
17634       struct dwz_file *dwz = dwarf2_get_dwz_file ();
17635
17636       section = &dwz->line;
17637     }
17638   else
17639     section = &dwarf2_per_objfile->line;
17640
17641   return section;
17642 }
17643
17644 /* Forwarding function for read_formatted_entries.  */
17645
17646 static void
17647 add_include_dir_stub (struct line_header *lh, const char *name,
17648                       unsigned int dir_index, unsigned int mod_time,
17649                       unsigned int length)
17650 {
17651   add_include_dir (lh, name);
17652 }
17653
17654 /* Read directory or file name entry format, starting with byte of
17655    format count entries, ULEB128 pairs of entry formats, ULEB128 of
17656    entries count and the entries themselves in the described entry
17657    format.  */
17658
17659 static void
17660 read_formatted_entries (bfd *abfd, const gdb_byte **bufp,
17661                         struct line_header *lh,
17662                         const struct comp_unit_head *cu_header,
17663                         void (*callback) (struct line_header *lh,
17664                                           const char *name,
17665                                           unsigned int dir_index,
17666                                           unsigned int mod_time,
17667                                           unsigned int length))
17668 {
17669   gdb_byte format_count, formati;
17670   ULONGEST data_count, datai;
17671   const gdb_byte *buf = *bufp;
17672   const gdb_byte *format_header_data;
17673   int i;
17674   unsigned int bytes_read;
17675
17676   format_count = read_1_byte (abfd, buf);
17677   buf += 1;
17678   format_header_data = buf;
17679   for (formati = 0; formati < format_count; formati++)
17680     {
17681       read_unsigned_leb128 (abfd, buf, &bytes_read);
17682       buf += bytes_read;
17683       read_unsigned_leb128 (abfd, buf, &bytes_read);
17684       buf += bytes_read;
17685     }
17686
17687   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
17688   buf += bytes_read;
17689   for (datai = 0; datai < data_count; datai++)
17690     {
17691       const gdb_byte *format = format_header_data;
17692       struct file_entry fe;
17693
17694       memset (&fe, 0, sizeof (fe));
17695
17696       for (formati = 0; formati < format_count; formati++)
17697         {
17698           ULONGEST content_type, form;
17699           const char *string_trash;
17700           const char **stringp = &string_trash;
17701           unsigned int uint_trash, *uintp = &uint_trash;
17702
17703           content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
17704           format += bytes_read;
17705           switch (content_type)
17706             {
17707             case DW_LNCT_path:
17708               stringp = &fe.name;
17709               break;
17710             case DW_LNCT_directory_index:
17711               uintp = &fe.dir_index;
17712               break;
17713             case DW_LNCT_timestamp:
17714               uintp = &fe.mod_time;
17715               break;
17716             case DW_LNCT_size:
17717               uintp = &fe.length;
17718               break;
17719             case DW_LNCT_MD5:
17720               break;
17721             default:
17722               complaint (&symfile_complaints,
17723                          _("Unknown format content type %s"),
17724                          pulongest (content_type));
17725             }
17726
17727           form = read_unsigned_leb128 (abfd, format, &bytes_read);
17728           format += bytes_read;
17729           switch (form)
17730             {
17731             case DW_FORM_string:
17732               *stringp = read_direct_string (abfd, buf, &bytes_read);
17733               buf += bytes_read;
17734               break;
17735
17736             case DW_FORM_line_strp:
17737               *stringp = read_indirect_line_string (abfd, buf, cu_header, &bytes_read);
17738               buf += bytes_read;
17739               break;
17740
17741             case DW_FORM_data1:
17742               *uintp = read_1_byte (abfd, buf);
17743               buf += 1;
17744               break;
17745
17746             case DW_FORM_data2:
17747               *uintp = read_2_bytes (abfd, buf);
17748               buf += 2;
17749               break;
17750
17751             case DW_FORM_data4:
17752               *uintp = read_4_bytes (abfd, buf);
17753               buf += 4;
17754               break;
17755
17756             case DW_FORM_data8:
17757               *uintp = read_8_bytes (abfd, buf);
17758               buf += 8;
17759               break;
17760
17761             case DW_FORM_udata:
17762               *uintp = read_unsigned_leb128 (abfd, buf, &bytes_read);
17763               buf += bytes_read;
17764               break;
17765
17766             case DW_FORM_block:
17767               /* It is valid only for DW_LNCT_timestamp which is ignored by
17768                  current GDB.  */
17769               break;
17770             }
17771         }
17772
17773       callback (lh, fe.name, fe.dir_index, fe.mod_time, fe.length);
17774     }
17775
17776   *bufp = buf;
17777 }
17778
17779 /* Read the statement program header starting at OFFSET in
17780    .debug_line, or .debug_line.dwo.  Return a pointer
17781    to a struct line_header, allocated using xmalloc.
17782    Returns NULL if there is a problem reading the header, e.g., if it
17783    has a version we don't understand.
17784
17785    NOTE: the strings in the include directory and file name tables of
17786    the returned object point into the dwarf line section buffer,
17787    and must not be freed.  */
17788
17789 static struct line_header *
17790 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
17791 {
17792   struct cleanup *back_to;
17793   struct line_header *lh;
17794   const gdb_byte *line_ptr;
17795   unsigned int bytes_read, offset_size;
17796   int i;
17797   const char *cur_dir, *cur_file;
17798   struct dwarf2_section_info *section;
17799   bfd *abfd;
17800
17801   section = get_debug_line_section (cu);
17802   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17803   if (section->buffer == NULL)
17804     {
17805       if (cu->dwo_unit && cu->per_cu->is_debug_types)
17806         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17807       else
17808         complaint (&symfile_complaints, _("missing .debug_line section"));
17809       return 0;
17810     }
17811
17812   /* We can't do this until we know the section is non-empty.
17813      Only then do we know we have such a section.  */
17814   abfd = get_section_bfd_owner (section);
17815
17816   /* Make sure that at least there's room for the total_length field.
17817      That could be 12 bytes long, but we're just going to fudge that.  */
17818   if (offset + 4 >= section->size)
17819     {
17820       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17821       return 0;
17822     }
17823
17824   lh = XNEW (struct line_header);
17825   memset (lh, 0, sizeof (*lh));
17826   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17827                           (void *) lh);
17828
17829   lh->offset.sect_off = offset;
17830   lh->offset_in_dwz = cu->per_cu->is_dwz;
17831
17832   line_ptr = section->buffer + offset;
17833
17834   /* Read in the header.  */
17835   lh->total_length =
17836     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17837                                             &bytes_read, &offset_size);
17838   line_ptr += bytes_read;
17839   if (line_ptr + lh->total_length > (section->buffer + section->size))
17840     {
17841       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17842       do_cleanups (back_to);
17843       return 0;
17844     }
17845   lh->statement_program_end = line_ptr + lh->total_length;
17846   lh->version = read_2_bytes (abfd, line_ptr);
17847   line_ptr += 2;
17848   if (lh->version > 5)
17849     {
17850       /* This is a version we don't understand.  The format could have
17851          changed in ways we don't handle properly so just punt.  */
17852       complaint (&symfile_complaints,
17853                  _("unsupported version in .debug_line section"));
17854       return NULL;
17855     }
17856   if (lh->version >= 5)
17857     {
17858       gdb_byte segment_selector_size;
17859
17860       /* Skip address size.  */
17861       read_1_byte (abfd, line_ptr);
17862       line_ptr += 1;
17863
17864       segment_selector_size = read_1_byte (abfd, line_ptr);
17865       line_ptr += 1;
17866       if (segment_selector_size != 0)
17867         {
17868           complaint (&symfile_complaints,
17869                      _("unsupported segment selector size %u "
17870                        "in .debug_line section"),
17871                      segment_selector_size);
17872           return NULL;
17873         }
17874     }
17875   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17876   line_ptr += offset_size;
17877   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17878   line_ptr += 1;
17879   if (lh->version >= 4)
17880     {
17881       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17882       line_ptr += 1;
17883     }
17884   else
17885     lh->maximum_ops_per_instruction = 1;
17886
17887   if (lh->maximum_ops_per_instruction == 0)
17888     {
17889       lh->maximum_ops_per_instruction = 1;
17890       complaint (&symfile_complaints,
17891                  _("invalid maximum_ops_per_instruction "
17892                    "in `.debug_line' section"));
17893     }
17894
17895   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17896   line_ptr += 1;
17897   lh->line_base = read_1_signed_byte (abfd, line_ptr);
17898   line_ptr += 1;
17899   lh->line_range = read_1_byte (abfd, line_ptr);
17900   line_ptr += 1;
17901   lh->opcode_base = read_1_byte (abfd, line_ptr);
17902   line_ptr += 1;
17903   lh->standard_opcode_lengths = XNEWVEC (unsigned char, lh->opcode_base);
17904
17905   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
17906   for (i = 1; i < lh->opcode_base; ++i)
17907     {
17908       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17909       line_ptr += 1;
17910     }
17911
17912   if (lh->version >= 5)
17913     {
17914       /* Read directory table.  */
17915       read_formatted_entries (abfd, &line_ptr, lh, &cu->header,
17916                               add_include_dir_stub);
17917
17918       /* Read file name table.  */
17919       read_formatted_entries (abfd, &line_ptr, lh, &cu->header, add_file_name);
17920     }
17921   else
17922     {
17923       /* Read directory table.  */
17924       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17925         {
17926           line_ptr += bytes_read;
17927           add_include_dir (lh, cur_dir);
17928         }
17929       line_ptr += bytes_read;
17930
17931       /* Read file name table.  */
17932       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17933         {
17934           unsigned int dir_index, mod_time, length;
17935
17936           line_ptr += bytes_read;
17937           dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17938           line_ptr += bytes_read;
17939           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17940           line_ptr += bytes_read;
17941           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17942           line_ptr += bytes_read;
17943
17944           add_file_name (lh, cur_file, dir_index, mod_time, length);
17945         }
17946       line_ptr += bytes_read;
17947     }
17948   lh->statement_program_start = line_ptr;
17949
17950   if (line_ptr > (section->buffer + section->size))
17951     complaint (&symfile_complaints,
17952                _("line number info header doesn't "
17953                  "fit in `.debug_line' section"));
17954
17955   discard_cleanups (back_to);
17956   return lh;
17957 }
17958
17959 /* Subroutine of dwarf_decode_lines to simplify it.
17960    Return the file name of the psymtab for included file FILE_INDEX
17961    in line header LH of PST.
17962    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17963    If space for the result is malloc'd, it will be freed by a cleanup.
17964    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17965
17966    The function creates dangling cleanup registration.  */
17967
17968 static const char *
17969 psymtab_include_file_name (const struct line_header *lh, int file_index,
17970                            const struct partial_symtab *pst,
17971                            const char *comp_dir)
17972 {
17973   const struct file_entry fe = lh->file_names [file_index];
17974   const char *include_name = fe.name;
17975   const char *include_name_to_compare = include_name;
17976   const char *dir_name = NULL;
17977   const char *pst_filename;
17978   char *copied_name = NULL;
17979   int file_is_pst;
17980
17981   if (fe.dir_index && lh->include_dirs != NULL)
17982     dir_name = lh->include_dirs[fe.dir_index - 1];
17983
17984   if (!IS_ABSOLUTE_PATH (include_name)
17985       && (dir_name != NULL || comp_dir != NULL))
17986     {
17987       /* Avoid creating a duplicate psymtab for PST.
17988          We do this by comparing INCLUDE_NAME and PST_FILENAME.
17989          Before we do the comparison, however, we need to account
17990          for DIR_NAME and COMP_DIR.
17991          First prepend dir_name (if non-NULL).  If we still don't
17992          have an absolute path prepend comp_dir (if non-NULL).
17993          However, the directory we record in the include-file's
17994          psymtab does not contain COMP_DIR (to match the
17995          corresponding symtab(s)).
17996
17997          Example:
17998
17999          bash$ cd /tmp
18000          bash$ gcc -g ./hello.c
18001          include_name = "hello.c"
18002          dir_name = "."
18003          DW_AT_comp_dir = comp_dir = "/tmp"
18004          DW_AT_name = "./hello.c"
18005
18006       */
18007
18008       if (dir_name != NULL)
18009         {
18010           char *tem = concat (dir_name, SLASH_STRING,
18011                               include_name, (char *)NULL);
18012
18013           make_cleanup (xfree, tem);
18014           include_name = tem;
18015           include_name_to_compare = include_name;
18016         }
18017       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
18018         {
18019           char *tem = concat (comp_dir, SLASH_STRING,
18020                               include_name, (char *)NULL);
18021
18022           make_cleanup (xfree, tem);
18023           include_name_to_compare = tem;
18024         }
18025     }
18026
18027   pst_filename = pst->filename;
18028   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
18029     {
18030       copied_name = concat (pst->dirname, SLASH_STRING,
18031                             pst_filename, (char *)NULL);
18032       pst_filename = copied_name;
18033     }
18034
18035   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
18036
18037   if (copied_name != NULL)
18038     xfree (copied_name);
18039
18040   if (file_is_pst)
18041     return NULL;
18042   return include_name;
18043 }
18044
18045 /* State machine to track the state of the line number program.  */
18046
18047 typedef struct
18048 {
18049   /* These are part of the standard DWARF line number state machine.  */
18050
18051   unsigned char op_index;
18052   unsigned int file;
18053   unsigned int line;
18054   CORE_ADDR address;
18055   int is_stmt;
18056   unsigned int discriminator;
18057
18058   /* Additional bits of state we need to track.  */
18059
18060   /* The last file that we called dwarf2_start_subfile for.
18061      This is only used for TLLs.  */
18062   unsigned int last_file;
18063   /* The last file a line number was recorded for.  */
18064   struct subfile *last_subfile;
18065
18066   /* The function to call to record a line.  */
18067   record_line_ftype *record_line;
18068
18069   /* The last line number that was recorded, used to coalesce
18070      consecutive entries for the same line.  This can happen, for
18071      example, when discriminators are present.  PR 17276.  */
18072   unsigned int last_line;
18073   int line_has_non_zero_discriminator;
18074 } lnp_state_machine;
18075
18076 /* There's a lot of static state to pass to dwarf_record_line.
18077    This keeps it all together.  */
18078
18079 typedef struct
18080 {
18081   /* The gdbarch.  */
18082   struct gdbarch *gdbarch;
18083
18084   /* The line number header.  */
18085   struct line_header *line_header;
18086
18087   /* Non-zero if we're recording lines.
18088      Otherwise we're building partial symtabs and are just interested in
18089      finding include files mentioned by the line number program.  */
18090   int record_lines_p;
18091 } lnp_reader_state;
18092
18093 /* Ignore this record_line request.  */
18094
18095 static void
18096 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
18097 {
18098   return;
18099 }
18100
18101 /* Return non-zero if we should add LINE to the line number table.
18102    LINE is the line to add, LAST_LINE is the last line that was added,
18103    LAST_SUBFILE is the subfile for LAST_LINE.
18104    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
18105    had a non-zero discriminator.
18106
18107    We have to be careful in the presence of discriminators.
18108    E.g., for this line:
18109
18110      for (i = 0; i < 100000; i++);
18111
18112    clang can emit four line number entries for that one line,
18113    each with a different discriminator.
18114    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
18115
18116    However, we want gdb to coalesce all four entries into one.
18117    Otherwise the user could stepi into the middle of the line and
18118    gdb would get confused about whether the pc really was in the
18119    middle of the line.
18120
18121    Things are further complicated by the fact that two consecutive
18122    line number entries for the same line is a heuristic used by gcc
18123    to denote the end of the prologue.  So we can't just discard duplicate
18124    entries, we have to be selective about it.  The heuristic we use is
18125    that we only collapse consecutive entries for the same line if at least
18126    one of those entries has a non-zero discriminator.  PR 17276.
18127
18128    Note: Addresses in the line number state machine can never go backwards
18129    within one sequence, thus this coalescing is ok.  */
18130
18131 static int
18132 dwarf_record_line_p (unsigned int line, unsigned int last_line,
18133                      int line_has_non_zero_discriminator,
18134                      struct subfile *last_subfile)
18135 {
18136   if (current_subfile != last_subfile)
18137     return 1;
18138   if (line != last_line)
18139     return 1;
18140   /* Same line for the same file that we've seen already.
18141      As a last check, for pr 17276, only record the line if the line
18142      has never had a non-zero discriminator.  */
18143   if (!line_has_non_zero_discriminator)
18144     return 1;
18145   return 0;
18146 }
18147
18148 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
18149    in the line table of subfile SUBFILE.  */
18150
18151 static void
18152 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
18153                      unsigned int line, CORE_ADDR address,
18154                      record_line_ftype p_record_line)
18155 {
18156   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
18157
18158   if (dwarf_line_debug)
18159     {
18160       fprintf_unfiltered (gdb_stdlog,
18161                           "Recording line %u, file %s, address %s\n",
18162                           line, lbasename (subfile->name),
18163                           paddress (gdbarch, address));
18164     }
18165
18166   (*p_record_line) (subfile, line, addr);
18167 }
18168
18169 /* Subroutine of dwarf_decode_lines_1 to simplify it.
18170    Mark the end of a set of line number records.
18171    The arguments are the same as for dwarf_record_line_1.
18172    If SUBFILE is NULL the request is ignored.  */
18173
18174 static void
18175 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
18176                    CORE_ADDR address, record_line_ftype p_record_line)
18177 {
18178   if (subfile == NULL)
18179     return;
18180
18181   if (dwarf_line_debug)
18182     {
18183       fprintf_unfiltered (gdb_stdlog,
18184                           "Finishing current line, file %s, address %s\n",
18185                           lbasename (subfile->name),
18186                           paddress (gdbarch, address));
18187     }
18188
18189   dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
18190 }
18191
18192 /* Record the line in STATE.
18193    END_SEQUENCE is non-zero if we're processing the end of a sequence.  */
18194
18195 static void
18196 dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
18197                    int end_sequence)
18198 {
18199   const struct line_header *lh = reader->line_header;
18200   unsigned int file, line, discriminator;
18201   int is_stmt;
18202
18203   file = state->file;
18204   line = state->line;
18205   is_stmt = state->is_stmt;
18206   discriminator = state->discriminator;
18207
18208   if (dwarf_line_debug)
18209     {
18210       fprintf_unfiltered (gdb_stdlog,
18211                           "Processing actual line %u: file %u,"
18212                           " address %s, is_stmt %u, discrim %u\n",
18213                           line, file,
18214                           paddress (reader->gdbarch, state->address),
18215                           is_stmt, discriminator);
18216     }
18217
18218   if (file == 0 || file - 1 >= lh->num_file_names)
18219     dwarf2_debug_line_missing_file_complaint ();
18220   /* For now we ignore lines not starting on an instruction boundary.
18221      But not when processing end_sequence for compatibility with the
18222      previous version of the code.  */
18223   else if (state->op_index == 0 || end_sequence)
18224     {
18225       lh->file_names[file - 1].included_p = 1;
18226       if (reader->record_lines_p && is_stmt)
18227         {
18228           if (state->last_subfile != current_subfile || end_sequence)
18229             {
18230               dwarf_finish_line (reader->gdbarch, state->last_subfile,
18231                                  state->address, state->record_line);
18232             }
18233
18234           if (!end_sequence)
18235             {
18236               if (dwarf_record_line_p (line, state->last_line,
18237                                        state->line_has_non_zero_discriminator,
18238                                        state->last_subfile))
18239                 {
18240                   dwarf_record_line_1 (reader->gdbarch, current_subfile,
18241                                        line, state->address,
18242                                        state->record_line);
18243                 }
18244               state->last_subfile = current_subfile;
18245               state->last_line = line;
18246             }
18247         }
18248     }
18249 }
18250
18251 /* Initialize STATE for the start of a line number program.  */
18252
18253 static void
18254 init_lnp_state_machine (lnp_state_machine *state,
18255                         const lnp_reader_state *reader)
18256 {
18257   memset (state, 0, sizeof (*state));
18258
18259   /* Just starting, there is no "last file".  */
18260   state->last_file = 0;
18261   state->last_subfile = NULL;
18262
18263   state->record_line = record_line;
18264
18265   state->last_line = 0;
18266   state->line_has_non_zero_discriminator = 0;
18267
18268   /* Initialize these according to the DWARF spec.  */
18269   state->op_index = 0;
18270   state->file = 1;
18271   state->line = 1;
18272   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
18273      was a line entry for it so that the backend has a chance to adjust it
18274      and also record it in case it needs it.  This is currently used by MIPS
18275      code, cf. `mips_adjust_dwarf2_line'.  */
18276   state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
18277   state->is_stmt = reader->line_header->default_is_stmt;
18278   state->discriminator = 0;
18279 }
18280
18281 /* Check address and if invalid nop-out the rest of the lines in this
18282    sequence.  */
18283
18284 static void
18285 check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
18286                     const gdb_byte *line_ptr,
18287                     CORE_ADDR lowpc, CORE_ADDR address)
18288 {
18289   /* If address < lowpc then it's not a usable value, it's outside the
18290      pc range of the CU.  However, we restrict the test to only address
18291      values of zero to preserve GDB's previous behaviour which is to
18292      handle the specific case of a function being GC'd by the linker.  */
18293
18294   if (address == 0 && address < lowpc)
18295     {
18296       /* This line table is for a function which has been
18297          GCd by the linker.  Ignore it.  PR gdb/12528 */
18298
18299       struct objfile *objfile = cu->objfile;
18300       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
18301
18302       complaint (&symfile_complaints,
18303                  _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
18304                  line_offset, objfile_name (objfile));
18305       state->record_line = noop_record_line;
18306       /* Note: sm.record_line is left as noop_record_line
18307          until we see DW_LNE_end_sequence.  */
18308     }
18309 }
18310
18311 /* Subroutine of dwarf_decode_lines to simplify it.
18312    Process the line number information in LH.
18313    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
18314    program in order to set included_p for every referenced header.  */
18315
18316 static void
18317 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
18318                       const int decode_for_pst_p, CORE_ADDR lowpc)
18319 {
18320   const gdb_byte *line_ptr, *extended_end;
18321   const gdb_byte *line_end;
18322   unsigned int bytes_read, extended_len;
18323   unsigned char op_code, extended_op;
18324   CORE_ADDR baseaddr;
18325   struct objfile *objfile = cu->objfile;
18326   bfd *abfd = objfile->obfd;
18327   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18328   /* Non-zero if we're recording line info (as opposed to building partial
18329      symtabs).  */
18330   int record_lines_p = !decode_for_pst_p;
18331   /* A collection of things we need to pass to dwarf_record_line.  */
18332   lnp_reader_state reader_state;
18333
18334   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
18335
18336   line_ptr = lh->statement_program_start;
18337   line_end = lh->statement_program_end;
18338
18339   reader_state.gdbarch = gdbarch;
18340   reader_state.line_header = lh;
18341   reader_state.record_lines_p = record_lines_p;
18342
18343   /* Read the statement sequences until there's nothing left.  */
18344   while (line_ptr < line_end)
18345     {
18346       /* The DWARF line number program state machine.  */
18347       lnp_state_machine state_machine;
18348       int end_sequence = 0;
18349
18350       /* Reset the state machine at the start of each sequence.  */
18351       init_lnp_state_machine (&state_machine, &reader_state);
18352
18353       if (record_lines_p && lh->num_file_names >= state_machine.file)
18354         {
18355           /* Start a subfile for the current file of the state machine.  */
18356           /* lh->include_dirs and lh->file_names are 0-based, but the
18357              directory and file name numbers in the statement program
18358              are 1-based.  */
18359           struct file_entry *fe = &lh->file_names[state_machine.file - 1];
18360           const char *dir = NULL;
18361
18362           if (fe->dir_index && lh->include_dirs != NULL)
18363             dir = lh->include_dirs[fe->dir_index - 1];
18364
18365           dwarf2_start_subfile (fe->name, dir);
18366         }
18367
18368       /* Decode the table.  */
18369       while (line_ptr < line_end && !end_sequence)
18370         {
18371           op_code = read_1_byte (abfd, line_ptr);
18372           line_ptr += 1;
18373
18374           if (op_code >= lh->opcode_base)
18375             {
18376               /* Special opcode.  */
18377               unsigned char adj_opcode;
18378               CORE_ADDR addr_adj;
18379               int line_delta;
18380
18381               adj_opcode = op_code - lh->opcode_base;
18382               addr_adj = (((state_machine.op_index
18383                             + (adj_opcode / lh->line_range))
18384                            / lh->maximum_ops_per_instruction)
18385                           * lh->minimum_instruction_length);
18386               state_machine.address
18387                 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18388               state_machine.op_index = ((state_machine.op_index
18389                                          + (adj_opcode / lh->line_range))
18390                                         % lh->maximum_ops_per_instruction);
18391               line_delta = lh->line_base + (adj_opcode % lh->line_range);
18392               state_machine.line += line_delta;
18393               if (line_delta != 0)
18394                 state_machine.line_has_non_zero_discriminator
18395                   = state_machine.discriminator != 0;
18396
18397               dwarf_record_line (&reader_state, &state_machine, 0);
18398               state_machine.discriminator = 0;
18399             }
18400           else switch (op_code)
18401             {
18402             case DW_LNS_extended_op:
18403               extended_len = read_unsigned_leb128 (abfd, line_ptr,
18404                                                    &bytes_read);
18405               line_ptr += bytes_read;
18406               extended_end = line_ptr + extended_len;
18407               extended_op = read_1_byte (abfd, line_ptr);
18408               line_ptr += 1;
18409               switch (extended_op)
18410                 {
18411                 case DW_LNE_end_sequence:
18412                   state_machine.record_line = record_line;
18413                   end_sequence = 1;
18414                   break;
18415                 case DW_LNE_set_address:
18416                   {
18417                     CORE_ADDR address
18418                       = read_address (abfd, line_ptr, cu, &bytes_read);
18419
18420                     line_ptr += bytes_read;
18421                     check_line_address (cu, &state_machine, line_ptr,
18422                                         lowpc, address);
18423                     state_machine.op_index = 0;
18424                     address += baseaddr;
18425                     state_machine.address
18426                       = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
18427                   }
18428                   break;
18429                 case DW_LNE_define_file:
18430                   {
18431                     const char *cur_file;
18432                     unsigned int dir_index, mod_time, length;
18433
18434                     cur_file = read_direct_string (abfd, line_ptr,
18435                                                    &bytes_read);
18436                     line_ptr += bytes_read;
18437                     dir_index =
18438                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18439                     line_ptr += bytes_read;
18440                     mod_time =
18441                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18442                     line_ptr += bytes_read;
18443                     length =
18444                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18445                     line_ptr += bytes_read;
18446                     add_file_name (lh, cur_file, dir_index, mod_time, length);
18447                   }
18448                   break;
18449                 case DW_LNE_set_discriminator:
18450                   /* The discriminator is not interesting to the debugger;
18451                      just ignore it.  We still need to check its value though:
18452                      if there are consecutive entries for the same
18453                      (non-prologue) line we want to coalesce them.
18454                      PR 17276.  */
18455                   state_machine.discriminator
18456                     = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18457                   state_machine.line_has_non_zero_discriminator
18458                     |= state_machine.discriminator != 0;
18459                   line_ptr += bytes_read;
18460                   break;
18461                 default:
18462                   complaint (&symfile_complaints,
18463                              _("mangled .debug_line section"));
18464                   return;
18465                 }
18466               /* Make sure that we parsed the extended op correctly.  If e.g.
18467                  we expected a different address size than the producer used,
18468                  we may have read the wrong number of bytes.  */
18469               if (line_ptr != extended_end)
18470                 {
18471                   complaint (&symfile_complaints,
18472                              _("mangled .debug_line section"));
18473                   return;
18474                 }
18475               break;
18476             case DW_LNS_copy:
18477               dwarf_record_line (&reader_state, &state_machine, 0);
18478               state_machine.discriminator = 0;
18479               break;
18480             case DW_LNS_advance_pc:
18481               {
18482                 CORE_ADDR adjust
18483                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18484                 CORE_ADDR addr_adj;
18485
18486                 addr_adj = (((state_machine.op_index + adjust)
18487                              / lh->maximum_ops_per_instruction)
18488                             * lh->minimum_instruction_length);
18489                 state_machine.address
18490                   += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18491                 state_machine.op_index = ((state_machine.op_index + adjust)
18492                                           % lh->maximum_ops_per_instruction);
18493                 line_ptr += bytes_read;
18494               }
18495               break;
18496             case DW_LNS_advance_line:
18497               {
18498                 int line_delta
18499                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
18500
18501                 state_machine.line += line_delta;
18502                 if (line_delta != 0)
18503                   state_machine.line_has_non_zero_discriminator
18504                     = state_machine.discriminator != 0;
18505                 line_ptr += bytes_read;
18506               }
18507               break;
18508             case DW_LNS_set_file:
18509               {
18510                 /* The arrays lh->include_dirs and lh->file_names are
18511                    0-based, but the directory and file name numbers in
18512                    the statement program are 1-based.  */
18513                 struct file_entry *fe;
18514                 const char *dir = NULL;
18515
18516                 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
18517                                                            &bytes_read);
18518                 line_ptr += bytes_read;
18519                 if (state_machine.file == 0
18520                     || state_machine.file - 1 >= lh->num_file_names)
18521                   dwarf2_debug_line_missing_file_complaint ();
18522                 else
18523                   {
18524                     fe = &lh->file_names[state_machine.file - 1];
18525                     if (fe->dir_index && lh->include_dirs != NULL)
18526                       dir = lh->include_dirs[fe->dir_index - 1];
18527                     if (record_lines_p)
18528                       {
18529                         state_machine.last_subfile = current_subfile;
18530                         state_machine.line_has_non_zero_discriminator
18531                           = state_machine.discriminator != 0;
18532                         dwarf2_start_subfile (fe->name, dir);
18533                       }
18534                   }
18535               }
18536               break;
18537             case DW_LNS_set_column:
18538               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18539               line_ptr += bytes_read;
18540               break;
18541             case DW_LNS_negate_stmt:
18542               state_machine.is_stmt = (!state_machine.is_stmt);
18543               break;
18544             case DW_LNS_set_basic_block:
18545               break;
18546             /* Add to the address register of the state machine the
18547                address increment value corresponding to special opcode
18548                255.  I.e., this value is scaled by the minimum
18549                instruction length since special opcode 255 would have
18550                scaled the increment.  */
18551             case DW_LNS_const_add_pc:
18552               {
18553                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
18554                 CORE_ADDR addr_adj;
18555
18556                 addr_adj = (((state_machine.op_index + adjust)
18557                              / lh->maximum_ops_per_instruction)
18558                             * lh->minimum_instruction_length);
18559                 state_machine.address
18560                   += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18561                 state_machine.op_index = ((state_machine.op_index + adjust)
18562                                           % lh->maximum_ops_per_instruction);
18563               }
18564               break;
18565             case DW_LNS_fixed_advance_pc:
18566               {
18567                 CORE_ADDR addr_adj;
18568
18569                 addr_adj = read_2_bytes (abfd, line_ptr);
18570                 state_machine.address
18571                   += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18572                 state_machine.op_index = 0;
18573                 line_ptr += 2;
18574               }
18575               break;
18576             default:
18577               {
18578                 /* Unknown standard opcode, ignore it.  */
18579                 int i;
18580
18581                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
18582                   {
18583                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18584                     line_ptr += bytes_read;
18585                   }
18586               }
18587             }
18588         }
18589
18590       if (!end_sequence)
18591         dwarf2_debug_line_missing_end_sequence_complaint ();
18592
18593       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18594          in which case we still finish recording the last line).  */
18595       dwarf_record_line (&reader_state, &state_machine, 1);
18596     }
18597 }
18598
18599 /* Decode the Line Number Program (LNP) for the given line_header
18600    structure and CU.  The actual information extracted and the type
18601    of structures created from the LNP depends on the value of PST.
18602
18603    1. If PST is NULL, then this procedure uses the data from the program
18604       to create all necessary symbol tables, and their linetables.
18605
18606    2. If PST is not NULL, this procedure reads the program to determine
18607       the list of files included by the unit represented by PST, and
18608       builds all the associated partial symbol tables.
18609
18610    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18611    It is used for relative paths in the line table.
18612    NOTE: When processing partial symtabs (pst != NULL),
18613    comp_dir == pst->dirname.
18614
18615    NOTE: It is important that psymtabs have the same file name (via strcmp)
18616    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
18617    symtab we don't use it in the name of the psymtabs we create.
18618    E.g. expand_line_sal requires this when finding psymtabs to expand.
18619    A good testcase for this is mb-inline.exp.
18620
18621    LOWPC is the lowest address in CU (or 0 if not known).
18622
18623    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18624    for its PC<->lines mapping information.  Otherwise only the filename
18625    table is read in.  */
18626
18627 static void
18628 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
18629                     struct dwarf2_cu *cu, struct partial_symtab *pst,
18630                     CORE_ADDR lowpc, int decode_mapping)
18631 {
18632   struct objfile *objfile = cu->objfile;
18633   const int decode_for_pst_p = (pst != NULL);
18634
18635   if (decode_mapping)
18636     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
18637
18638   if (decode_for_pst_p)
18639     {
18640       int file_index;
18641
18642       /* Now that we're done scanning the Line Header Program, we can
18643          create the psymtab of each included file.  */
18644       for (file_index = 0; file_index < lh->num_file_names; file_index++)
18645         if (lh->file_names[file_index].included_p == 1)
18646           {
18647             const char *include_name =
18648               psymtab_include_file_name (lh, file_index, pst, comp_dir);
18649             if (include_name != NULL)
18650               dwarf2_create_include_psymtab (include_name, pst, objfile);
18651           }
18652     }
18653   else
18654     {
18655       /* Make sure a symtab is created for every file, even files
18656          which contain only variables (i.e. no code with associated
18657          line numbers).  */
18658       struct compunit_symtab *cust = buildsym_compunit_symtab ();
18659       int i;
18660
18661       for (i = 0; i < lh->num_file_names; i++)
18662         {
18663           const char *dir = NULL;
18664           struct file_entry *fe;
18665
18666           fe = &lh->file_names[i];
18667           if (fe->dir_index && lh->include_dirs != NULL)
18668             dir = lh->include_dirs[fe->dir_index - 1];
18669           dwarf2_start_subfile (fe->name, dir);
18670
18671           if (current_subfile->symtab == NULL)
18672             {
18673               current_subfile->symtab
18674                 = allocate_symtab (cust, current_subfile->name);
18675             }
18676           fe->symtab = current_subfile->symtab;
18677         }
18678     }
18679 }
18680
18681 /* Start a subfile for DWARF.  FILENAME is the name of the file and
18682    DIRNAME the name of the source directory which contains FILENAME
18683    or NULL if not known.
18684    This routine tries to keep line numbers from identical absolute and
18685    relative file names in a common subfile.
18686
18687    Using the `list' example from the GDB testsuite, which resides in
18688    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18689    of /srcdir/list0.c yields the following debugging information for list0.c:
18690
18691    DW_AT_name:          /srcdir/list0.c
18692    DW_AT_comp_dir:      /compdir
18693    files.files[0].name: list0.h
18694    files.files[0].dir:  /srcdir
18695    files.files[1].name: list0.c
18696    files.files[1].dir:  /srcdir
18697
18698    The line number information for list0.c has to end up in a single
18699    subfile, so that `break /srcdir/list0.c:1' works as expected.
18700    start_subfile will ensure that this happens provided that we pass the
18701    concatenation of files.files[1].dir and files.files[1].name as the
18702    subfile's name.  */
18703
18704 static void
18705 dwarf2_start_subfile (const char *filename, const char *dirname)
18706 {
18707   char *copy = NULL;
18708
18709   /* In order not to lose the line information directory,
18710      we concatenate it to the filename when it makes sense.
18711      Note that the Dwarf3 standard says (speaking of filenames in line
18712      information): ``The directory index is ignored for file names
18713      that represent full path names''.  Thus ignoring dirname in the
18714      `else' branch below isn't an issue.  */
18715
18716   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
18717     {
18718       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18719       filename = copy;
18720     }
18721
18722   start_subfile (filename);
18723
18724   if (copy != NULL)
18725     xfree (copy);
18726 }
18727
18728 /* Start a symtab for DWARF.
18729    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
18730
18731 static struct compunit_symtab *
18732 dwarf2_start_symtab (struct dwarf2_cu *cu,
18733                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
18734 {
18735   struct compunit_symtab *cust
18736     = start_symtab (cu->objfile, name, comp_dir, low_pc);
18737
18738   record_debugformat ("DWARF 2");
18739   record_producer (cu->producer);
18740
18741   /* We assume that we're processing GCC output.  */
18742   processing_gcc_compilation = 2;
18743
18744   cu->processing_has_namespace_info = 0;
18745
18746   return cust;
18747 }
18748
18749 static void
18750 var_decode_location (struct attribute *attr, struct symbol *sym,
18751                      struct dwarf2_cu *cu)
18752 {
18753   struct objfile *objfile = cu->objfile;
18754   struct comp_unit_head *cu_header = &cu->header;
18755
18756   /* NOTE drow/2003-01-30: There used to be a comment and some special
18757      code here to turn a symbol with DW_AT_external and a
18758      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
18759      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18760      with some versions of binutils) where shared libraries could have
18761      relocations against symbols in their debug information - the
18762      minimal symbol would have the right address, but the debug info
18763      would not.  It's no longer necessary, because we will explicitly
18764      apply relocations when we read in the debug information now.  */
18765
18766   /* A DW_AT_location attribute with no contents indicates that a
18767      variable has been optimized away.  */
18768   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18769     {
18770       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
18771       return;
18772     }
18773
18774   /* Handle one degenerate form of location expression specially, to
18775      preserve GDB's previous behavior when section offsets are
18776      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18777      then mark this symbol as LOC_STATIC.  */
18778
18779   if (attr_form_is_block (attr)
18780       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18781            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18782           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18783               && (DW_BLOCK (attr)->size
18784                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
18785     {
18786       unsigned int dummy;
18787
18788       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18789         SYMBOL_VALUE_ADDRESS (sym) =
18790           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18791       else
18792         SYMBOL_VALUE_ADDRESS (sym) =
18793           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
18794       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
18795       fixup_symbol_section (sym, objfile);
18796       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18797                                               SYMBOL_SECTION (sym));
18798       return;
18799     }
18800
18801   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18802      expression evaluator, and use LOC_COMPUTED only when necessary
18803      (i.e. when the value of a register or memory location is
18804      referenced, or a thread-local block, etc.).  Then again, it might
18805      not be worthwhile.  I'm assuming that it isn't unless performance
18806      or memory numbers show me otherwise.  */
18807
18808   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
18809
18810   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
18811     cu->has_loclist = 1;
18812 }
18813
18814 /* Given a pointer to a DWARF information entry, figure out if we need
18815    to make a symbol table entry for it, and if so, create a new entry
18816    and return a pointer to it.
18817    If TYPE is NULL, determine symbol type from the die, otherwise
18818    used the passed type.
18819    If SPACE is not NULL, use it to hold the new symbol.  If it is
18820    NULL, allocate a new symbol on the objfile's obstack.  */
18821
18822 static struct symbol *
18823 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18824                  struct symbol *space)
18825 {
18826   struct objfile *objfile = cu->objfile;
18827   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18828   struct symbol *sym = NULL;
18829   const char *name;
18830   struct attribute *attr = NULL;
18831   struct attribute *attr2 = NULL;
18832   CORE_ADDR baseaddr;
18833   struct pending **list_to_add = NULL;
18834
18835   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
18836
18837   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
18838
18839   name = dwarf2_name (die, cu);
18840   if (name)
18841     {
18842       const char *linkagename;
18843       int suppress_add = 0;
18844
18845       if (space)
18846         sym = space;
18847       else
18848         sym = allocate_symbol (objfile);
18849       OBJSTAT (objfile, n_syms++);
18850
18851       /* Cache this symbol's name and the name's demangled form (if any).  */
18852       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
18853       linkagename = dwarf2_physname (name, die, cu);
18854       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
18855
18856       /* Fortran does not have mangling standard and the mangling does differ
18857          between gfortran, iFort etc.  */
18858       if (cu->language == language_fortran
18859           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
18860         symbol_set_demangled_name (&(sym->ginfo),
18861                                    dwarf2_full_name (name, die, cu),
18862                                    NULL);
18863
18864       /* Default assumptions.
18865          Use the passed type or decode it from the die.  */
18866       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18867       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
18868       if (type != NULL)
18869         SYMBOL_TYPE (sym) = type;
18870       else
18871         SYMBOL_TYPE (sym) = die_type (die, cu);
18872       attr = dwarf2_attr (die,
18873                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18874                           cu);
18875       if (attr)
18876         {
18877           SYMBOL_LINE (sym) = DW_UNSND (attr);
18878         }
18879
18880       attr = dwarf2_attr (die,
18881                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18882                           cu);
18883       if (attr)
18884         {
18885           int file_index = DW_UNSND (attr);
18886
18887           if (cu->line_header == NULL
18888               || file_index > cu->line_header->num_file_names)
18889             complaint (&symfile_complaints,
18890                        _("file index out of range"));
18891           else if (file_index > 0)
18892             {
18893               struct file_entry *fe;
18894
18895               fe = &cu->line_header->file_names[file_index - 1];
18896               symbol_set_symtab (sym, fe->symtab);
18897             }
18898         }
18899
18900       switch (die->tag)
18901         {
18902         case DW_TAG_label:
18903           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
18904           if (attr)
18905             {
18906               CORE_ADDR addr;
18907
18908               addr = attr_value_as_address (attr);
18909               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18910               SYMBOL_VALUE_ADDRESS (sym) = addr;
18911             }
18912           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18913           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
18914           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
18915           add_symbol_to_list (sym, cu->list_in_scope);
18916           break;
18917         case DW_TAG_subprogram:
18918           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18919              finish_block.  */
18920           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
18921           attr2 = dwarf2_attr (die, DW_AT_external, cu);
18922           if ((attr2 && (DW_UNSND (attr2) != 0))
18923               || cu->language == language_ada)
18924             {
18925               /* Subprograms marked external are stored as a global symbol.
18926                  Ada subprograms, whether marked external or not, are always
18927                  stored as a global symbol, because we want to be able to
18928                  access them globally.  For instance, we want to be able
18929                  to break on a nested subprogram without having to
18930                  specify the context.  */
18931               list_to_add = &global_symbols;
18932             }
18933           else
18934             {
18935               list_to_add = cu->list_in_scope;
18936             }
18937           break;
18938         case DW_TAG_inlined_subroutine:
18939           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18940              finish_block.  */
18941           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
18942           SYMBOL_INLINED (sym) = 1;
18943           list_to_add = cu->list_in_scope;
18944           break;
18945         case DW_TAG_template_value_param:
18946           suppress_add = 1;
18947           /* Fall through.  */
18948         case DW_TAG_constant:
18949         case DW_TAG_variable:
18950         case DW_TAG_member:
18951           /* Compilation with minimal debug info may result in
18952              variables with missing type entries.  Change the
18953              misleading `void' type to something sensible.  */
18954           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
18955             SYMBOL_TYPE (sym)
18956               = objfile_type (objfile)->nodebug_data_symbol;
18957
18958           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18959           /* In the case of DW_TAG_member, we should only be called for
18960              static const members.  */
18961           if (die->tag == DW_TAG_member)
18962             {
18963               /* dwarf2_add_field uses die_is_declaration,
18964                  so we do the same.  */
18965               gdb_assert (die_is_declaration (die, cu));
18966               gdb_assert (attr);
18967             }
18968           if (attr)
18969             {
18970               dwarf2_const_value (attr, sym, cu);
18971               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18972               if (!suppress_add)
18973                 {
18974                   if (attr2 && (DW_UNSND (attr2) != 0))
18975                     list_to_add = &global_symbols;
18976                   else
18977                     list_to_add = cu->list_in_scope;
18978                 }
18979               break;
18980             }
18981           attr = dwarf2_attr (die, DW_AT_location, cu);
18982           if (attr)
18983             {
18984               var_decode_location (attr, sym, cu);
18985               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18986
18987               /* Fortran explicitly imports any global symbols to the local
18988                  scope by DW_TAG_common_block.  */
18989               if (cu->language == language_fortran && die->parent
18990                   && die->parent->tag == DW_TAG_common_block)
18991                 attr2 = NULL;
18992
18993               if (SYMBOL_CLASS (sym) == LOC_STATIC
18994                   && SYMBOL_VALUE_ADDRESS (sym) == 0
18995                   && !dwarf2_per_objfile->has_section_at_zero)
18996                 {
18997                   /* When a static variable is eliminated by the linker,
18998                      the corresponding debug information is not stripped
18999                      out, but the variable address is set to null;
19000                      do not add such variables into symbol table.  */
19001                 }
19002               else if (attr2 && (DW_UNSND (attr2) != 0))
19003                 {
19004                   /* Workaround gfortran PR debug/40040 - it uses
19005                      DW_AT_location for variables in -fPIC libraries which may
19006                      get overriden by other libraries/executable and get
19007                      a different address.  Resolve it by the minimal symbol
19008                      which may come from inferior's executable using copy
19009                      relocation.  Make this workaround only for gfortran as for
19010                      other compilers GDB cannot guess the minimal symbol
19011                      Fortran mangling kind.  */
19012                   if (cu->language == language_fortran && die->parent
19013                       && die->parent->tag == DW_TAG_module
19014                       && cu->producer
19015                       && startswith (cu->producer, "GNU Fortran"))
19016                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
19017
19018                   /* A variable with DW_AT_external is never static,
19019                      but it may be block-scoped.  */
19020                   list_to_add = (cu->list_in_scope == &file_symbols
19021                                  ? &global_symbols : cu->list_in_scope);
19022                 }
19023               else
19024                 list_to_add = cu->list_in_scope;
19025             }
19026           else
19027             {
19028               /* We do not know the address of this symbol.
19029                  If it is an external symbol and we have type information
19030                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
19031                  The address of the variable will then be determined from
19032                  the minimal symbol table whenever the variable is
19033                  referenced.  */
19034               attr2 = dwarf2_attr (die, DW_AT_external, cu);
19035
19036               /* Fortran explicitly imports any global symbols to the local
19037                  scope by DW_TAG_common_block.  */
19038               if (cu->language == language_fortran && die->parent
19039                   && die->parent->tag == DW_TAG_common_block)
19040                 {
19041                   /* SYMBOL_CLASS doesn't matter here because
19042                      read_common_block is going to reset it.  */
19043                   if (!suppress_add)
19044                     list_to_add = cu->list_in_scope;
19045                 }
19046               else if (attr2 && (DW_UNSND (attr2) != 0)
19047                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
19048                 {
19049                   /* A variable with DW_AT_external is never static, but it
19050                      may be block-scoped.  */
19051                   list_to_add = (cu->list_in_scope == &file_symbols
19052                                  ? &global_symbols : cu->list_in_scope);
19053
19054                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
19055                 }
19056               else if (!die_is_declaration (die, cu))
19057                 {
19058                   /* Use the default LOC_OPTIMIZED_OUT class.  */
19059                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
19060                   if (!suppress_add)
19061                     list_to_add = cu->list_in_scope;
19062                 }
19063             }
19064           break;
19065         case DW_TAG_formal_parameter:
19066           /* If we are inside a function, mark this as an argument.  If
19067              not, we might be looking at an argument to an inlined function
19068              when we do not have enough information to show inlined frames;
19069              pretend it's a local variable in that case so that the user can
19070              still see it.  */
19071           if (context_stack_depth > 0
19072               && context_stack[context_stack_depth - 1].name != NULL)
19073             SYMBOL_IS_ARGUMENT (sym) = 1;
19074           attr = dwarf2_attr (die, DW_AT_location, cu);
19075           if (attr)
19076             {
19077               var_decode_location (attr, sym, cu);
19078             }
19079           attr = dwarf2_attr (die, DW_AT_const_value, cu);
19080           if (attr)
19081             {
19082               dwarf2_const_value (attr, sym, cu);
19083             }
19084
19085           list_to_add = cu->list_in_scope;
19086           break;
19087         case DW_TAG_unspecified_parameters:
19088           /* From varargs functions; gdb doesn't seem to have any
19089              interest in this information, so just ignore it for now.
19090              (FIXME?) */
19091           break;
19092         case DW_TAG_template_type_param:
19093           suppress_add = 1;
19094           /* Fall through.  */
19095         case DW_TAG_class_type:
19096         case DW_TAG_interface_type:
19097         case DW_TAG_structure_type:
19098         case DW_TAG_union_type:
19099         case DW_TAG_set_type:
19100         case DW_TAG_enumeration_type:
19101           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
19102           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
19103
19104           {
19105             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
19106                really ever be static objects: otherwise, if you try
19107                to, say, break of a class's method and you're in a file
19108                which doesn't mention that class, it won't work unless
19109                the check for all static symbols in lookup_symbol_aux
19110                saves you.  See the OtherFileClass tests in
19111                gdb.c++/namespace.exp.  */
19112
19113             if (!suppress_add)
19114               {
19115                 list_to_add = (cu->list_in_scope == &file_symbols
19116                                && cu->language == language_cplus
19117                                ? &global_symbols : cu->list_in_scope);
19118
19119                 /* The semantics of C++ state that "struct foo {
19120                    ... }" also defines a typedef for "foo".  */
19121                 if (cu->language == language_cplus
19122                     || cu->language == language_ada
19123                     || cu->language == language_d
19124                     || cu->language == language_rust)
19125                   {
19126                     /* The symbol's name is already allocated along
19127                        with this objfile, so we don't need to
19128                        duplicate it for the type.  */
19129                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
19130                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
19131                   }
19132               }
19133           }
19134           break;
19135         case DW_TAG_typedef:
19136           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
19137           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
19138           list_to_add = cu->list_in_scope;
19139           break;
19140         case DW_TAG_base_type:
19141         case DW_TAG_subrange_type:
19142           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
19143           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
19144           list_to_add = cu->list_in_scope;
19145           break;
19146         case DW_TAG_enumerator:
19147           attr = dwarf2_attr (die, DW_AT_const_value, cu);
19148           if (attr)
19149             {
19150               dwarf2_const_value (attr, sym, cu);
19151             }
19152           {
19153             /* NOTE: carlton/2003-11-10: See comment above in the
19154                DW_TAG_class_type, etc. block.  */
19155
19156             list_to_add = (cu->list_in_scope == &file_symbols
19157                            && cu->language == language_cplus
19158                            ? &global_symbols : cu->list_in_scope);
19159           }
19160           break;
19161         case DW_TAG_imported_declaration:
19162         case DW_TAG_namespace:
19163           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
19164           list_to_add = &global_symbols;
19165           break;
19166         case DW_TAG_module:
19167           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
19168           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
19169           list_to_add = &global_symbols;
19170           break;
19171         case DW_TAG_common_block:
19172           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
19173           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
19174           add_symbol_to_list (sym, cu->list_in_scope);
19175           break;
19176         default:
19177           /* Not a tag we recognize.  Hopefully we aren't processing
19178              trash data, but since we must specifically ignore things
19179              we don't recognize, there is nothing else we should do at
19180              this point.  */
19181           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
19182                      dwarf_tag_name (die->tag));
19183           break;
19184         }
19185
19186       if (suppress_add)
19187         {
19188           sym->hash_next = objfile->template_symbols;
19189           objfile->template_symbols = sym;
19190           list_to_add = NULL;
19191         }
19192
19193       if (list_to_add != NULL)
19194         add_symbol_to_list (sym, list_to_add);
19195
19196       /* For the benefit of old versions of GCC, check for anonymous
19197          namespaces based on the demangled name.  */
19198       if (!cu->processing_has_namespace_info
19199           && cu->language == language_cplus)
19200         cp_scan_for_anonymous_namespaces (sym, objfile);
19201     }
19202   return (sym);
19203 }
19204
19205 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
19206
19207 static struct symbol *
19208 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
19209 {
19210   return new_symbol_full (die, type, cu, NULL);
19211 }
19212
19213 /* Given an attr with a DW_FORM_dataN value in host byte order,
19214    zero-extend it as appropriate for the symbol's type.  The DWARF
19215    standard (v4) is not entirely clear about the meaning of using
19216    DW_FORM_dataN for a constant with a signed type, where the type is
19217    wider than the data.  The conclusion of a discussion on the DWARF
19218    list was that this is unspecified.  We choose to always zero-extend
19219    because that is the interpretation long in use by GCC.  */
19220
19221 static gdb_byte *
19222 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
19223                          struct dwarf2_cu *cu, LONGEST *value, int bits)
19224 {
19225   struct objfile *objfile = cu->objfile;
19226   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
19227                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
19228   LONGEST l = DW_UNSND (attr);
19229
19230   if (bits < sizeof (*value) * 8)
19231     {
19232       l &= ((LONGEST) 1 << bits) - 1;
19233       *value = l;
19234     }
19235   else if (bits == sizeof (*value) * 8)
19236     *value = l;
19237   else
19238     {
19239       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
19240       store_unsigned_integer (bytes, bits / 8, byte_order, l);
19241       return bytes;
19242     }
19243
19244   return NULL;
19245 }
19246
19247 /* Read a constant value from an attribute.  Either set *VALUE, or if
19248    the value does not fit in *VALUE, set *BYTES - either already
19249    allocated on the objfile obstack, or newly allocated on OBSTACK,
19250    or, set *BATON, if we translated the constant to a location
19251    expression.  */
19252
19253 static void
19254 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
19255                          const char *name, struct obstack *obstack,
19256                          struct dwarf2_cu *cu,
19257                          LONGEST *value, const gdb_byte **bytes,
19258                          struct dwarf2_locexpr_baton **baton)
19259 {
19260   struct objfile *objfile = cu->objfile;
19261   struct comp_unit_head *cu_header = &cu->header;
19262   struct dwarf_block *blk;
19263   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
19264                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19265
19266   *value = 0;
19267   *bytes = NULL;
19268   *baton = NULL;
19269
19270   switch (attr->form)
19271     {
19272     case DW_FORM_addr:
19273     case DW_FORM_GNU_addr_index:
19274       {
19275         gdb_byte *data;
19276
19277         if (TYPE_LENGTH (type) != cu_header->addr_size)
19278           dwarf2_const_value_length_mismatch_complaint (name,
19279                                                         cu_header->addr_size,
19280                                                         TYPE_LENGTH (type));
19281         /* Symbols of this form are reasonably rare, so we just
19282            piggyback on the existing location code rather than writing
19283            a new implementation of symbol_computed_ops.  */
19284         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
19285         (*baton)->per_cu = cu->per_cu;
19286         gdb_assert ((*baton)->per_cu);
19287
19288         (*baton)->size = 2 + cu_header->addr_size;
19289         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
19290         (*baton)->data = data;
19291
19292         data[0] = DW_OP_addr;
19293         store_unsigned_integer (&data[1], cu_header->addr_size,
19294                                 byte_order, DW_ADDR (attr));
19295         data[cu_header->addr_size + 1] = DW_OP_stack_value;
19296       }
19297       break;
19298     case DW_FORM_string:
19299     case DW_FORM_strp:
19300     case DW_FORM_GNU_str_index:
19301     case DW_FORM_GNU_strp_alt:
19302       /* DW_STRING is already allocated on the objfile obstack, point
19303          directly to it.  */
19304       *bytes = (const gdb_byte *) DW_STRING (attr);
19305       break;
19306     case DW_FORM_block1:
19307     case DW_FORM_block2:
19308     case DW_FORM_block4:
19309     case DW_FORM_block:
19310     case DW_FORM_exprloc:
19311     case DW_FORM_data16:
19312       blk = DW_BLOCK (attr);
19313       if (TYPE_LENGTH (type) != blk->size)
19314         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
19315                                                       TYPE_LENGTH (type));
19316       *bytes = blk->data;
19317       break;
19318
19319       /* The DW_AT_const_value attributes are supposed to carry the
19320          symbol's value "represented as it would be on the target
19321          architecture."  By the time we get here, it's already been
19322          converted to host endianness, so we just need to sign- or
19323          zero-extend it as appropriate.  */
19324     case DW_FORM_data1:
19325       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
19326       break;
19327     case DW_FORM_data2:
19328       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
19329       break;
19330     case DW_FORM_data4:
19331       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
19332       break;
19333     case DW_FORM_data8:
19334       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
19335       break;
19336
19337     case DW_FORM_sdata:
19338       *value = DW_SND (attr);
19339       break;
19340
19341     case DW_FORM_udata:
19342       *value = DW_UNSND (attr);
19343       break;
19344
19345     default:
19346       complaint (&symfile_complaints,
19347                  _("unsupported const value attribute form: '%s'"),
19348                  dwarf_form_name (attr->form));
19349       *value = 0;
19350       break;
19351     }
19352 }
19353
19354
19355 /* Copy constant value from an attribute to a symbol.  */
19356
19357 static void
19358 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
19359                     struct dwarf2_cu *cu)
19360 {
19361   struct objfile *objfile = cu->objfile;
19362   LONGEST value;
19363   const gdb_byte *bytes;
19364   struct dwarf2_locexpr_baton *baton;
19365
19366   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
19367                            SYMBOL_PRINT_NAME (sym),
19368                            &objfile->objfile_obstack, cu,
19369                            &value, &bytes, &baton);
19370
19371   if (baton != NULL)
19372     {
19373       SYMBOL_LOCATION_BATON (sym) = baton;
19374       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
19375     }
19376   else if (bytes != NULL)
19377      {
19378       SYMBOL_VALUE_BYTES (sym) = bytes;
19379       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
19380     }
19381   else
19382     {
19383       SYMBOL_VALUE (sym) = value;
19384       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
19385     }
19386 }
19387
19388 /* Return the type of the die in question using its DW_AT_type attribute.  */
19389
19390 static struct type *
19391 die_type (struct die_info *die, struct dwarf2_cu *cu)
19392 {
19393   struct attribute *type_attr;
19394
19395   type_attr = dwarf2_attr (die, DW_AT_type, cu);
19396   if (!type_attr)
19397     {
19398       /* A missing DW_AT_type represents a void type.  */
19399       return objfile_type (cu->objfile)->builtin_void;
19400     }
19401
19402   return lookup_die_type (die, type_attr, cu);
19403 }
19404
19405 /* True iff CU's producer generates GNAT Ada auxiliary information
19406    that allows to find parallel types through that information instead
19407    of having to do expensive parallel lookups by type name.  */
19408
19409 static int
19410 need_gnat_info (struct dwarf2_cu *cu)
19411 {
19412   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
19413      of GNAT produces this auxiliary information, without any indication
19414      that it is produced.  Part of enhancing the FSF version of GNAT
19415      to produce that information will be to put in place an indicator
19416      that we can use in order to determine whether the descriptive type
19417      info is available or not.  One suggestion that has been made is
19418      to use a new attribute, attached to the CU die.  For now, assume
19419      that the descriptive type info is not available.  */
19420   return 0;
19421 }
19422
19423 /* Return the auxiliary type of the die in question using its
19424    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
19425    attribute is not present.  */
19426
19427 static struct type *
19428 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
19429 {
19430   struct attribute *type_attr;
19431
19432   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
19433   if (!type_attr)
19434     return NULL;
19435
19436   return lookup_die_type (die, type_attr, cu);
19437 }
19438
19439 /* If DIE has a descriptive_type attribute, then set the TYPE's
19440    descriptive type accordingly.  */
19441
19442 static void
19443 set_descriptive_type (struct type *type, struct die_info *die,
19444                       struct dwarf2_cu *cu)
19445 {
19446   struct type *descriptive_type = die_descriptive_type (die, cu);
19447
19448   if (descriptive_type)
19449     {
19450       ALLOCATE_GNAT_AUX_TYPE (type);
19451       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
19452     }
19453 }
19454
19455 /* Return the containing type of the die in question using its
19456    DW_AT_containing_type attribute.  */
19457
19458 static struct type *
19459 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
19460 {
19461   struct attribute *type_attr;
19462
19463   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
19464   if (!type_attr)
19465     error (_("Dwarf Error: Problem turning containing type into gdb type "
19466              "[in module %s]"), objfile_name (cu->objfile));
19467
19468   return lookup_die_type (die, type_attr, cu);
19469 }
19470
19471 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
19472
19473 static struct type *
19474 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
19475 {
19476   struct objfile *objfile = dwarf2_per_objfile->objfile;
19477   char *message, *saved;
19478
19479   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
19480                         objfile_name (objfile),
19481                         cu->header.offset.sect_off,
19482                         die->offset.sect_off);
19483   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
19484                                   message, strlen (message));
19485   xfree (message);
19486
19487   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
19488 }
19489
19490 /* Look up the type of DIE in CU using its type attribute ATTR.
19491    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
19492    DW_AT_containing_type.
19493    If there is no type substitute an error marker.  */
19494
19495 static struct type *
19496 lookup_die_type (struct die_info *die, const struct attribute *attr,
19497                  struct dwarf2_cu *cu)
19498 {
19499   struct objfile *objfile = cu->objfile;
19500   struct type *this_type;
19501
19502   gdb_assert (attr->name == DW_AT_type
19503               || attr->name == DW_AT_GNAT_descriptive_type
19504               || attr->name == DW_AT_containing_type);
19505
19506   /* First see if we have it cached.  */
19507
19508   if (attr->form == DW_FORM_GNU_ref_alt)
19509     {
19510       struct dwarf2_per_cu_data *per_cu;
19511       sect_offset offset = dwarf2_get_ref_die_offset (attr);
19512
19513       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
19514       this_type = get_die_type_at_offset (offset, per_cu);
19515     }
19516   else if (attr_form_is_ref (attr))
19517     {
19518       sect_offset offset = dwarf2_get_ref_die_offset (attr);
19519
19520       this_type = get_die_type_at_offset (offset, cu->per_cu);
19521     }
19522   else if (attr->form == DW_FORM_ref_sig8)
19523     {
19524       ULONGEST signature = DW_SIGNATURE (attr);
19525
19526       return get_signatured_type (die, signature, cu);
19527     }
19528   else
19529     {
19530       complaint (&symfile_complaints,
19531                  _("Dwarf Error: Bad type attribute %s in DIE"
19532                    " at 0x%x [in module %s]"),
19533                  dwarf_attr_name (attr->name), die->offset.sect_off,
19534                  objfile_name (objfile));
19535       return build_error_marker_type (cu, die);
19536     }
19537
19538   /* If not cached we need to read it in.  */
19539
19540   if (this_type == NULL)
19541     {
19542       struct die_info *type_die = NULL;
19543       struct dwarf2_cu *type_cu = cu;
19544
19545       if (attr_form_is_ref (attr))
19546         type_die = follow_die_ref (die, attr, &type_cu);
19547       if (type_die == NULL)
19548         return build_error_marker_type (cu, die);
19549       /* If we find the type now, it's probably because the type came
19550          from an inter-CU reference and the type's CU got expanded before
19551          ours.  */
19552       this_type = read_type_die (type_die, type_cu);
19553     }
19554
19555   /* If we still don't have a type use an error marker.  */
19556
19557   if (this_type == NULL)
19558     return build_error_marker_type (cu, die);
19559
19560   return this_type;
19561 }
19562
19563 /* Return the type in DIE, CU.
19564    Returns NULL for invalid types.
19565
19566    This first does a lookup in die_type_hash,
19567    and only reads the die in if necessary.
19568
19569    NOTE: This can be called when reading in partial or full symbols.  */
19570
19571 static struct type *
19572 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
19573 {
19574   struct type *this_type;
19575
19576   this_type = get_die_type (die, cu);
19577   if (this_type)
19578     return this_type;
19579
19580   return read_type_die_1 (die, cu);
19581 }
19582
19583 /* Read the type in DIE, CU.
19584    Returns NULL for invalid types.  */
19585
19586 static struct type *
19587 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19588 {
19589   struct type *this_type = NULL;
19590
19591   switch (die->tag)
19592     {
19593     case DW_TAG_class_type:
19594     case DW_TAG_interface_type:
19595     case DW_TAG_structure_type:
19596     case DW_TAG_union_type:
19597       this_type = read_structure_type (die, cu);
19598       break;
19599     case DW_TAG_enumeration_type:
19600       this_type = read_enumeration_type (die, cu);
19601       break;
19602     case DW_TAG_subprogram:
19603     case DW_TAG_subroutine_type:
19604     case DW_TAG_inlined_subroutine:
19605       this_type = read_subroutine_type (die, cu);
19606       break;
19607     case DW_TAG_array_type:
19608       this_type = read_array_type (die, cu);
19609       break;
19610     case DW_TAG_set_type:
19611       this_type = read_set_type (die, cu);
19612       break;
19613     case DW_TAG_pointer_type:
19614       this_type = read_tag_pointer_type (die, cu);
19615       break;
19616     case DW_TAG_ptr_to_member_type:
19617       this_type = read_tag_ptr_to_member_type (die, cu);
19618       break;
19619     case DW_TAG_reference_type:
19620       this_type = read_tag_reference_type (die, cu);
19621       break;
19622     case DW_TAG_const_type:
19623       this_type = read_tag_const_type (die, cu);
19624       break;
19625     case DW_TAG_volatile_type:
19626       this_type = read_tag_volatile_type (die, cu);
19627       break;
19628     case DW_TAG_restrict_type:
19629       this_type = read_tag_restrict_type (die, cu);
19630       break;
19631     case DW_TAG_string_type:
19632       this_type = read_tag_string_type (die, cu);
19633       break;
19634     case DW_TAG_typedef:
19635       this_type = read_typedef (die, cu);
19636       break;
19637     case DW_TAG_subrange_type:
19638       this_type = read_subrange_type (die, cu);
19639       break;
19640     case DW_TAG_base_type:
19641       this_type = read_base_type (die, cu);
19642       break;
19643     case DW_TAG_unspecified_type:
19644       this_type = read_unspecified_type (die, cu);
19645       break;
19646     case DW_TAG_namespace:
19647       this_type = read_namespace_type (die, cu);
19648       break;
19649     case DW_TAG_module:
19650       this_type = read_module_type (die, cu);
19651       break;
19652     case DW_TAG_atomic_type:
19653       this_type = read_tag_atomic_type (die, cu);
19654       break;
19655     default:
19656       complaint (&symfile_complaints,
19657                  _("unexpected tag in read_type_die: '%s'"),
19658                  dwarf_tag_name (die->tag));
19659       break;
19660     }
19661
19662   return this_type;
19663 }
19664
19665 /* See if we can figure out if the class lives in a namespace.  We do
19666    this by looking for a member function; its demangled name will
19667    contain namespace info, if there is any.
19668    Return the computed name or NULL.
19669    Space for the result is allocated on the objfile's obstack.
19670    This is the full-die version of guess_partial_die_structure_name.
19671    In this case we know DIE has no useful parent.  */
19672
19673 static char *
19674 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19675 {
19676   struct die_info *spec_die;
19677   struct dwarf2_cu *spec_cu;
19678   struct die_info *child;
19679
19680   spec_cu = cu;
19681   spec_die = die_specification (die, &spec_cu);
19682   if (spec_die != NULL)
19683     {
19684       die = spec_die;
19685       cu = spec_cu;
19686     }
19687
19688   for (child = die->child;
19689        child != NULL;
19690        child = child->sibling)
19691     {
19692       if (child->tag == DW_TAG_subprogram)
19693         {
19694           const char *linkage_name;
19695
19696           linkage_name = dwarf2_string_attr (child, DW_AT_linkage_name, cu);
19697           if (linkage_name == NULL)
19698             linkage_name = dwarf2_string_attr (child, DW_AT_MIPS_linkage_name,
19699                                                cu);
19700           if (linkage_name != NULL)
19701             {
19702               char *actual_name
19703                 = language_class_name_from_physname (cu->language_defn,
19704                                                      linkage_name);
19705               char *name = NULL;
19706
19707               if (actual_name != NULL)
19708                 {
19709                   const char *die_name = dwarf2_name (die, cu);
19710
19711                   if (die_name != NULL
19712                       && strcmp (die_name, actual_name) != 0)
19713                     {
19714                       /* Strip off the class name from the full name.
19715                          We want the prefix.  */
19716                       int die_name_len = strlen (die_name);
19717                       int actual_name_len = strlen (actual_name);
19718
19719                       /* Test for '::' as a sanity check.  */
19720                       if (actual_name_len > die_name_len + 2
19721                           && actual_name[actual_name_len
19722                                          - die_name_len - 1] == ':')
19723                         name = (char *) obstack_copy0 (
19724                           &cu->objfile->per_bfd->storage_obstack,
19725                           actual_name, actual_name_len - die_name_len - 2);
19726                     }
19727                 }
19728               xfree (actual_name);
19729               return name;
19730             }
19731         }
19732     }
19733
19734   return NULL;
19735 }
19736
19737 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
19738    prefix part in such case.  See
19739    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19740
19741 static char *
19742 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19743 {
19744   struct attribute *attr;
19745   const char *base;
19746
19747   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19748       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19749     return NULL;
19750
19751   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
19752     return NULL;
19753
19754   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19755   if (attr == NULL)
19756     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19757   if (attr == NULL || DW_STRING (attr) == NULL)
19758     return NULL;
19759
19760   /* dwarf2_name had to be already called.  */
19761   gdb_assert (DW_STRING_IS_CANONICAL (attr));
19762
19763   /* Strip the base name, keep any leading namespaces/classes.  */
19764   base = strrchr (DW_STRING (attr), ':');
19765   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19766     return "";
19767
19768   return (char *) obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19769                                  DW_STRING (attr),
19770                                  &base[-1] - DW_STRING (attr));
19771 }
19772
19773 /* Return the name of the namespace/class that DIE is defined within,
19774    or "" if we can't tell.  The caller should not xfree the result.
19775
19776    For example, if we're within the method foo() in the following
19777    code:
19778
19779    namespace N {
19780      class C {
19781        void foo () {
19782        }
19783      };
19784    }
19785
19786    then determine_prefix on foo's die will return "N::C".  */
19787
19788 static const char *
19789 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
19790 {
19791   struct die_info *parent, *spec_die;
19792   struct dwarf2_cu *spec_cu;
19793   struct type *parent_type;
19794   char *retval;
19795
19796   if (cu->language != language_cplus
19797       && cu->language != language_fortran && cu->language != language_d
19798       && cu->language != language_rust)
19799     return "";
19800
19801   retval = anonymous_struct_prefix (die, cu);
19802   if (retval)
19803     return retval;
19804
19805   /* We have to be careful in the presence of DW_AT_specification.
19806      For example, with GCC 3.4, given the code
19807
19808      namespace N {
19809        void foo() {
19810          // Definition of N::foo.
19811        }
19812      }
19813
19814      then we'll have a tree of DIEs like this:
19815
19816      1: DW_TAG_compile_unit
19817        2: DW_TAG_namespace        // N
19818          3: DW_TAG_subprogram     // declaration of N::foo
19819        4: DW_TAG_subprogram       // definition of N::foo
19820             DW_AT_specification   // refers to die #3
19821
19822      Thus, when processing die #4, we have to pretend that we're in
19823      the context of its DW_AT_specification, namely the contex of die
19824      #3.  */
19825   spec_cu = cu;
19826   spec_die = die_specification (die, &spec_cu);
19827   if (spec_die == NULL)
19828     parent = die->parent;
19829   else
19830     {
19831       parent = spec_die->parent;
19832       cu = spec_cu;
19833     }
19834
19835   if (parent == NULL)
19836     return "";
19837   else if (parent->building_fullname)
19838     {
19839       const char *name;
19840       const char *parent_name;
19841
19842       /* It has been seen on RealView 2.2 built binaries,
19843          DW_TAG_template_type_param types actually _defined_ as
19844          children of the parent class:
19845
19846          enum E {};
19847          template class <class Enum> Class{};
19848          Class<enum E> class_e;
19849
19850          1: DW_TAG_class_type (Class)
19851            2: DW_TAG_enumeration_type (E)
19852              3: DW_TAG_enumerator (enum1:0)
19853              3: DW_TAG_enumerator (enum2:1)
19854              ...
19855            2: DW_TAG_template_type_param
19856               DW_AT_type  DW_FORM_ref_udata (E)
19857
19858          Besides being broken debug info, it can put GDB into an
19859          infinite loop.  Consider:
19860
19861          When we're building the full name for Class<E>, we'll start
19862          at Class, and go look over its template type parameters,
19863          finding E.  We'll then try to build the full name of E, and
19864          reach here.  We're now trying to build the full name of E,
19865          and look over the parent DIE for containing scope.  In the
19866          broken case, if we followed the parent DIE of E, we'd again
19867          find Class, and once again go look at its template type
19868          arguments, etc., etc.  Simply don't consider such parent die
19869          as source-level parent of this die (it can't be, the language
19870          doesn't allow it), and break the loop here.  */
19871       name = dwarf2_name (die, cu);
19872       parent_name = dwarf2_name (parent, cu);
19873       complaint (&symfile_complaints,
19874                  _("template param type '%s' defined within parent '%s'"),
19875                  name ? name : "<unknown>",
19876                  parent_name ? parent_name : "<unknown>");
19877       return "";
19878     }
19879   else
19880     switch (parent->tag)
19881       {
19882       case DW_TAG_namespace:
19883         parent_type = read_type_die (parent, cu);
19884         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19885            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19886            Work around this problem here.  */
19887         if (cu->language == language_cplus
19888             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19889           return "";
19890         /* We give a name to even anonymous namespaces.  */
19891         return TYPE_TAG_NAME (parent_type);
19892       case DW_TAG_class_type:
19893       case DW_TAG_interface_type:
19894       case DW_TAG_structure_type:
19895       case DW_TAG_union_type:
19896       case DW_TAG_module:
19897         parent_type = read_type_die (parent, cu);
19898         if (TYPE_TAG_NAME (parent_type) != NULL)
19899           return TYPE_TAG_NAME (parent_type);
19900         else
19901           /* An anonymous structure is only allowed non-static data
19902              members; no typedefs, no member functions, et cetera.
19903              So it does not need a prefix.  */
19904           return "";
19905       case DW_TAG_compile_unit:
19906       case DW_TAG_partial_unit:
19907         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
19908         if (cu->language == language_cplus
19909             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
19910             && die->child != NULL
19911             && (die->tag == DW_TAG_class_type
19912                 || die->tag == DW_TAG_structure_type
19913                 || die->tag == DW_TAG_union_type))
19914           {
19915             char *name = guess_full_die_structure_name (die, cu);
19916             if (name != NULL)
19917               return name;
19918           }
19919         return "";
19920       case DW_TAG_enumeration_type:
19921         parent_type = read_type_die (parent, cu);
19922         if (TYPE_DECLARED_CLASS (parent_type))
19923           {
19924             if (TYPE_TAG_NAME (parent_type) != NULL)
19925               return TYPE_TAG_NAME (parent_type);
19926             return "";
19927           }
19928         /* Fall through.  */
19929       default:
19930         return determine_prefix (parent, cu);
19931       }
19932 }
19933
19934 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19935    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
19936    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
19937    an obconcat, otherwise allocate storage for the result.  The CU argument is
19938    used to determine the language and hence, the appropriate separator.  */
19939
19940 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
19941
19942 static char *
19943 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19944                  int physname, struct dwarf2_cu *cu)
19945 {
19946   const char *lead = "";
19947   const char *sep;
19948
19949   if (suffix == NULL || suffix[0] == '\0'
19950       || prefix == NULL || prefix[0] == '\0')
19951     sep = "";
19952   else if (cu->language == language_d)
19953     {
19954       /* For D, the 'main' function could be defined in any module, but it
19955          should never be prefixed.  */
19956       if (strcmp (suffix, "D main") == 0)
19957         {
19958           prefix = "";
19959           sep = "";
19960         }
19961       else
19962         sep = ".";
19963     }
19964   else if (cu->language == language_fortran && physname)
19965     {
19966       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
19967          DW_AT_MIPS_linkage_name is preferred and used instead.  */
19968
19969       lead = "__";
19970       sep = "_MOD_";
19971     }
19972   else
19973     sep = "::";
19974
19975   if (prefix == NULL)
19976     prefix = "";
19977   if (suffix == NULL)
19978     suffix = "";
19979
19980   if (obs == NULL)
19981     {
19982       char *retval
19983         = ((char *)
19984            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
19985
19986       strcpy (retval, lead);
19987       strcat (retval, prefix);
19988       strcat (retval, sep);
19989       strcat (retval, suffix);
19990       return retval;
19991     }
19992   else
19993     {
19994       /* We have an obstack.  */
19995       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
19996     }
19997 }
19998
19999 /* Return sibling of die, NULL if no sibling.  */
20000
20001 static struct die_info *
20002 sibling_die (struct die_info *die)
20003 {
20004   return die->sibling;
20005 }
20006
20007 /* Get name of a die, return NULL if not found.  */
20008
20009 static const char *
20010 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
20011                           struct obstack *obstack)
20012 {
20013   if (name && cu->language == language_cplus)
20014     {
20015       std::string canon_name = cp_canonicalize_string (name);
20016
20017       if (!canon_name.empty ())
20018         {
20019           if (canon_name != name)
20020             name = (const char *) obstack_copy0 (obstack,
20021                                                  canon_name.c_str (),
20022                                                  canon_name.length ());
20023         }
20024     }
20025
20026   return name;
20027 }
20028
20029 /* Get name of a die, return NULL if not found.
20030    Anonymous namespaces are converted to their magic string.  */
20031
20032 static const char *
20033 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
20034 {
20035   struct attribute *attr;
20036
20037   attr = dwarf2_attr (die, DW_AT_name, cu);
20038   if ((!attr || !DW_STRING (attr))
20039       && die->tag != DW_TAG_namespace
20040       && die->tag != DW_TAG_class_type
20041       && die->tag != DW_TAG_interface_type
20042       && die->tag != DW_TAG_structure_type
20043       && die->tag != DW_TAG_union_type)
20044     return NULL;
20045
20046   switch (die->tag)
20047     {
20048     case DW_TAG_compile_unit:
20049     case DW_TAG_partial_unit:
20050       /* Compilation units have a DW_AT_name that is a filename, not
20051          a source language identifier.  */
20052     case DW_TAG_enumeration_type:
20053     case DW_TAG_enumerator:
20054       /* These tags always have simple identifiers already; no need
20055          to canonicalize them.  */
20056       return DW_STRING (attr);
20057
20058     case DW_TAG_namespace:
20059       if (attr != NULL && DW_STRING (attr) != NULL)
20060         return DW_STRING (attr);
20061       return CP_ANONYMOUS_NAMESPACE_STR;
20062
20063     case DW_TAG_class_type:
20064     case DW_TAG_interface_type:
20065     case DW_TAG_structure_type:
20066     case DW_TAG_union_type:
20067       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
20068          structures or unions.  These were of the form "._%d" in GCC 4.1,
20069          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
20070          and GCC 4.4.  We work around this problem by ignoring these.  */
20071       if (attr && DW_STRING (attr)
20072           && (startswith (DW_STRING (attr), "._")
20073               || startswith (DW_STRING (attr), "<anonymous")))
20074         return NULL;
20075
20076       /* GCC might emit a nameless typedef that has a linkage name.  See
20077          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
20078       if (!attr || DW_STRING (attr) == NULL)
20079         {
20080           char *demangled = NULL;
20081
20082           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
20083           if (attr == NULL)
20084             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
20085
20086           if (attr == NULL || DW_STRING (attr) == NULL)
20087             return NULL;
20088
20089           /* Avoid demangling DW_STRING (attr) the second time on a second
20090              call for the same DIE.  */
20091           if (!DW_STRING_IS_CANONICAL (attr))
20092             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
20093
20094           if (demangled)
20095             {
20096               const char *base;
20097
20098               /* FIXME: we already did this for the partial symbol... */
20099               DW_STRING (attr)
20100                 = ((const char *)
20101                    obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
20102                                   demangled, strlen (demangled)));
20103               DW_STRING_IS_CANONICAL (attr) = 1;
20104               xfree (demangled);
20105
20106               /* Strip any leading namespaces/classes, keep only the base name.
20107                  DW_AT_name for named DIEs does not contain the prefixes.  */
20108               base = strrchr (DW_STRING (attr), ':');
20109               if (base && base > DW_STRING (attr) && base[-1] == ':')
20110                 return &base[1];
20111               else
20112                 return DW_STRING (attr);
20113             }
20114         }
20115       break;
20116
20117     default:
20118       break;
20119     }
20120
20121   if (!DW_STRING_IS_CANONICAL (attr))
20122     {
20123       DW_STRING (attr)
20124         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
20125                                     &cu->objfile->per_bfd->storage_obstack);
20126       DW_STRING_IS_CANONICAL (attr) = 1;
20127     }
20128   return DW_STRING (attr);
20129 }
20130
20131 /* Return the die that this die in an extension of, or NULL if there
20132    is none.  *EXT_CU is the CU containing DIE on input, and the CU
20133    containing the return value on output.  */
20134
20135 static struct die_info *
20136 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
20137 {
20138   struct attribute *attr;
20139
20140   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
20141   if (attr == NULL)
20142     return NULL;
20143
20144   return follow_die_ref (die, attr, ext_cu);
20145 }
20146
20147 /* Convert a DIE tag into its string name.  */
20148
20149 static const char *
20150 dwarf_tag_name (unsigned tag)
20151 {
20152   const char *name = get_DW_TAG_name (tag);
20153
20154   if (name == NULL)
20155     return "DW_TAG_<unknown>";
20156
20157   return name;
20158 }
20159
20160 /* Convert a DWARF attribute code into its string name.  */
20161
20162 static const char *
20163 dwarf_attr_name (unsigned attr)
20164 {
20165   const char *name;
20166
20167 #ifdef MIPS /* collides with DW_AT_HP_block_index */
20168   if (attr == DW_AT_MIPS_fde)
20169     return "DW_AT_MIPS_fde";
20170 #else
20171   if (attr == DW_AT_HP_block_index)
20172     return "DW_AT_HP_block_index";
20173 #endif
20174
20175   name = get_DW_AT_name (attr);
20176
20177   if (name == NULL)
20178     return "DW_AT_<unknown>";
20179
20180   return name;
20181 }
20182
20183 /* Convert a DWARF value form code into its string name.  */
20184
20185 static const char *
20186 dwarf_form_name (unsigned form)
20187 {
20188   const char *name = get_DW_FORM_name (form);
20189
20190   if (name == NULL)
20191     return "DW_FORM_<unknown>";
20192
20193   return name;
20194 }
20195
20196 static char *
20197 dwarf_bool_name (unsigned mybool)
20198 {
20199   if (mybool)
20200     return "TRUE";
20201   else
20202     return "FALSE";
20203 }
20204
20205 /* Convert a DWARF type code into its string name.  */
20206
20207 static const char *
20208 dwarf_type_encoding_name (unsigned enc)
20209 {
20210   const char *name = get_DW_ATE_name (enc);
20211
20212   if (name == NULL)
20213     return "DW_ATE_<unknown>";
20214
20215   return name;
20216 }
20217
20218 static void
20219 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
20220 {
20221   unsigned int i;
20222
20223   print_spaces (indent, f);
20224   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
20225            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
20226
20227   if (die->parent != NULL)
20228     {
20229       print_spaces (indent, f);
20230       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
20231                           die->parent->offset.sect_off);
20232     }
20233
20234   print_spaces (indent, f);
20235   fprintf_unfiltered (f, "  has children: %s\n",
20236            dwarf_bool_name (die->child != NULL));
20237
20238   print_spaces (indent, f);
20239   fprintf_unfiltered (f, "  attributes:\n");
20240
20241   for (i = 0; i < die->num_attrs; ++i)
20242     {
20243       print_spaces (indent, f);
20244       fprintf_unfiltered (f, "    %s (%s) ",
20245                dwarf_attr_name (die->attrs[i].name),
20246                dwarf_form_name (die->attrs[i].form));
20247
20248       switch (die->attrs[i].form)
20249         {
20250         case DW_FORM_addr:
20251         case DW_FORM_GNU_addr_index:
20252           fprintf_unfiltered (f, "address: ");
20253           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
20254           break;
20255         case DW_FORM_block2:
20256         case DW_FORM_block4:
20257         case DW_FORM_block:
20258         case DW_FORM_block1:
20259           fprintf_unfiltered (f, "block: size %s",
20260                               pulongest (DW_BLOCK (&die->attrs[i])->size));
20261           break;
20262         case DW_FORM_exprloc:
20263           fprintf_unfiltered (f, "expression: size %s",
20264                               pulongest (DW_BLOCK (&die->attrs[i])->size));
20265           break;
20266         case DW_FORM_data16:
20267           fprintf_unfiltered (f, "constant of 16 bytes");
20268           break;
20269         case DW_FORM_ref_addr:
20270           fprintf_unfiltered (f, "ref address: ");
20271           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
20272           break;
20273         case DW_FORM_GNU_ref_alt:
20274           fprintf_unfiltered (f, "alt ref address: ");
20275           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
20276           break;
20277         case DW_FORM_ref1:
20278         case DW_FORM_ref2:
20279         case DW_FORM_ref4:
20280         case DW_FORM_ref8:
20281         case DW_FORM_ref_udata:
20282           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
20283                               (long) (DW_UNSND (&die->attrs[i])));
20284           break;
20285         case DW_FORM_data1:
20286         case DW_FORM_data2:
20287         case DW_FORM_data4:
20288         case DW_FORM_data8:
20289         case DW_FORM_udata:
20290         case DW_FORM_sdata:
20291           fprintf_unfiltered (f, "constant: %s",
20292                               pulongest (DW_UNSND (&die->attrs[i])));
20293           break;
20294         case DW_FORM_sec_offset:
20295           fprintf_unfiltered (f, "section offset: %s",
20296                               pulongest (DW_UNSND (&die->attrs[i])));
20297           break;
20298         case DW_FORM_ref_sig8:
20299           fprintf_unfiltered (f, "signature: %s",
20300                               hex_string (DW_SIGNATURE (&die->attrs[i])));
20301           break;
20302         case DW_FORM_string:
20303         case DW_FORM_strp:
20304         case DW_FORM_line_strp:
20305         case DW_FORM_GNU_str_index:
20306         case DW_FORM_GNU_strp_alt:
20307           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
20308                    DW_STRING (&die->attrs[i])
20309                    ? DW_STRING (&die->attrs[i]) : "",
20310                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
20311           break;
20312         case DW_FORM_flag:
20313           if (DW_UNSND (&die->attrs[i]))
20314             fprintf_unfiltered (f, "flag: TRUE");
20315           else
20316             fprintf_unfiltered (f, "flag: FALSE");
20317           break;
20318         case DW_FORM_flag_present:
20319           fprintf_unfiltered (f, "flag: TRUE");
20320           break;
20321         case DW_FORM_indirect:
20322           /* The reader will have reduced the indirect form to
20323              the "base form" so this form should not occur.  */
20324           fprintf_unfiltered (f, 
20325                               "unexpected attribute form: DW_FORM_indirect");
20326           break;
20327         default:
20328           fprintf_unfiltered (f, "unsupported attribute form: %d.",
20329                    die->attrs[i].form);
20330           break;
20331         }
20332       fprintf_unfiltered (f, "\n");
20333     }
20334 }
20335
20336 static void
20337 dump_die_for_error (struct die_info *die)
20338 {
20339   dump_die_shallow (gdb_stderr, 0, die);
20340 }
20341
20342 static void
20343 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
20344 {
20345   int indent = level * 4;
20346
20347   gdb_assert (die != NULL);
20348
20349   if (level >= max_level)
20350     return;
20351
20352   dump_die_shallow (f, indent, die);
20353
20354   if (die->child != NULL)
20355     {
20356       print_spaces (indent, f);
20357       fprintf_unfiltered (f, "  Children:");
20358       if (level + 1 < max_level)
20359         {
20360           fprintf_unfiltered (f, "\n");
20361           dump_die_1 (f, level + 1, max_level, die->child);
20362         }
20363       else
20364         {
20365           fprintf_unfiltered (f,
20366                               " [not printed, max nesting level reached]\n");
20367         }
20368     }
20369
20370   if (die->sibling != NULL && level > 0)
20371     {
20372       dump_die_1 (f, level, max_level, die->sibling);
20373     }
20374 }
20375
20376 /* This is called from the pdie macro in gdbinit.in.
20377    It's not static so gcc will keep a copy callable from gdb.  */
20378
20379 void
20380 dump_die (struct die_info *die, int max_level)
20381 {
20382   dump_die_1 (gdb_stdlog, 0, max_level, die);
20383 }
20384
20385 static void
20386 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
20387 {
20388   void **slot;
20389
20390   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
20391                                    INSERT);
20392
20393   *slot = die;
20394 }
20395
20396 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
20397    required kind.  */
20398
20399 static sect_offset
20400 dwarf2_get_ref_die_offset (const struct attribute *attr)
20401 {
20402   sect_offset retval = { DW_UNSND (attr) };
20403
20404   if (attr_form_is_ref (attr))
20405     return retval;
20406
20407   retval.sect_off = 0;
20408   complaint (&symfile_complaints,
20409              _("unsupported die ref attribute form: '%s'"),
20410              dwarf_form_name (attr->form));
20411   return retval;
20412 }
20413
20414 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
20415  * the value held by the attribute is not constant.  */
20416
20417 static LONGEST
20418 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
20419 {
20420   if (attr->form == DW_FORM_sdata)
20421     return DW_SND (attr);
20422   else if (attr->form == DW_FORM_udata
20423            || attr->form == DW_FORM_data1
20424            || attr->form == DW_FORM_data2
20425            || attr->form == DW_FORM_data4
20426            || attr->form == DW_FORM_data8)
20427     return DW_UNSND (attr);
20428   else
20429     {
20430       /* For DW_FORM_data16 see attr_form_is_constant.  */
20431       complaint (&symfile_complaints,
20432                  _("Attribute value is not a constant (%s)"),
20433                  dwarf_form_name (attr->form));
20434       return default_value;
20435     }
20436 }
20437
20438 /* Follow reference or signature attribute ATTR of SRC_DIE.
20439    On entry *REF_CU is the CU of SRC_DIE.
20440    On exit *REF_CU is the CU of the result.  */
20441
20442 static struct die_info *
20443 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
20444                        struct dwarf2_cu **ref_cu)
20445 {
20446   struct die_info *die;
20447
20448   if (attr_form_is_ref (attr))
20449     die = follow_die_ref (src_die, attr, ref_cu);
20450   else if (attr->form == DW_FORM_ref_sig8)
20451     die = follow_die_sig (src_die, attr, ref_cu);
20452   else
20453     {
20454       dump_die_for_error (src_die);
20455       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
20456              objfile_name ((*ref_cu)->objfile));
20457     }
20458
20459   return die;
20460 }
20461
20462 /* Follow reference OFFSET.
20463    On entry *REF_CU is the CU of the source die referencing OFFSET.
20464    On exit *REF_CU is the CU of the result.
20465    Returns NULL if OFFSET is invalid.  */
20466
20467 static struct die_info *
20468 follow_die_offset (sect_offset offset, int offset_in_dwz,
20469                    struct dwarf2_cu **ref_cu)
20470 {
20471   struct die_info temp_die;
20472   struct dwarf2_cu *target_cu, *cu = *ref_cu;
20473
20474   gdb_assert (cu->per_cu != NULL);
20475
20476   target_cu = cu;
20477
20478   if (cu->per_cu->is_debug_types)
20479     {
20480       /* .debug_types CUs cannot reference anything outside their CU.
20481          If they need to, they have to reference a signatured type via
20482          DW_FORM_ref_sig8.  */
20483       if (! offset_in_cu_p (&cu->header, offset))
20484         return NULL;
20485     }
20486   else if (offset_in_dwz != cu->per_cu->is_dwz
20487            || ! offset_in_cu_p (&cu->header, offset))
20488     {
20489       struct dwarf2_per_cu_data *per_cu;
20490
20491       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
20492                                                  cu->objfile);
20493
20494       /* If necessary, add it to the queue and load its DIEs.  */
20495       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
20496         load_full_comp_unit (per_cu, cu->language);
20497
20498       target_cu = per_cu->cu;
20499     }
20500   else if (cu->dies == NULL)
20501     {
20502       /* We're loading full DIEs during partial symbol reading.  */
20503       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
20504       load_full_comp_unit (cu->per_cu, language_minimal);
20505     }
20506
20507   *ref_cu = target_cu;
20508   temp_die.offset = offset;
20509   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
20510                                                   &temp_die, offset.sect_off);
20511 }
20512
20513 /* Follow reference attribute ATTR of SRC_DIE.
20514    On entry *REF_CU is the CU of SRC_DIE.
20515    On exit *REF_CU is the CU of the result.  */
20516
20517 static struct die_info *
20518 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
20519                 struct dwarf2_cu **ref_cu)
20520 {
20521   sect_offset offset = dwarf2_get_ref_die_offset (attr);
20522   struct dwarf2_cu *cu = *ref_cu;
20523   struct die_info *die;
20524
20525   die = follow_die_offset (offset,
20526                            (attr->form == DW_FORM_GNU_ref_alt
20527                             || cu->per_cu->is_dwz),
20528                            ref_cu);
20529   if (!die)
20530     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
20531            "at 0x%x [in module %s]"),
20532            offset.sect_off, src_die->offset.sect_off,
20533            objfile_name (cu->objfile));
20534
20535   return die;
20536 }
20537
20538 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20539    Returned value is intended for DW_OP_call*.  Returned
20540    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
20541
20542 struct dwarf2_locexpr_baton
20543 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20544                                struct dwarf2_per_cu_data *per_cu,
20545                                CORE_ADDR (*get_frame_pc) (void *baton),
20546                                void *baton)
20547 {
20548   struct dwarf2_cu *cu;
20549   struct die_info *die;
20550   struct attribute *attr;
20551   struct dwarf2_locexpr_baton retval;
20552
20553   dw2_setup (per_cu->objfile);
20554
20555   if (per_cu->cu == NULL)
20556     load_cu (per_cu);
20557   cu = per_cu->cu;
20558   if (cu == NULL)
20559     {
20560       /* We shouldn't get here for a dummy CU, but don't crash on the user.
20561          Instead just throw an error, not much else we can do.  */
20562       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20563              offset.sect_off, objfile_name (per_cu->objfile));
20564     }
20565
20566   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20567   if (!die)
20568     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
20569            offset.sect_off, objfile_name (per_cu->objfile));
20570
20571   attr = dwarf2_attr (die, DW_AT_location, cu);
20572   if (!attr)
20573     {
20574       /* DWARF: "If there is no such attribute, then there is no effect.".
20575          DATA is ignored if SIZE is 0.  */
20576
20577       retval.data = NULL;
20578       retval.size = 0;
20579     }
20580   else if (attr_form_is_section_offset (attr))
20581     {
20582       struct dwarf2_loclist_baton loclist_baton;
20583       CORE_ADDR pc = (*get_frame_pc) (baton);
20584       size_t size;
20585
20586       fill_in_loclist_baton (cu, &loclist_baton, attr);
20587
20588       retval.data = dwarf2_find_location_expression (&loclist_baton,
20589                                                      &size, pc);
20590       retval.size = size;
20591     }
20592   else
20593     {
20594       if (!attr_form_is_block (attr))
20595         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20596                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
20597                offset.sect_off, objfile_name (per_cu->objfile));
20598
20599       retval.data = DW_BLOCK (attr)->data;
20600       retval.size = DW_BLOCK (attr)->size;
20601     }
20602   retval.per_cu = cu->per_cu;
20603
20604   age_cached_comp_units ();
20605
20606   return retval;
20607 }
20608
20609 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20610    offset.  */
20611
20612 struct dwarf2_locexpr_baton
20613 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20614                              struct dwarf2_per_cu_data *per_cu,
20615                              CORE_ADDR (*get_frame_pc) (void *baton),
20616                              void *baton)
20617 {
20618   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20619
20620   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20621 }
20622
20623 /* Write a constant of a given type as target-ordered bytes into
20624    OBSTACK.  */
20625
20626 static const gdb_byte *
20627 write_constant_as_bytes (struct obstack *obstack,
20628                          enum bfd_endian byte_order,
20629                          struct type *type,
20630                          ULONGEST value,
20631                          LONGEST *len)
20632 {
20633   gdb_byte *result;
20634
20635   *len = TYPE_LENGTH (type);
20636   result = (gdb_byte *) obstack_alloc (obstack, *len);
20637   store_unsigned_integer (result, *len, byte_order, value);
20638
20639   return result;
20640 }
20641
20642 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20643    pointer to the constant bytes and set LEN to the length of the
20644    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
20645    does not have a DW_AT_const_value, return NULL.  */
20646
20647 const gdb_byte *
20648 dwarf2_fetch_constant_bytes (sect_offset offset,
20649                              struct dwarf2_per_cu_data *per_cu,
20650                              struct obstack *obstack,
20651                              LONGEST *len)
20652 {
20653   struct dwarf2_cu *cu;
20654   struct die_info *die;
20655   struct attribute *attr;
20656   const gdb_byte *result = NULL;
20657   struct type *type;
20658   LONGEST value;
20659   enum bfd_endian byte_order;
20660
20661   dw2_setup (per_cu->objfile);
20662
20663   if (per_cu->cu == NULL)
20664     load_cu (per_cu);
20665   cu = per_cu->cu;
20666   if (cu == NULL)
20667     {
20668       /* We shouldn't get here for a dummy CU, but don't crash on the user.
20669          Instead just throw an error, not much else we can do.  */
20670       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20671              offset.sect_off, objfile_name (per_cu->objfile));
20672     }
20673
20674   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20675   if (!die)
20676     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
20677            offset.sect_off, objfile_name (per_cu->objfile));
20678
20679
20680   attr = dwarf2_attr (die, DW_AT_const_value, cu);
20681   if (attr == NULL)
20682     return NULL;
20683
20684   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20685                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20686
20687   switch (attr->form)
20688     {
20689     case DW_FORM_addr:
20690     case DW_FORM_GNU_addr_index:
20691       {
20692         gdb_byte *tem;
20693
20694         *len = cu->header.addr_size;
20695         tem = (gdb_byte *) obstack_alloc (obstack, *len);
20696         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20697         result = tem;
20698       }
20699       break;
20700     case DW_FORM_string:
20701     case DW_FORM_strp:
20702     case DW_FORM_GNU_str_index:
20703     case DW_FORM_GNU_strp_alt:
20704       /* DW_STRING is already allocated on the objfile obstack, point
20705          directly to it.  */
20706       result = (const gdb_byte *) DW_STRING (attr);
20707       *len = strlen (DW_STRING (attr));
20708       break;
20709     case DW_FORM_block1:
20710     case DW_FORM_block2:
20711     case DW_FORM_block4:
20712     case DW_FORM_block:
20713     case DW_FORM_exprloc:
20714     case DW_FORM_data16:
20715       result = DW_BLOCK (attr)->data;
20716       *len = DW_BLOCK (attr)->size;
20717       break;
20718
20719       /* The DW_AT_const_value attributes are supposed to carry the
20720          symbol's value "represented as it would be on the target
20721          architecture."  By the time we get here, it's already been
20722          converted to host endianness, so we just need to sign- or
20723          zero-extend it as appropriate.  */
20724     case DW_FORM_data1:
20725       type = die_type (die, cu);
20726       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20727       if (result == NULL)
20728         result = write_constant_as_bytes (obstack, byte_order,
20729                                           type, value, len);
20730       break;
20731     case DW_FORM_data2:
20732       type = die_type (die, cu);
20733       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20734       if (result == NULL)
20735         result = write_constant_as_bytes (obstack, byte_order,
20736                                           type, value, len);
20737       break;
20738     case DW_FORM_data4:
20739       type = die_type (die, cu);
20740       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20741       if (result == NULL)
20742         result = write_constant_as_bytes (obstack, byte_order,
20743                                           type, value, len);
20744       break;
20745     case DW_FORM_data8:
20746       type = die_type (die, cu);
20747       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20748       if (result == NULL)
20749         result = write_constant_as_bytes (obstack, byte_order,
20750                                           type, value, len);
20751       break;
20752
20753     case DW_FORM_sdata:
20754       type = die_type (die, cu);
20755       result = write_constant_as_bytes (obstack, byte_order,
20756                                         type, DW_SND (attr), len);
20757       break;
20758
20759     case DW_FORM_udata:
20760       type = die_type (die, cu);
20761       result = write_constant_as_bytes (obstack, byte_order,
20762                                         type, DW_UNSND (attr), len);
20763       break;
20764
20765     default:
20766       complaint (&symfile_complaints,
20767                  _("unsupported const value attribute form: '%s'"),
20768                  dwarf_form_name (attr->form));
20769       break;
20770     }
20771
20772   return result;
20773 }
20774
20775 /* Return the type of the DIE at DIE_OFFSET in the CU named by
20776    PER_CU.  */
20777
20778 struct type *
20779 dwarf2_get_die_type (cu_offset die_offset,
20780                      struct dwarf2_per_cu_data *per_cu)
20781 {
20782   sect_offset die_offset_sect;
20783
20784   dw2_setup (per_cu->objfile);
20785
20786   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20787   return get_die_type_at_offset (die_offset_sect, per_cu);
20788 }
20789
20790 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
20791    On entry *REF_CU is the CU of SRC_DIE.
20792    On exit *REF_CU is the CU of the result.
20793    Returns NULL if the referenced DIE isn't found.  */
20794
20795 static struct die_info *
20796 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20797                   struct dwarf2_cu **ref_cu)
20798 {
20799   struct die_info temp_die;
20800   struct dwarf2_cu *sig_cu;
20801   struct die_info *die;
20802
20803   /* While it might be nice to assert sig_type->type == NULL here,
20804      we can get here for DW_AT_imported_declaration where we need
20805      the DIE not the type.  */
20806
20807   /* If necessary, add it to the queue and load its DIEs.  */
20808
20809   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
20810     read_signatured_type (sig_type);
20811
20812   sig_cu = sig_type->per_cu.cu;
20813   gdb_assert (sig_cu != NULL);
20814   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20815   temp_die.offset = sig_type->type_offset_in_section;
20816   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
20817                                                  temp_die.offset.sect_off);
20818   if (die)
20819     {
20820       /* For .gdb_index version 7 keep track of included TUs.
20821          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
20822       if (dwarf2_per_objfile->index_table != NULL
20823           && dwarf2_per_objfile->index_table->version <= 7)
20824         {
20825           VEC_safe_push (dwarf2_per_cu_ptr,
20826                          (*ref_cu)->per_cu->imported_symtabs,
20827                          sig_cu->per_cu);
20828         }
20829
20830       *ref_cu = sig_cu;
20831       return die;
20832     }
20833
20834   return NULL;
20835 }
20836
20837 /* Follow signatured type referenced by ATTR in SRC_DIE.
20838    On entry *REF_CU is the CU of SRC_DIE.
20839    On exit *REF_CU is the CU of the result.
20840    The result is the DIE of the type.
20841    If the referenced type cannot be found an error is thrown.  */
20842
20843 static struct die_info *
20844 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
20845                 struct dwarf2_cu **ref_cu)
20846 {
20847   ULONGEST signature = DW_SIGNATURE (attr);
20848   struct signatured_type *sig_type;
20849   struct die_info *die;
20850
20851   gdb_assert (attr->form == DW_FORM_ref_sig8);
20852
20853   sig_type = lookup_signatured_type (*ref_cu, signature);
20854   /* sig_type will be NULL if the signatured type is missing from
20855      the debug info.  */
20856   if (sig_type == NULL)
20857     {
20858       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20859                " from DIE at 0x%x [in module %s]"),
20860              hex_string (signature), src_die->offset.sect_off,
20861              objfile_name ((*ref_cu)->objfile));
20862     }
20863
20864   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20865   if (die == NULL)
20866     {
20867       dump_die_for_error (src_die);
20868       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20869                " from DIE at 0x%x [in module %s]"),
20870              hex_string (signature), src_die->offset.sect_off,
20871              objfile_name ((*ref_cu)->objfile));
20872     }
20873
20874   return die;
20875 }
20876
20877 /* Get the type specified by SIGNATURE referenced in DIE/CU,
20878    reading in and processing the type unit if necessary.  */
20879
20880 static struct type *
20881 get_signatured_type (struct die_info *die, ULONGEST signature,
20882                      struct dwarf2_cu *cu)
20883 {
20884   struct signatured_type *sig_type;
20885   struct dwarf2_cu *type_cu;
20886   struct die_info *type_die;
20887   struct type *type;
20888
20889   sig_type = lookup_signatured_type (cu, signature);
20890   /* sig_type will be NULL if the signatured type is missing from
20891      the debug info.  */
20892   if (sig_type == NULL)
20893     {
20894       complaint (&symfile_complaints,
20895                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
20896                    " from DIE at 0x%x [in module %s]"),
20897                  hex_string (signature), die->offset.sect_off,
20898                  objfile_name (dwarf2_per_objfile->objfile));
20899       return build_error_marker_type (cu, die);
20900     }
20901
20902   /* If we already know the type we're done.  */
20903   if (sig_type->type != NULL)
20904     return sig_type->type;
20905
20906   type_cu = cu;
20907   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20908   if (type_die != NULL)
20909     {
20910       /* N.B. We need to call get_die_type to ensure only one type for this DIE
20911          is created.  This is important, for example, because for c++ classes
20912          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
20913       type = read_type_die (type_die, type_cu);
20914       if (type == NULL)
20915         {
20916           complaint (&symfile_complaints,
20917                      _("Dwarf Error: Cannot build signatured type %s"
20918                        " referenced from DIE at 0x%x [in module %s]"),
20919                      hex_string (signature), die->offset.sect_off,
20920                      objfile_name (dwarf2_per_objfile->objfile));
20921           type = build_error_marker_type (cu, die);
20922         }
20923     }
20924   else
20925     {
20926       complaint (&symfile_complaints,
20927                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
20928                    " from DIE at 0x%x [in module %s]"),
20929                  hex_string (signature), die->offset.sect_off,
20930                  objfile_name (dwarf2_per_objfile->objfile));
20931       type = build_error_marker_type (cu, die);
20932     }
20933   sig_type->type = type;
20934
20935   return type;
20936 }
20937
20938 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20939    reading in and processing the type unit if necessary.  */
20940
20941 static struct type *
20942 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
20943                           struct dwarf2_cu *cu) /* ARI: editCase function */
20944 {
20945   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
20946   if (attr_form_is_ref (attr))
20947     {
20948       struct dwarf2_cu *type_cu = cu;
20949       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20950
20951       return read_type_die (type_die, type_cu);
20952     }
20953   else if (attr->form == DW_FORM_ref_sig8)
20954     {
20955       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20956     }
20957   else
20958     {
20959       complaint (&symfile_complaints,
20960                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20961                    " at 0x%x [in module %s]"),
20962                  dwarf_form_name (attr->form), die->offset.sect_off,
20963                  objfile_name (dwarf2_per_objfile->objfile));
20964       return build_error_marker_type (cu, die);
20965     }
20966 }
20967
20968 /* Load the DIEs associated with type unit PER_CU into memory.  */
20969
20970 static void
20971 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
20972 {
20973   struct signatured_type *sig_type;
20974
20975   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
20976   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20977
20978   /* We have the per_cu, but we need the signatured_type.
20979      Fortunately this is an easy translation.  */
20980   gdb_assert (per_cu->is_debug_types);
20981   sig_type = (struct signatured_type *) per_cu;
20982
20983   gdb_assert (per_cu->cu == NULL);
20984
20985   read_signatured_type (sig_type);
20986
20987   gdb_assert (per_cu->cu != NULL);
20988 }
20989
20990 /* die_reader_func for read_signatured_type.
20991    This is identical to load_full_comp_unit_reader,
20992    but is kept separate for now.  */
20993
20994 static void
20995 read_signatured_type_reader (const struct die_reader_specs *reader,
20996                              const gdb_byte *info_ptr,
20997                              struct die_info *comp_unit_die,
20998                              int has_children,
20999                              void *data)
21000 {
21001   struct dwarf2_cu *cu = reader->cu;
21002
21003   gdb_assert (cu->die_hash == NULL);
21004   cu->die_hash =
21005     htab_create_alloc_ex (cu->header.length / 12,
21006                           die_hash,
21007                           die_eq,
21008                           NULL,
21009                           &cu->comp_unit_obstack,
21010                           hashtab_obstack_allocate,
21011                           dummy_obstack_deallocate);
21012
21013   if (has_children)
21014     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
21015                                                   &info_ptr, comp_unit_die);
21016   cu->dies = comp_unit_die;
21017   /* comp_unit_die is not stored in die_hash, no need.  */
21018
21019   /* We try not to read any attributes in this function, because not
21020      all CUs needed for references have been loaded yet, and symbol
21021      table processing isn't initialized.  But we have to set the CU language,
21022      or we won't be able to build types correctly.
21023      Similarly, if we do not read the producer, we can not apply
21024      producer-specific interpretation.  */
21025   prepare_one_comp_unit (cu, cu->dies, language_minimal);
21026 }
21027
21028 /* Read in a signatured type and build its CU and DIEs.
21029    If the type is a stub for the real type in a DWO file,
21030    read in the real type from the DWO file as well.  */
21031
21032 static void
21033 read_signatured_type (struct signatured_type *sig_type)
21034 {
21035   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
21036
21037   gdb_assert (per_cu->is_debug_types);
21038   gdb_assert (per_cu->cu == NULL);
21039
21040   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
21041                            read_signatured_type_reader, NULL);
21042   sig_type->per_cu.tu_read = 1;
21043 }
21044
21045 /* Decode simple location descriptions.
21046    Given a pointer to a dwarf block that defines a location, compute
21047    the location and return the value.
21048
21049    NOTE drow/2003-11-18: This function is called in two situations
21050    now: for the address of static or global variables (partial symbols
21051    only) and for offsets into structures which are expected to be
21052    (more or less) constant.  The partial symbol case should go away,
21053    and only the constant case should remain.  That will let this
21054    function complain more accurately.  A few special modes are allowed
21055    without complaint for global variables (for instance, global
21056    register values and thread-local values).
21057
21058    A location description containing no operations indicates that the
21059    object is optimized out.  The return value is 0 for that case.
21060    FIXME drow/2003-11-16: No callers check for this case any more; soon all
21061    callers will only want a very basic result and this can become a
21062    complaint.
21063
21064    Note that stack[0] is unused except as a default error return.  */
21065
21066 static CORE_ADDR
21067 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
21068 {
21069   struct objfile *objfile = cu->objfile;
21070   size_t i;
21071   size_t size = blk->size;
21072   const gdb_byte *data = blk->data;
21073   CORE_ADDR stack[64];
21074   int stacki;
21075   unsigned int bytes_read, unsnd;
21076   gdb_byte op;
21077
21078   i = 0;
21079   stacki = 0;
21080   stack[stacki] = 0;
21081   stack[++stacki] = 0;
21082
21083   while (i < size)
21084     {
21085       op = data[i++];
21086       switch (op)
21087         {
21088         case DW_OP_lit0:
21089         case DW_OP_lit1:
21090         case DW_OP_lit2:
21091         case DW_OP_lit3:
21092         case DW_OP_lit4:
21093         case DW_OP_lit5:
21094         case DW_OP_lit6:
21095         case DW_OP_lit7:
21096         case DW_OP_lit8:
21097         case DW_OP_lit9:
21098         case DW_OP_lit10:
21099         case DW_OP_lit11:
21100         case DW_OP_lit12:
21101         case DW_OP_lit13:
21102         case DW_OP_lit14:
21103         case DW_OP_lit15:
21104         case DW_OP_lit16:
21105         case DW_OP_lit17:
21106         case DW_OP_lit18:
21107         case DW_OP_lit19:
21108         case DW_OP_lit20:
21109         case DW_OP_lit21:
21110         case DW_OP_lit22:
21111         case DW_OP_lit23:
21112         case DW_OP_lit24:
21113         case DW_OP_lit25:
21114         case DW_OP_lit26:
21115         case DW_OP_lit27:
21116         case DW_OP_lit28:
21117         case DW_OP_lit29:
21118         case DW_OP_lit30:
21119         case DW_OP_lit31:
21120           stack[++stacki] = op - DW_OP_lit0;
21121           break;
21122
21123         case DW_OP_reg0:
21124         case DW_OP_reg1:
21125         case DW_OP_reg2:
21126         case DW_OP_reg3:
21127         case DW_OP_reg4:
21128         case DW_OP_reg5:
21129         case DW_OP_reg6:
21130         case DW_OP_reg7:
21131         case DW_OP_reg8:
21132         case DW_OP_reg9:
21133         case DW_OP_reg10:
21134         case DW_OP_reg11:
21135         case DW_OP_reg12:
21136         case DW_OP_reg13:
21137         case DW_OP_reg14:
21138         case DW_OP_reg15:
21139         case DW_OP_reg16:
21140         case DW_OP_reg17:
21141         case DW_OP_reg18:
21142         case DW_OP_reg19:
21143         case DW_OP_reg20:
21144         case DW_OP_reg21:
21145         case DW_OP_reg22:
21146         case DW_OP_reg23:
21147         case DW_OP_reg24:
21148         case DW_OP_reg25:
21149         case DW_OP_reg26:
21150         case DW_OP_reg27:
21151         case DW_OP_reg28:
21152         case DW_OP_reg29:
21153         case DW_OP_reg30:
21154         case DW_OP_reg31:
21155           stack[++stacki] = op - DW_OP_reg0;
21156           if (i < size)
21157             dwarf2_complex_location_expr_complaint ();
21158           break;
21159
21160         case DW_OP_regx:
21161           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
21162           i += bytes_read;
21163           stack[++stacki] = unsnd;
21164           if (i < size)
21165             dwarf2_complex_location_expr_complaint ();
21166           break;
21167
21168         case DW_OP_addr:
21169           stack[++stacki] = read_address (objfile->obfd, &data[i],
21170                                           cu, &bytes_read);
21171           i += bytes_read;
21172           break;
21173
21174         case DW_OP_const1u:
21175           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
21176           i += 1;
21177           break;
21178
21179         case DW_OP_const1s:
21180           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
21181           i += 1;
21182           break;
21183
21184         case DW_OP_const2u:
21185           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
21186           i += 2;
21187           break;
21188
21189         case DW_OP_const2s:
21190           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
21191           i += 2;
21192           break;
21193
21194         case DW_OP_const4u:
21195           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
21196           i += 4;
21197           break;
21198
21199         case DW_OP_const4s:
21200           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
21201           i += 4;
21202           break;
21203
21204         case DW_OP_const8u:
21205           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
21206           i += 8;
21207           break;
21208
21209         case DW_OP_constu:
21210           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
21211                                                   &bytes_read);
21212           i += bytes_read;
21213           break;
21214
21215         case DW_OP_consts:
21216           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
21217           i += bytes_read;
21218           break;
21219
21220         case DW_OP_dup:
21221           stack[stacki + 1] = stack[stacki];
21222           stacki++;
21223           break;
21224
21225         case DW_OP_plus:
21226           stack[stacki - 1] += stack[stacki];
21227           stacki--;
21228           break;
21229
21230         case DW_OP_plus_uconst:
21231           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
21232                                                  &bytes_read);
21233           i += bytes_read;
21234           break;
21235
21236         case DW_OP_minus:
21237           stack[stacki - 1] -= stack[stacki];
21238           stacki--;
21239           break;
21240
21241         case DW_OP_deref:
21242           /* If we're not the last op, then we definitely can't encode
21243              this using GDB's address_class enum.  This is valid for partial
21244              global symbols, although the variable's address will be bogus
21245              in the psymtab.  */
21246           if (i < size)
21247             dwarf2_complex_location_expr_complaint ();
21248           break;
21249
21250         case DW_OP_GNU_push_tls_address:
21251         case DW_OP_form_tls_address:
21252           /* The top of the stack has the offset from the beginning
21253              of the thread control block at which the variable is located.  */
21254           /* Nothing should follow this operator, so the top of stack would
21255              be returned.  */
21256           /* This is valid for partial global symbols, but the variable's
21257              address will be bogus in the psymtab.  Make it always at least
21258              non-zero to not look as a variable garbage collected by linker
21259              which have DW_OP_addr 0.  */
21260           if (i < size)
21261             dwarf2_complex_location_expr_complaint ();
21262           stack[stacki]++;
21263           break;
21264
21265         case DW_OP_GNU_uninit:
21266           break;
21267
21268         case DW_OP_GNU_addr_index:
21269         case DW_OP_GNU_const_index:
21270           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
21271                                                          &bytes_read);
21272           i += bytes_read;
21273           break;
21274
21275         default:
21276           {
21277             const char *name = get_DW_OP_name (op);
21278
21279             if (name)
21280               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
21281                          name);
21282             else
21283               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
21284                          op);
21285           }
21286
21287           return (stack[stacki]);
21288         }
21289
21290       /* Enforce maximum stack depth of SIZE-1 to avoid writing
21291          outside of the allocated space.  Also enforce minimum>0.  */
21292       if (stacki >= ARRAY_SIZE (stack) - 1)
21293         {
21294           complaint (&symfile_complaints,
21295                      _("location description stack overflow"));
21296           return 0;
21297         }
21298
21299       if (stacki <= 0)
21300         {
21301           complaint (&symfile_complaints,
21302                      _("location description stack underflow"));
21303           return 0;
21304         }
21305     }
21306   return (stack[stacki]);
21307 }
21308
21309 /* memory allocation interface */
21310
21311 static struct dwarf_block *
21312 dwarf_alloc_block (struct dwarf2_cu *cu)
21313 {
21314   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
21315 }
21316
21317 static struct die_info *
21318 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
21319 {
21320   struct die_info *die;
21321   size_t size = sizeof (struct die_info);
21322
21323   if (num_attrs > 1)
21324     size += (num_attrs - 1) * sizeof (struct attribute);
21325
21326   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
21327   memset (die, 0, sizeof (struct die_info));
21328   return (die);
21329 }
21330
21331 \f
21332 /* Macro support.  */
21333
21334 /* Return file name relative to the compilation directory of file number I in
21335    *LH's file name table.  The result is allocated using xmalloc; the caller is
21336    responsible for freeing it.  */
21337
21338 static char *
21339 file_file_name (int file, struct line_header *lh)
21340 {
21341   /* Is the file number a valid index into the line header's file name
21342      table?  Remember that file numbers start with one, not zero.  */
21343   if (1 <= file && file <= lh->num_file_names)
21344     {
21345       struct file_entry *fe = &lh->file_names[file - 1];
21346
21347       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
21348           || lh->include_dirs == NULL)
21349         return xstrdup (fe->name);
21350       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
21351                      fe->name, (char *) NULL);
21352     }
21353   else
21354     {
21355       /* The compiler produced a bogus file number.  We can at least
21356          record the macro definitions made in the file, even if we
21357          won't be able to find the file by name.  */
21358       char fake_name[80];
21359
21360       xsnprintf (fake_name, sizeof (fake_name),
21361                  "<bad macro file number %d>", file);
21362
21363       complaint (&symfile_complaints,
21364                  _("bad file number in macro information (%d)"),
21365                  file);
21366
21367       return xstrdup (fake_name);
21368     }
21369 }
21370
21371 /* Return the full name of file number I in *LH's file name table.
21372    Use COMP_DIR as the name of the current directory of the
21373    compilation.  The result is allocated using xmalloc; the caller is
21374    responsible for freeing it.  */
21375 static char *
21376 file_full_name (int file, struct line_header *lh, const char *comp_dir)
21377 {
21378   /* Is the file number a valid index into the line header's file name
21379      table?  Remember that file numbers start with one, not zero.  */
21380   if (1 <= file && file <= lh->num_file_names)
21381     {
21382       char *relative = file_file_name (file, lh);
21383
21384       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
21385         return relative;
21386       return reconcat (relative, comp_dir, SLASH_STRING,
21387                        relative, (char *) NULL);
21388     }
21389   else
21390     return file_file_name (file, lh);
21391 }
21392
21393
21394 static struct macro_source_file *
21395 macro_start_file (int file, int line,
21396                   struct macro_source_file *current_file,
21397                   struct line_header *lh)
21398 {
21399   /* File name relative to the compilation directory of this source file.  */
21400   char *file_name = file_file_name (file, lh);
21401
21402   if (! current_file)
21403     {
21404       /* Note: We don't create a macro table for this compilation unit
21405          at all until we actually get a filename.  */
21406       struct macro_table *macro_table = get_macro_table ();
21407
21408       /* If we have no current file, then this must be the start_file
21409          directive for the compilation unit's main source file.  */
21410       current_file = macro_set_main (macro_table, file_name);
21411       macro_define_special (macro_table);
21412     }
21413   else
21414     current_file = macro_include (current_file, line, file_name);
21415
21416   xfree (file_name);
21417
21418   return current_file;
21419 }
21420
21421
21422 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
21423    followed by a null byte.  */
21424 static char *
21425 copy_string (const char *buf, int len)
21426 {
21427   char *s = (char *) xmalloc (len + 1);
21428
21429   memcpy (s, buf, len);
21430   s[len] = '\0';
21431   return s;
21432 }
21433
21434
21435 static const char *
21436 consume_improper_spaces (const char *p, const char *body)
21437 {
21438   if (*p == ' ')
21439     {
21440       complaint (&symfile_complaints,
21441                  _("macro definition contains spaces "
21442                    "in formal argument list:\n`%s'"),
21443                  body);
21444
21445       while (*p == ' ')
21446         p++;
21447     }
21448
21449   return p;
21450 }
21451
21452
21453 static void
21454 parse_macro_definition (struct macro_source_file *file, int line,
21455                         const char *body)
21456 {
21457   const char *p;
21458
21459   /* The body string takes one of two forms.  For object-like macro
21460      definitions, it should be:
21461
21462         <macro name> " " <definition>
21463
21464      For function-like macro definitions, it should be:
21465
21466         <macro name> "() " <definition>
21467      or
21468         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
21469
21470      Spaces may appear only where explicitly indicated, and in the
21471      <definition>.
21472
21473      The Dwarf 2 spec says that an object-like macro's name is always
21474      followed by a space, but versions of GCC around March 2002 omit
21475      the space when the macro's definition is the empty string.
21476
21477      The Dwarf 2 spec says that there should be no spaces between the
21478      formal arguments in a function-like macro's formal argument list,
21479      but versions of GCC around March 2002 include spaces after the
21480      commas.  */
21481
21482
21483   /* Find the extent of the macro name.  The macro name is terminated
21484      by either a space or null character (for an object-like macro) or
21485      an opening paren (for a function-like macro).  */
21486   for (p = body; *p; p++)
21487     if (*p == ' ' || *p == '(')
21488       break;
21489
21490   if (*p == ' ' || *p == '\0')
21491     {
21492       /* It's an object-like macro.  */
21493       int name_len = p - body;
21494       char *name = copy_string (body, name_len);
21495       const char *replacement;
21496
21497       if (*p == ' ')
21498         replacement = body + name_len + 1;
21499       else
21500         {
21501           dwarf2_macro_malformed_definition_complaint (body);
21502           replacement = body + name_len;
21503         }
21504
21505       macro_define_object (file, line, name, replacement);
21506
21507       xfree (name);
21508     }
21509   else if (*p == '(')
21510     {
21511       /* It's a function-like macro.  */
21512       char *name = copy_string (body, p - body);
21513       int argc = 0;
21514       int argv_size = 1;
21515       char **argv = XNEWVEC (char *, argv_size);
21516
21517       p++;
21518
21519       p = consume_improper_spaces (p, body);
21520
21521       /* Parse the formal argument list.  */
21522       while (*p && *p != ')')
21523         {
21524           /* Find the extent of the current argument name.  */
21525           const char *arg_start = p;
21526
21527           while (*p && *p != ',' && *p != ')' && *p != ' ')
21528             p++;
21529
21530           if (! *p || p == arg_start)
21531             dwarf2_macro_malformed_definition_complaint (body);
21532           else
21533             {
21534               /* Make sure argv has room for the new argument.  */
21535               if (argc >= argv_size)
21536                 {
21537                   argv_size *= 2;
21538                   argv = XRESIZEVEC (char *, argv, argv_size);
21539                 }
21540
21541               argv[argc++] = copy_string (arg_start, p - arg_start);
21542             }
21543
21544           p = consume_improper_spaces (p, body);
21545
21546           /* Consume the comma, if present.  */
21547           if (*p == ',')
21548             {
21549               p++;
21550
21551               p = consume_improper_spaces (p, body);
21552             }
21553         }
21554
21555       if (*p == ')')
21556         {
21557           p++;
21558
21559           if (*p == ' ')
21560             /* Perfectly formed definition, no complaints.  */
21561             macro_define_function (file, line, name,
21562                                    argc, (const char **) argv,
21563                                    p + 1);
21564           else if (*p == '\0')
21565             {
21566               /* Complain, but do define it.  */
21567               dwarf2_macro_malformed_definition_complaint (body);
21568               macro_define_function (file, line, name,
21569                                      argc, (const char **) argv,
21570                                      p);
21571             }
21572           else
21573             /* Just complain.  */
21574             dwarf2_macro_malformed_definition_complaint (body);
21575         }
21576       else
21577         /* Just complain.  */
21578         dwarf2_macro_malformed_definition_complaint (body);
21579
21580       xfree (name);
21581       {
21582         int i;
21583
21584         for (i = 0; i < argc; i++)
21585           xfree (argv[i]);
21586       }
21587       xfree (argv);
21588     }
21589   else
21590     dwarf2_macro_malformed_definition_complaint (body);
21591 }
21592
21593 /* Skip some bytes from BYTES according to the form given in FORM.
21594    Returns the new pointer.  */
21595
21596 static const gdb_byte *
21597 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
21598                  enum dwarf_form form,
21599                  unsigned int offset_size,
21600                  struct dwarf2_section_info *section)
21601 {
21602   unsigned int bytes_read;
21603
21604   switch (form)
21605     {
21606     case DW_FORM_data1:
21607     case DW_FORM_flag:
21608       ++bytes;
21609       break;
21610
21611     case DW_FORM_data2:
21612       bytes += 2;
21613       break;
21614
21615     case DW_FORM_data4:
21616       bytes += 4;
21617       break;
21618
21619     case DW_FORM_data8:
21620       bytes += 8;
21621       break;
21622
21623     case DW_FORM_data16:
21624       bytes += 16;
21625       break;
21626
21627     case DW_FORM_string:
21628       read_direct_string (abfd, bytes, &bytes_read);
21629       bytes += bytes_read;
21630       break;
21631
21632     case DW_FORM_sec_offset:
21633     case DW_FORM_strp:
21634     case DW_FORM_GNU_strp_alt:
21635       bytes += offset_size;
21636       break;
21637
21638     case DW_FORM_block:
21639       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21640       bytes += bytes_read;
21641       break;
21642
21643     case DW_FORM_block1:
21644       bytes += 1 + read_1_byte (abfd, bytes);
21645       break;
21646     case DW_FORM_block2:
21647       bytes += 2 + read_2_bytes (abfd, bytes);
21648       break;
21649     case DW_FORM_block4:
21650       bytes += 4 + read_4_bytes (abfd, bytes);
21651       break;
21652
21653     case DW_FORM_sdata:
21654     case DW_FORM_udata:
21655     case DW_FORM_GNU_addr_index:
21656     case DW_FORM_GNU_str_index:
21657       bytes = gdb_skip_leb128 (bytes, buffer_end);
21658       if (bytes == NULL)
21659         {
21660           dwarf2_section_buffer_overflow_complaint (section);
21661           return NULL;
21662         }
21663       break;
21664
21665     default:
21666       {
21667       complain:
21668         complaint (&symfile_complaints,
21669                    _("invalid form 0x%x in `%s'"),
21670                    form, get_section_name (section));
21671         return NULL;
21672       }
21673     }
21674
21675   return bytes;
21676 }
21677
21678 /* A helper for dwarf_decode_macros that handles skipping an unknown
21679    opcode.  Returns an updated pointer to the macro data buffer; or,
21680    on error, issues a complaint and returns NULL.  */
21681
21682 static const gdb_byte *
21683 skip_unknown_opcode (unsigned int opcode,
21684                      const gdb_byte **opcode_definitions,
21685                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
21686                      bfd *abfd,
21687                      unsigned int offset_size,
21688                      struct dwarf2_section_info *section)
21689 {
21690   unsigned int bytes_read, i;
21691   unsigned long arg;
21692   const gdb_byte *defn;
21693
21694   if (opcode_definitions[opcode] == NULL)
21695     {
21696       complaint (&symfile_complaints,
21697                  _("unrecognized DW_MACFINO opcode 0x%x"),
21698                  opcode);
21699       return NULL;
21700     }
21701
21702   defn = opcode_definitions[opcode];
21703   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21704   defn += bytes_read;
21705
21706   for (i = 0; i < arg; ++i)
21707     {
21708       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
21709                                  (enum dwarf_form) defn[i], offset_size,
21710                                  section);
21711       if (mac_ptr == NULL)
21712         {
21713           /* skip_form_bytes already issued the complaint.  */
21714           return NULL;
21715         }
21716     }
21717
21718   return mac_ptr;
21719 }
21720
21721 /* A helper function which parses the header of a macro section.
21722    If the macro section is the extended (for now called "GNU") type,
21723    then this updates *OFFSET_SIZE.  Returns a pointer to just after
21724    the header, or issues a complaint and returns NULL on error.  */
21725
21726 static const gdb_byte *
21727 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
21728                           bfd *abfd,
21729                           const gdb_byte *mac_ptr,
21730                           unsigned int *offset_size,
21731                           int section_is_gnu)
21732 {
21733   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
21734
21735   if (section_is_gnu)
21736     {
21737       unsigned int version, flags;
21738
21739       version = read_2_bytes (abfd, mac_ptr);
21740       if (version != 4 && version != 5)
21741         {
21742           complaint (&symfile_complaints,
21743                      _("unrecognized version `%d' in .debug_macro section"),
21744                      version);
21745           return NULL;
21746         }
21747       mac_ptr += 2;
21748
21749       flags = read_1_byte (abfd, mac_ptr);
21750       ++mac_ptr;
21751       *offset_size = (flags & 1) ? 8 : 4;
21752
21753       if ((flags & 2) != 0)
21754         /* We don't need the line table offset.  */
21755         mac_ptr += *offset_size;
21756
21757       /* Vendor opcode descriptions.  */
21758       if ((flags & 4) != 0)
21759         {
21760           unsigned int i, count;
21761
21762           count = read_1_byte (abfd, mac_ptr);
21763           ++mac_ptr;
21764           for (i = 0; i < count; ++i)
21765             {
21766               unsigned int opcode, bytes_read;
21767               unsigned long arg;
21768
21769               opcode = read_1_byte (abfd, mac_ptr);
21770               ++mac_ptr;
21771               opcode_definitions[opcode] = mac_ptr;
21772               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21773               mac_ptr += bytes_read;
21774               mac_ptr += arg;
21775             }
21776         }
21777     }
21778
21779   return mac_ptr;
21780 }
21781
21782 /* A helper for dwarf_decode_macros that handles the GNU extensions,
21783    including DW_MACRO_import.  */
21784
21785 static void
21786 dwarf_decode_macro_bytes (bfd *abfd,
21787                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
21788                           struct macro_source_file *current_file,
21789                           struct line_header *lh,
21790                           struct dwarf2_section_info *section,
21791                           int section_is_gnu, int section_is_dwz,
21792                           unsigned int offset_size,
21793                           htab_t include_hash)
21794 {
21795   struct objfile *objfile = dwarf2_per_objfile->objfile;
21796   enum dwarf_macro_record_type macinfo_type;
21797   int at_commandline;
21798   const gdb_byte *opcode_definitions[256];
21799
21800   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21801                                       &offset_size, section_is_gnu);
21802   if (mac_ptr == NULL)
21803     {
21804       /* We already issued a complaint.  */
21805       return;
21806     }
21807
21808   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
21809      GDB is still reading the definitions from command line.  First
21810      DW_MACINFO_start_file will need to be ignored as it was already executed
21811      to create CURRENT_FILE for the main source holding also the command line
21812      definitions.  On first met DW_MACINFO_start_file this flag is reset to
21813      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
21814
21815   at_commandline = 1;
21816
21817   do
21818     {
21819       /* Do we at least have room for a macinfo type byte?  */
21820       if (mac_ptr >= mac_end)
21821         {
21822           dwarf2_section_buffer_overflow_complaint (section);
21823           break;
21824         }
21825
21826       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
21827       mac_ptr++;
21828
21829       /* Note that we rely on the fact that the corresponding GNU and
21830          DWARF constants are the same.  */
21831       switch (macinfo_type)
21832         {
21833           /* A zero macinfo type indicates the end of the macro
21834              information.  */
21835         case 0:
21836           break;
21837
21838         case DW_MACRO_define:
21839         case DW_MACRO_undef:
21840         case DW_MACRO_define_strp:
21841         case DW_MACRO_undef_strp:
21842         case DW_MACRO_define_sup:
21843         case DW_MACRO_undef_sup:
21844           {
21845             unsigned int bytes_read;
21846             int line;
21847             const char *body;
21848             int is_define;
21849
21850             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21851             mac_ptr += bytes_read;
21852
21853             if (macinfo_type == DW_MACRO_define
21854                 || macinfo_type == DW_MACRO_undef)
21855               {
21856                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21857                 mac_ptr += bytes_read;
21858               }
21859             else
21860               {
21861                 LONGEST str_offset;
21862
21863                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21864                 mac_ptr += offset_size;
21865
21866                 if (macinfo_type == DW_MACRO_define_sup
21867                     || macinfo_type == DW_MACRO_undef_sup
21868                     || section_is_dwz)
21869                   {
21870                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
21871
21872                     body = read_indirect_string_from_dwz (dwz, str_offset);
21873                   }
21874                 else
21875                   body = read_indirect_string_at_offset (abfd, str_offset);
21876               }
21877
21878             is_define = (macinfo_type == DW_MACRO_define
21879                          || macinfo_type == DW_MACRO_define_strp
21880                          || macinfo_type == DW_MACRO_define_sup);
21881             if (! current_file)
21882               {
21883                 /* DWARF violation as no main source is present.  */
21884                 complaint (&symfile_complaints,
21885                            _("debug info with no main source gives macro %s "
21886                              "on line %d: %s"),
21887                            is_define ? _("definition") : _("undefinition"),
21888                            line, body);
21889                 break;
21890               }
21891             if ((line == 0 && !at_commandline)
21892                 || (line != 0 && at_commandline))
21893               complaint (&symfile_complaints,
21894                          _("debug info gives %s macro %s with %s line %d: %s"),
21895                          at_commandline ? _("command-line") : _("in-file"),
21896                          is_define ? _("definition") : _("undefinition"),
21897                          line == 0 ? _("zero") : _("non-zero"), line, body);
21898
21899             if (is_define)
21900               parse_macro_definition (current_file, line, body);
21901             else
21902               {
21903                 gdb_assert (macinfo_type == DW_MACRO_undef
21904                             || macinfo_type == DW_MACRO_undef_strp
21905                             || macinfo_type == DW_MACRO_undef_sup);
21906                 macro_undef (current_file, line, body);
21907               }
21908           }
21909           break;
21910
21911         case DW_MACRO_start_file:
21912           {
21913             unsigned int bytes_read;
21914             int line, file;
21915
21916             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21917             mac_ptr += bytes_read;
21918             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21919             mac_ptr += bytes_read;
21920
21921             if ((line == 0 && !at_commandline)
21922                 || (line != 0 && at_commandline))
21923               complaint (&symfile_complaints,
21924                          _("debug info gives source %d included "
21925                            "from %s at %s line %d"),
21926                          file, at_commandline ? _("command-line") : _("file"),
21927                          line == 0 ? _("zero") : _("non-zero"), line);
21928
21929             if (at_commandline)
21930               {
21931                 /* This DW_MACRO_start_file was executed in the
21932                    pass one.  */
21933                 at_commandline = 0;
21934               }
21935             else
21936               current_file = macro_start_file (file, line, current_file, lh);
21937           }
21938           break;
21939
21940         case DW_MACRO_end_file:
21941           if (! current_file)
21942             complaint (&symfile_complaints,
21943                        _("macro debug info has an unmatched "
21944                          "`close_file' directive"));
21945           else
21946             {
21947               current_file = current_file->included_by;
21948               if (! current_file)
21949                 {
21950                   enum dwarf_macro_record_type next_type;
21951
21952                   /* GCC circa March 2002 doesn't produce the zero
21953                      type byte marking the end of the compilation
21954                      unit.  Complain if it's not there, but exit no
21955                      matter what.  */
21956
21957                   /* Do we at least have room for a macinfo type byte?  */
21958                   if (mac_ptr >= mac_end)
21959                     {
21960                       dwarf2_section_buffer_overflow_complaint (section);
21961                       return;
21962                     }
21963
21964                   /* We don't increment mac_ptr here, so this is just
21965                      a look-ahead.  */
21966                   next_type
21967                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
21968                                                                   mac_ptr);
21969                   if (next_type != 0)
21970                     complaint (&symfile_complaints,
21971                                _("no terminating 0-type entry for "
21972                                  "macros in `.debug_macinfo' section"));
21973
21974                   return;
21975                 }
21976             }
21977           break;
21978
21979         case DW_MACRO_import:
21980         case DW_MACRO_import_sup:
21981           {
21982             LONGEST offset;
21983             void **slot;
21984             bfd *include_bfd = abfd;
21985             struct dwarf2_section_info *include_section = section;
21986             const gdb_byte *include_mac_end = mac_end;
21987             int is_dwz = section_is_dwz;
21988             const gdb_byte *new_mac_ptr;
21989
21990             offset = read_offset_1 (abfd, mac_ptr, offset_size);
21991             mac_ptr += offset_size;
21992
21993             if (macinfo_type == DW_MACRO_import_sup)
21994               {
21995                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21996
21997                 dwarf2_read_section (objfile, &dwz->macro);
21998
21999                 include_section = &dwz->macro;
22000                 include_bfd = get_section_bfd_owner (include_section);
22001                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
22002                 is_dwz = 1;
22003               }
22004
22005             new_mac_ptr = include_section->buffer + offset;
22006             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
22007
22008             if (*slot != NULL)
22009               {
22010                 /* This has actually happened; see
22011                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
22012                 complaint (&symfile_complaints,
22013                            _("recursive DW_MACRO_import in "
22014                              ".debug_macro section"));
22015               }
22016             else
22017               {
22018                 *slot = (void *) new_mac_ptr;
22019
22020                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
22021                                           include_mac_end, current_file, lh,
22022                                           section, section_is_gnu, is_dwz,
22023                                           offset_size, include_hash);
22024
22025                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
22026               }
22027           }
22028           break;
22029
22030         case DW_MACINFO_vendor_ext:
22031           if (!section_is_gnu)
22032             {
22033               unsigned int bytes_read;
22034
22035               /* This reads the constant, but since we don't recognize
22036                  any vendor extensions, we ignore it.  */
22037               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
22038               mac_ptr += bytes_read;
22039               read_direct_string (abfd, mac_ptr, &bytes_read);
22040               mac_ptr += bytes_read;
22041
22042               /* We don't recognize any vendor extensions.  */
22043               break;
22044             }
22045           /* FALLTHROUGH */
22046
22047         default:
22048           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
22049                                          mac_ptr, mac_end, abfd, offset_size,
22050                                          section);
22051           if (mac_ptr == NULL)
22052             return;
22053           break;
22054         }
22055     } while (macinfo_type != 0);
22056 }
22057
22058 static void
22059 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
22060                      int section_is_gnu)
22061 {
22062   struct objfile *objfile = dwarf2_per_objfile->objfile;
22063   struct line_header *lh = cu->line_header;
22064   bfd *abfd;
22065   const gdb_byte *mac_ptr, *mac_end;
22066   struct macro_source_file *current_file = 0;
22067   enum dwarf_macro_record_type macinfo_type;
22068   unsigned int offset_size = cu->header.offset_size;
22069   const gdb_byte *opcode_definitions[256];
22070   struct cleanup *cleanup;
22071   void **slot;
22072   struct dwarf2_section_info *section;
22073   const char *section_name;
22074
22075   if (cu->dwo_unit != NULL)
22076     {
22077       if (section_is_gnu)
22078         {
22079           section = &cu->dwo_unit->dwo_file->sections.macro;
22080           section_name = ".debug_macro.dwo";
22081         }
22082       else
22083         {
22084           section = &cu->dwo_unit->dwo_file->sections.macinfo;
22085           section_name = ".debug_macinfo.dwo";
22086         }
22087     }
22088   else
22089     {
22090       if (section_is_gnu)
22091         {
22092           section = &dwarf2_per_objfile->macro;
22093           section_name = ".debug_macro";
22094         }
22095       else
22096         {
22097           section = &dwarf2_per_objfile->macinfo;
22098           section_name = ".debug_macinfo";
22099         }
22100     }
22101
22102   dwarf2_read_section (objfile, section);
22103   if (section->buffer == NULL)
22104     {
22105       complaint (&symfile_complaints, _("missing %s section"), section_name);
22106       return;
22107     }
22108   abfd = get_section_bfd_owner (section);
22109
22110   /* First pass: Find the name of the base filename.
22111      This filename is needed in order to process all macros whose definition
22112      (or undefinition) comes from the command line.  These macros are defined
22113      before the first DW_MACINFO_start_file entry, and yet still need to be
22114      associated to the base file.
22115
22116      To determine the base file name, we scan the macro definitions until we
22117      reach the first DW_MACINFO_start_file entry.  We then initialize
22118      CURRENT_FILE accordingly so that any macro definition found before the
22119      first DW_MACINFO_start_file can still be associated to the base file.  */
22120
22121   mac_ptr = section->buffer + offset;
22122   mac_end = section->buffer + section->size;
22123
22124   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
22125                                       &offset_size, section_is_gnu);
22126   if (mac_ptr == NULL)
22127     {
22128       /* We already issued a complaint.  */
22129       return;
22130     }
22131
22132   do
22133     {
22134       /* Do we at least have room for a macinfo type byte?  */
22135       if (mac_ptr >= mac_end)
22136         {
22137           /* Complaint is printed during the second pass as GDB will probably
22138              stop the first pass earlier upon finding
22139              DW_MACINFO_start_file.  */
22140           break;
22141         }
22142
22143       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
22144       mac_ptr++;
22145
22146       /* Note that we rely on the fact that the corresponding GNU and
22147          DWARF constants are the same.  */
22148       switch (macinfo_type)
22149         {
22150           /* A zero macinfo type indicates the end of the macro
22151              information.  */
22152         case 0:
22153           break;
22154
22155         case DW_MACRO_define:
22156         case DW_MACRO_undef:
22157           /* Only skip the data by MAC_PTR.  */
22158           {
22159             unsigned int bytes_read;
22160
22161             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
22162             mac_ptr += bytes_read;
22163             read_direct_string (abfd, mac_ptr, &bytes_read);
22164             mac_ptr += bytes_read;
22165           }
22166           break;
22167
22168         case DW_MACRO_start_file:
22169           {
22170             unsigned int bytes_read;
22171             int line, file;
22172
22173             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
22174             mac_ptr += bytes_read;
22175             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
22176             mac_ptr += bytes_read;
22177
22178             current_file = macro_start_file (file, line, current_file, lh);
22179           }
22180           break;
22181
22182         case DW_MACRO_end_file:
22183           /* No data to skip by MAC_PTR.  */
22184           break;
22185
22186         case DW_MACRO_define_strp:
22187         case DW_MACRO_undef_strp:
22188         case DW_MACRO_define_sup:
22189         case DW_MACRO_undef_sup:
22190           {
22191             unsigned int bytes_read;
22192
22193             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
22194             mac_ptr += bytes_read;
22195             mac_ptr += offset_size;
22196           }
22197           break;
22198
22199         case DW_MACRO_import:
22200         case DW_MACRO_import_sup:
22201           /* Note that, according to the spec, a transparent include
22202              chain cannot call DW_MACRO_start_file.  So, we can just
22203              skip this opcode.  */
22204           mac_ptr += offset_size;
22205           break;
22206
22207         case DW_MACINFO_vendor_ext:
22208           /* Only skip the data by MAC_PTR.  */
22209           if (!section_is_gnu)
22210             {
22211               unsigned int bytes_read;
22212
22213               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
22214               mac_ptr += bytes_read;
22215               read_direct_string (abfd, mac_ptr, &bytes_read);
22216               mac_ptr += bytes_read;
22217             }
22218           /* FALLTHROUGH */
22219
22220         default:
22221           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
22222                                          mac_ptr, mac_end, abfd, offset_size,
22223                                          section);
22224           if (mac_ptr == NULL)
22225             return;
22226           break;
22227         }
22228     } while (macinfo_type != 0 && current_file == NULL);
22229
22230   /* Second pass: Process all entries.
22231
22232      Use the AT_COMMAND_LINE flag to determine whether we are still processing
22233      command-line macro definitions/undefinitions.  This flag is unset when we
22234      reach the first DW_MACINFO_start_file entry.  */
22235
22236   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
22237                                            htab_eq_pointer,
22238                                            NULL, xcalloc, xfree));
22239   mac_ptr = section->buffer + offset;
22240   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
22241   *slot = (void *) mac_ptr;
22242   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
22243                             current_file, lh, section,
22244                             section_is_gnu, 0, offset_size,
22245                             include_hash.get ());
22246 }
22247
22248 /* Check if the attribute's form is a DW_FORM_block*
22249    if so return true else false.  */
22250
22251 static int
22252 attr_form_is_block (const struct attribute *attr)
22253 {
22254   return (attr == NULL ? 0 :
22255       attr->form == DW_FORM_block1
22256       || attr->form == DW_FORM_block2
22257       || attr->form == DW_FORM_block4
22258       || attr->form == DW_FORM_block
22259       || attr->form == DW_FORM_exprloc);
22260 }
22261
22262 /* Return non-zero if ATTR's value is a section offset --- classes
22263    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
22264    You may use DW_UNSND (attr) to retrieve such offsets.
22265
22266    Section 7.5.4, "Attribute Encodings", explains that no attribute
22267    may have a value that belongs to more than one of these classes; it
22268    would be ambiguous if we did, because we use the same forms for all
22269    of them.  */
22270
22271 static int
22272 attr_form_is_section_offset (const struct attribute *attr)
22273 {
22274   return (attr->form == DW_FORM_data4
22275           || attr->form == DW_FORM_data8
22276           || attr->form == DW_FORM_sec_offset);
22277 }
22278
22279 /* Return non-zero if ATTR's value falls in the 'constant' class, or
22280    zero otherwise.  When this function returns true, you can apply
22281    dwarf2_get_attr_constant_value to it.
22282
22283    However, note that for some attributes you must check
22284    attr_form_is_section_offset before using this test.  DW_FORM_data4
22285    and DW_FORM_data8 are members of both the constant class, and of
22286    the classes that contain offsets into other debug sections
22287    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
22288    that, if an attribute's can be either a constant or one of the
22289    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
22290    taken as section offsets, not constants.
22291
22292    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
22293    cannot handle that.  */
22294
22295 static int
22296 attr_form_is_constant (const struct attribute *attr)
22297 {
22298   switch (attr->form)
22299     {
22300     case DW_FORM_sdata:
22301     case DW_FORM_udata:
22302     case DW_FORM_data1:
22303     case DW_FORM_data2:
22304     case DW_FORM_data4:
22305     case DW_FORM_data8:
22306       return 1;
22307     default:
22308       return 0;
22309     }
22310 }
22311
22312
22313 /* DW_ADDR is always stored already as sect_offset; despite for the forms
22314    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
22315
22316 static int
22317 attr_form_is_ref (const struct attribute *attr)
22318 {
22319   switch (attr->form)
22320     {
22321     case DW_FORM_ref_addr:
22322     case DW_FORM_ref1:
22323     case DW_FORM_ref2:
22324     case DW_FORM_ref4:
22325     case DW_FORM_ref8:
22326     case DW_FORM_ref_udata:
22327     case DW_FORM_GNU_ref_alt:
22328       return 1;
22329     default:
22330       return 0;
22331     }
22332 }
22333
22334 /* Return the .debug_loc section to use for CU.
22335    For DWO files use .debug_loc.dwo.  */
22336
22337 static struct dwarf2_section_info *
22338 cu_debug_loc_section (struct dwarf2_cu *cu)
22339 {
22340   if (cu->dwo_unit)
22341     {
22342       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
22343       
22344       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
22345     }
22346   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
22347                                   : &dwarf2_per_objfile->loc);
22348 }
22349
22350 /* A helper function that fills in a dwarf2_loclist_baton.  */
22351
22352 static void
22353 fill_in_loclist_baton (struct dwarf2_cu *cu,
22354                        struct dwarf2_loclist_baton *baton,
22355                        const struct attribute *attr)
22356 {
22357   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
22358
22359   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
22360
22361   baton->per_cu = cu->per_cu;
22362   gdb_assert (baton->per_cu);
22363   /* We don't know how long the location list is, but make sure we
22364      don't run off the edge of the section.  */
22365   baton->size = section->size - DW_UNSND (attr);
22366   baton->data = section->buffer + DW_UNSND (attr);
22367   baton->base_address = cu->base_address;
22368   baton->from_dwo = cu->dwo_unit != NULL;
22369 }
22370
22371 static void
22372 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
22373                              struct dwarf2_cu *cu, int is_block)
22374 {
22375   struct objfile *objfile = dwarf2_per_objfile->objfile;
22376   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
22377
22378   if (attr_form_is_section_offset (attr)
22379       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
22380          the section.  If so, fall through to the complaint in the
22381          other branch.  */
22382       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
22383     {
22384       struct dwarf2_loclist_baton *baton;
22385
22386       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
22387
22388       fill_in_loclist_baton (cu, baton, attr);
22389
22390       if (cu->base_known == 0)
22391         complaint (&symfile_complaints,
22392                    _("Location list used without "
22393                      "specifying the CU base address."));
22394
22395       SYMBOL_ACLASS_INDEX (sym) = (is_block
22396                                    ? dwarf2_loclist_block_index
22397                                    : dwarf2_loclist_index);
22398       SYMBOL_LOCATION_BATON (sym) = baton;
22399     }
22400   else
22401     {
22402       struct dwarf2_locexpr_baton *baton;
22403
22404       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
22405       baton->per_cu = cu->per_cu;
22406       gdb_assert (baton->per_cu);
22407
22408       if (attr_form_is_block (attr))
22409         {
22410           /* Note that we're just copying the block's data pointer
22411              here, not the actual data.  We're still pointing into the
22412              info_buffer for SYM's objfile; right now we never release
22413              that buffer, but when we do clean up properly this may
22414              need to change.  */
22415           baton->size = DW_BLOCK (attr)->size;
22416           baton->data = DW_BLOCK (attr)->data;
22417         }
22418       else
22419         {
22420           dwarf2_invalid_attrib_class_complaint ("location description",
22421                                                  SYMBOL_NATURAL_NAME (sym));
22422           baton->size = 0;
22423         }
22424
22425       SYMBOL_ACLASS_INDEX (sym) = (is_block
22426                                    ? dwarf2_locexpr_block_index
22427                                    : dwarf2_locexpr_index);
22428       SYMBOL_LOCATION_BATON (sym) = baton;
22429     }
22430 }
22431
22432 /* Return the OBJFILE associated with the compilation unit CU.  If CU
22433    came from a separate debuginfo file, then the master objfile is
22434    returned.  */
22435
22436 struct objfile *
22437 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
22438 {
22439   struct objfile *objfile = per_cu->objfile;
22440
22441   /* Return the master objfile, so that we can report and look up the
22442      correct file containing this variable.  */
22443   if (objfile->separate_debug_objfile_backlink)
22444     objfile = objfile->separate_debug_objfile_backlink;
22445
22446   return objfile;
22447 }
22448
22449 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
22450    (CU_HEADERP is unused in such case) or prepare a temporary copy at
22451    CU_HEADERP first.  */
22452
22453 static const struct comp_unit_head *
22454 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
22455                        struct dwarf2_per_cu_data *per_cu)
22456 {
22457   const gdb_byte *info_ptr;
22458
22459   if (per_cu->cu)
22460     return &per_cu->cu->header;
22461
22462   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
22463
22464   memset (cu_headerp, 0, sizeof (*cu_headerp));
22465   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
22466                        rcuh_kind::COMPILE);
22467
22468   return cu_headerp;
22469 }
22470
22471 /* Return the address size given in the compilation unit header for CU.  */
22472
22473 int
22474 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
22475 {
22476   struct comp_unit_head cu_header_local;
22477   const struct comp_unit_head *cu_headerp;
22478
22479   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
22480
22481   return cu_headerp->addr_size;
22482 }
22483
22484 /* Return the offset size given in the compilation unit header for CU.  */
22485
22486 int
22487 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
22488 {
22489   struct comp_unit_head cu_header_local;
22490   const struct comp_unit_head *cu_headerp;
22491
22492   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
22493
22494   return cu_headerp->offset_size;
22495 }
22496
22497 /* See its dwarf2loc.h declaration.  */
22498
22499 int
22500 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
22501 {
22502   struct comp_unit_head cu_header_local;
22503   const struct comp_unit_head *cu_headerp;
22504
22505   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
22506
22507   if (cu_headerp->version == 2)
22508     return cu_headerp->addr_size;
22509   else
22510     return cu_headerp->offset_size;
22511 }
22512
22513 /* Return the text offset of the CU.  The returned offset comes from
22514    this CU's objfile.  If this objfile came from a separate debuginfo
22515    file, then the offset may be different from the corresponding
22516    offset in the parent objfile.  */
22517
22518 CORE_ADDR
22519 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
22520 {
22521   struct objfile *objfile = per_cu->objfile;
22522
22523   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22524 }
22525
22526 /* Return DWARF version number of PER_CU.  */
22527
22528 short
22529 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
22530 {
22531   return per_cu->dwarf_version;
22532 }
22533
22534 /* Locate the .debug_info compilation unit from CU's objfile which contains
22535    the DIE at OFFSET.  Raises an error on failure.  */
22536
22537 static struct dwarf2_per_cu_data *
22538 dwarf2_find_containing_comp_unit (sect_offset offset,
22539                                   unsigned int offset_in_dwz,
22540                                   struct objfile *objfile)
22541 {
22542   struct dwarf2_per_cu_data *this_cu;
22543   int low, high;
22544   const sect_offset *cu_off;
22545
22546   low = 0;
22547   high = dwarf2_per_objfile->n_comp_units - 1;
22548   while (high > low)
22549     {
22550       struct dwarf2_per_cu_data *mid_cu;
22551       int mid = low + (high - low) / 2;
22552
22553       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
22554       cu_off = &mid_cu->offset;
22555       if (mid_cu->is_dwz > offset_in_dwz
22556           || (mid_cu->is_dwz == offset_in_dwz
22557               && cu_off->sect_off >= offset.sect_off))
22558         high = mid;
22559       else
22560         low = mid + 1;
22561     }
22562   gdb_assert (low == high);
22563   this_cu = dwarf2_per_objfile->all_comp_units[low];
22564   cu_off = &this_cu->offset;
22565   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
22566     {
22567       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
22568         error (_("Dwarf Error: could not find partial DIE containing "
22569                "offset 0x%lx [in module %s]"),
22570                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
22571
22572       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22573                   <= offset.sect_off);
22574       return dwarf2_per_objfile->all_comp_units[low-1];
22575     }
22576   else
22577     {
22578       this_cu = dwarf2_per_objfile->all_comp_units[low];
22579       if (low == dwarf2_per_objfile->n_comp_units - 1
22580           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22581         error (_("invalid dwarf2 offset %u"), offset.sect_off);
22582       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
22583       return this_cu;
22584     }
22585 }
22586
22587 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
22588
22589 static void
22590 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
22591 {
22592   memset (cu, 0, sizeof (*cu));
22593   per_cu->cu = cu;
22594   cu->per_cu = per_cu;
22595   cu->objfile = per_cu->objfile;
22596   obstack_init (&cu->comp_unit_obstack);
22597 }
22598
22599 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
22600
22601 static void
22602 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22603                        enum language pretend_language)
22604 {
22605   struct attribute *attr;
22606
22607   /* Set the language we're debugging.  */
22608   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22609   if (attr)
22610     set_cu_language (DW_UNSND (attr), cu);
22611   else
22612     {
22613       cu->language = pretend_language;
22614       cu->language_defn = language_def (cu->language);
22615     }
22616
22617   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
22618 }
22619
22620 /* Release one cached compilation unit, CU.  We unlink it from the tree
22621    of compilation units, but we don't remove it from the read_in_chain;
22622    the caller is responsible for that.
22623    NOTE: DATA is a void * because this function is also used as a
22624    cleanup routine.  */
22625
22626 static void
22627 free_heap_comp_unit (void *data)
22628 {
22629   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
22630
22631   gdb_assert (cu->per_cu != NULL);
22632   cu->per_cu->cu = NULL;
22633   cu->per_cu = NULL;
22634
22635   obstack_free (&cu->comp_unit_obstack, NULL);
22636
22637   xfree (cu);
22638 }
22639
22640 /* This cleanup function is passed the address of a dwarf2_cu on the stack
22641    when we're finished with it.  We can't free the pointer itself, but be
22642    sure to unlink it from the cache.  Also release any associated storage.  */
22643
22644 static void
22645 free_stack_comp_unit (void *data)
22646 {
22647   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
22648
22649   gdb_assert (cu->per_cu != NULL);
22650   cu->per_cu->cu = NULL;
22651   cu->per_cu = NULL;
22652
22653   obstack_free (&cu->comp_unit_obstack, NULL);
22654   cu->partial_dies = NULL;
22655 }
22656
22657 /* Free all cached compilation units.  */
22658
22659 static void
22660 free_cached_comp_units (void *data)
22661 {
22662   struct dwarf2_per_cu_data *per_cu, **last_chain;
22663
22664   per_cu = dwarf2_per_objfile->read_in_chain;
22665   last_chain = &dwarf2_per_objfile->read_in_chain;
22666   while (per_cu != NULL)
22667     {
22668       struct dwarf2_per_cu_data *next_cu;
22669
22670       next_cu = per_cu->cu->read_in_chain;
22671
22672       free_heap_comp_unit (per_cu->cu);
22673       *last_chain = next_cu;
22674
22675       per_cu = next_cu;
22676     }
22677 }
22678
22679 /* Increase the age counter on each cached compilation unit, and free
22680    any that are too old.  */
22681
22682 static void
22683 age_cached_comp_units (void)
22684 {
22685   struct dwarf2_per_cu_data *per_cu, **last_chain;
22686
22687   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22688   per_cu = dwarf2_per_objfile->read_in_chain;
22689   while (per_cu != NULL)
22690     {
22691       per_cu->cu->last_used ++;
22692       if (per_cu->cu->last_used <= dwarf_max_cache_age)
22693         dwarf2_mark (per_cu->cu);
22694       per_cu = per_cu->cu->read_in_chain;
22695     }
22696
22697   per_cu = dwarf2_per_objfile->read_in_chain;
22698   last_chain = &dwarf2_per_objfile->read_in_chain;
22699   while (per_cu != NULL)
22700     {
22701       struct dwarf2_per_cu_data *next_cu;
22702
22703       next_cu = per_cu->cu->read_in_chain;
22704
22705       if (!per_cu->cu->mark)
22706         {
22707           free_heap_comp_unit (per_cu->cu);
22708           *last_chain = next_cu;
22709         }
22710       else
22711         last_chain = &per_cu->cu->read_in_chain;
22712
22713       per_cu = next_cu;
22714     }
22715 }
22716
22717 /* Remove a single compilation unit from the cache.  */
22718
22719 static void
22720 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
22721 {
22722   struct dwarf2_per_cu_data *per_cu, **last_chain;
22723
22724   per_cu = dwarf2_per_objfile->read_in_chain;
22725   last_chain = &dwarf2_per_objfile->read_in_chain;
22726   while (per_cu != NULL)
22727     {
22728       struct dwarf2_per_cu_data *next_cu;
22729
22730       next_cu = per_cu->cu->read_in_chain;
22731
22732       if (per_cu == target_per_cu)
22733         {
22734           free_heap_comp_unit (per_cu->cu);
22735           per_cu->cu = NULL;
22736           *last_chain = next_cu;
22737           break;
22738         }
22739       else
22740         last_chain = &per_cu->cu->read_in_chain;
22741
22742       per_cu = next_cu;
22743     }
22744 }
22745
22746 /* Release all extra memory associated with OBJFILE.  */
22747
22748 void
22749 dwarf2_free_objfile (struct objfile *objfile)
22750 {
22751   dwarf2_per_objfile
22752     = (struct dwarf2_per_objfile *) objfile_data (objfile,
22753                                                   dwarf2_objfile_data_key);
22754
22755   if (dwarf2_per_objfile == NULL)
22756     return;
22757
22758   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
22759   free_cached_comp_units (NULL);
22760
22761   if (dwarf2_per_objfile->quick_file_names_table)
22762     htab_delete (dwarf2_per_objfile->quick_file_names_table);
22763
22764   if (dwarf2_per_objfile->line_header_hash)
22765     htab_delete (dwarf2_per_objfile->line_header_hash);
22766
22767   /* Everything else should be on the objfile obstack.  */
22768 }
22769
22770 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22771    We store these in a hash table separate from the DIEs, and preserve them
22772    when the DIEs are flushed out of cache.
22773
22774    The CU "per_cu" pointer is needed because offset alone is not enough to
22775    uniquely identify the type.  A file may have multiple .debug_types sections,
22776    or the type may come from a DWO file.  Furthermore, while it's more logical
22777    to use per_cu->section+offset, with Fission the section with the data is in
22778    the DWO file but we don't know that section at the point we need it.
22779    We have to use something in dwarf2_per_cu_data (or the pointer to it)
22780    because we can enter the lookup routine, get_die_type_at_offset, from
22781    outside this file, and thus won't necessarily have PER_CU->cu.
22782    Fortunately, PER_CU is stable for the life of the objfile.  */
22783
22784 struct dwarf2_per_cu_offset_and_type
22785 {
22786   const struct dwarf2_per_cu_data *per_cu;
22787   sect_offset offset;
22788   struct type *type;
22789 };
22790
22791 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
22792
22793 static hashval_t
22794 per_cu_offset_and_type_hash (const void *item)
22795 {
22796   const struct dwarf2_per_cu_offset_and_type *ofs
22797     = (const struct dwarf2_per_cu_offset_and_type *) item;
22798
22799   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
22800 }
22801
22802 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
22803
22804 static int
22805 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
22806 {
22807   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
22808     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
22809   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
22810     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
22811
22812   return (ofs_lhs->per_cu == ofs_rhs->per_cu
22813           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
22814 }
22815
22816 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
22817    table if necessary.  For convenience, return TYPE.
22818
22819    The DIEs reading must have careful ordering to:
22820     * Not cause infite loops trying to read in DIEs as a prerequisite for
22821       reading current DIE.
22822     * Not trying to dereference contents of still incompletely read in types
22823       while reading in other DIEs.
22824     * Enable referencing still incompletely read in types just by a pointer to
22825       the type without accessing its fields.
22826
22827    Therefore caller should follow these rules:
22828      * Try to fetch any prerequisite types we may need to build this DIE type
22829        before building the type and calling set_die_type.
22830      * After building type call set_die_type for current DIE as soon as
22831        possible before fetching more types to complete the current type.
22832      * Make the type as complete as possible before fetching more types.  */
22833
22834 static struct type *
22835 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22836 {
22837   struct dwarf2_per_cu_offset_and_type **slot, ofs;
22838   struct objfile *objfile = cu->objfile;
22839   struct attribute *attr;
22840   struct dynamic_prop prop;
22841
22842   /* For Ada types, make sure that the gnat-specific data is always
22843      initialized (if not already set).  There are a few types where
22844      we should not be doing so, because the type-specific area is
22845      already used to hold some other piece of info (eg: TYPE_CODE_FLT
22846      where the type-specific area is used to store the floatformat).
22847      But this is not a problem, because the gnat-specific information
22848      is actually not needed for these types.  */
22849   if (need_gnat_info (cu)
22850       && TYPE_CODE (type) != TYPE_CODE_FUNC
22851       && TYPE_CODE (type) != TYPE_CODE_FLT
22852       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22853       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22854       && TYPE_CODE (type) != TYPE_CODE_METHOD
22855       && !HAVE_GNAT_AUX_INFO (type))
22856     INIT_GNAT_SPECIFIC (type);
22857
22858   /* Read DW_AT_allocated and set in type.  */
22859   attr = dwarf2_attr (die, DW_AT_allocated, cu);
22860   if (attr_form_is_block (attr))
22861     {
22862       if (attr_to_dynamic_prop (attr, die, cu, &prop))
22863         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
22864     }
22865   else if (attr != NULL)
22866     {
22867       complaint (&symfile_complaints,
22868                 _("DW_AT_allocated has the wrong form (%s) at DIE 0x%x"),
22869                 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
22870                 die->offset.sect_off);
22871     }
22872
22873   /* Read DW_AT_associated and set in type.  */
22874   attr = dwarf2_attr (die, DW_AT_associated, cu);
22875   if (attr_form_is_block (attr))
22876     {
22877       if (attr_to_dynamic_prop (attr, die, cu, &prop))
22878         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
22879     }
22880   else if (attr != NULL)
22881     {
22882       complaint (&symfile_complaints,
22883                 _("DW_AT_associated has the wrong form (%s) at DIE 0x%x"),
22884                 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
22885                 die->offset.sect_off);
22886     }
22887
22888   /* Read DW_AT_data_location and set in type.  */
22889   attr = dwarf2_attr (die, DW_AT_data_location, cu);
22890   if (attr_to_dynamic_prop (attr, die, cu, &prop))
22891     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
22892
22893   if (dwarf2_per_objfile->die_type_hash == NULL)
22894     {
22895       dwarf2_per_objfile->die_type_hash =
22896         htab_create_alloc_ex (127,
22897                               per_cu_offset_and_type_hash,
22898                               per_cu_offset_and_type_eq,
22899                               NULL,
22900                               &objfile->objfile_obstack,
22901                               hashtab_obstack_allocate,
22902                               dummy_obstack_deallocate);
22903     }
22904
22905   ofs.per_cu = cu->per_cu;
22906   ofs.offset = die->offset;
22907   ofs.type = type;
22908   slot = (struct dwarf2_per_cu_offset_and_type **)
22909     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
22910   if (*slot)
22911     complaint (&symfile_complaints,
22912                _("A problem internal to GDB: DIE 0x%x has type already set"),
22913                die->offset.sect_off);
22914   *slot = XOBNEW (&objfile->objfile_obstack,
22915                   struct dwarf2_per_cu_offset_and_type);
22916   **slot = ofs;
22917   return type;
22918 }
22919
22920 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22921    or return NULL if the die does not have a saved type.  */
22922
22923 static struct type *
22924 get_die_type_at_offset (sect_offset offset,
22925                         struct dwarf2_per_cu_data *per_cu)
22926 {
22927   struct dwarf2_per_cu_offset_and_type *slot, ofs;
22928
22929   if (dwarf2_per_objfile->die_type_hash == NULL)
22930     return NULL;
22931
22932   ofs.per_cu = per_cu;
22933   ofs.offset = offset;
22934   slot = ((struct dwarf2_per_cu_offset_and_type *)
22935           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
22936   if (slot)
22937     return slot->type;
22938   else
22939     return NULL;
22940 }
22941
22942 /* Look up the type for DIE in CU in die_type_hash,
22943    or return NULL if DIE does not have a saved type.  */
22944
22945 static struct type *
22946 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22947 {
22948   return get_die_type_at_offset (die->offset, cu->per_cu);
22949 }
22950
22951 /* Add a dependence relationship from CU to REF_PER_CU.  */
22952
22953 static void
22954 dwarf2_add_dependence (struct dwarf2_cu *cu,
22955                        struct dwarf2_per_cu_data *ref_per_cu)
22956 {
22957   void **slot;
22958
22959   if (cu->dependencies == NULL)
22960     cu->dependencies
22961       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22962                               NULL, &cu->comp_unit_obstack,
22963                               hashtab_obstack_allocate,
22964                               dummy_obstack_deallocate);
22965
22966   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22967   if (*slot == NULL)
22968     *slot = ref_per_cu;
22969 }
22970
22971 /* Subroutine of dwarf2_mark to pass to htab_traverse.
22972    Set the mark field in every compilation unit in the
22973    cache that we must keep because we are keeping CU.  */
22974
22975 static int
22976 dwarf2_mark_helper (void **slot, void *data)
22977 {
22978   struct dwarf2_per_cu_data *per_cu;
22979
22980   per_cu = (struct dwarf2_per_cu_data *) *slot;
22981
22982   /* cu->dependencies references may not yet have been ever read if QUIT aborts
22983      reading of the chain.  As such dependencies remain valid it is not much
22984      useful to track and undo them during QUIT cleanups.  */
22985   if (per_cu->cu == NULL)
22986     return 1;
22987
22988   if (per_cu->cu->mark)
22989     return 1;
22990   per_cu->cu->mark = 1;
22991
22992   if (per_cu->cu->dependencies != NULL)
22993     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22994
22995   return 1;
22996 }
22997
22998 /* Set the mark field in CU and in every other compilation unit in the
22999    cache that we must keep because we are keeping CU.  */
23000
23001 static void
23002 dwarf2_mark (struct dwarf2_cu *cu)
23003 {
23004   if (cu->mark)
23005     return;
23006   cu->mark = 1;
23007   if (cu->dependencies != NULL)
23008     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
23009 }
23010
23011 static void
23012 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
23013 {
23014   while (per_cu)
23015     {
23016       per_cu->cu->mark = 0;
23017       per_cu = per_cu->cu->read_in_chain;
23018     }
23019 }
23020
23021 /* Trivial hash function for partial_die_info: the hash value of a DIE
23022    is its offset in .debug_info for this objfile.  */
23023
23024 static hashval_t
23025 partial_die_hash (const void *item)
23026 {
23027   const struct partial_die_info *part_die
23028     = (const struct partial_die_info *) item;
23029
23030   return part_die->offset.sect_off;
23031 }
23032
23033 /* Trivial comparison function for partial_die_info structures: two DIEs
23034    are equal if they have the same offset.  */
23035
23036 static int
23037 partial_die_eq (const void *item_lhs, const void *item_rhs)
23038 {
23039   const struct partial_die_info *part_die_lhs
23040     = (const struct partial_die_info *) item_lhs;
23041   const struct partial_die_info *part_die_rhs
23042     = (const struct partial_die_info *) item_rhs;
23043
23044   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
23045 }
23046
23047 static struct cmd_list_element *set_dwarf_cmdlist;
23048 static struct cmd_list_element *show_dwarf_cmdlist;
23049
23050 static void
23051 set_dwarf_cmd (char *args, int from_tty)
23052 {
23053   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
23054              gdb_stdout);
23055 }
23056
23057 static void
23058 show_dwarf_cmd (char *args, int from_tty)
23059 {
23060   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
23061 }
23062
23063 /* Free data associated with OBJFILE, if necessary.  */
23064
23065 static void
23066 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
23067 {
23068   struct dwarf2_per_objfile *data = (struct dwarf2_per_objfile *) d;
23069   int ix;
23070
23071   /* Make sure we don't accidentally use dwarf2_per_objfile while
23072      cleaning up.  */
23073   dwarf2_per_objfile = NULL;
23074
23075   for (ix = 0; ix < data->n_comp_units; ++ix)
23076    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
23077
23078   for (ix = 0; ix < data->n_type_units; ++ix)
23079     VEC_free (dwarf2_per_cu_ptr,
23080               data->all_type_units[ix]->per_cu.imported_symtabs);
23081   xfree (data->all_type_units);
23082
23083   VEC_free (dwarf2_section_info_def, data->types);
23084
23085   if (data->dwo_files)
23086     free_dwo_files (data->dwo_files, objfile);
23087   if (data->dwp_file)
23088     gdb_bfd_unref (data->dwp_file->dbfd);
23089
23090   if (data->dwz_file && data->dwz_file->dwz_bfd)
23091     gdb_bfd_unref (data->dwz_file->dwz_bfd);
23092 }
23093
23094 \f
23095 /* The "save gdb-index" command.  */
23096
23097 /* The contents of the hash table we create when building the string
23098    table.  */
23099 struct strtab_entry
23100 {
23101   offset_type offset;
23102   const char *str;
23103 };
23104
23105 /* Hash function for a strtab_entry.
23106
23107    Function is used only during write_hash_table so no index format backward
23108    compatibility is needed.  */
23109
23110 static hashval_t
23111 hash_strtab_entry (const void *e)
23112 {
23113   const struct strtab_entry *entry = (const struct strtab_entry *) e;
23114   return mapped_index_string_hash (INT_MAX, entry->str);
23115 }
23116
23117 /* Equality function for a strtab_entry.  */
23118
23119 static int
23120 eq_strtab_entry (const void *a, const void *b)
23121 {
23122   const struct strtab_entry *ea = (const struct strtab_entry *) a;
23123   const struct strtab_entry *eb = (const struct strtab_entry *) b;
23124   return !strcmp (ea->str, eb->str);
23125 }
23126
23127 /* Create a strtab_entry hash table.  */
23128
23129 static htab_t
23130 create_strtab (void)
23131 {
23132   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
23133                             xfree, xcalloc, xfree);
23134 }
23135
23136 /* Add a string to the constant pool.  Return the string's offset in
23137    host order.  */
23138
23139 static offset_type
23140 add_string (htab_t table, struct obstack *cpool, const char *str)
23141 {
23142   void **slot;
23143   struct strtab_entry entry;
23144   struct strtab_entry *result;
23145
23146   entry.str = str;
23147   slot = htab_find_slot (table, &entry, INSERT);
23148   if (*slot)
23149     result = (struct strtab_entry *) *slot;
23150   else
23151     {
23152       result = XNEW (struct strtab_entry);
23153       result->offset = obstack_object_size (cpool);
23154       result->str = str;
23155       obstack_grow_str0 (cpool, str);
23156       *slot = result;
23157     }
23158   return result->offset;
23159 }
23160
23161 /* An entry in the symbol table.  */
23162 struct symtab_index_entry
23163 {
23164   /* The name of the symbol.  */
23165   const char *name;
23166   /* The offset of the name in the constant pool.  */
23167   offset_type index_offset;
23168   /* A sorted vector of the indices of all the CUs that hold an object
23169      of this name.  */
23170   VEC (offset_type) *cu_indices;
23171 };
23172
23173 /* The symbol table.  This is a power-of-2-sized hash table.  */
23174 struct mapped_symtab
23175 {
23176   offset_type n_elements;
23177   offset_type size;
23178   struct symtab_index_entry **data;
23179 };
23180
23181 /* Hash function for a symtab_index_entry.  */
23182
23183 static hashval_t
23184 hash_symtab_entry (const void *e)
23185 {
23186   const struct symtab_index_entry *entry
23187     = (const struct symtab_index_entry *) e;
23188   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
23189                          sizeof (offset_type) * VEC_length (offset_type,
23190                                                             entry->cu_indices),
23191                          0);
23192 }
23193
23194 /* Equality function for a symtab_index_entry.  */
23195
23196 static int
23197 eq_symtab_entry (const void *a, const void *b)
23198 {
23199   const struct symtab_index_entry *ea = (const struct symtab_index_entry *) a;
23200   const struct symtab_index_entry *eb = (const struct symtab_index_entry *) b;
23201   int len = VEC_length (offset_type, ea->cu_indices);
23202   if (len != VEC_length (offset_type, eb->cu_indices))
23203     return 0;
23204   return !memcmp (VEC_address (offset_type, ea->cu_indices),
23205                   VEC_address (offset_type, eb->cu_indices),
23206                   sizeof (offset_type) * len);
23207 }
23208
23209 /* Destroy a symtab_index_entry.  */
23210
23211 static void
23212 delete_symtab_entry (void *p)
23213 {
23214   struct symtab_index_entry *entry = (struct symtab_index_entry *) p;
23215   VEC_free (offset_type, entry->cu_indices);
23216   xfree (entry);
23217 }
23218
23219 /* Create a hash table holding symtab_index_entry objects.  */
23220
23221 static htab_t
23222 create_symbol_hash_table (void)
23223 {
23224   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
23225                             delete_symtab_entry, xcalloc, xfree);
23226 }
23227
23228 /* Create a new mapped symtab object.  */
23229
23230 static struct mapped_symtab *
23231 create_mapped_symtab (void)
23232 {
23233   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
23234   symtab->n_elements = 0;
23235   symtab->size = 1024;
23236   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
23237   return symtab;
23238 }
23239
23240 /* Destroy a mapped_symtab.  */
23241
23242 static void
23243 cleanup_mapped_symtab (void *p)
23244 {
23245   struct mapped_symtab *symtab = (struct mapped_symtab *) p;
23246   /* The contents of the array are freed when the other hash table is
23247      destroyed.  */
23248   xfree (symtab->data);
23249   xfree (symtab);
23250 }
23251
23252 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
23253    the slot.
23254    
23255    Function is used only during write_hash_table so no index format backward
23256    compatibility is needed.  */
23257
23258 static struct symtab_index_entry **
23259 find_slot (struct mapped_symtab *symtab, const char *name)
23260 {
23261   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
23262
23263   index = hash & (symtab->size - 1);
23264   step = ((hash * 17) & (symtab->size - 1)) | 1;
23265
23266   for (;;)
23267     {
23268       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
23269         return &symtab->data[index];
23270       index = (index + step) & (symtab->size - 1);
23271     }
23272 }
23273
23274 /* Expand SYMTAB's hash table.  */
23275
23276 static void
23277 hash_expand (struct mapped_symtab *symtab)
23278 {
23279   offset_type old_size = symtab->size;
23280   offset_type i;
23281   struct symtab_index_entry **old_entries = symtab->data;
23282
23283   symtab->size *= 2;
23284   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
23285
23286   for (i = 0; i < old_size; ++i)
23287     {
23288       if (old_entries[i])
23289         {
23290           struct symtab_index_entry **slot = find_slot (symtab,
23291                                                         old_entries[i]->name);
23292           *slot = old_entries[i];
23293         }
23294     }
23295
23296   xfree (old_entries);
23297 }
23298
23299 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
23300    CU_INDEX is the index of the CU in which the symbol appears.
23301    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
23302
23303 static void
23304 add_index_entry (struct mapped_symtab *symtab, const char *name,
23305                  int is_static, gdb_index_symbol_kind kind,
23306                  offset_type cu_index)
23307 {
23308   struct symtab_index_entry **slot;
23309   offset_type cu_index_and_attrs;
23310
23311   ++symtab->n_elements;
23312   if (4 * symtab->n_elements / 3 >= symtab->size)
23313     hash_expand (symtab);
23314
23315   slot = find_slot (symtab, name);
23316   if (!*slot)
23317     {
23318       *slot = XNEW (struct symtab_index_entry);
23319       (*slot)->name = name;
23320       /* index_offset is set later.  */
23321       (*slot)->cu_indices = NULL;
23322     }
23323
23324   cu_index_and_attrs = 0;
23325   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
23326   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
23327   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
23328
23329   /* We don't want to record an index value twice as we want to avoid the
23330      duplication.
23331      We process all global symbols and then all static symbols
23332      (which would allow us to avoid the duplication by only having to check
23333      the last entry pushed), but a symbol could have multiple kinds in one CU.
23334      To keep things simple we don't worry about the duplication here and
23335      sort and uniqufy the list after we've processed all symbols.  */
23336   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
23337 }
23338
23339 /* qsort helper routine for uniquify_cu_indices.  */
23340
23341 static int
23342 offset_type_compare (const void *ap, const void *bp)
23343 {
23344   offset_type a = *(offset_type *) ap;
23345   offset_type b = *(offset_type *) bp;
23346
23347   return (a > b) - (b > a);
23348 }
23349
23350 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
23351
23352 static void
23353 uniquify_cu_indices (struct mapped_symtab *symtab)
23354 {
23355   int i;
23356
23357   for (i = 0; i < symtab->size; ++i)
23358     {
23359       struct symtab_index_entry *entry = symtab->data[i];
23360
23361       if (entry
23362           && entry->cu_indices != NULL)
23363         {
23364           unsigned int next_to_insert, next_to_check;
23365           offset_type last_value;
23366
23367           qsort (VEC_address (offset_type, entry->cu_indices),
23368                  VEC_length (offset_type, entry->cu_indices),
23369                  sizeof (offset_type), offset_type_compare);
23370
23371           last_value = VEC_index (offset_type, entry->cu_indices, 0);
23372           next_to_insert = 1;
23373           for (next_to_check = 1;
23374                next_to_check < VEC_length (offset_type, entry->cu_indices);
23375                ++next_to_check)
23376             {
23377               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
23378                   != last_value)
23379                 {
23380                   last_value = VEC_index (offset_type, entry->cu_indices,
23381                                           next_to_check);
23382                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
23383                                last_value);
23384                   ++next_to_insert;
23385                 }
23386             }
23387           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
23388         }
23389     }
23390 }
23391
23392 /* Add a vector of indices to the constant pool.  */
23393
23394 static offset_type
23395 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
23396                       struct symtab_index_entry *entry)
23397 {
23398   void **slot;
23399
23400   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
23401   if (!*slot)
23402     {
23403       offset_type len = VEC_length (offset_type, entry->cu_indices);
23404       offset_type val = MAYBE_SWAP (len);
23405       offset_type iter;
23406       int i;
23407
23408       *slot = entry;
23409       entry->index_offset = obstack_object_size (cpool);
23410
23411       obstack_grow (cpool, &val, sizeof (val));
23412       for (i = 0;
23413            VEC_iterate (offset_type, entry->cu_indices, i, iter);
23414            ++i)
23415         {
23416           val = MAYBE_SWAP (iter);
23417           obstack_grow (cpool, &val, sizeof (val));
23418         }
23419     }
23420   else
23421     {
23422       struct symtab_index_entry *old_entry
23423         = (struct symtab_index_entry *) *slot;
23424       entry->index_offset = old_entry->index_offset;
23425       entry = old_entry;
23426     }
23427   return entry->index_offset;
23428 }
23429
23430 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
23431    constant pool entries going into the obstack CPOOL.  */
23432
23433 static void
23434 write_hash_table (struct mapped_symtab *symtab,
23435                   struct obstack *output, struct obstack *cpool)
23436 {
23437   offset_type i;
23438   htab_t symbol_hash_table;
23439   htab_t str_table;
23440
23441   symbol_hash_table = create_symbol_hash_table ();
23442   str_table = create_strtab ();
23443
23444   /* We add all the index vectors to the constant pool first, to
23445      ensure alignment is ok.  */
23446   for (i = 0; i < symtab->size; ++i)
23447     {
23448       if (symtab->data[i])
23449         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
23450     }
23451
23452   /* Now write out the hash table.  */
23453   for (i = 0; i < symtab->size; ++i)
23454     {
23455       offset_type str_off, vec_off;
23456
23457       if (symtab->data[i])
23458         {
23459           str_off = add_string (str_table, cpool, symtab->data[i]->name);
23460           vec_off = symtab->data[i]->index_offset;
23461         }
23462       else
23463         {
23464           /* While 0 is a valid constant pool index, it is not valid
23465              to have 0 for both offsets.  */
23466           str_off = 0;
23467           vec_off = 0;
23468         }
23469
23470       str_off = MAYBE_SWAP (str_off);
23471       vec_off = MAYBE_SWAP (vec_off);
23472
23473       obstack_grow (output, &str_off, sizeof (str_off));
23474       obstack_grow (output, &vec_off, sizeof (vec_off));
23475     }
23476
23477   htab_delete (str_table);
23478   htab_delete (symbol_hash_table);
23479 }
23480
23481 /* Struct to map psymtab to CU index in the index file.  */
23482 struct psymtab_cu_index_map
23483 {
23484   struct partial_symtab *psymtab;
23485   unsigned int cu_index;
23486 };
23487
23488 static hashval_t
23489 hash_psymtab_cu_index (const void *item)
23490 {
23491   const struct psymtab_cu_index_map *map
23492     = (const struct psymtab_cu_index_map *) item;
23493
23494   return htab_hash_pointer (map->psymtab);
23495 }
23496
23497 static int
23498 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
23499 {
23500   const struct psymtab_cu_index_map *lhs
23501     = (const struct psymtab_cu_index_map *) item_lhs;
23502   const struct psymtab_cu_index_map *rhs
23503     = (const struct psymtab_cu_index_map *) item_rhs;
23504
23505   return lhs->psymtab == rhs->psymtab;
23506 }
23507
23508 /* Helper struct for building the address table.  */
23509 struct addrmap_index_data
23510 {
23511   struct objfile *objfile;
23512   struct obstack *addr_obstack;
23513   htab_t cu_index_htab;
23514
23515   /* Non-zero if the previous_* fields are valid.
23516      We can't write an entry until we see the next entry (since it is only then
23517      that we know the end of the entry).  */
23518   int previous_valid;
23519   /* Index of the CU in the table of all CUs in the index file.  */
23520   unsigned int previous_cu_index;
23521   /* Start address of the CU.  */
23522   CORE_ADDR previous_cu_start;
23523 };
23524
23525 /* Write an address entry to OBSTACK.  */
23526
23527 static void
23528 add_address_entry (struct objfile *objfile, struct obstack *obstack,
23529                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
23530 {
23531   offset_type cu_index_to_write;
23532   gdb_byte addr[8];
23533   CORE_ADDR baseaddr;
23534
23535   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
23536
23537   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
23538   obstack_grow (obstack, addr, 8);
23539   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
23540   obstack_grow (obstack, addr, 8);
23541   cu_index_to_write = MAYBE_SWAP (cu_index);
23542   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
23543 }
23544
23545 /* Worker function for traversing an addrmap to build the address table.  */
23546
23547 static int
23548 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
23549 {
23550   struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
23551   struct partial_symtab *pst = (struct partial_symtab *) obj;
23552
23553   if (data->previous_valid)
23554     add_address_entry (data->objfile, data->addr_obstack,
23555                        data->previous_cu_start, start_addr,
23556                        data->previous_cu_index);
23557
23558   data->previous_cu_start = start_addr;
23559   if (pst != NULL)
23560     {
23561       struct psymtab_cu_index_map find_map, *map;
23562       find_map.psymtab = pst;
23563       map = ((struct psymtab_cu_index_map *)
23564              htab_find (data->cu_index_htab, &find_map));
23565       gdb_assert (map != NULL);
23566       data->previous_cu_index = map->cu_index;
23567       data->previous_valid = 1;
23568     }
23569   else
23570       data->previous_valid = 0;
23571
23572   return 0;
23573 }
23574
23575 /* Write OBJFILE's address map to OBSTACK.
23576    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
23577    in the index file.  */
23578
23579 static void
23580 write_address_map (struct objfile *objfile, struct obstack *obstack,
23581                    htab_t cu_index_htab)
23582 {
23583   struct addrmap_index_data addrmap_index_data;
23584
23585   /* When writing the address table, we have to cope with the fact that
23586      the addrmap iterator only provides the start of a region; we have to
23587      wait until the next invocation to get the start of the next region.  */
23588
23589   addrmap_index_data.objfile = objfile;
23590   addrmap_index_data.addr_obstack = obstack;
23591   addrmap_index_data.cu_index_htab = cu_index_htab;
23592   addrmap_index_data.previous_valid = 0;
23593
23594   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
23595                    &addrmap_index_data);
23596
23597   /* It's highly unlikely the last entry (end address = 0xff...ff)
23598      is valid, but we should still handle it.
23599      The end address is recorded as the start of the next region, but that
23600      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
23601      anyway.  */
23602   if (addrmap_index_data.previous_valid)
23603     add_address_entry (objfile, obstack,
23604                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
23605                        addrmap_index_data.previous_cu_index);
23606 }
23607
23608 /* Return the symbol kind of PSYM.  */
23609
23610 static gdb_index_symbol_kind
23611 symbol_kind (struct partial_symbol *psym)
23612 {
23613   domain_enum domain = PSYMBOL_DOMAIN (psym);
23614   enum address_class aclass = PSYMBOL_CLASS (psym);
23615
23616   switch (domain)
23617     {
23618     case VAR_DOMAIN:
23619       switch (aclass)
23620         {
23621         case LOC_BLOCK:
23622           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23623         case LOC_TYPEDEF:
23624           return GDB_INDEX_SYMBOL_KIND_TYPE;
23625         case LOC_COMPUTED:
23626         case LOC_CONST_BYTES:
23627         case LOC_OPTIMIZED_OUT:
23628         case LOC_STATIC:
23629           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23630         case LOC_CONST:
23631           /* Note: It's currently impossible to recognize psyms as enum values
23632              short of reading the type info.  For now punt.  */
23633           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23634         default:
23635           /* There are other LOC_FOO values that one might want to classify
23636              as variables, but dwarf2read.c doesn't currently use them.  */
23637           return GDB_INDEX_SYMBOL_KIND_OTHER;
23638         }
23639     case STRUCT_DOMAIN:
23640       return GDB_INDEX_SYMBOL_KIND_TYPE;
23641     default:
23642       return GDB_INDEX_SYMBOL_KIND_OTHER;
23643     }
23644 }
23645
23646 /* Add a list of partial symbols to SYMTAB.  */
23647
23648 static void
23649 write_psymbols (struct mapped_symtab *symtab,
23650                 htab_t psyms_seen,
23651                 struct partial_symbol **psymp,
23652                 int count,
23653                 offset_type cu_index,
23654                 int is_static)
23655 {
23656   for (; count-- > 0; ++psymp)
23657     {
23658       struct partial_symbol *psym = *psymp;
23659       void **slot;
23660
23661       if (SYMBOL_LANGUAGE (psym) == language_ada)
23662         error (_("Ada is not currently supported by the index"));
23663
23664       /* Only add a given psymbol once.  */
23665       slot = htab_find_slot (psyms_seen, psym, INSERT);
23666       if (!*slot)
23667         {
23668           gdb_index_symbol_kind kind = symbol_kind (psym);
23669
23670           *slot = psym;
23671           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23672                            is_static, kind, cu_index);
23673         }
23674     }
23675 }
23676
23677 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
23678    exception if there is an error.  */
23679
23680 static void
23681 write_obstack (FILE *file, struct obstack *obstack)
23682 {
23683   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23684               file)
23685       != obstack_object_size (obstack))
23686     error (_("couldn't data write to file"));
23687 }
23688
23689 /* A helper struct used when iterating over debug_types.  */
23690 struct signatured_type_index_data
23691 {
23692   struct objfile *objfile;
23693   struct mapped_symtab *symtab;
23694   struct obstack *types_list;
23695   htab_t psyms_seen;
23696   int cu_index;
23697 };
23698
23699 /* A helper function that writes a single signatured_type to an
23700    obstack.  */
23701
23702 static int
23703 write_one_signatured_type (void **slot, void *d)
23704 {
23705   struct signatured_type_index_data *info
23706     = (struct signatured_type_index_data *) d;
23707   struct signatured_type *entry = (struct signatured_type *) *slot;
23708   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
23709   gdb_byte val[8];
23710
23711   write_psymbols (info->symtab,
23712                   info->psyms_seen,
23713                   info->objfile->global_psymbols.list
23714                   + psymtab->globals_offset,
23715                   psymtab->n_global_syms, info->cu_index,
23716                   0);
23717   write_psymbols (info->symtab,
23718                   info->psyms_seen,
23719                   info->objfile->static_psymbols.list
23720                   + psymtab->statics_offset,
23721                   psymtab->n_static_syms, info->cu_index,
23722                   1);
23723
23724   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23725                           entry->per_cu.offset.sect_off);
23726   obstack_grow (info->types_list, val, 8);
23727   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23728                           entry->type_offset_in_tu.cu_off);
23729   obstack_grow (info->types_list, val, 8);
23730   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23731   obstack_grow (info->types_list, val, 8);
23732
23733   ++info->cu_index;
23734
23735   return 1;
23736 }
23737
23738 /* Recurse into all "included" dependencies and write their symbols as
23739    if they appeared in this psymtab.  */
23740
23741 static void
23742 recursively_write_psymbols (struct objfile *objfile,
23743                             struct partial_symtab *psymtab,
23744                             struct mapped_symtab *symtab,
23745                             htab_t psyms_seen,
23746                             offset_type cu_index)
23747 {
23748   int i;
23749
23750   for (i = 0; i < psymtab->number_of_dependencies; ++i)
23751     if (psymtab->dependencies[i]->user != NULL)
23752       recursively_write_psymbols (objfile, psymtab->dependencies[i],
23753                                   symtab, psyms_seen, cu_index);
23754
23755   write_psymbols (symtab,
23756                   psyms_seen,
23757                   objfile->global_psymbols.list + psymtab->globals_offset,
23758                   psymtab->n_global_syms, cu_index,
23759                   0);
23760   write_psymbols (symtab,
23761                   psyms_seen,
23762                   objfile->static_psymbols.list + psymtab->statics_offset,
23763                   psymtab->n_static_syms, cu_index,
23764                   1);
23765 }
23766
23767 /* Create an index file for OBJFILE in the directory DIR.  */
23768
23769 static void
23770 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23771 {
23772   struct cleanup *cleanup;
23773   char *filename;
23774   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23775   struct obstack cu_list, types_cu_list;
23776   int i;
23777   FILE *out_file;
23778   struct mapped_symtab *symtab;
23779   offset_type val, size_of_contents, total_len;
23780   struct stat st;
23781   struct psymtab_cu_index_map *psymtab_cu_index_map;
23782
23783   if (dwarf2_per_objfile->using_index)
23784     error (_("Cannot use an index to create the index"));
23785
23786   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23787     error (_("Cannot make an index when the file has multiple .debug_types sections"));
23788
23789   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23790     return;
23791
23792   if (stat (objfile_name (objfile), &st) < 0)
23793     perror_with_name (objfile_name (objfile));
23794
23795   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
23796                      INDEX_SUFFIX, (char *) NULL);
23797   cleanup = make_cleanup (xfree, filename);
23798
23799   out_file = gdb_fopen_cloexec (filename, "wb");
23800   if (!out_file)
23801     error (_("Can't open `%s' for writing"), filename);
23802
23803   gdb::unlinker unlink_file (filename);
23804
23805   symtab = create_mapped_symtab ();
23806   make_cleanup (cleanup_mapped_symtab, symtab);
23807
23808   obstack_init (&addr_obstack);
23809   make_cleanup_obstack_free (&addr_obstack);
23810
23811   obstack_init (&cu_list);
23812   make_cleanup_obstack_free (&cu_list);
23813
23814   obstack_init (&types_cu_list);
23815   make_cleanup_obstack_free (&types_cu_list);
23816
23817   htab_up psyms_seen (htab_create_alloc (100, htab_hash_pointer,
23818                                          htab_eq_pointer,
23819                                          NULL, xcalloc, xfree));
23820
23821   /* While we're scanning CU's create a table that maps a psymtab pointer
23822      (which is what addrmap records) to its index (which is what is recorded
23823      in the index file).  This will later be needed to write the address
23824      table.  */
23825   htab_up cu_index_htab (htab_create_alloc (100,
23826                                             hash_psymtab_cu_index,
23827                                             eq_psymtab_cu_index,
23828                                             NULL, xcalloc, xfree));
23829   psymtab_cu_index_map = XNEWVEC (struct psymtab_cu_index_map,
23830                                   dwarf2_per_objfile->n_comp_units);
23831   make_cleanup (xfree, psymtab_cu_index_map);
23832
23833   /* The CU list is already sorted, so we don't need to do additional
23834      work here.  Also, the debug_types entries do not appear in
23835      all_comp_units, but only in their own hash table.  */
23836   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23837     {
23838       struct dwarf2_per_cu_data *per_cu
23839         = dwarf2_per_objfile->all_comp_units[i];
23840       struct partial_symtab *psymtab = per_cu->v.psymtab;
23841       gdb_byte val[8];
23842       struct psymtab_cu_index_map *map;
23843       void **slot;
23844
23845       /* CU of a shared file from 'dwz -m' may be unused by this main file.
23846          It may be referenced from a local scope but in such case it does not
23847          need to be present in .gdb_index.  */
23848       if (psymtab == NULL)
23849         continue;
23850
23851       if (psymtab->user == NULL)
23852         recursively_write_psymbols (objfile, psymtab, symtab,
23853                                     psyms_seen.get (), i);
23854
23855       map = &psymtab_cu_index_map[i];
23856       map->psymtab = psymtab;
23857       map->cu_index = i;
23858       slot = htab_find_slot (cu_index_htab.get (), map, INSERT);
23859       gdb_assert (slot != NULL);
23860       gdb_assert (*slot == NULL);
23861       *slot = map;
23862
23863       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23864                               per_cu->offset.sect_off);
23865       obstack_grow (&cu_list, val, 8);
23866       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
23867       obstack_grow (&cu_list, val, 8);
23868     }
23869
23870   /* Dump the address map.  */
23871   write_address_map (objfile, &addr_obstack, cu_index_htab.get ());
23872
23873   /* Write out the .debug_type entries, if any.  */
23874   if (dwarf2_per_objfile->signatured_types)
23875     {
23876       struct signatured_type_index_data sig_data;
23877
23878       sig_data.objfile = objfile;
23879       sig_data.symtab = symtab;
23880       sig_data.types_list = &types_cu_list;
23881       sig_data.psyms_seen = psyms_seen.get ();
23882       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23883       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23884                               write_one_signatured_type, &sig_data);
23885     }
23886
23887   /* Now that we've processed all symbols we can shrink their cu_indices
23888      lists.  */
23889   uniquify_cu_indices (symtab);
23890
23891   obstack_init (&constant_pool);
23892   make_cleanup_obstack_free (&constant_pool);
23893   obstack_init (&symtab_obstack);
23894   make_cleanup_obstack_free (&symtab_obstack);
23895   write_hash_table (symtab, &symtab_obstack, &constant_pool);
23896
23897   obstack_init (&contents);
23898   make_cleanup_obstack_free (&contents);
23899   size_of_contents = 6 * sizeof (offset_type);
23900   total_len = size_of_contents;
23901
23902   /* The version number.  */
23903   val = MAYBE_SWAP (8);
23904   obstack_grow (&contents, &val, sizeof (val));
23905
23906   /* The offset of the CU list from the start of the file.  */
23907   val = MAYBE_SWAP (total_len);
23908   obstack_grow (&contents, &val, sizeof (val));
23909   total_len += obstack_object_size (&cu_list);
23910
23911   /* The offset of the types CU list from the start of the file.  */
23912   val = MAYBE_SWAP (total_len);
23913   obstack_grow (&contents, &val, sizeof (val));
23914   total_len += obstack_object_size (&types_cu_list);
23915
23916   /* The offset of the address table from the start of the file.  */
23917   val = MAYBE_SWAP (total_len);
23918   obstack_grow (&contents, &val, sizeof (val));
23919   total_len += obstack_object_size (&addr_obstack);
23920
23921   /* The offset of the symbol table from the start of the file.  */
23922   val = MAYBE_SWAP (total_len);
23923   obstack_grow (&contents, &val, sizeof (val));
23924   total_len += obstack_object_size (&symtab_obstack);
23925
23926   /* The offset of the constant pool from the start of the file.  */
23927   val = MAYBE_SWAP (total_len);
23928   obstack_grow (&contents, &val, sizeof (val));
23929   total_len += obstack_object_size (&constant_pool);
23930
23931   gdb_assert (obstack_object_size (&contents) == size_of_contents);
23932
23933   write_obstack (out_file, &contents);
23934   write_obstack (out_file, &cu_list);
23935   write_obstack (out_file, &types_cu_list);
23936   write_obstack (out_file, &addr_obstack);
23937   write_obstack (out_file, &symtab_obstack);
23938   write_obstack (out_file, &constant_pool);
23939
23940   fclose (out_file);
23941
23942   /* We want to keep the file.  */
23943   unlink_file.keep ();
23944
23945   do_cleanups (cleanup);
23946 }
23947
23948 /* Implementation of the `save gdb-index' command.
23949    
23950    Note that the file format used by this command is documented in the
23951    GDB manual.  Any changes here must be documented there.  */
23952
23953 static void
23954 save_gdb_index_command (char *arg, int from_tty)
23955 {
23956   struct objfile *objfile;
23957
23958   if (!arg || !*arg)
23959     error (_("usage: save gdb-index DIRECTORY"));
23960
23961   ALL_OBJFILES (objfile)
23962   {
23963     struct stat st;
23964
23965     /* If the objfile does not correspond to an actual file, skip it.  */
23966     if (stat (objfile_name (objfile), &st) < 0)
23967       continue;
23968
23969     dwarf2_per_objfile
23970       = (struct dwarf2_per_objfile *) objfile_data (objfile,
23971                                                     dwarf2_objfile_data_key);
23972     if (dwarf2_per_objfile)
23973       {
23974
23975         TRY
23976           {
23977             write_psymtabs_to_index (objfile, arg);
23978           }
23979         CATCH (except, RETURN_MASK_ERROR)
23980           {
23981             exception_fprintf (gdb_stderr, except,
23982                                _("Error while writing index for `%s': "),
23983                                objfile_name (objfile));
23984           }
23985         END_CATCH
23986       }
23987   }
23988 }
23989
23990 \f
23991
23992 int dwarf_always_disassemble;
23993
23994 static void
23995 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23996                                struct cmd_list_element *c, const char *value)
23997 {
23998   fprintf_filtered (file,
23999                     _("Whether to always disassemble "
24000                       "DWARF expressions is %s.\n"),
24001                     value);
24002 }
24003
24004 static void
24005 show_check_physname (struct ui_file *file, int from_tty,
24006                      struct cmd_list_element *c, const char *value)
24007 {
24008   fprintf_filtered (file,
24009                     _("Whether to check \"physname\" is %s.\n"),
24010                     value);
24011 }
24012
24013 void _initialize_dwarf2_read (void);
24014
24015 void
24016 _initialize_dwarf2_read (void)
24017 {
24018   struct cmd_list_element *c;
24019
24020   dwarf2_objfile_data_key
24021     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
24022
24023   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
24024 Set DWARF specific variables.\n\
24025 Configure DWARF variables such as the cache size"),
24026                   &set_dwarf_cmdlist, "maintenance set dwarf ",
24027                   0/*allow-unknown*/, &maintenance_set_cmdlist);
24028
24029   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
24030 Show DWARF specific variables\n\
24031 Show DWARF variables such as the cache size"),
24032                   &show_dwarf_cmdlist, "maintenance show dwarf ",
24033                   0/*allow-unknown*/, &maintenance_show_cmdlist);
24034
24035   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
24036                             &dwarf_max_cache_age, _("\
24037 Set the upper bound on the age of cached DWARF compilation units."), _("\
24038 Show the upper bound on the age of cached DWARF compilation units."), _("\
24039 A higher limit means that cached compilation units will be stored\n\
24040 in memory longer, and more total memory will be used.  Zero disables\n\
24041 caching, which can slow down startup."),
24042                             NULL,
24043                             show_dwarf_max_cache_age,
24044                             &set_dwarf_cmdlist,
24045                             &show_dwarf_cmdlist);
24046
24047   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
24048                            &dwarf_always_disassemble, _("\
24049 Set whether `info address' always disassembles DWARF expressions."), _("\
24050 Show whether `info address' always disassembles DWARF expressions."), _("\
24051 When enabled, DWARF expressions are always printed in an assembly-like\n\
24052 syntax.  When disabled, expressions will be printed in a more\n\
24053 conversational style, when possible."),
24054                            NULL,
24055                            show_dwarf_always_disassemble,
24056                            &set_dwarf_cmdlist,
24057                            &show_dwarf_cmdlist);
24058
24059   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
24060 Set debugging of the DWARF reader."), _("\
24061 Show debugging of the DWARF reader."), _("\
24062 When enabled (non-zero), debugging messages are printed during DWARF\n\
24063 reading and symtab expansion.  A value of 1 (one) provides basic\n\
24064 information.  A value greater than 1 provides more verbose information."),
24065                             NULL,
24066                             NULL,
24067                             &setdebuglist, &showdebuglist);
24068
24069   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
24070 Set debugging of the DWARF DIE reader."), _("\
24071 Show debugging of the DWARF DIE reader."), _("\
24072 When enabled (non-zero), DIEs are dumped after they are read in.\n\
24073 The value is the maximum depth to print."),
24074                              NULL,
24075                              NULL,
24076                              &setdebuglist, &showdebuglist);
24077
24078   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
24079 Set debugging of the dwarf line reader."), _("\
24080 Show debugging of the dwarf line reader."), _("\
24081 When enabled (non-zero), line number entries are dumped as they are read in.\n\
24082 A value of 1 (one) provides basic information.\n\
24083 A value greater than 1 provides more verbose information."),
24084                              NULL,
24085                              NULL,
24086                              &setdebuglist, &showdebuglist);
24087
24088   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
24089 Set cross-checking of \"physname\" code against demangler."), _("\
24090 Show cross-checking of \"physname\" code against demangler."), _("\
24091 When enabled, GDB's internal \"physname\" code is checked against\n\
24092 the demangler."),
24093                            NULL, show_check_physname,
24094                            &setdebuglist, &showdebuglist);
24095
24096   add_setshow_boolean_cmd ("use-deprecated-index-sections",
24097                            no_class, &use_deprecated_index_sections, _("\
24098 Set whether to use deprecated gdb_index sections."), _("\
24099 Show whether to use deprecated gdb_index sections."), _("\
24100 When enabled, deprecated .gdb_index sections are used anyway.\n\
24101 Normally they are ignored either because of a missing feature or\n\
24102 performance issue.\n\
24103 Warning: This option must be enabled before gdb reads the file."),
24104                            NULL,
24105                            NULL,
24106                            &setlist, &showlist);
24107
24108   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
24109                _("\
24110 Save a gdb-index file.\n\
24111 Usage: save gdb-index DIRECTORY"),
24112                &save_cmdlist);
24113   set_cmd_completer (c, filename_completer);
24114
24115   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
24116                                                         &dwarf2_locexpr_funcs);
24117   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
24118                                                         &dwarf2_loclist_funcs);
24119
24120   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
24121                                         &dwarf2_block_frame_base_locexpr_funcs);
24122   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
24123                                         &dwarf2_block_frame_base_loclist_funcs);
24124 }