Use ui_file_as_string in dwarf2_compute_name
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2016 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
73 #include <fcntl.h>
74 #include <sys/types.h>
75 #include <algorithm>
76
77 typedef struct symbol *symbolp;
78 DEF_VEC_P (symbolp);
79
80 /* When == 1, print basic high level tracing messages.
81    When > 1, be more verbose.
82    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
83 static unsigned int dwarf_read_debug = 0;
84
85 /* When non-zero, dump DIEs after they are read in.  */
86 static unsigned int dwarf_die_debug = 0;
87
88 /* When non-zero, dump line number entries as they are read in.  */
89 static unsigned int dwarf_line_debug = 0;
90
91 /* When non-zero, cross-check physname against demangler.  */
92 static int check_physname = 0;
93
94 /* When non-zero, do not reject deprecated .gdb_index sections.  */
95 static int use_deprecated_index_sections = 0;
96
97 static const struct objfile_data *dwarf2_objfile_data_key;
98
99 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
100
101 static int dwarf2_locexpr_index;
102 static int dwarf2_loclist_index;
103 static int dwarf2_locexpr_block_index;
104 static int dwarf2_loclist_block_index;
105
106 /* A descriptor for dwarf sections.
107
108    S.ASECTION, SIZE are typically initialized when the objfile is first
109    scanned.  BUFFER, READIN are filled in later when the section is read.
110    If the section contained compressed data then SIZE is updated to record
111    the uncompressed size of the section.
112
113    DWP file format V2 introduces a wrinkle that is easiest to handle by
114    creating the concept of virtual sections contained within a real section.
115    In DWP V2 the sections of the input DWO files are concatenated together
116    into one section, but section offsets are kept relative to the original
117    input section.
118    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
119    the real section this "virtual" section is contained in, and BUFFER,SIZE
120    describe the virtual section.  */
121
122 struct dwarf2_section_info
123 {
124   union
125   {
126     /* If this is a real section, the bfd section.  */
127     asection *section;
128     /* If this is a virtual section, pointer to the containing ("real")
129        section.  */
130     struct dwarf2_section_info *containing_section;
131   } s;
132   /* Pointer to section data, only valid if readin.  */
133   const gdb_byte *buffer;
134   /* The size of the section, real or virtual.  */
135   bfd_size_type size;
136   /* If this is a virtual section, the offset in the real section.
137      Only valid if is_virtual.  */
138   bfd_size_type virtual_offset;
139   /* True if we have tried to read this section.  */
140   char readin;
141   /* True if this is a virtual section, False otherwise.
142      This specifies which of s.section and s.containing_section to use.  */
143   char is_virtual;
144 };
145
146 typedef struct dwarf2_section_info dwarf2_section_info_def;
147 DEF_VEC_O (dwarf2_section_info_def);
148
149 /* All offsets in the index are of this type.  It must be
150    architecture-independent.  */
151 typedef uint32_t offset_type;
152
153 DEF_VEC_I (offset_type);
154
155 /* Ensure only legit values are used.  */
156 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
157   do { \
158     gdb_assert ((unsigned int) (value) <= 1); \
159     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
160   } while (0)
161
162 /* Ensure only legit values are used.  */
163 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
164   do { \
165     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
166                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
167     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
168   } while (0)
169
170 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
171 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
172   do { \
173     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
174     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
175   } while (0)
176
177 /* A description of the mapped index.  The file format is described in
178    a comment by the code that writes the index.  */
179 struct mapped_index
180 {
181   /* Index data format version.  */
182   int version;
183
184   /* The total length of the buffer.  */
185   off_t total_size;
186
187   /* A pointer to the address table data.  */
188   const gdb_byte *address_table;
189
190   /* Size of the address table data in bytes.  */
191   offset_type address_table_size;
192
193   /* The symbol table, implemented as a hash table.  */
194   const offset_type *symbol_table;
195
196   /* Size in slots, each slot is 2 offset_types.  */
197   offset_type symbol_table_slots;
198
199   /* A pointer to the constant pool.  */
200   const char *constant_pool;
201 };
202
203 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
204 DEF_VEC_P (dwarf2_per_cu_ptr);
205
206 struct tu_stats
207 {
208   int nr_uniq_abbrev_tables;
209   int nr_symtabs;
210   int nr_symtab_sharers;
211   int nr_stmt_less_type_units;
212   int nr_all_type_units_reallocs;
213 };
214
215 /* Collection of data recorded per objfile.
216    This hangs off of dwarf2_objfile_data_key.  */
217
218 struct dwarf2_per_objfile
219 {
220   struct dwarf2_section_info info;
221   struct dwarf2_section_info abbrev;
222   struct dwarf2_section_info line;
223   struct dwarf2_section_info loc;
224   struct dwarf2_section_info macinfo;
225   struct dwarf2_section_info macro;
226   struct dwarf2_section_info str;
227   struct dwarf2_section_info ranges;
228   struct dwarf2_section_info addr;
229   struct dwarf2_section_info frame;
230   struct dwarf2_section_info eh_frame;
231   struct dwarf2_section_info gdb_index;
232
233   VEC (dwarf2_section_info_def) *types;
234
235   /* Back link.  */
236   struct objfile *objfile;
237
238   /* Table of all the compilation units.  This is used to locate
239      the target compilation unit of a particular reference.  */
240   struct dwarf2_per_cu_data **all_comp_units;
241
242   /* The number of compilation units in ALL_COMP_UNITS.  */
243   int n_comp_units;
244
245   /* The number of .debug_types-related CUs.  */
246   int n_type_units;
247
248   /* The number of elements allocated in all_type_units.
249      If there are skeleton-less TUs, we add them to all_type_units lazily.  */
250   int n_allocated_type_units;
251
252   /* The .debug_types-related CUs (TUs).
253      This is stored in malloc space because we may realloc it.  */
254   struct signatured_type **all_type_units;
255
256   /* Table of struct type_unit_group objects.
257      The hash key is the DW_AT_stmt_list value.  */
258   htab_t type_unit_groups;
259
260   /* A table mapping .debug_types signatures to its signatured_type entry.
261      This is NULL if the .debug_types section hasn't been read in yet.  */
262   htab_t signatured_types;
263
264   /* Type unit statistics, to see how well the scaling improvements
265      are doing.  */
266   struct tu_stats tu_stats;
267
268   /* A chain of compilation units that are currently read in, so that
269      they can be freed later.  */
270   struct dwarf2_per_cu_data *read_in_chain;
271
272   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
273      This is NULL if the table hasn't been allocated yet.  */
274   htab_t dwo_files;
275
276   /* Non-zero if we've check for whether there is a DWP file.  */
277   int dwp_checked;
278
279   /* The DWP file if there is one, or NULL.  */
280   struct dwp_file *dwp_file;
281
282   /* The shared '.dwz' file, if one exists.  This is used when the
283      original data was compressed using 'dwz -m'.  */
284   struct dwz_file *dwz_file;
285
286   /* A flag indicating wether this objfile has a section loaded at a
287      VMA of 0.  */
288   int has_section_at_zero;
289
290   /* True if we are using the mapped index,
291      or we are faking it for OBJF_READNOW's sake.  */
292   unsigned char using_index;
293
294   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
295   struct mapped_index *index_table;
296
297   /* When using index_table, this keeps track of all quick_file_names entries.
298      TUs typically share line table entries with a CU, so we maintain a
299      separate table of all line table entries to support the sharing.
300      Note that while there can be way more TUs than CUs, we've already
301      sorted all the TUs into "type unit groups", grouped by their
302      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
303      CU and its associated TU group if there is one.  */
304   htab_t quick_file_names_table;
305
306   /* Set during partial symbol reading, to prevent queueing of full
307      symbols.  */
308   int reading_partial_symbols;
309
310   /* Table mapping type DIEs to their struct type *.
311      This is NULL if not allocated yet.
312      The mapping is done via (CU/TU + DIE offset) -> type.  */
313   htab_t die_type_hash;
314
315   /* The CUs we recently read.  */
316   VEC (dwarf2_per_cu_ptr) *just_read_cus;
317
318   /* Table containing line_header indexed by offset and offset_in_dwz.  */
319   htab_t line_header_hash;
320 };
321
322 static struct dwarf2_per_objfile *dwarf2_per_objfile;
323
324 /* Default names of the debugging sections.  */
325
326 /* Note that if the debugging section has been compressed, it might
327    have a name like .zdebug_info.  */
328
329 static const struct dwarf2_debug_sections dwarf2_elf_names =
330 {
331   { ".debug_info", ".zdebug_info" },
332   { ".debug_abbrev", ".zdebug_abbrev" },
333   { ".debug_line", ".zdebug_line" },
334   { ".debug_loc", ".zdebug_loc" },
335   { ".debug_macinfo", ".zdebug_macinfo" },
336   { ".debug_macro", ".zdebug_macro" },
337   { ".debug_str", ".zdebug_str" },
338   { ".debug_ranges", ".zdebug_ranges" },
339   { ".debug_types", ".zdebug_types" },
340   { ".debug_addr", ".zdebug_addr" },
341   { ".debug_frame", ".zdebug_frame" },
342   { ".eh_frame", NULL },
343   { ".gdb_index", ".zgdb_index" },
344   23
345 };
346
347 /* List of DWO/DWP sections.  */
348
349 static const struct dwop_section_names
350 {
351   struct dwarf2_section_names abbrev_dwo;
352   struct dwarf2_section_names info_dwo;
353   struct dwarf2_section_names line_dwo;
354   struct dwarf2_section_names loc_dwo;
355   struct dwarf2_section_names macinfo_dwo;
356   struct dwarf2_section_names macro_dwo;
357   struct dwarf2_section_names str_dwo;
358   struct dwarf2_section_names str_offsets_dwo;
359   struct dwarf2_section_names types_dwo;
360   struct dwarf2_section_names cu_index;
361   struct dwarf2_section_names tu_index;
362 }
363 dwop_section_names =
364 {
365   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
366   { ".debug_info.dwo", ".zdebug_info.dwo" },
367   { ".debug_line.dwo", ".zdebug_line.dwo" },
368   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
369   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
370   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
371   { ".debug_str.dwo", ".zdebug_str.dwo" },
372   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
373   { ".debug_types.dwo", ".zdebug_types.dwo" },
374   { ".debug_cu_index", ".zdebug_cu_index" },
375   { ".debug_tu_index", ".zdebug_tu_index" },
376 };
377
378 /* local data types */
379
380 /* The data in a compilation unit header, after target2host
381    translation, looks like this.  */
382 struct comp_unit_head
383 {
384   unsigned int length;
385   short version;
386   unsigned char addr_size;
387   unsigned char signed_addr_p;
388   sect_offset abbrev_offset;
389
390   /* Size of file offsets; either 4 or 8.  */
391   unsigned int offset_size;
392
393   /* Size of the length field; either 4 or 12.  */
394   unsigned int initial_length_size;
395
396   /* Offset to the first byte of this compilation unit header in the
397      .debug_info section, for resolving relative reference dies.  */
398   sect_offset offset;
399
400   /* Offset to first die in this cu from the start of the cu.
401      This will be the first byte following the compilation unit header.  */
402   cu_offset first_die_offset;
403 };
404
405 /* Type used for delaying computation of method physnames.
406    See comments for compute_delayed_physnames.  */
407 struct delayed_method_info
408 {
409   /* The type to which the method is attached, i.e., its parent class.  */
410   struct type *type;
411
412   /* The index of the method in the type's function fieldlists.  */
413   int fnfield_index;
414
415   /* The index of the method in the fieldlist.  */
416   int index;
417
418   /* The name of the DIE.  */
419   const char *name;
420
421   /*  The DIE associated with this method.  */
422   struct die_info *die;
423 };
424
425 typedef struct delayed_method_info delayed_method_info;
426 DEF_VEC_O (delayed_method_info);
427
428 /* Internal state when decoding a particular compilation unit.  */
429 struct dwarf2_cu
430 {
431   /* The objfile containing this compilation unit.  */
432   struct objfile *objfile;
433
434   /* The header of the compilation unit.  */
435   struct comp_unit_head header;
436
437   /* Base address of this compilation unit.  */
438   CORE_ADDR base_address;
439
440   /* Non-zero if base_address has been set.  */
441   int base_known;
442
443   /* The language we are debugging.  */
444   enum language language;
445   const struct language_defn *language_defn;
446
447   const char *producer;
448
449   /* The generic symbol table building routines have separate lists for
450      file scope symbols and all all other scopes (local scopes).  So
451      we need to select the right one to pass to add_symbol_to_list().
452      We do it by keeping a pointer to the correct list in list_in_scope.
453
454      FIXME: The original dwarf code just treated the file scope as the
455      first local scope, and all other local scopes as nested local
456      scopes, and worked fine.  Check to see if we really need to
457      distinguish these in buildsym.c.  */
458   struct pending **list_in_scope;
459
460   /* The abbrev table for this CU.
461      Normally this points to the abbrev table in the objfile.
462      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
463   struct abbrev_table *abbrev_table;
464
465   /* Hash table holding all the loaded partial DIEs
466      with partial_die->offset.SECT_OFF as hash.  */
467   htab_t partial_dies;
468
469   /* Storage for things with the same lifetime as this read-in compilation
470      unit, including partial DIEs.  */
471   struct obstack comp_unit_obstack;
472
473   /* When multiple dwarf2_cu structures are living in memory, this field
474      chains them all together, so that they can be released efficiently.
475      We will probably also want a generation counter so that most-recently-used
476      compilation units are cached...  */
477   struct dwarf2_per_cu_data *read_in_chain;
478
479   /* Backlink to our per_cu entry.  */
480   struct dwarf2_per_cu_data *per_cu;
481
482   /* How many compilation units ago was this CU last referenced?  */
483   int last_used;
484
485   /* A hash table of DIE cu_offset for following references with
486      die_info->offset.sect_off as hash.  */
487   htab_t die_hash;
488
489   /* Full DIEs if read in.  */
490   struct die_info *dies;
491
492   /* A set of pointers to dwarf2_per_cu_data objects for compilation
493      units referenced by this one.  Only set during full symbol processing;
494      partial symbol tables do not have dependencies.  */
495   htab_t dependencies;
496
497   /* Header data from the line table, during full symbol processing.  */
498   struct line_header *line_header;
499
500   /* A list of methods which need to have physnames computed
501      after all type information has been read.  */
502   VEC (delayed_method_info) *method_list;
503
504   /* To be copied to symtab->call_site_htab.  */
505   htab_t call_site_htab;
506
507   /* Non-NULL if this CU came from a DWO file.
508      There is an invariant here that is important to remember:
509      Except for attributes copied from the top level DIE in the "main"
510      (or "stub") file in preparation for reading the DWO file
511      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
512      Either there isn't a DWO file (in which case this is NULL and the point
513      is moot), or there is and either we're not going to read it (in which
514      case this is NULL) or there is and we are reading it (in which case this
515      is non-NULL).  */
516   struct dwo_unit *dwo_unit;
517
518   /* The DW_AT_addr_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.  */
521   ULONGEST addr_base;
522
523   /* The DW_AT_ranges_base attribute if present, zero otherwise
524      (zero is a valid value though).
525      Note this value comes from the Fission stub CU/TU's DIE.
526      Also note that the value is zero in the non-DWO case so this value can
527      be used without needing to know whether DWO files are in use or not.
528      N.B. This does not apply to DW_AT_ranges appearing in
529      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
530      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
531      DW_AT_ranges_base *would* have to be applied, and we'd have to care
532      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
533   ULONGEST ranges_base;
534
535   /* Mark used when releasing cached dies.  */
536   unsigned int mark : 1;
537
538   /* This CU references .debug_loc.  See the symtab->locations_valid field.
539      This test is imperfect as there may exist optimized debug code not using
540      any location list and still facing inlining issues if handled as
541      unoptimized code.  For a future better test see GCC PR other/32998.  */
542   unsigned int has_loclist : 1;
543
544   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
545      if all the producer_is_* fields are valid.  This information is cached
546      because profiling CU expansion showed excessive time spent in
547      producer_is_gxx_lt_4_6.  */
548   unsigned int checked_producer : 1;
549   unsigned int producer_is_gxx_lt_4_6 : 1;
550   unsigned int producer_is_gcc_lt_4_3 : 1;
551   unsigned int producer_is_icc : 1;
552
553   /* When set, the file that we're processing is known to have
554      debugging info for C++ namespaces.  GCC 3.3.x did not produce
555      this information, but later versions do.  */
556
557   unsigned int processing_has_namespace_info : 1;
558 };
559
560 /* Persistent data held for a compilation unit, even when not
561    processing it.  We put a pointer to this structure in the
562    read_symtab_private field of the psymtab.  */
563
564 struct dwarf2_per_cu_data
565 {
566   /* The start offset and length of this compilation unit.
567      NOTE: Unlike comp_unit_head.length, this length includes
568      initial_length_size.
569      If the DIE refers to a DWO file, this is always of the original die,
570      not the DWO file.  */
571   sect_offset offset;
572   unsigned int length;
573
574   /* Flag indicating this compilation unit will be read in before
575      any of the current compilation units are processed.  */
576   unsigned int queued : 1;
577
578   /* This flag will be set when reading partial DIEs if we need to load
579      absolutely all DIEs for this compilation unit, instead of just the ones
580      we think are interesting.  It gets set if we look for a DIE in the
581      hash table and don't find it.  */
582   unsigned int load_all_dies : 1;
583
584   /* Non-zero if this CU is from .debug_types.
585      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
586      this is non-zero.  */
587   unsigned int is_debug_types : 1;
588
589   /* Non-zero if this CU is from the .dwz file.  */
590   unsigned int is_dwz : 1;
591
592   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
593      This flag is only valid if is_debug_types is true.
594      We can't read a CU directly from a DWO file: There are required
595      attributes in the stub.  */
596   unsigned int reading_dwo_directly : 1;
597
598   /* Non-zero if the TU has been read.
599      This is used to assist the "Stay in DWO Optimization" for Fission:
600      When reading a DWO, it's faster to read TUs from the DWO instead of
601      fetching them from random other DWOs (due to comdat folding).
602      If the TU has already been read, the optimization is unnecessary
603      (and unwise - we don't want to change where gdb thinks the TU lives
604      "midflight").
605      This flag is only valid if is_debug_types is true.  */
606   unsigned int tu_read : 1;
607
608   /* The section this CU/TU lives in.
609      If the DIE refers to a DWO file, this is always the original die,
610      not the DWO file.  */
611   struct dwarf2_section_info *section;
612
613   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
614      of the CU cache it gets reset to NULL again.  This is left as NULL for
615      dummy CUs (a CU header, but nothing else).  */
616   struct dwarf2_cu *cu;
617
618   /* The corresponding objfile.
619      Normally we can get the objfile from dwarf2_per_objfile.
620      However we can enter this file with just a "per_cu" handle.  */
621   struct objfile *objfile;
622
623   /* When dwarf2_per_objfile->using_index is true, the 'quick' field
624      is active.  Otherwise, the 'psymtab' field is active.  */
625   union
626   {
627     /* The partial symbol table associated with this compilation unit,
628        or NULL for unread partial units.  */
629     struct partial_symtab *psymtab;
630
631     /* Data needed by the "quick" functions.  */
632     struct dwarf2_per_cu_quick_data *quick;
633   } v;
634
635   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
636      while reading psymtabs, used to compute the psymtab dependencies,
637      and then cleared.  Then it is filled in again while reading full
638      symbols, and only deleted when the objfile is destroyed.
639
640      This is also used to work around a difference between the way gold
641      generates .gdb_index version <=7 and the way gdb does.  Arguably this
642      is a gold bug.  For symbols coming from TUs, gold records in the index
643      the CU that includes the TU instead of the TU itself.  This breaks
644      dw2_lookup_symbol: It assumes that if the index says symbol X lives
645      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
646      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
647      we need to look in TU Z to find X.  Fortunately, this is akin to
648      DW_TAG_imported_unit, so we just use the same mechanism: For
649      .gdb_index version <=7 this also records the TUs that the CU referred
650      to.  Concurrently with this change gdb was modified to emit version 8
651      indices so we only pay a price for gold generated indices.
652      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
653   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
654 };
655
656 /* Entry in the signatured_types hash table.  */
657
658 struct signatured_type
659 {
660   /* The "per_cu" object of this type.
661      This struct is used iff per_cu.is_debug_types.
662      N.B.: This is the first member so that it's easy to convert pointers
663      between them.  */
664   struct dwarf2_per_cu_data per_cu;
665
666   /* The type's signature.  */
667   ULONGEST signature;
668
669   /* Offset in the TU of the type's DIE, as read from the TU header.
670      If this TU is a DWO stub and the definition lives in a DWO file
671      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
672   cu_offset type_offset_in_tu;
673
674   /* Offset in the section of the type's DIE.
675      If the definition lives in a DWO file, this is the offset in the
676      .debug_types.dwo section.
677      The value is zero until the actual value is known.
678      Zero is otherwise not a valid section offset.  */
679   sect_offset type_offset_in_section;
680
681   /* Type units are grouped by their DW_AT_stmt_list entry so that they
682      can share them.  This points to the containing symtab.  */
683   struct type_unit_group *type_unit_group;
684
685   /* The type.
686      The first time we encounter this type we fully read it in and install it
687      in the symbol tables.  Subsequent times we only need the type.  */
688   struct type *type;
689
690   /* Containing DWO unit.
691      This field is valid iff per_cu.reading_dwo_directly.  */
692   struct dwo_unit *dwo_unit;
693 };
694
695 typedef struct signatured_type *sig_type_ptr;
696 DEF_VEC_P (sig_type_ptr);
697
698 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
699    This includes type_unit_group and quick_file_names.  */
700
701 struct stmt_list_hash
702 {
703   /* The DWO unit this table is from or NULL if there is none.  */
704   struct dwo_unit *dwo_unit;
705
706   /* Offset in .debug_line or .debug_line.dwo.  */
707   sect_offset line_offset;
708 };
709
710 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
711    an object of this type.  */
712
713 struct type_unit_group
714 {
715   /* dwarf2read.c's main "handle" on a TU symtab.
716      To simplify things we create an artificial CU that "includes" all the
717      type units using this stmt_list so that the rest of the code still has
718      a "per_cu" handle on the symtab.
719      This PER_CU is recognized by having no section.  */
720 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
721   struct dwarf2_per_cu_data per_cu;
722
723   /* The TUs that share this DW_AT_stmt_list entry.
724      This is added to while parsing type units to build partial symtabs,
725      and is deleted afterwards and not used again.  */
726   VEC (sig_type_ptr) *tus;
727
728   /* The compunit symtab.
729      Type units in a group needn't all be defined in the same source file,
730      so we create an essentially anonymous symtab as the compunit symtab.  */
731   struct compunit_symtab *compunit_symtab;
732
733   /* The data used to construct the hash key.  */
734   struct stmt_list_hash hash;
735
736   /* The number of symtabs from the line header.
737      The value here must match line_header.num_file_names.  */
738   unsigned int num_symtabs;
739
740   /* The symbol tables for this TU (obtained from the files listed in
741      DW_AT_stmt_list).
742      WARNING: The order of entries here must match the order of entries
743      in the line header.  After the first TU using this type_unit_group, the
744      line header for the subsequent TUs is recreated from this.  This is done
745      because we need to use the same symtabs for each TU using the same
746      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
747      there's no guarantee the line header doesn't have duplicate entries.  */
748   struct symtab **symtabs;
749 };
750
751 /* These sections are what may appear in a (real or virtual) DWO file.  */
752
753 struct dwo_sections
754 {
755   struct dwarf2_section_info abbrev;
756   struct dwarf2_section_info line;
757   struct dwarf2_section_info loc;
758   struct dwarf2_section_info macinfo;
759   struct dwarf2_section_info macro;
760   struct dwarf2_section_info str;
761   struct dwarf2_section_info str_offsets;
762   /* In the case of a virtual DWO file, these two are unused.  */
763   struct dwarf2_section_info info;
764   VEC (dwarf2_section_info_def) *types;
765 };
766
767 /* CUs/TUs in DWP/DWO files.  */
768
769 struct dwo_unit
770 {
771   /* Backlink to the containing struct dwo_file.  */
772   struct dwo_file *dwo_file;
773
774   /* The "id" that distinguishes this CU/TU.
775      .debug_info calls this "dwo_id", .debug_types calls this "signature".
776      Since signatures came first, we stick with it for consistency.  */
777   ULONGEST signature;
778
779   /* The section this CU/TU lives in, in the DWO file.  */
780   struct dwarf2_section_info *section;
781
782   /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section.  */
783   sect_offset offset;
784   unsigned int length;
785
786   /* For types, offset in the type's DIE of the type defined by this TU.  */
787   cu_offset type_offset_in_tu;
788 };
789
790 /* include/dwarf2.h defines the DWP section codes.
791    It defines a max value but it doesn't define a min value, which we
792    use for error checking, so provide one.  */
793
794 enum dwp_v2_section_ids
795 {
796   DW_SECT_MIN = 1
797 };
798
799 /* Data for one DWO file.
800
801    This includes virtual DWO files (a virtual DWO file is a DWO file as it
802    appears in a DWP file).  DWP files don't really have DWO files per se -
803    comdat folding of types "loses" the DWO file they came from, and from
804    a high level view DWP files appear to contain a mass of random types.
805    However, to maintain consistency with the non-DWP case we pretend DWP
806    files contain virtual DWO files, and we assign each TU with one virtual
807    DWO file (generally based on the line and abbrev section offsets -
808    a heuristic that seems to work in practice).  */
809
810 struct dwo_file
811 {
812   /* The DW_AT_GNU_dwo_name attribute.
813      For virtual DWO files the name is constructed from the section offsets
814      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
815      from related CU+TUs.  */
816   const char *dwo_name;
817
818   /* The DW_AT_comp_dir attribute.  */
819   const char *comp_dir;
820
821   /* The bfd, when the file is open.  Otherwise this is NULL.
822      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
823   bfd *dbfd;
824
825   /* The sections that make up this DWO file.
826      Remember that for virtual DWO files in DWP V2, these are virtual
827      sections (for lack of a better name).  */
828   struct dwo_sections sections;
829
830   /* The CU in the file.
831      We only support one because having more than one requires hacking the
832      dwo_name of each to match, which is highly unlikely to happen.
833      Doing this means all TUs can share comp_dir: We also assume that
834      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
835   struct dwo_unit *cu;
836
837   /* Table of TUs in the file.
838      Each element is a struct dwo_unit.  */
839   htab_t tus;
840 };
841
842 /* These sections are what may appear in a DWP file.  */
843
844 struct dwp_sections
845 {
846   /* These are used by both DWP version 1 and 2.  */
847   struct dwarf2_section_info str;
848   struct dwarf2_section_info cu_index;
849   struct dwarf2_section_info tu_index;
850
851   /* These are only used by DWP version 2 files.
852      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
853      sections are referenced by section number, and are not recorded here.
854      In DWP version 2 there is at most one copy of all these sections, each
855      section being (effectively) comprised of the concatenation of all of the
856      individual sections that exist in the version 1 format.
857      To keep the code simple we treat each of these concatenated pieces as a
858      section itself (a virtual section?).  */
859   struct dwarf2_section_info abbrev;
860   struct dwarf2_section_info info;
861   struct dwarf2_section_info line;
862   struct dwarf2_section_info loc;
863   struct dwarf2_section_info macinfo;
864   struct dwarf2_section_info macro;
865   struct dwarf2_section_info str_offsets;
866   struct dwarf2_section_info types;
867 };
868
869 /* These sections are what may appear in a virtual DWO file in DWP version 1.
870    A virtual DWO file is a DWO file as it appears in a DWP file.  */
871
872 struct virtual_v1_dwo_sections
873 {
874   struct dwarf2_section_info abbrev;
875   struct dwarf2_section_info line;
876   struct dwarf2_section_info loc;
877   struct dwarf2_section_info macinfo;
878   struct dwarf2_section_info macro;
879   struct dwarf2_section_info str_offsets;
880   /* Each DWP hash table entry records one CU or one TU.
881      That is recorded here, and copied to dwo_unit.section.  */
882   struct dwarf2_section_info info_or_types;
883 };
884
885 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
886    In version 2, the sections of the DWO files are concatenated together
887    and stored in one section of that name.  Thus each ELF section contains
888    several "virtual" sections.  */
889
890 struct virtual_v2_dwo_sections
891 {
892   bfd_size_type abbrev_offset;
893   bfd_size_type abbrev_size;
894
895   bfd_size_type line_offset;
896   bfd_size_type line_size;
897
898   bfd_size_type loc_offset;
899   bfd_size_type loc_size;
900
901   bfd_size_type macinfo_offset;
902   bfd_size_type macinfo_size;
903
904   bfd_size_type macro_offset;
905   bfd_size_type macro_size;
906
907   bfd_size_type str_offsets_offset;
908   bfd_size_type str_offsets_size;
909
910   /* Each DWP hash table entry records one CU or one TU.
911      That is recorded here, and copied to dwo_unit.section.  */
912   bfd_size_type info_or_types_offset;
913   bfd_size_type info_or_types_size;
914 };
915
916 /* Contents of DWP hash tables.  */
917
918 struct dwp_hash_table
919 {
920   uint32_t version, nr_columns;
921   uint32_t nr_units, nr_slots;
922   const gdb_byte *hash_table, *unit_table;
923   union
924   {
925     struct
926     {
927       const gdb_byte *indices;
928     } v1;
929     struct
930     {
931       /* This is indexed by column number and gives the id of the section
932          in that column.  */
933 #define MAX_NR_V2_DWO_SECTIONS \
934   (1 /* .debug_info or .debug_types */ \
935    + 1 /* .debug_abbrev */ \
936    + 1 /* .debug_line */ \
937    + 1 /* .debug_loc */ \
938    + 1 /* .debug_str_offsets */ \
939    + 1 /* .debug_macro or .debug_macinfo */)
940       int section_ids[MAX_NR_V2_DWO_SECTIONS];
941       const gdb_byte *offsets;
942       const gdb_byte *sizes;
943     } v2;
944   } section_pool;
945 };
946
947 /* Data for one DWP file.  */
948
949 struct dwp_file
950 {
951   /* Name of the file.  */
952   const char *name;
953
954   /* File format version.  */
955   int version;
956
957   /* The bfd.  */
958   bfd *dbfd;
959
960   /* Section info for this file.  */
961   struct dwp_sections sections;
962
963   /* Table of CUs in the file.  */
964   const struct dwp_hash_table *cus;
965
966   /* Table of TUs in the file.  */
967   const struct dwp_hash_table *tus;
968
969   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
970   htab_t loaded_cus;
971   htab_t loaded_tus;
972
973   /* Table to map ELF section numbers to their sections.
974      This is only needed for the DWP V1 file format.  */
975   unsigned int num_sections;
976   asection **elf_sections;
977 };
978
979 /* This represents a '.dwz' file.  */
980
981 struct dwz_file
982 {
983   /* A dwz file can only contain a few sections.  */
984   struct dwarf2_section_info abbrev;
985   struct dwarf2_section_info info;
986   struct dwarf2_section_info str;
987   struct dwarf2_section_info line;
988   struct dwarf2_section_info macro;
989   struct dwarf2_section_info gdb_index;
990
991   /* The dwz's BFD.  */
992   bfd *dwz_bfd;
993 };
994
995 /* Struct used to pass misc. parameters to read_die_and_children, et
996    al.  which are used for both .debug_info and .debug_types dies.
997    All parameters here are unchanging for the life of the call.  This
998    struct exists to abstract away the constant parameters of die reading.  */
999
1000 struct die_reader_specs
1001 {
1002   /* The bfd of die_section.  */
1003   bfd* abfd;
1004
1005   /* The CU of the DIE we are parsing.  */
1006   struct dwarf2_cu *cu;
1007
1008   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
1009   struct dwo_file *dwo_file;
1010
1011   /* The section the die comes from.
1012      This is either .debug_info or .debug_types, or the .dwo variants.  */
1013   struct dwarf2_section_info *die_section;
1014
1015   /* die_section->buffer.  */
1016   const gdb_byte *buffer;
1017
1018   /* The end of the buffer.  */
1019   const gdb_byte *buffer_end;
1020
1021   /* The value of the DW_AT_comp_dir attribute.  */
1022   const char *comp_dir;
1023 };
1024
1025 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1026 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1027                                       const gdb_byte *info_ptr,
1028                                       struct die_info *comp_unit_die,
1029                                       int has_children,
1030                                       void *data);
1031
1032 struct file_entry
1033 {
1034   const char *name;
1035   unsigned int dir_index;
1036   unsigned int mod_time;
1037   unsigned int length;
1038   /* Non-zero if referenced by the Line Number Program.  */
1039   int included_p;
1040   /* The associated symbol table, if any.  */
1041   struct symtab *symtab;
1042 };
1043
1044 /* The line number information for a compilation unit (found in the
1045    .debug_line section) begins with a "statement program header",
1046    which contains the following information.  */
1047 struct line_header
1048 {
1049   /* Offset of line number information in .debug_line section.  */
1050   sect_offset offset;
1051
1052   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1053   unsigned offset_in_dwz : 1;
1054
1055   unsigned int total_length;
1056   unsigned short version;
1057   unsigned int header_length;
1058   unsigned char minimum_instruction_length;
1059   unsigned char maximum_ops_per_instruction;
1060   unsigned char default_is_stmt;
1061   int line_base;
1062   unsigned char line_range;
1063   unsigned char opcode_base;
1064
1065   /* standard_opcode_lengths[i] is the number of operands for the
1066      standard opcode whose value is i.  This means that
1067      standard_opcode_lengths[0] is unused, and the last meaningful
1068      element is standard_opcode_lengths[opcode_base - 1].  */
1069   unsigned char *standard_opcode_lengths;
1070
1071   /* The include_directories table.  NOTE!  These strings are not
1072      allocated with xmalloc; instead, they are pointers into
1073      debug_line_buffer.  If you try to free them, `free' will get
1074      indigestion.  */
1075   unsigned int num_include_dirs, include_dirs_size;
1076   const char **include_dirs;
1077
1078   /* The file_names table.  NOTE!  These strings are not allocated
1079      with xmalloc; instead, they are pointers into debug_line_buffer.
1080      Don't try to free them directly.  */
1081   unsigned int num_file_names, file_names_size;
1082   struct file_entry *file_names;
1083
1084   /* The start and end of the statement program following this
1085      header.  These point into dwarf2_per_objfile->line_buffer.  */
1086   const gdb_byte *statement_program_start, *statement_program_end;
1087 };
1088
1089 /* When we construct a partial symbol table entry we only
1090    need this much information.  */
1091 struct partial_die_info
1092   {
1093     /* Offset of this DIE.  */
1094     sect_offset offset;
1095
1096     /* DWARF-2 tag for this DIE.  */
1097     ENUM_BITFIELD(dwarf_tag) tag : 16;
1098
1099     /* Assorted flags describing the data found in this DIE.  */
1100     unsigned int has_children : 1;
1101     unsigned int is_external : 1;
1102     unsigned int is_declaration : 1;
1103     unsigned int has_type : 1;
1104     unsigned int has_specification : 1;
1105     unsigned int has_pc_info : 1;
1106     unsigned int may_be_inlined : 1;
1107
1108     /* Flag set if the SCOPE field of this structure has been
1109        computed.  */
1110     unsigned int scope_set : 1;
1111
1112     /* Flag set if the DIE has a byte_size attribute.  */
1113     unsigned int has_byte_size : 1;
1114
1115     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1116     unsigned int has_const_value : 1;
1117
1118     /* Flag set if any of the DIE's children are template arguments.  */
1119     unsigned int has_template_arguments : 1;
1120
1121     /* Flag set if fixup_partial_die has been called on this die.  */
1122     unsigned int fixup_called : 1;
1123
1124     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1125     unsigned int is_dwz : 1;
1126
1127     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1128     unsigned int spec_is_dwz : 1;
1129
1130     /* The name of this DIE.  Normally the value of DW_AT_name, but
1131        sometimes a default name for unnamed DIEs.  */
1132     const char *name;
1133
1134     /* The linkage name, if present.  */
1135     const char *linkage_name;
1136
1137     /* The scope to prepend to our children.  This is generally
1138        allocated on the comp_unit_obstack, so will disappear
1139        when this compilation unit leaves the cache.  */
1140     const char *scope;
1141
1142     /* Some data associated with the partial DIE.  The tag determines
1143        which field is live.  */
1144     union
1145     {
1146       /* The location description associated with this DIE, if any.  */
1147       struct dwarf_block *locdesc;
1148       /* The offset of an import, for DW_TAG_imported_unit.  */
1149       sect_offset offset;
1150     } d;
1151
1152     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1153     CORE_ADDR lowpc;
1154     CORE_ADDR highpc;
1155
1156     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1157        DW_AT_sibling, if any.  */
1158     /* NOTE: This member isn't strictly necessary, read_partial_die could
1159        return DW_AT_sibling values to its caller load_partial_dies.  */
1160     const gdb_byte *sibling;
1161
1162     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1163        DW_AT_specification (or DW_AT_abstract_origin or
1164        DW_AT_extension).  */
1165     sect_offset spec_offset;
1166
1167     /* Pointers to this DIE's parent, first child, and next sibling,
1168        if any.  */
1169     struct partial_die_info *die_parent, *die_child, *die_sibling;
1170   };
1171
1172 /* This data structure holds the information of an abbrev.  */
1173 struct abbrev_info
1174   {
1175     unsigned int number;        /* number identifying abbrev */
1176     enum dwarf_tag tag;         /* dwarf tag */
1177     unsigned short has_children;                /* boolean */
1178     unsigned short num_attrs;   /* number of attributes */
1179     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1180     struct abbrev_info *next;   /* next in chain */
1181   };
1182
1183 struct attr_abbrev
1184   {
1185     ENUM_BITFIELD(dwarf_attribute) name : 16;
1186     ENUM_BITFIELD(dwarf_form) form : 16;
1187   };
1188
1189 /* Size of abbrev_table.abbrev_hash_table.  */
1190 #define ABBREV_HASH_SIZE 121
1191
1192 /* Top level data structure to contain an abbreviation table.  */
1193
1194 struct abbrev_table
1195 {
1196   /* Where the abbrev table came from.
1197      This is used as a sanity check when the table is used.  */
1198   sect_offset offset;
1199
1200   /* Storage for the abbrev table.  */
1201   struct obstack abbrev_obstack;
1202
1203   /* Hash table of abbrevs.
1204      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1205      It could be statically allocated, but the previous code didn't so we
1206      don't either.  */
1207   struct abbrev_info **abbrevs;
1208 };
1209
1210 /* Attributes have a name and a value.  */
1211 struct attribute
1212   {
1213     ENUM_BITFIELD(dwarf_attribute) name : 16;
1214     ENUM_BITFIELD(dwarf_form) form : 15;
1215
1216     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1217        field should be in u.str (existing only for DW_STRING) but it is kept
1218        here for better struct attribute alignment.  */
1219     unsigned int string_is_canonical : 1;
1220
1221     union
1222       {
1223         const char *str;
1224         struct dwarf_block *blk;
1225         ULONGEST unsnd;
1226         LONGEST snd;
1227         CORE_ADDR addr;
1228         ULONGEST signature;
1229       }
1230     u;
1231   };
1232
1233 /* This data structure holds a complete die structure.  */
1234 struct die_info
1235   {
1236     /* DWARF-2 tag for this DIE.  */
1237     ENUM_BITFIELD(dwarf_tag) tag : 16;
1238
1239     /* Number of attributes */
1240     unsigned char num_attrs;
1241
1242     /* True if we're presently building the full type name for the
1243        type derived from this DIE.  */
1244     unsigned char building_fullname : 1;
1245
1246     /* True if this die is in process.  PR 16581.  */
1247     unsigned char in_process : 1;
1248
1249     /* Abbrev number */
1250     unsigned int abbrev;
1251
1252     /* Offset in .debug_info or .debug_types section.  */
1253     sect_offset offset;
1254
1255     /* The dies in a compilation unit form an n-ary tree.  PARENT
1256        points to this die's parent; CHILD points to the first child of
1257        this node; and all the children of a given node are chained
1258        together via their SIBLING fields.  */
1259     struct die_info *child;     /* Its first child, if any.  */
1260     struct die_info *sibling;   /* Its next sibling, if any.  */
1261     struct die_info *parent;    /* Its parent, if any.  */
1262
1263     /* An array of attributes, with NUM_ATTRS elements.  There may be
1264        zero, but it's not common and zero-sized arrays are not
1265        sufficiently portable C.  */
1266     struct attribute attrs[1];
1267   };
1268
1269 /* Get at parts of an attribute structure.  */
1270
1271 #define DW_STRING(attr)    ((attr)->u.str)
1272 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1273 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1274 #define DW_BLOCK(attr)     ((attr)->u.blk)
1275 #define DW_SND(attr)       ((attr)->u.snd)
1276 #define DW_ADDR(attr)      ((attr)->u.addr)
1277 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1278
1279 /* Blocks are a bunch of untyped bytes.  */
1280 struct dwarf_block
1281   {
1282     size_t size;
1283
1284     /* Valid only if SIZE is not zero.  */
1285     const gdb_byte *data;
1286   };
1287
1288 #ifndef ATTR_ALLOC_CHUNK
1289 #define ATTR_ALLOC_CHUNK 4
1290 #endif
1291
1292 /* Allocate fields for structs, unions and enums in this size.  */
1293 #ifndef DW_FIELD_ALLOC_CHUNK
1294 #define DW_FIELD_ALLOC_CHUNK 4
1295 #endif
1296
1297 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1298    but this would require a corresponding change in unpack_field_as_long
1299    and friends.  */
1300 static int bits_per_byte = 8;
1301
1302 struct nextfield
1303 {
1304   struct nextfield *next;
1305   int accessibility;
1306   int virtuality;
1307   struct field field;
1308 };
1309
1310 struct nextfnfield
1311 {
1312   struct nextfnfield *next;
1313   struct fn_field fnfield;
1314 };
1315
1316 struct fnfieldlist
1317 {
1318   const char *name;
1319   int length;
1320   struct nextfnfield *head;
1321 };
1322
1323 struct typedef_field_list
1324 {
1325   struct typedef_field field;
1326   struct typedef_field_list *next;
1327 };
1328
1329 /* The routines that read and process dies for a C struct or C++ class
1330    pass lists of data member fields and lists of member function fields
1331    in an instance of a field_info structure, as defined below.  */
1332 struct field_info
1333   {
1334     /* List of data member and baseclasses fields.  */
1335     struct nextfield *fields, *baseclasses;
1336
1337     /* Number of fields (including baseclasses).  */
1338     int nfields;
1339
1340     /* Number of baseclasses.  */
1341     int nbaseclasses;
1342
1343     /* Set if the accesibility of one of the fields is not public.  */
1344     int non_public_fields;
1345
1346     /* Member function fields array, entries are allocated in the order they
1347        are encountered in the object file.  */
1348     struct nextfnfield *fnfields;
1349
1350     /* Member function fieldlist array, contains name of possibly overloaded
1351        member function, number of overloaded member functions and a pointer
1352        to the head of the member function field chain.  */
1353     struct fnfieldlist *fnfieldlists;
1354
1355     /* Number of entries in the fnfieldlists array.  */
1356     int nfnfields;
1357
1358     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1359        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1360     struct typedef_field_list *typedef_field_list;
1361     unsigned typedef_field_list_count;
1362   };
1363
1364 /* One item on the queue of compilation units to read in full symbols
1365    for.  */
1366 struct dwarf2_queue_item
1367 {
1368   struct dwarf2_per_cu_data *per_cu;
1369   enum language pretend_language;
1370   struct dwarf2_queue_item *next;
1371 };
1372
1373 /* The current queue.  */
1374 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1375
1376 /* Loaded secondary compilation units are kept in memory until they
1377    have not been referenced for the processing of this many
1378    compilation units.  Set this to zero to disable caching.  Cache
1379    sizes of up to at least twenty will improve startup time for
1380    typical inter-CU-reference binaries, at an obvious memory cost.  */
1381 static int dwarf_max_cache_age = 5;
1382 static void
1383 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1384                           struct cmd_list_element *c, const char *value)
1385 {
1386   fprintf_filtered (file, _("The upper bound on the age of cached "
1387                             "DWARF compilation units is %s.\n"),
1388                     value);
1389 }
1390 \f
1391 /* local function prototypes */
1392
1393 static const char *get_section_name (const struct dwarf2_section_info *);
1394
1395 static const char *get_section_file_name (const struct dwarf2_section_info *);
1396
1397 static void dwarf2_locate_sections (bfd *, asection *, void *);
1398
1399 static void dwarf2_find_base_address (struct die_info *die,
1400                                       struct dwarf2_cu *cu);
1401
1402 static struct partial_symtab *create_partial_symtab
1403   (struct dwarf2_per_cu_data *per_cu, const char *name);
1404
1405 static void dwarf2_build_psymtabs_hard (struct objfile *);
1406
1407 static void scan_partial_symbols (struct partial_die_info *,
1408                                   CORE_ADDR *, CORE_ADDR *,
1409                                   int, struct dwarf2_cu *);
1410
1411 static void add_partial_symbol (struct partial_die_info *,
1412                                 struct dwarf2_cu *);
1413
1414 static void add_partial_namespace (struct partial_die_info *pdi,
1415                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1416                                    int set_addrmap, struct dwarf2_cu *cu);
1417
1418 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1419                                 CORE_ADDR *highpc, int set_addrmap,
1420                                 struct dwarf2_cu *cu);
1421
1422 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1423                                      struct dwarf2_cu *cu);
1424
1425 static void add_partial_subprogram (struct partial_die_info *pdi,
1426                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1427                                     int need_pc, struct dwarf2_cu *cu);
1428
1429 static void dwarf2_read_symtab (struct partial_symtab *,
1430                                 struct objfile *);
1431
1432 static void psymtab_to_symtab_1 (struct partial_symtab *);
1433
1434 static struct abbrev_info *abbrev_table_lookup_abbrev
1435   (const struct abbrev_table *, unsigned int);
1436
1437 static struct abbrev_table *abbrev_table_read_table
1438   (struct dwarf2_section_info *, sect_offset);
1439
1440 static void abbrev_table_free (struct abbrev_table *);
1441
1442 static void abbrev_table_free_cleanup (void *);
1443
1444 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1445                                  struct dwarf2_section_info *);
1446
1447 static void dwarf2_free_abbrev_table (void *);
1448
1449 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1450
1451 static struct partial_die_info *load_partial_dies
1452   (const struct die_reader_specs *, const gdb_byte *, int);
1453
1454 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1455                                          struct partial_die_info *,
1456                                          struct abbrev_info *,
1457                                          unsigned int,
1458                                          const gdb_byte *);
1459
1460 static struct partial_die_info *find_partial_die (sect_offset, int,
1461                                                   struct dwarf2_cu *);
1462
1463 static void fixup_partial_die (struct partial_die_info *,
1464                                struct dwarf2_cu *);
1465
1466 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1467                                        struct attribute *, struct attr_abbrev *,
1468                                        const gdb_byte *);
1469
1470 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1471
1472 static int read_1_signed_byte (bfd *, const gdb_byte *);
1473
1474 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1475
1476 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1477
1478 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1479
1480 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1481                                unsigned int *);
1482
1483 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1484
1485 static LONGEST read_checked_initial_length_and_offset
1486   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1487    unsigned int *, unsigned int *);
1488
1489 static LONGEST read_offset (bfd *, const gdb_byte *,
1490                             const struct comp_unit_head *,
1491                             unsigned int *);
1492
1493 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1494
1495 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1496                                        sect_offset);
1497
1498 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1499
1500 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1501
1502 static const char *read_indirect_string (bfd *, const gdb_byte *,
1503                                          const struct comp_unit_head *,
1504                                          unsigned int *);
1505
1506 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1507
1508 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1509
1510 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1511
1512 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1513                                               const gdb_byte *,
1514                                               unsigned int *);
1515
1516 static const char *read_str_index (const struct die_reader_specs *reader,
1517                                    ULONGEST str_index);
1518
1519 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1520
1521 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1522                                       struct dwarf2_cu *);
1523
1524 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1525                                                 unsigned int);
1526
1527 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1528                                        struct dwarf2_cu *cu);
1529
1530 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1531                                struct dwarf2_cu *cu);
1532
1533 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1534
1535 static struct die_info *die_specification (struct die_info *die,
1536                                            struct dwarf2_cu **);
1537
1538 static void free_line_header (struct line_header *lh);
1539
1540 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1541                                                      struct dwarf2_cu *cu);
1542
1543 static void dwarf_decode_lines (struct line_header *, const char *,
1544                                 struct dwarf2_cu *, struct partial_symtab *,
1545                                 CORE_ADDR, int decode_mapping);
1546
1547 static void dwarf2_start_subfile (const char *, const char *);
1548
1549 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1550                                                     const char *, const char *,
1551                                                     CORE_ADDR);
1552
1553 static struct symbol *new_symbol (struct die_info *, struct type *,
1554                                   struct dwarf2_cu *);
1555
1556 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1557                                        struct dwarf2_cu *, struct symbol *);
1558
1559 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1560                                 struct dwarf2_cu *);
1561
1562 static void dwarf2_const_value_attr (const struct attribute *attr,
1563                                      struct type *type,
1564                                      const char *name,
1565                                      struct obstack *obstack,
1566                                      struct dwarf2_cu *cu, LONGEST *value,
1567                                      const gdb_byte **bytes,
1568                                      struct dwarf2_locexpr_baton **baton);
1569
1570 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1571
1572 static int need_gnat_info (struct dwarf2_cu *);
1573
1574 static struct type *die_descriptive_type (struct die_info *,
1575                                           struct dwarf2_cu *);
1576
1577 static void set_descriptive_type (struct type *, struct die_info *,
1578                                   struct dwarf2_cu *);
1579
1580 static struct type *die_containing_type (struct die_info *,
1581                                          struct dwarf2_cu *);
1582
1583 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1584                                      struct dwarf2_cu *);
1585
1586 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1587
1588 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1589
1590 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1591
1592 static char *typename_concat (struct obstack *obs, const char *prefix,
1593                               const char *suffix, int physname,
1594                               struct dwarf2_cu *cu);
1595
1596 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1597
1598 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1599
1600 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1601
1602 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1603
1604 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1605
1606 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1607                                struct dwarf2_cu *, struct partial_symtab *);
1608
1609 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1610    values.  Keep the items ordered with increasing constraints compliance.  */
1611 enum pc_bounds_kind
1612 {
1613   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1614   PC_BOUNDS_NOT_PRESENT,
1615
1616   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1617      were present but they do not form a valid range of PC addresses.  */
1618   PC_BOUNDS_INVALID,
1619
1620   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1621   PC_BOUNDS_RANGES,
1622
1623   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1624   PC_BOUNDS_HIGH_LOW,
1625 };
1626
1627 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1628                                                  CORE_ADDR *, CORE_ADDR *,
1629                                                  struct dwarf2_cu *,
1630                                                  struct partial_symtab *);
1631
1632 static void get_scope_pc_bounds (struct die_info *,
1633                                  CORE_ADDR *, CORE_ADDR *,
1634                                  struct dwarf2_cu *);
1635
1636 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1637                                         CORE_ADDR, struct dwarf2_cu *);
1638
1639 static void dwarf2_add_field (struct field_info *, struct die_info *,
1640                               struct dwarf2_cu *);
1641
1642 static void dwarf2_attach_fields_to_type (struct field_info *,
1643                                           struct type *, struct dwarf2_cu *);
1644
1645 static void dwarf2_add_member_fn (struct field_info *,
1646                                   struct die_info *, struct type *,
1647                                   struct dwarf2_cu *);
1648
1649 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1650                                              struct type *,
1651                                              struct dwarf2_cu *);
1652
1653 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1654
1655 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1656
1657 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1658
1659 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1660
1661 static struct using_direct **using_directives (enum language);
1662
1663 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1664
1665 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1666
1667 static struct type *read_module_type (struct die_info *die,
1668                                       struct dwarf2_cu *cu);
1669
1670 static const char *namespace_name (struct die_info *die,
1671                                    int *is_anonymous, struct dwarf2_cu *);
1672
1673 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1674
1675 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1676
1677 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1678                                                        struct dwarf2_cu *);
1679
1680 static struct die_info *read_die_and_siblings_1
1681   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1682    struct die_info *);
1683
1684 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1685                                                const gdb_byte *info_ptr,
1686                                                const gdb_byte **new_info_ptr,
1687                                                struct die_info *parent);
1688
1689 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1690                                         struct die_info **, const gdb_byte *,
1691                                         int *, int);
1692
1693 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1694                                       struct die_info **, const gdb_byte *,
1695                                       int *);
1696
1697 static void process_die (struct die_info *, struct dwarf2_cu *);
1698
1699 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1700                                              struct obstack *);
1701
1702 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1703
1704 static const char *dwarf2_full_name (const char *name,
1705                                      struct die_info *die,
1706                                      struct dwarf2_cu *cu);
1707
1708 static const char *dwarf2_physname (const char *name, struct die_info *die,
1709                                     struct dwarf2_cu *cu);
1710
1711 static struct die_info *dwarf2_extension (struct die_info *die,
1712                                           struct dwarf2_cu **);
1713
1714 static const char *dwarf_tag_name (unsigned int);
1715
1716 static const char *dwarf_attr_name (unsigned int);
1717
1718 static const char *dwarf_form_name (unsigned int);
1719
1720 static char *dwarf_bool_name (unsigned int);
1721
1722 static const char *dwarf_type_encoding_name (unsigned int);
1723
1724 static struct die_info *sibling_die (struct die_info *);
1725
1726 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1727
1728 static void dump_die_for_error (struct die_info *);
1729
1730 static void dump_die_1 (struct ui_file *, int level, int max_level,
1731                         struct die_info *);
1732
1733 /*static*/ void dump_die (struct die_info *, int max_level);
1734
1735 static void store_in_ref_table (struct die_info *,
1736                                 struct dwarf2_cu *);
1737
1738 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1739
1740 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1741
1742 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1743                                                const struct attribute *,
1744                                                struct dwarf2_cu **);
1745
1746 static struct die_info *follow_die_ref (struct die_info *,
1747                                         const struct attribute *,
1748                                         struct dwarf2_cu **);
1749
1750 static struct die_info *follow_die_sig (struct die_info *,
1751                                         const struct attribute *,
1752                                         struct dwarf2_cu **);
1753
1754 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1755                                          struct dwarf2_cu *);
1756
1757 static struct type *get_DW_AT_signature_type (struct die_info *,
1758                                               const struct attribute *,
1759                                               struct dwarf2_cu *);
1760
1761 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1762
1763 static void read_signatured_type (struct signatured_type *);
1764
1765 static int attr_to_dynamic_prop (const struct attribute *attr,
1766                                  struct die_info *die, struct dwarf2_cu *cu,
1767                                  struct dynamic_prop *prop);
1768
1769 /* memory allocation interface */
1770
1771 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1772
1773 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1774
1775 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1776
1777 static int attr_form_is_block (const struct attribute *);
1778
1779 static int attr_form_is_section_offset (const struct attribute *);
1780
1781 static int attr_form_is_constant (const struct attribute *);
1782
1783 static int attr_form_is_ref (const struct attribute *);
1784
1785 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1786                                    struct dwarf2_loclist_baton *baton,
1787                                    const struct attribute *attr);
1788
1789 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1790                                          struct symbol *sym,
1791                                          struct dwarf2_cu *cu,
1792                                          int is_block);
1793
1794 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1795                                      const gdb_byte *info_ptr,
1796                                      struct abbrev_info *abbrev);
1797
1798 static void free_stack_comp_unit (void *);
1799
1800 static hashval_t partial_die_hash (const void *item);
1801
1802 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1803
1804 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1805   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1806
1807 static void init_one_comp_unit (struct dwarf2_cu *cu,
1808                                 struct dwarf2_per_cu_data *per_cu);
1809
1810 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1811                                    struct die_info *comp_unit_die,
1812                                    enum language pretend_language);
1813
1814 static void free_heap_comp_unit (void *);
1815
1816 static void free_cached_comp_units (void *);
1817
1818 static void age_cached_comp_units (void);
1819
1820 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1821
1822 static struct type *set_die_type (struct die_info *, struct type *,
1823                                   struct dwarf2_cu *);
1824
1825 static void create_all_comp_units (struct objfile *);
1826
1827 static int create_all_type_units (struct objfile *);
1828
1829 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1830                                  enum language);
1831
1832 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1833                                     enum language);
1834
1835 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1836                                     enum language);
1837
1838 static void dwarf2_add_dependence (struct dwarf2_cu *,
1839                                    struct dwarf2_per_cu_data *);
1840
1841 static void dwarf2_mark (struct dwarf2_cu *);
1842
1843 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1844
1845 static struct type *get_die_type_at_offset (sect_offset,
1846                                             struct dwarf2_per_cu_data *);
1847
1848 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1849
1850 static void dwarf2_release_queue (void *dummy);
1851
1852 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1853                              enum language pretend_language);
1854
1855 static void process_queue (void);
1856
1857 static void find_file_and_directory (struct die_info *die,
1858                                      struct dwarf2_cu *cu,
1859                                      const char **name, const char **comp_dir);
1860
1861 static char *file_full_name (int file, struct line_header *lh,
1862                              const char *comp_dir);
1863
1864 static const gdb_byte *read_and_check_comp_unit_head
1865   (struct comp_unit_head *header,
1866    struct dwarf2_section_info *section,
1867    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1868    int is_debug_types_section);
1869
1870 static void init_cutu_and_read_dies
1871   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1872    int use_existing_cu, int keep,
1873    die_reader_func_ftype *die_reader_func, void *data);
1874
1875 static void init_cutu_and_read_dies_simple
1876   (struct dwarf2_per_cu_data *this_cu,
1877    die_reader_func_ftype *die_reader_func, void *data);
1878
1879 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1880
1881 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1882
1883 static struct dwo_unit *lookup_dwo_unit_in_dwp
1884   (struct dwp_file *dwp_file, const char *comp_dir,
1885    ULONGEST signature, int is_debug_types);
1886
1887 static struct dwp_file *get_dwp_file (void);
1888
1889 static struct dwo_unit *lookup_dwo_comp_unit
1890   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1891
1892 static struct dwo_unit *lookup_dwo_type_unit
1893   (struct signatured_type *, const char *, const char *);
1894
1895 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1896
1897 static void free_dwo_file_cleanup (void *);
1898
1899 static void process_cu_includes (void);
1900
1901 static void check_producer (struct dwarf2_cu *cu);
1902
1903 static void free_line_header_voidp (void *arg);
1904 \f
1905 /* Various complaints about symbol reading that don't abort the process.  */
1906
1907 static void
1908 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1909 {
1910   complaint (&symfile_complaints,
1911              _("statement list doesn't fit in .debug_line section"));
1912 }
1913
1914 static void
1915 dwarf2_debug_line_missing_file_complaint (void)
1916 {
1917   complaint (&symfile_complaints,
1918              _(".debug_line section has line data without a file"));
1919 }
1920
1921 static void
1922 dwarf2_debug_line_missing_end_sequence_complaint (void)
1923 {
1924   complaint (&symfile_complaints,
1925              _(".debug_line section has line "
1926                "program sequence without an end"));
1927 }
1928
1929 static void
1930 dwarf2_complex_location_expr_complaint (void)
1931 {
1932   complaint (&symfile_complaints, _("location expression too complex"));
1933 }
1934
1935 static void
1936 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1937                                               int arg3)
1938 {
1939   complaint (&symfile_complaints,
1940              _("const value length mismatch for '%s', got %d, expected %d"),
1941              arg1, arg2, arg3);
1942 }
1943
1944 static void
1945 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1946 {
1947   complaint (&symfile_complaints,
1948              _("debug info runs off end of %s section"
1949                " [in module %s]"),
1950              get_section_name (section),
1951              get_section_file_name (section));
1952 }
1953
1954 static void
1955 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1956 {
1957   complaint (&symfile_complaints,
1958              _("macro debug info contains a "
1959                "malformed macro definition:\n`%s'"),
1960              arg1);
1961 }
1962
1963 static void
1964 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1965 {
1966   complaint (&symfile_complaints,
1967              _("invalid attribute class or form for '%s' in '%s'"),
1968              arg1, arg2);
1969 }
1970
1971 /* Hash function for line_header_hash.  */
1972
1973 static hashval_t
1974 line_header_hash (const struct line_header *ofs)
1975 {
1976   return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1977 }
1978
1979 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
1980
1981 static hashval_t
1982 line_header_hash_voidp (const void *item)
1983 {
1984   const struct line_header *ofs = (const struct line_header *) item;
1985
1986   return line_header_hash (ofs);
1987 }
1988
1989 /* Equality function for line_header_hash.  */
1990
1991 static int
1992 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1993 {
1994   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
1995   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
1996
1997   return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1998           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1999 }
2000
2001 \f
2002 #if WORDS_BIGENDIAN
2003
2004 /* Convert VALUE between big- and little-endian.  */
2005 static offset_type
2006 byte_swap (offset_type value)
2007 {
2008   offset_type result;
2009
2010   result = (value & 0xff) << 24;
2011   result |= (value & 0xff00) << 8;
2012   result |= (value & 0xff0000) >> 8;
2013   result |= (value & 0xff000000) >> 24;
2014   return result;
2015 }
2016
2017 #define MAYBE_SWAP(V)  byte_swap (V)
2018
2019 #else
2020 #define MAYBE_SWAP(V) (V)
2021 #endif /* WORDS_BIGENDIAN */
2022
2023 /* Read the given attribute value as an address, taking the attribute's
2024    form into account.  */
2025
2026 static CORE_ADDR
2027 attr_value_as_address (struct attribute *attr)
2028 {
2029   CORE_ADDR addr;
2030
2031   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2032     {
2033       /* Aside from a few clearly defined exceptions, attributes that
2034          contain an address must always be in DW_FORM_addr form.
2035          Unfortunately, some compilers happen to be violating this
2036          requirement by encoding addresses using other forms, such
2037          as DW_FORM_data4 for example.  For those broken compilers,
2038          we try to do our best, without any guarantee of success,
2039          to interpret the address correctly.  It would also be nice
2040          to generate a complaint, but that would require us to maintain
2041          a list of legitimate cases where a non-address form is allowed,
2042          as well as update callers to pass in at least the CU's DWARF
2043          version.  This is more overhead than what we're willing to
2044          expand for a pretty rare case.  */
2045       addr = DW_UNSND (attr);
2046     }
2047   else
2048     addr = DW_ADDR (attr);
2049
2050   return addr;
2051 }
2052
2053 /* The suffix for an index file.  */
2054 #define INDEX_SUFFIX ".gdb-index"
2055
2056 /* Try to locate the sections we need for DWARF 2 debugging
2057    information and return true if we have enough to do something.
2058    NAMES points to the dwarf2 section names, or is NULL if the standard
2059    ELF names are used.  */
2060
2061 int
2062 dwarf2_has_info (struct objfile *objfile,
2063                  const struct dwarf2_debug_sections *names)
2064 {
2065   dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
2066                         objfile_data (objfile, dwarf2_objfile_data_key));
2067   if (!dwarf2_per_objfile)
2068     {
2069       /* Initialize per-objfile state.  */
2070       struct dwarf2_per_objfile *data
2071         = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_objfile);
2072
2073       memset (data, 0, sizeof (*data));
2074       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2075       dwarf2_per_objfile = data;
2076
2077       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2078                              (void *) names);
2079       dwarf2_per_objfile->objfile = objfile;
2080     }
2081   return (!dwarf2_per_objfile->info.is_virtual
2082           && dwarf2_per_objfile->info.s.section != NULL
2083           && !dwarf2_per_objfile->abbrev.is_virtual
2084           && dwarf2_per_objfile->abbrev.s.section != NULL);
2085 }
2086
2087 /* Return the containing section of virtual section SECTION.  */
2088
2089 static struct dwarf2_section_info *
2090 get_containing_section (const struct dwarf2_section_info *section)
2091 {
2092   gdb_assert (section->is_virtual);
2093   return section->s.containing_section;
2094 }
2095
2096 /* Return the bfd owner of SECTION.  */
2097
2098 static struct bfd *
2099 get_section_bfd_owner (const struct dwarf2_section_info *section)
2100 {
2101   if (section->is_virtual)
2102     {
2103       section = get_containing_section (section);
2104       gdb_assert (!section->is_virtual);
2105     }
2106   return section->s.section->owner;
2107 }
2108
2109 /* Return the bfd section of SECTION.
2110    Returns NULL if the section is not present.  */
2111
2112 static asection *
2113 get_section_bfd_section (const struct dwarf2_section_info *section)
2114 {
2115   if (section->is_virtual)
2116     {
2117       section = get_containing_section (section);
2118       gdb_assert (!section->is_virtual);
2119     }
2120   return section->s.section;
2121 }
2122
2123 /* Return the name of SECTION.  */
2124
2125 static const char *
2126 get_section_name (const struct dwarf2_section_info *section)
2127 {
2128   asection *sectp = get_section_bfd_section (section);
2129
2130   gdb_assert (sectp != NULL);
2131   return bfd_section_name (get_section_bfd_owner (section), sectp);
2132 }
2133
2134 /* Return the name of the file SECTION is in.  */
2135
2136 static const char *
2137 get_section_file_name (const struct dwarf2_section_info *section)
2138 {
2139   bfd *abfd = get_section_bfd_owner (section);
2140
2141   return bfd_get_filename (abfd);
2142 }
2143
2144 /* Return the id of SECTION.
2145    Returns 0 if SECTION doesn't exist.  */
2146
2147 static int
2148 get_section_id (const struct dwarf2_section_info *section)
2149 {
2150   asection *sectp = get_section_bfd_section (section);
2151
2152   if (sectp == NULL)
2153     return 0;
2154   return sectp->id;
2155 }
2156
2157 /* Return the flags of SECTION.
2158    SECTION (or containing section if this is a virtual section) must exist.  */
2159
2160 static int
2161 get_section_flags (const struct dwarf2_section_info *section)
2162 {
2163   asection *sectp = get_section_bfd_section (section);
2164
2165   gdb_assert (sectp != NULL);
2166   return bfd_get_section_flags (sectp->owner, sectp);
2167 }
2168
2169 /* When loading sections, we look either for uncompressed section or for
2170    compressed section names.  */
2171
2172 static int
2173 section_is_p (const char *section_name,
2174               const struct dwarf2_section_names *names)
2175 {
2176   if (names->normal != NULL
2177       && strcmp (section_name, names->normal) == 0)
2178     return 1;
2179   if (names->compressed != NULL
2180       && strcmp (section_name, names->compressed) == 0)
2181     return 1;
2182   return 0;
2183 }
2184
2185 /* This function is mapped across the sections and remembers the
2186    offset and size of each of the debugging sections we are interested
2187    in.  */
2188
2189 static void
2190 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2191 {
2192   const struct dwarf2_debug_sections *names;
2193   flagword aflag = bfd_get_section_flags (abfd, sectp);
2194
2195   if (vnames == NULL)
2196     names = &dwarf2_elf_names;
2197   else
2198     names = (const struct dwarf2_debug_sections *) vnames;
2199
2200   if ((aflag & SEC_HAS_CONTENTS) == 0)
2201     {
2202     }
2203   else if (section_is_p (sectp->name, &names->info))
2204     {
2205       dwarf2_per_objfile->info.s.section = sectp;
2206       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2207     }
2208   else if (section_is_p (sectp->name, &names->abbrev))
2209     {
2210       dwarf2_per_objfile->abbrev.s.section = sectp;
2211       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2212     }
2213   else if (section_is_p (sectp->name, &names->line))
2214     {
2215       dwarf2_per_objfile->line.s.section = sectp;
2216       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2217     }
2218   else if (section_is_p (sectp->name, &names->loc))
2219     {
2220       dwarf2_per_objfile->loc.s.section = sectp;
2221       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2222     }
2223   else if (section_is_p (sectp->name, &names->macinfo))
2224     {
2225       dwarf2_per_objfile->macinfo.s.section = sectp;
2226       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2227     }
2228   else if (section_is_p (sectp->name, &names->macro))
2229     {
2230       dwarf2_per_objfile->macro.s.section = sectp;
2231       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2232     }
2233   else if (section_is_p (sectp->name, &names->str))
2234     {
2235       dwarf2_per_objfile->str.s.section = sectp;
2236       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2237     }
2238   else if (section_is_p (sectp->name, &names->addr))
2239     {
2240       dwarf2_per_objfile->addr.s.section = sectp;
2241       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2242     }
2243   else if (section_is_p (sectp->name, &names->frame))
2244     {
2245       dwarf2_per_objfile->frame.s.section = sectp;
2246       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2247     }
2248   else if (section_is_p (sectp->name, &names->eh_frame))
2249     {
2250       dwarf2_per_objfile->eh_frame.s.section = sectp;
2251       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2252     }
2253   else if (section_is_p (sectp->name, &names->ranges))
2254     {
2255       dwarf2_per_objfile->ranges.s.section = sectp;
2256       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2257     }
2258   else if (section_is_p (sectp->name, &names->types))
2259     {
2260       struct dwarf2_section_info type_section;
2261
2262       memset (&type_section, 0, sizeof (type_section));
2263       type_section.s.section = sectp;
2264       type_section.size = bfd_get_section_size (sectp);
2265
2266       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2267                      &type_section);
2268     }
2269   else if (section_is_p (sectp->name, &names->gdb_index))
2270     {
2271       dwarf2_per_objfile->gdb_index.s.section = sectp;
2272       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2273     }
2274
2275   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2276       && bfd_section_vma (abfd, sectp) == 0)
2277     dwarf2_per_objfile->has_section_at_zero = 1;
2278 }
2279
2280 /* A helper function that decides whether a section is empty,
2281    or not present.  */
2282
2283 static int
2284 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2285 {
2286   if (section->is_virtual)
2287     return section->size == 0;
2288   return section->s.section == NULL || section->size == 0;
2289 }
2290
2291 /* Read the contents of the section INFO.
2292    OBJFILE is the main object file, but not necessarily the file where
2293    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2294    of the DWO file.
2295    If the section is compressed, uncompress it before returning.  */
2296
2297 static void
2298 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2299 {
2300   asection *sectp;
2301   bfd *abfd;
2302   gdb_byte *buf, *retbuf;
2303
2304   if (info->readin)
2305     return;
2306   info->buffer = NULL;
2307   info->readin = 1;
2308
2309   if (dwarf2_section_empty_p (info))
2310     return;
2311
2312   sectp = get_section_bfd_section (info);
2313
2314   /* If this is a virtual section we need to read in the real one first.  */
2315   if (info->is_virtual)
2316     {
2317       struct dwarf2_section_info *containing_section =
2318         get_containing_section (info);
2319
2320       gdb_assert (sectp != NULL);
2321       if ((sectp->flags & SEC_RELOC) != 0)
2322         {
2323           error (_("Dwarf Error: DWP format V2 with relocations is not"
2324                    " supported in section %s [in module %s]"),
2325                  get_section_name (info), get_section_file_name (info));
2326         }
2327       dwarf2_read_section (objfile, containing_section);
2328       /* Other code should have already caught virtual sections that don't
2329          fit.  */
2330       gdb_assert (info->virtual_offset + info->size
2331                   <= containing_section->size);
2332       /* If the real section is empty or there was a problem reading the
2333          section we shouldn't get here.  */
2334       gdb_assert (containing_section->buffer != NULL);
2335       info->buffer = containing_section->buffer + info->virtual_offset;
2336       return;
2337     }
2338
2339   /* If the section has relocations, we must read it ourselves.
2340      Otherwise we attach it to the BFD.  */
2341   if ((sectp->flags & SEC_RELOC) == 0)
2342     {
2343       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2344       return;
2345     }
2346
2347   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2348   info->buffer = buf;
2349
2350   /* When debugging .o files, we may need to apply relocations; see
2351      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2352      We never compress sections in .o files, so we only need to
2353      try this when the section is not compressed.  */
2354   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2355   if (retbuf != NULL)
2356     {
2357       info->buffer = retbuf;
2358       return;
2359     }
2360
2361   abfd = get_section_bfd_owner (info);
2362   gdb_assert (abfd != NULL);
2363
2364   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2365       || bfd_bread (buf, info->size, abfd) != info->size)
2366     {
2367       error (_("Dwarf Error: Can't read DWARF data"
2368                " in section %s [in module %s]"),
2369              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2370     }
2371 }
2372
2373 /* A helper function that returns the size of a section in a safe way.
2374    If you are positive that the section has been read before using the
2375    size, then it is safe to refer to the dwarf2_section_info object's
2376    "size" field directly.  In other cases, you must call this
2377    function, because for compressed sections the size field is not set
2378    correctly until the section has been read.  */
2379
2380 static bfd_size_type
2381 dwarf2_section_size (struct objfile *objfile,
2382                      struct dwarf2_section_info *info)
2383 {
2384   if (!info->readin)
2385     dwarf2_read_section (objfile, info);
2386   return info->size;
2387 }
2388
2389 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2390    SECTION_NAME.  */
2391
2392 void
2393 dwarf2_get_section_info (struct objfile *objfile,
2394                          enum dwarf2_section_enum sect,
2395                          asection **sectp, const gdb_byte **bufp,
2396                          bfd_size_type *sizep)
2397 {
2398   struct dwarf2_per_objfile *data
2399     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2400                                                   dwarf2_objfile_data_key);
2401   struct dwarf2_section_info *info;
2402
2403   /* We may see an objfile without any DWARF, in which case we just
2404      return nothing.  */
2405   if (data == NULL)
2406     {
2407       *sectp = NULL;
2408       *bufp = NULL;
2409       *sizep = 0;
2410       return;
2411     }
2412   switch (sect)
2413     {
2414     case DWARF2_DEBUG_FRAME:
2415       info = &data->frame;
2416       break;
2417     case DWARF2_EH_FRAME:
2418       info = &data->eh_frame;
2419       break;
2420     default:
2421       gdb_assert_not_reached ("unexpected section");
2422     }
2423
2424   dwarf2_read_section (objfile, info);
2425
2426   *sectp = get_section_bfd_section (info);
2427   *bufp = info->buffer;
2428   *sizep = info->size;
2429 }
2430
2431 /* A helper function to find the sections for a .dwz file.  */
2432
2433 static void
2434 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2435 {
2436   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2437
2438   /* Note that we only support the standard ELF names, because .dwz
2439      is ELF-only (at the time of writing).  */
2440   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2441     {
2442       dwz_file->abbrev.s.section = sectp;
2443       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2444     }
2445   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2446     {
2447       dwz_file->info.s.section = sectp;
2448       dwz_file->info.size = bfd_get_section_size (sectp);
2449     }
2450   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2451     {
2452       dwz_file->str.s.section = sectp;
2453       dwz_file->str.size = bfd_get_section_size (sectp);
2454     }
2455   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2456     {
2457       dwz_file->line.s.section = sectp;
2458       dwz_file->line.size = bfd_get_section_size (sectp);
2459     }
2460   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2461     {
2462       dwz_file->macro.s.section = sectp;
2463       dwz_file->macro.size = bfd_get_section_size (sectp);
2464     }
2465   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2466     {
2467       dwz_file->gdb_index.s.section = sectp;
2468       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2469     }
2470 }
2471
2472 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2473    there is no .gnu_debugaltlink section in the file.  Error if there
2474    is such a section but the file cannot be found.  */
2475
2476 static struct dwz_file *
2477 dwarf2_get_dwz_file (void)
2478 {
2479   bfd *dwz_bfd;
2480   char *data;
2481   struct cleanup *cleanup;
2482   const char *filename;
2483   struct dwz_file *result;
2484   bfd_size_type buildid_len_arg;
2485   size_t buildid_len;
2486   bfd_byte *buildid;
2487
2488   if (dwarf2_per_objfile->dwz_file != NULL)
2489     return dwarf2_per_objfile->dwz_file;
2490
2491   bfd_set_error (bfd_error_no_error);
2492   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2493                                       &buildid_len_arg, &buildid);
2494   if (data == NULL)
2495     {
2496       if (bfd_get_error () == bfd_error_no_error)
2497         return NULL;
2498       error (_("could not read '.gnu_debugaltlink' section: %s"),
2499              bfd_errmsg (bfd_get_error ()));
2500     }
2501   cleanup = make_cleanup (xfree, data);
2502   make_cleanup (xfree, buildid);
2503
2504   buildid_len = (size_t) buildid_len_arg;
2505
2506   filename = (const char *) data;
2507   if (!IS_ABSOLUTE_PATH (filename))
2508     {
2509       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2510       char *rel;
2511
2512       make_cleanup (xfree, abs);
2513       abs = ldirname (abs);
2514       make_cleanup (xfree, abs);
2515
2516       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2517       make_cleanup (xfree, rel);
2518       filename = rel;
2519     }
2520
2521   /* First try the file name given in the section.  If that doesn't
2522      work, try to use the build-id instead.  */
2523   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2524   if (dwz_bfd != NULL)
2525     {
2526       if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2527         {
2528           gdb_bfd_unref (dwz_bfd);
2529           dwz_bfd = NULL;
2530         }
2531     }
2532
2533   if (dwz_bfd == NULL)
2534     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2535
2536   if (dwz_bfd == NULL)
2537     error (_("could not find '.gnu_debugaltlink' file for %s"),
2538            objfile_name (dwarf2_per_objfile->objfile));
2539
2540   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2541                            struct dwz_file);
2542   result->dwz_bfd = dwz_bfd;
2543
2544   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2545
2546   do_cleanups (cleanup);
2547
2548   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
2549   dwarf2_per_objfile->dwz_file = result;
2550   return result;
2551 }
2552 \f
2553 /* DWARF quick_symbols_functions support.  */
2554
2555 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2556    unique line tables, so we maintain a separate table of all .debug_line
2557    derived entries to support the sharing.
2558    All the quick functions need is the list of file names.  We discard the
2559    line_header when we're done and don't need to record it here.  */
2560 struct quick_file_names
2561 {
2562   /* The data used to construct the hash key.  */
2563   struct stmt_list_hash hash;
2564
2565   /* The number of entries in file_names, real_names.  */
2566   unsigned int num_file_names;
2567
2568   /* The file names from the line table, after being run through
2569      file_full_name.  */
2570   const char **file_names;
2571
2572   /* The file names from the line table after being run through
2573      gdb_realpath.  These are computed lazily.  */
2574   const char **real_names;
2575 };
2576
2577 /* When using the index (and thus not using psymtabs), each CU has an
2578    object of this type.  This is used to hold information needed by
2579    the various "quick" methods.  */
2580 struct dwarf2_per_cu_quick_data
2581 {
2582   /* The file table.  This can be NULL if there was no file table
2583      or it's currently not read in.
2584      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2585   struct quick_file_names *file_names;
2586
2587   /* The corresponding symbol table.  This is NULL if symbols for this
2588      CU have not yet been read.  */
2589   struct compunit_symtab *compunit_symtab;
2590
2591   /* A temporary mark bit used when iterating over all CUs in
2592      expand_symtabs_matching.  */
2593   unsigned int mark : 1;
2594
2595   /* True if we've tried to read the file table and found there isn't one.
2596      There will be no point in trying to read it again next time.  */
2597   unsigned int no_file_data : 1;
2598 };
2599
2600 /* Utility hash function for a stmt_list_hash.  */
2601
2602 static hashval_t
2603 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2604 {
2605   hashval_t v = 0;
2606
2607   if (stmt_list_hash->dwo_unit != NULL)
2608     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2609   v += stmt_list_hash->line_offset.sect_off;
2610   return v;
2611 }
2612
2613 /* Utility equality function for a stmt_list_hash.  */
2614
2615 static int
2616 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2617                     const struct stmt_list_hash *rhs)
2618 {
2619   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2620     return 0;
2621   if (lhs->dwo_unit != NULL
2622       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2623     return 0;
2624
2625   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2626 }
2627
2628 /* Hash function for a quick_file_names.  */
2629
2630 static hashval_t
2631 hash_file_name_entry (const void *e)
2632 {
2633   const struct quick_file_names *file_data
2634     = (const struct quick_file_names *) e;
2635
2636   return hash_stmt_list_entry (&file_data->hash);
2637 }
2638
2639 /* Equality function for a quick_file_names.  */
2640
2641 static int
2642 eq_file_name_entry (const void *a, const void *b)
2643 {
2644   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2645   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2646
2647   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2648 }
2649
2650 /* Delete function for a quick_file_names.  */
2651
2652 static void
2653 delete_file_name_entry (void *e)
2654 {
2655   struct quick_file_names *file_data = (struct quick_file_names *) e;
2656   int i;
2657
2658   for (i = 0; i < file_data->num_file_names; ++i)
2659     {
2660       xfree ((void*) file_data->file_names[i]);
2661       if (file_data->real_names)
2662         xfree ((void*) file_data->real_names[i]);
2663     }
2664
2665   /* The space for the struct itself lives on objfile_obstack,
2666      so we don't free it here.  */
2667 }
2668
2669 /* Create a quick_file_names hash table.  */
2670
2671 static htab_t
2672 create_quick_file_names_table (unsigned int nr_initial_entries)
2673 {
2674   return htab_create_alloc (nr_initial_entries,
2675                             hash_file_name_entry, eq_file_name_entry,
2676                             delete_file_name_entry, xcalloc, xfree);
2677 }
2678
2679 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2680    have to be created afterwards.  You should call age_cached_comp_units after
2681    processing PER_CU->CU.  dw2_setup must have been already called.  */
2682
2683 static void
2684 load_cu (struct dwarf2_per_cu_data *per_cu)
2685 {
2686   if (per_cu->is_debug_types)
2687     load_full_type_unit (per_cu);
2688   else
2689     load_full_comp_unit (per_cu, language_minimal);
2690
2691   if (per_cu->cu == NULL)
2692     return;  /* Dummy CU.  */
2693
2694   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2695 }
2696
2697 /* Read in the symbols for PER_CU.  */
2698
2699 static void
2700 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2701 {
2702   struct cleanup *back_to;
2703
2704   /* Skip type_unit_groups, reading the type units they contain
2705      is handled elsewhere.  */
2706   if (IS_TYPE_UNIT_GROUP (per_cu))
2707     return;
2708
2709   back_to = make_cleanup (dwarf2_release_queue, NULL);
2710
2711   if (dwarf2_per_objfile->using_index
2712       ? per_cu->v.quick->compunit_symtab == NULL
2713       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2714     {
2715       queue_comp_unit (per_cu, language_minimal);
2716       load_cu (per_cu);
2717
2718       /* If we just loaded a CU from a DWO, and we're working with an index
2719          that may badly handle TUs, load all the TUs in that DWO as well.
2720          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2721       if (!per_cu->is_debug_types
2722           && per_cu->cu != NULL
2723           && per_cu->cu->dwo_unit != NULL
2724           && dwarf2_per_objfile->index_table != NULL
2725           && dwarf2_per_objfile->index_table->version <= 7
2726           /* DWP files aren't supported yet.  */
2727           && get_dwp_file () == NULL)
2728         queue_and_load_all_dwo_tus (per_cu);
2729     }
2730
2731   process_queue ();
2732
2733   /* Age the cache, releasing compilation units that have not
2734      been used recently.  */
2735   age_cached_comp_units ();
2736
2737   do_cleanups (back_to);
2738 }
2739
2740 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2741    the objfile from which this CU came.  Returns the resulting symbol
2742    table.  */
2743
2744 static struct compunit_symtab *
2745 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2746 {
2747   gdb_assert (dwarf2_per_objfile->using_index);
2748   if (!per_cu->v.quick->compunit_symtab)
2749     {
2750       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2751       increment_reading_symtab ();
2752       dw2_do_instantiate_symtab (per_cu);
2753       process_cu_includes ();
2754       do_cleanups (back_to);
2755     }
2756
2757   return per_cu->v.quick->compunit_symtab;
2758 }
2759
2760 /* Return the CU/TU given its index.
2761
2762    This is intended for loops like:
2763
2764    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2765                     + dwarf2_per_objfile->n_type_units); ++i)
2766      {
2767        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
2768
2769        ...;
2770      }
2771 */
2772
2773 static struct dwarf2_per_cu_data *
2774 dw2_get_cutu (int index)
2775 {
2776   if (index >= dwarf2_per_objfile->n_comp_units)
2777     {
2778       index -= dwarf2_per_objfile->n_comp_units;
2779       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2780       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2781     }
2782
2783   return dwarf2_per_objfile->all_comp_units[index];
2784 }
2785
2786 /* Return the CU given its index.
2787    This differs from dw2_get_cutu in that it's for when you know INDEX
2788    refers to a CU.  */
2789
2790 static struct dwarf2_per_cu_data *
2791 dw2_get_cu (int index)
2792 {
2793   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
2794
2795   return dwarf2_per_objfile->all_comp_units[index];
2796 }
2797
2798 /* A helper for create_cus_from_index that handles a given list of
2799    CUs.  */
2800
2801 static void
2802 create_cus_from_index_list (struct objfile *objfile,
2803                             const gdb_byte *cu_list, offset_type n_elements,
2804                             struct dwarf2_section_info *section,
2805                             int is_dwz,
2806                             int base_offset)
2807 {
2808   offset_type i;
2809
2810   for (i = 0; i < n_elements; i += 2)
2811     {
2812       struct dwarf2_per_cu_data *the_cu;
2813       ULONGEST offset, length;
2814
2815       gdb_static_assert (sizeof (ULONGEST) >= 8);
2816       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2817       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2818       cu_list += 2 * 8;
2819
2820       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2821                                struct dwarf2_per_cu_data);
2822       the_cu->offset.sect_off = offset;
2823       the_cu->length = length;
2824       the_cu->objfile = objfile;
2825       the_cu->section = section;
2826       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2827                                         struct dwarf2_per_cu_quick_data);
2828       the_cu->is_dwz = is_dwz;
2829       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2830     }
2831 }
2832
2833 /* Read the CU list from the mapped index, and use it to create all
2834    the CU objects for this objfile.  */
2835
2836 static void
2837 create_cus_from_index (struct objfile *objfile,
2838                        const gdb_byte *cu_list, offset_type cu_list_elements,
2839                        const gdb_byte *dwz_list, offset_type dwz_elements)
2840 {
2841   struct dwz_file *dwz;
2842
2843   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2844   dwarf2_per_objfile->all_comp_units =
2845     XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
2846                dwarf2_per_objfile->n_comp_units);
2847
2848   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2849                               &dwarf2_per_objfile->info, 0, 0);
2850
2851   if (dwz_elements == 0)
2852     return;
2853
2854   dwz = dwarf2_get_dwz_file ();
2855   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2856                               cu_list_elements / 2);
2857 }
2858
2859 /* Create the signatured type hash table from the index.  */
2860
2861 static void
2862 create_signatured_type_table_from_index (struct objfile *objfile,
2863                                          struct dwarf2_section_info *section,
2864                                          const gdb_byte *bytes,
2865                                          offset_type elements)
2866 {
2867   offset_type i;
2868   htab_t sig_types_hash;
2869
2870   dwarf2_per_objfile->n_type_units
2871     = dwarf2_per_objfile->n_allocated_type_units
2872     = elements / 3;
2873   dwarf2_per_objfile->all_type_units =
2874     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
2875
2876   sig_types_hash = allocate_signatured_type_table (objfile);
2877
2878   for (i = 0; i < elements; i += 3)
2879     {
2880       struct signatured_type *sig_type;
2881       ULONGEST offset, type_offset_in_tu, signature;
2882       void **slot;
2883
2884       gdb_static_assert (sizeof (ULONGEST) >= 8);
2885       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2886       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2887                                                     BFD_ENDIAN_LITTLE);
2888       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2889       bytes += 3 * 8;
2890
2891       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2892                                  struct signatured_type);
2893       sig_type->signature = signature;
2894       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2895       sig_type->per_cu.is_debug_types = 1;
2896       sig_type->per_cu.section = section;
2897       sig_type->per_cu.offset.sect_off = offset;
2898       sig_type->per_cu.objfile = objfile;
2899       sig_type->per_cu.v.quick
2900         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2901                           struct dwarf2_per_cu_quick_data);
2902
2903       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2904       *slot = sig_type;
2905
2906       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2907     }
2908
2909   dwarf2_per_objfile->signatured_types = sig_types_hash;
2910 }
2911
2912 /* Read the address map data from the mapped index, and use it to
2913    populate the objfile's psymtabs_addrmap.  */
2914
2915 static void
2916 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2917 {
2918   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2919   const gdb_byte *iter, *end;
2920   struct obstack temp_obstack;
2921   struct addrmap *mutable_map;
2922   struct cleanup *cleanup;
2923   CORE_ADDR baseaddr;
2924
2925   obstack_init (&temp_obstack);
2926   cleanup = make_cleanup_obstack_free (&temp_obstack);
2927   mutable_map = addrmap_create_mutable (&temp_obstack);
2928
2929   iter = index->address_table;
2930   end = iter + index->address_table_size;
2931
2932   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2933
2934   while (iter < end)
2935     {
2936       ULONGEST hi, lo, cu_index;
2937       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2938       iter += 8;
2939       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2940       iter += 8;
2941       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2942       iter += 4;
2943
2944       if (lo > hi)
2945         {
2946           complaint (&symfile_complaints,
2947                      _(".gdb_index address table has invalid range (%s - %s)"),
2948                      hex_string (lo), hex_string (hi));
2949           continue;
2950         }
2951
2952       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2953         {
2954           complaint (&symfile_complaints,
2955                      _(".gdb_index address table has invalid CU number %u"),
2956                      (unsigned) cu_index);
2957           continue;
2958         }
2959
2960       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2961       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2962       addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
2963     }
2964
2965   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2966                                                     &objfile->objfile_obstack);
2967   do_cleanups (cleanup);
2968 }
2969
2970 /* The hash function for strings in the mapped index.  This is the same as
2971    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2972    implementation.  This is necessary because the hash function is tied to the
2973    format of the mapped index file.  The hash values do not have to match with
2974    SYMBOL_HASH_NEXT.
2975    
2976    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2977
2978 static hashval_t
2979 mapped_index_string_hash (int index_version, const void *p)
2980 {
2981   const unsigned char *str = (const unsigned char *) p;
2982   hashval_t r = 0;
2983   unsigned char c;
2984
2985   while ((c = *str++) != 0)
2986     {
2987       if (index_version >= 5)
2988         c = tolower (c);
2989       r = r * 67 + c - 113;
2990     }
2991
2992   return r;
2993 }
2994
2995 /* Find a slot in the mapped index INDEX for the object named NAME.
2996    If NAME is found, set *VEC_OUT to point to the CU vector in the
2997    constant pool and return 1.  If NAME cannot be found, return 0.  */
2998
2999 static int
3000 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3001                           offset_type **vec_out)
3002 {
3003   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
3004   offset_type hash;
3005   offset_type slot, step;
3006   int (*cmp) (const char *, const char *);
3007
3008   if (current_language->la_language == language_cplus
3009       || current_language->la_language == language_fortran
3010       || current_language->la_language == language_d)
3011     {
3012       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3013          not contain any.  */
3014
3015       if (strchr (name, '(') != NULL)
3016         {
3017           char *without_params = cp_remove_params (name);
3018
3019           if (without_params != NULL)
3020             {
3021               make_cleanup (xfree, without_params);
3022               name = without_params;
3023             }
3024         }
3025     }
3026
3027   /* Index version 4 did not support case insensitive searches.  But the
3028      indices for case insensitive languages are built in lowercase, therefore
3029      simulate our NAME being searched is also lowercased.  */
3030   hash = mapped_index_string_hash ((index->version == 4
3031                                     && case_sensitivity == case_sensitive_off
3032                                     ? 5 : index->version),
3033                                    name);
3034
3035   slot = hash & (index->symbol_table_slots - 1);
3036   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
3037   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3038
3039   for (;;)
3040     {
3041       /* Convert a slot number to an offset into the table.  */
3042       offset_type i = 2 * slot;
3043       const char *str;
3044       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
3045         {
3046           do_cleanups (back_to);
3047           return 0;
3048         }
3049
3050       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
3051       if (!cmp (name, str))
3052         {
3053           *vec_out = (offset_type *) (index->constant_pool
3054                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
3055           do_cleanups (back_to);
3056           return 1;
3057         }
3058
3059       slot = (slot + step) & (index->symbol_table_slots - 1);
3060     }
3061 }
3062
3063 /* A helper function that reads the .gdb_index from SECTION and fills
3064    in MAP.  FILENAME is the name of the file containing the section;
3065    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
3066    ok to use deprecated sections.
3067
3068    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3069    out parameters that are filled in with information about the CU and
3070    TU lists in the section.
3071
3072    Returns 1 if all went well, 0 otherwise.  */
3073
3074 static int
3075 read_index_from_section (struct objfile *objfile,
3076                          const char *filename,
3077                          int deprecated_ok,
3078                          struct dwarf2_section_info *section,
3079                          struct mapped_index *map,
3080                          const gdb_byte **cu_list,
3081                          offset_type *cu_list_elements,
3082                          const gdb_byte **types_list,
3083                          offset_type *types_list_elements)
3084 {
3085   const gdb_byte *addr;
3086   offset_type version;
3087   offset_type *metadata;
3088   int i;
3089
3090   if (dwarf2_section_empty_p (section))
3091     return 0;
3092
3093   /* Older elfutils strip versions could keep the section in the main
3094      executable while splitting it for the separate debug info file.  */
3095   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3096     return 0;
3097
3098   dwarf2_read_section (objfile, section);
3099
3100   addr = section->buffer;
3101   /* Version check.  */
3102   version = MAYBE_SWAP (*(offset_type *) addr);
3103   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3104      causes the index to behave very poorly for certain requests.  Version 3
3105      contained incomplete addrmap.  So, it seems better to just ignore such
3106      indices.  */
3107   if (version < 4)
3108     {
3109       static int warning_printed = 0;
3110       if (!warning_printed)
3111         {
3112           warning (_("Skipping obsolete .gdb_index section in %s."),
3113                    filename);
3114           warning_printed = 1;
3115         }
3116       return 0;
3117     }
3118   /* Index version 4 uses a different hash function than index version
3119      5 and later.
3120
3121      Versions earlier than 6 did not emit psymbols for inlined
3122      functions.  Using these files will cause GDB not to be able to
3123      set breakpoints on inlined functions by name, so we ignore these
3124      indices unless the user has done
3125      "set use-deprecated-index-sections on".  */
3126   if (version < 6 && !deprecated_ok)
3127     {
3128       static int warning_printed = 0;
3129       if (!warning_printed)
3130         {
3131           warning (_("\
3132 Skipping deprecated .gdb_index section in %s.\n\
3133 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3134 to use the section anyway."),
3135                    filename);
3136           warning_printed = 1;
3137         }
3138       return 0;
3139     }
3140   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3141      of the TU (for symbols coming from TUs),
3142      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3143      Plus gold-generated indices can have duplicate entries for global symbols,
3144      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3145      These are just performance bugs, and we can't distinguish gdb-generated
3146      indices from gold-generated ones, so issue no warning here.  */
3147
3148   /* Indexes with higher version than the one supported by GDB may be no
3149      longer backward compatible.  */
3150   if (version > 8)
3151     return 0;
3152
3153   map->version = version;
3154   map->total_size = section->size;
3155
3156   metadata = (offset_type *) (addr + sizeof (offset_type));
3157
3158   i = 0;
3159   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3160   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3161                        / 8);
3162   ++i;
3163
3164   *types_list = addr + MAYBE_SWAP (metadata[i]);
3165   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3166                            - MAYBE_SWAP (metadata[i]))
3167                           / 8);
3168   ++i;
3169
3170   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3171   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3172                              - MAYBE_SWAP (metadata[i]));
3173   ++i;
3174
3175   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3176   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3177                               - MAYBE_SWAP (metadata[i]))
3178                              / (2 * sizeof (offset_type)));
3179   ++i;
3180
3181   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3182
3183   return 1;
3184 }
3185
3186
3187 /* Read the index file.  If everything went ok, initialize the "quick"
3188    elements of all the CUs and return 1.  Otherwise, return 0.  */
3189
3190 static int
3191 dwarf2_read_index (struct objfile *objfile)
3192 {
3193   struct mapped_index local_map, *map;
3194   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3195   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3196   struct dwz_file *dwz;
3197
3198   if (!read_index_from_section (objfile, objfile_name (objfile),
3199                                 use_deprecated_index_sections,
3200                                 &dwarf2_per_objfile->gdb_index, &local_map,
3201                                 &cu_list, &cu_list_elements,
3202                                 &types_list, &types_list_elements))
3203     return 0;
3204
3205   /* Don't use the index if it's empty.  */
3206   if (local_map.symbol_table_slots == 0)
3207     return 0;
3208
3209   /* If there is a .dwz file, read it so we can get its CU list as
3210      well.  */
3211   dwz = dwarf2_get_dwz_file ();
3212   if (dwz != NULL)
3213     {
3214       struct mapped_index dwz_map;
3215       const gdb_byte *dwz_types_ignore;
3216       offset_type dwz_types_elements_ignore;
3217
3218       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3219                                     1,
3220                                     &dwz->gdb_index, &dwz_map,
3221                                     &dwz_list, &dwz_list_elements,
3222                                     &dwz_types_ignore,
3223                                     &dwz_types_elements_ignore))
3224         {
3225           warning (_("could not read '.gdb_index' section from %s; skipping"),
3226                    bfd_get_filename (dwz->dwz_bfd));
3227           return 0;
3228         }
3229     }
3230
3231   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3232                          dwz_list_elements);
3233
3234   if (types_list_elements)
3235     {
3236       struct dwarf2_section_info *section;
3237
3238       /* We can only handle a single .debug_types when we have an
3239          index.  */
3240       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3241         return 0;
3242
3243       section = VEC_index (dwarf2_section_info_def,
3244                            dwarf2_per_objfile->types, 0);
3245
3246       create_signatured_type_table_from_index (objfile, section, types_list,
3247                                                types_list_elements);
3248     }
3249
3250   create_addrmap_from_index (objfile, &local_map);
3251
3252   map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
3253   *map = local_map;
3254
3255   dwarf2_per_objfile->index_table = map;
3256   dwarf2_per_objfile->using_index = 1;
3257   dwarf2_per_objfile->quick_file_names_table =
3258     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3259
3260   return 1;
3261 }
3262
3263 /* A helper for the "quick" functions which sets the global
3264    dwarf2_per_objfile according to OBJFILE.  */
3265
3266 static void
3267 dw2_setup (struct objfile *objfile)
3268 {
3269   dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
3270                         objfile_data (objfile, dwarf2_objfile_data_key));
3271   gdb_assert (dwarf2_per_objfile);
3272 }
3273
3274 /* die_reader_func for dw2_get_file_names.  */
3275
3276 static void
3277 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3278                            const gdb_byte *info_ptr,
3279                            struct die_info *comp_unit_die,
3280                            int has_children,
3281                            void *data)
3282 {
3283   struct dwarf2_cu *cu = reader->cu;
3284   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3285   struct objfile *objfile = dwarf2_per_objfile->objfile;
3286   struct dwarf2_per_cu_data *lh_cu;
3287   struct line_header *lh;
3288   struct attribute *attr;
3289   int i;
3290   const char *name, *comp_dir;
3291   void **slot;
3292   struct quick_file_names *qfn;
3293   unsigned int line_offset;
3294
3295   gdb_assert (! this_cu->is_debug_types);
3296
3297   /* Our callers never want to match partial units -- instead they
3298      will match the enclosing full CU.  */
3299   if (comp_unit_die->tag == DW_TAG_partial_unit)
3300     {
3301       this_cu->v.quick->no_file_data = 1;
3302       return;
3303     }
3304
3305   lh_cu = this_cu;
3306   lh = NULL;
3307   slot = NULL;
3308   line_offset = 0;
3309
3310   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3311   if (attr)
3312     {
3313       struct quick_file_names find_entry;
3314
3315       line_offset = DW_UNSND (attr);
3316
3317       /* We may have already read in this line header (TU line header sharing).
3318          If we have we're done.  */
3319       find_entry.hash.dwo_unit = cu->dwo_unit;
3320       find_entry.hash.line_offset.sect_off = line_offset;
3321       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3322                              &find_entry, INSERT);
3323       if (*slot != NULL)
3324         {
3325           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3326           return;
3327         }
3328
3329       lh = dwarf_decode_line_header (line_offset, cu);
3330     }
3331   if (lh == NULL)
3332     {
3333       lh_cu->v.quick->no_file_data = 1;
3334       return;
3335     }
3336
3337   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3338   qfn->hash.dwo_unit = cu->dwo_unit;
3339   qfn->hash.line_offset.sect_off = line_offset;
3340   gdb_assert (slot != NULL);
3341   *slot = qfn;
3342
3343   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3344
3345   qfn->num_file_names = lh->num_file_names;
3346   qfn->file_names =
3347     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->num_file_names);
3348   for (i = 0; i < lh->num_file_names; ++i)
3349     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3350   qfn->real_names = NULL;
3351
3352   free_line_header (lh);
3353
3354   lh_cu->v.quick->file_names = qfn;
3355 }
3356
3357 /* A helper for the "quick" functions which attempts to read the line
3358    table for THIS_CU.  */
3359
3360 static struct quick_file_names *
3361 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3362 {
3363   /* This should never be called for TUs.  */
3364   gdb_assert (! this_cu->is_debug_types);
3365   /* Nor type unit groups.  */
3366   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3367
3368   if (this_cu->v.quick->file_names != NULL)
3369     return this_cu->v.quick->file_names;
3370   /* If we know there is no line data, no point in looking again.  */
3371   if (this_cu->v.quick->no_file_data)
3372     return NULL;
3373
3374   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3375
3376   if (this_cu->v.quick->no_file_data)
3377     return NULL;
3378   return this_cu->v.quick->file_names;
3379 }
3380
3381 /* A helper for the "quick" functions which computes and caches the
3382    real path for a given file name from the line table.  */
3383
3384 static const char *
3385 dw2_get_real_path (struct objfile *objfile,
3386                    struct quick_file_names *qfn, int index)
3387 {
3388   if (qfn->real_names == NULL)
3389     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3390                                       qfn->num_file_names, const char *);
3391
3392   if (qfn->real_names[index] == NULL)
3393     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3394
3395   return qfn->real_names[index];
3396 }
3397
3398 static struct symtab *
3399 dw2_find_last_source_symtab (struct objfile *objfile)
3400 {
3401   struct compunit_symtab *cust;
3402   int index;
3403
3404   dw2_setup (objfile);
3405   index = dwarf2_per_objfile->n_comp_units - 1;
3406   cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3407   if (cust == NULL)
3408     return NULL;
3409   return compunit_primary_filetab (cust);
3410 }
3411
3412 /* Traversal function for dw2_forget_cached_source_info.  */
3413
3414 static int
3415 dw2_free_cached_file_names (void **slot, void *info)
3416 {
3417   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3418
3419   if (file_data->real_names)
3420     {
3421       int i;
3422
3423       for (i = 0; i < file_data->num_file_names; ++i)
3424         {
3425           xfree ((void*) file_data->real_names[i]);
3426           file_data->real_names[i] = NULL;
3427         }
3428     }
3429
3430   return 1;
3431 }
3432
3433 static void
3434 dw2_forget_cached_source_info (struct objfile *objfile)
3435 {
3436   dw2_setup (objfile);
3437
3438   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3439                           dw2_free_cached_file_names, NULL);
3440 }
3441
3442 /* Helper function for dw2_map_symtabs_matching_filename that expands
3443    the symtabs and calls the iterator.  */
3444
3445 static int
3446 dw2_map_expand_apply (struct objfile *objfile,
3447                       struct dwarf2_per_cu_data *per_cu,
3448                       const char *name, const char *real_path,
3449                       int (*callback) (struct symtab *, void *),
3450                       void *data)
3451 {
3452   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3453
3454   /* Don't visit already-expanded CUs.  */
3455   if (per_cu->v.quick->compunit_symtab)
3456     return 0;
3457
3458   /* This may expand more than one symtab, and we want to iterate over
3459      all of them.  */
3460   dw2_instantiate_symtab (per_cu);
3461
3462   return iterate_over_some_symtabs (name, real_path, callback, data,
3463                                     objfile->compunit_symtabs, last_made);
3464 }
3465
3466 /* Implementation of the map_symtabs_matching_filename method.  */
3467
3468 static int
3469 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3470                                    const char *real_path,
3471                                    int (*callback) (struct symtab *, void *),
3472                                    void *data)
3473 {
3474   int i;
3475   const char *name_basename = lbasename (name);
3476
3477   dw2_setup (objfile);
3478
3479   /* The rule is CUs specify all the files, including those used by
3480      any TU, so there's no need to scan TUs here.  */
3481
3482   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3483     {
3484       int j;
3485       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3486       struct quick_file_names *file_data;
3487
3488       /* We only need to look at symtabs not already expanded.  */
3489       if (per_cu->v.quick->compunit_symtab)
3490         continue;
3491
3492       file_data = dw2_get_file_names (per_cu);
3493       if (file_data == NULL)
3494         continue;
3495
3496       for (j = 0; j < file_data->num_file_names; ++j)
3497         {
3498           const char *this_name = file_data->file_names[j];
3499           const char *this_real_name;
3500
3501           if (compare_filenames_for_search (this_name, name))
3502             {
3503               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3504                                         callback, data))
3505                 return 1;
3506               continue;
3507             }
3508
3509           /* Before we invoke realpath, which can get expensive when many
3510              files are involved, do a quick comparison of the basenames.  */
3511           if (! basenames_may_differ
3512               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3513             continue;
3514
3515           this_real_name = dw2_get_real_path (objfile, file_data, j);
3516           if (compare_filenames_for_search (this_real_name, name))
3517             {
3518               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3519                                         callback, data))
3520                 return 1;
3521               continue;
3522             }
3523
3524           if (real_path != NULL)
3525             {
3526               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3527               gdb_assert (IS_ABSOLUTE_PATH (name));
3528               if (this_real_name != NULL
3529                   && FILENAME_CMP (real_path, this_real_name) == 0)
3530                 {
3531                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3532                                             callback, data))
3533                     return 1;
3534                   continue;
3535                 }
3536             }
3537         }
3538     }
3539
3540   return 0;
3541 }
3542
3543 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3544
3545 struct dw2_symtab_iterator
3546 {
3547   /* The internalized form of .gdb_index.  */
3548   struct mapped_index *index;
3549   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3550   int want_specific_block;
3551   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3552      Unused if !WANT_SPECIFIC_BLOCK.  */
3553   int block_index;
3554   /* The kind of symbol we're looking for.  */
3555   domain_enum domain;
3556   /* The list of CUs from the index entry of the symbol,
3557      or NULL if not found.  */
3558   offset_type *vec;
3559   /* The next element in VEC to look at.  */
3560   int next;
3561   /* The number of elements in VEC, or zero if there is no match.  */
3562   int length;
3563   /* Have we seen a global version of the symbol?
3564      If so we can ignore all further global instances.
3565      This is to work around gold/15646, inefficient gold-generated
3566      indices.  */
3567   int global_seen;
3568 };
3569
3570 /* Initialize the index symtab iterator ITER.
3571    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3572    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3573
3574 static void
3575 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3576                       struct mapped_index *index,
3577                       int want_specific_block,
3578                       int block_index,
3579                       domain_enum domain,
3580                       const char *name)
3581 {
3582   iter->index = index;
3583   iter->want_specific_block = want_specific_block;
3584   iter->block_index = block_index;
3585   iter->domain = domain;
3586   iter->next = 0;
3587   iter->global_seen = 0;
3588
3589   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3590     iter->length = MAYBE_SWAP (*iter->vec);
3591   else
3592     {
3593       iter->vec = NULL;
3594       iter->length = 0;
3595     }
3596 }
3597
3598 /* Return the next matching CU or NULL if there are no more.  */
3599
3600 static struct dwarf2_per_cu_data *
3601 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3602 {
3603   for ( ; iter->next < iter->length; ++iter->next)
3604     {
3605       offset_type cu_index_and_attrs =
3606         MAYBE_SWAP (iter->vec[iter->next + 1]);
3607       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3608       struct dwarf2_per_cu_data *per_cu;
3609       int want_static = iter->block_index != GLOBAL_BLOCK;
3610       /* This value is only valid for index versions >= 7.  */
3611       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3612       gdb_index_symbol_kind symbol_kind =
3613         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3614       /* Only check the symbol attributes if they're present.
3615          Indices prior to version 7 don't record them,
3616          and indices >= 7 may elide them for certain symbols
3617          (gold does this).  */
3618       int attrs_valid =
3619         (iter->index->version >= 7
3620          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3621
3622       /* Don't crash on bad data.  */
3623       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3624                        + dwarf2_per_objfile->n_type_units))
3625         {
3626           complaint (&symfile_complaints,
3627                      _(".gdb_index entry has bad CU index"
3628                        " [in module %s]"),
3629                      objfile_name (dwarf2_per_objfile->objfile));
3630           continue;
3631         }
3632
3633       per_cu = dw2_get_cutu (cu_index);
3634
3635       /* Skip if already read in.  */
3636       if (per_cu->v.quick->compunit_symtab)
3637         continue;
3638
3639       /* Check static vs global.  */
3640       if (attrs_valid)
3641         {
3642           if (iter->want_specific_block
3643               && want_static != is_static)
3644             continue;
3645           /* Work around gold/15646.  */
3646           if (!is_static && iter->global_seen)
3647             continue;
3648           if (!is_static)
3649             iter->global_seen = 1;
3650         }
3651
3652       /* Only check the symbol's kind if it has one.  */
3653       if (attrs_valid)
3654         {
3655           switch (iter->domain)
3656             {
3657             case VAR_DOMAIN:
3658               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3659                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3660                   /* Some types are also in VAR_DOMAIN.  */
3661                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3662                 continue;
3663               break;
3664             case STRUCT_DOMAIN:
3665               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3666                 continue;
3667               break;
3668             case LABEL_DOMAIN:
3669               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3670                 continue;
3671               break;
3672             default:
3673               break;
3674             }
3675         }
3676
3677       ++iter->next;
3678       return per_cu;
3679     }
3680
3681   return NULL;
3682 }
3683
3684 static struct compunit_symtab *
3685 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3686                    const char *name, domain_enum domain)
3687 {
3688   struct compunit_symtab *stab_best = NULL;
3689   struct mapped_index *index;
3690
3691   dw2_setup (objfile);
3692
3693   index = dwarf2_per_objfile->index_table;
3694
3695   /* index is NULL if OBJF_READNOW.  */
3696   if (index)
3697     {
3698       struct dw2_symtab_iterator iter;
3699       struct dwarf2_per_cu_data *per_cu;
3700
3701       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3702
3703       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3704         {
3705           struct symbol *sym, *with_opaque = NULL;
3706           struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3707           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
3708           struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3709
3710           sym = block_find_symbol (block, name, domain,
3711                                    block_find_non_opaque_type_preferred,
3712                                    &with_opaque);
3713
3714           /* Some caution must be observed with overloaded functions
3715              and methods, since the index will not contain any overload
3716              information (but NAME might contain it).  */
3717
3718           if (sym != NULL
3719               && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3720             return stab;
3721           if (with_opaque != NULL
3722               && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3723             stab_best = stab;
3724
3725           /* Keep looking through other CUs.  */
3726         }
3727     }
3728
3729   return stab_best;
3730 }
3731
3732 static void
3733 dw2_print_stats (struct objfile *objfile)
3734 {
3735   int i, total, count;
3736
3737   dw2_setup (objfile);
3738   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3739   count = 0;
3740   for (i = 0; i < total; ++i)
3741     {
3742       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3743
3744       if (!per_cu->v.quick->compunit_symtab)
3745         ++count;
3746     }
3747   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3748   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3749 }
3750
3751 /* This dumps minimal information about the index.
3752    It is called via "mt print objfiles".
3753    One use is to verify .gdb_index has been loaded by the
3754    gdb.dwarf2/gdb-index.exp testcase.  */
3755
3756 static void
3757 dw2_dump (struct objfile *objfile)
3758 {
3759   dw2_setup (objfile);
3760   gdb_assert (dwarf2_per_objfile->using_index);
3761   printf_filtered (".gdb_index:");
3762   if (dwarf2_per_objfile->index_table != NULL)
3763     {
3764       printf_filtered (" version %d\n",
3765                        dwarf2_per_objfile->index_table->version);
3766     }
3767   else
3768     printf_filtered (" faked for \"readnow\"\n");
3769   printf_filtered ("\n");
3770 }
3771
3772 static void
3773 dw2_relocate (struct objfile *objfile,
3774               const struct section_offsets *new_offsets,
3775               const struct section_offsets *delta)
3776 {
3777   /* There's nothing to relocate here.  */
3778 }
3779
3780 static void
3781 dw2_expand_symtabs_for_function (struct objfile *objfile,
3782                                  const char *func_name)
3783 {
3784   struct mapped_index *index;
3785
3786   dw2_setup (objfile);
3787
3788   index = dwarf2_per_objfile->index_table;
3789
3790   /* index is NULL if OBJF_READNOW.  */
3791   if (index)
3792     {
3793       struct dw2_symtab_iterator iter;
3794       struct dwarf2_per_cu_data *per_cu;
3795
3796       /* Note: It doesn't matter what we pass for block_index here.  */
3797       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3798                             func_name);
3799
3800       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3801         dw2_instantiate_symtab (per_cu);
3802     }
3803 }
3804
3805 static void
3806 dw2_expand_all_symtabs (struct objfile *objfile)
3807 {
3808   int i;
3809
3810   dw2_setup (objfile);
3811
3812   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3813                    + dwarf2_per_objfile->n_type_units); ++i)
3814     {
3815       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3816
3817       dw2_instantiate_symtab (per_cu);
3818     }
3819 }
3820
3821 static void
3822 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3823                                   const char *fullname)
3824 {
3825   int i;
3826
3827   dw2_setup (objfile);
3828
3829   /* We don't need to consider type units here.
3830      This is only called for examining code, e.g. expand_line_sal.
3831      There can be an order of magnitude (or more) more type units
3832      than comp units, and we avoid them if we can.  */
3833
3834   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3835     {
3836       int j;
3837       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3838       struct quick_file_names *file_data;
3839
3840       /* We only need to look at symtabs not already expanded.  */
3841       if (per_cu->v.quick->compunit_symtab)
3842         continue;
3843
3844       file_data = dw2_get_file_names (per_cu);
3845       if (file_data == NULL)
3846         continue;
3847
3848       for (j = 0; j < file_data->num_file_names; ++j)
3849         {
3850           const char *this_fullname = file_data->file_names[j];
3851
3852           if (filename_cmp (this_fullname, fullname) == 0)
3853             {
3854               dw2_instantiate_symtab (per_cu);
3855               break;
3856             }
3857         }
3858     }
3859 }
3860
3861 static void
3862 dw2_map_matching_symbols (struct objfile *objfile,
3863                           const char * name, domain_enum domain,
3864                           int global,
3865                           int (*callback) (struct block *,
3866                                            struct symbol *, void *),
3867                           void *data, symbol_compare_ftype *match,
3868                           symbol_compare_ftype *ordered_compare)
3869 {
3870   /* Currently unimplemented; used for Ada.  The function can be called if the
3871      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3872      does not look for non-Ada symbols this function should just return.  */
3873 }
3874
3875 static void
3876 dw2_expand_symtabs_matching
3877   (struct objfile *objfile,
3878    expand_symtabs_file_matcher_ftype *file_matcher,
3879    expand_symtabs_symbol_matcher_ftype *symbol_matcher,
3880    expand_symtabs_exp_notify_ftype *expansion_notify,
3881    enum search_domain kind,
3882    void *data)
3883 {
3884   int i;
3885   offset_type iter;
3886   struct mapped_index *index;
3887
3888   dw2_setup (objfile);
3889
3890   /* index_table is NULL if OBJF_READNOW.  */
3891   if (!dwarf2_per_objfile->index_table)
3892     return;
3893   index = dwarf2_per_objfile->index_table;
3894
3895   if (file_matcher != NULL)
3896     {
3897       struct cleanup *cleanup;
3898       htab_t visited_found, visited_not_found;
3899
3900       visited_found = htab_create_alloc (10,
3901                                          htab_hash_pointer, htab_eq_pointer,
3902                                          NULL, xcalloc, xfree);
3903       cleanup = make_cleanup_htab_delete (visited_found);
3904       visited_not_found = htab_create_alloc (10,
3905                                              htab_hash_pointer, htab_eq_pointer,
3906                                              NULL, xcalloc, xfree);
3907       make_cleanup_htab_delete (visited_not_found);
3908
3909       /* The rule is CUs specify all the files, including those used by
3910          any TU, so there's no need to scan TUs here.  */
3911
3912       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3913         {
3914           int j;
3915           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3916           struct quick_file_names *file_data;
3917           void **slot;
3918
3919           QUIT;
3920
3921           per_cu->v.quick->mark = 0;
3922
3923           /* We only need to look at symtabs not already expanded.  */
3924           if (per_cu->v.quick->compunit_symtab)
3925             continue;
3926
3927           file_data = dw2_get_file_names (per_cu);
3928           if (file_data == NULL)
3929             continue;
3930
3931           if (htab_find (visited_not_found, file_data) != NULL)
3932             continue;
3933           else if (htab_find (visited_found, file_data) != NULL)
3934             {
3935               per_cu->v.quick->mark = 1;
3936               continue;
3937             }
3938
3939           for (j = 0; j < file_data->num_file_names; ++j)
3940             {
3941               const char *this_real_name;
3942
3943               if (file_matcher (file_data->file_names[j], data, 0))
3944                 {
3945                   per_cu->v.quick->mark = 1;
3946                   break;
3947                 }
3948
3949               /* Before we invoke realpath, which can get expensive when many
3950                  files are involved, do a quick comparison of the basenames.  */
3951               if (!basenames_may_differ
3952                   && !file_matcher (lbasename (file_data->file_names[j]),
3953                                     data, 1))
3954                 continue;
3955
3956               this_real_name = dw2_get_real_path (objfile, file_data, j);
3957               if (file_matcher (this_real_name, data, 0))
3958                 {
3959                   per_cu->v.quick->mark = 1;
3960                   break;
3961                 }
3962             }
3963
3964           slot = htab_find_slot (per_cu->v.quick->mark
3965                                  ? visited_found
3966                                  : visited_not_found,
3967                                  file_data, INSERT);
3968           *slot = file_data;
3969         }
3970
3971       do_cleanups (cleanup);
3972     }
3973
3974   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3975     {
3976       offset_type idx = 2 * iter;
3977       const char *name;
3978       offset_type *vec, vec_len, vec_idx;
3979       int global_seen = 0;
3980
3981       QUIT;
3982
3983       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3984         continue;
3985
3986       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3987
3988       if (! (*symbol_matcher) (name, data))
3989         continue;
3990
3991       /* The name was matched, now expand corresponding CUs that were
3992          marked.  */
3993       vec = (offset_type *) (index->constant_pool
3994                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3995       vec_len = MAYBE_SWAP (vec[0]);
3996       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3997         {
3998           struct dwarf2_per_cu_data *per_cu;
3999           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
4000           /* This value is only valid for index versions >= 7.  */
4001           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4002           gdb_index_symbol_kind symbol_kind =
4003             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4004           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4005           /* Only check the symbol attributes if they're present.
4006              Indices prior to version 7 don't record them,
4007              and indices >= 7 may elide them for certain symbols
4008              (gold does this).  */
4009           int attrs_valid =
4010             (index->version >= 7
4011              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4012
4013           /* Work around gold/15646.  */
4014           if (attrs_valid)
4015             {
4016               if (!is_static && global_seen)
4017                 continue;
4018               if (!is_static)
4019                 global_seen = 1;
4020             }
4021
4022           /* Only check the symbol's kind if it has one.  */
4023           if (attrs_valid)
4024             {
4025               switch (kind)
4026                 {
4027                 case VARIABLES_DOMAIN:
4028                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4029                     continue;
4030                   break;
4031                 case FUNCTIONS_DOMAIN:
4032                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4033                     continue;
4034                   break;
4035                 case TYPES_DOMAIN:
4036                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4037                     continue;
4038                   break;
4039                 default:
4040                   break;
4041                 }
4042             }
4043
4044           /* Don't crash on bad data.  */
4045           if (cu_index >= (dwarf2_per_objfile->n_comp_units
4046                            + dwarf2_per_objfile->n_type_units))
4047             {
4048               complaint (&symfile_complaints,
4049                          _(".gdb_index entry has bad CU index"
4050                            " [in module %s]"), objfile_name (objfile));
4051               continue;
4052             }
4053
4054           per_cu = dw2_get_cutu (cu_index);
4055           if (file_matcher == NULL || per_cu->v.quick->mark)
4056             {
4057               int symtab_was_null =
4058                 (per_cu->v.quick->compunit_symtab == NULL);
4059
4060               dw2_instantiate_symtab (per_cu);
4061
4062               if (expansion_notify != NULL
4063                   && symtab_was_null
4064                   && per_cu->v.quick->compunit_symtab != NULL)
4065                 {
4066                   expansion_notify (per_cu->v.quick->compunit_symtab,
4067                                     data);
4068                 }
4069             }
4070         }
4071     }
4072 }
4073
4074 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
4075    symtab.  */
4076
4077 static struct compunit_symtab *
4078 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4079                                           CORE_ADDR pc)
4080 {
4081   int i;
4082
4083   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4084       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4085     return cust;
4086
4087   if (cust->includes == NULL)
4088     return NULL;
4089
4090   for (i = 0; cust->includes[i]; ++i)
4091     {
4092       struct compunit_symtab *s = cust->includes[i];
4093
4094       s = recursively_find_pc_sect_compunit_symtab (s, pc);
4095       if (s != NULL)
4096         return s;
4097     }
4098
4099   return NULL;
4100 }
4101
4102 static struct compunit_symtab *
4103 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4104                                   struct bound_minimal_symbol msymbol,
4105                                   CORE_ADDR pc,
4106                                   struct obj_section *section,
4107                                   int warn_if_readin)
4108 {
4109   struct dwarf2_per_cu_data *data;
4110   struct compunit_symtab *result;
4111
4112   dw2_setup (objfile);
4113
4114   if (!objfile->psymtabs_addrmap)
4115     return NULL;
4116
4117   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
4118                                                      pc);
4119   if (!data)
4120     return NULL;
4121
4122   if (warn_if_readin && data->v.quick->compunit_symtab)
4123     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4124              paddress (get_objfile_arch (objfile), pc));
4125
4126   result
4127     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4128                                                 pc);
4129   gdb_assert (result != NULL);
4130   return result;
4131 }
4132
4133 static void
4134 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4135                           void *data, int need_fullname)
4136 {
4137   int i;
4138   struct cleanup *cleanup;
4139   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4140                                       NULL, xcalloc, xfree);
4141
4142   cleanup = make_cleanup_htab_delete (visited);
4143   dw2_setup (objfile);
4144
4145   /* The rule is CUs specify all the files, including those used by
4146      any TU, so there's no need to scan TUs here.
4147      We can ignore file names coming from already-expanded CUs.  */
4148
4149   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4150     {
4151       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4152
4153       if (per_cu->v.quick->compunit_symtab)
4154         {
4155           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4156                                         INSERT);
4157
4158           *slot = per_cu->v.quick->file_names;
4159         }
4160     }
4161
4162   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4163     {
4164       int j;
4165       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4166       struct quick_file_names *file_data;
4167       void **slot;
4168
4169       /* We only need to look at symtabs not already expanded.  */
4170       if (per_cu->v.quick->compunit_symtab)
4171         continue;
4172
4173       file_data = dw2_get_file_names (per_cu);
4174       if (file_data == NULL)
4175         continue;
4176
4177       slot = htab_find_slot (visited, file_data, INSERT);
4178       if (*slot)
4179         {
4180           /* Already visited.  */
4181           continue;
4182         }
4183       *slot = file_data;
4184
4185       for (j = 0; j < file_data->num_file_names; ++j)
4186         {
4187           const char *this_real_name;
4188
4189           if (need_fullname)
4190             this_real_name = dw2_get_real_path (objfile, file_data, j);
4191           else
4192             this_real_name = NULL;
4193           (*fun) (file_data->file_names[j], this_real_name, data);
4194         }
4195     }
4196
4197   do_cleanups (cleanup);
4198 }
4199
4200 static int
4201 dw2_has_symbols (struct objfile *objfile)
4202 {
4203   return 1;
4204 }
4205
4206 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4207 {
4208   dw2_has_symbols,
4209   dw2_find_last_source_symtab,
4210   dw2_forget_cached_source_info,
4211   dw2_map_symtabs_matching_filename,
4212   dw2_lookup_symbol,
4213   dw2_print_stats,
4214   dw2_dump,
4215   dw2_relocate,
4216   dw2_expand_symtabs_for_function,
4217   dw2_expand_all_symtabs,
4218   dw2_expand_symtabs_with_fullname,
4219   dw2_map_matching_symbols,
4220   dw2_expand_symtabs_matching,
4221   dw2_find_pc_sect_compunit_symtab,
4222   dw2_map_symbol_filenames
4223 };
4224
4225 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4226    file will use psymtabs, or 1 if using the GNU index.  */
4227
4228 int
4229 dwarf2_initialize_objfile (struct objfile *objfile)
4230 {
4231   /* If we're about to read full symbols, don't bother with the
4232      indices.  In this case we also don't care if some other debug
4233      format is making psymtabs, because they are all about to be
4234      expanded anyway.  */
4235   if ((objfile->flags & OBJF_READNOW))
4236     {
4237       int i;
4238
4239       dwarf2_per_objfile->using_index = 1;
4240       create_all_comp_units (objfile);
4241       create_all_type_units (objfile);
4242       dwarf2_per_objfile->quick_file_names_table =
4243         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4244
4245       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4246                        + dwarf2_per_objfile->n_type_units); ++i)
4247         {
4248           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4249
4250           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4251                                             struct dwarf2_per_cu_quick_data);
4252         }
4253
4254       /* Return 1 so that gdb sees the "quick" functions.  However,
4255          these functions will be no-ops because we will have expanded
4256          all symtabs.  */
4257       return 1;
4258     }
4259
4260   if (dwarf2_read_index (objfile))
4261     return 1;
4262
4263   return 0;
4264 }
4265
4266 \f
4267
4268 /* Build a partial symbol table.  */
4269
4270 void
4271 dwarf2_build_psymtabs (struct objfile *objfile)
4272 {
4273
4274   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4275     {
4276       init_psymbol_list (objfile, 1024);
4277     }
4278
4279   TRY
4280     {
4281       /* This isn't really ideal: all the data we allocate on the
4282          objfile's obstack is still uselessly kept around.  However,
4283          freeing it seems unsafe.  */
4284       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4285
4286       dwarf2_build_psymtabs_hard (objfile);
4287       discard_cleanups (cleanups);
4288     }
4289   CATCH (except, RETURN_MASK_ERROR)
4290     {
4291       exception_print (gdb_stderr, except);
4292     }
4293   END_CATCH
4294 }
4295
4296 /* Return the total length of the CU described by HEADER.  */
4297
4298 static unsigned int
4299 get_cu_length (const struct comp_unit_head *header)
4300 {
4301   return header->initial_length_size + header->length;
4302 }
4303
4304 /* Return TRUE if OFFSET is within CU_HEADER.  */
4305
4306 static inline int
4307 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4308 {
4309   sect_offset bottom = { cu_header->offset.sect_off };
4310   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4311
4312   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4313 }
4314
4315 /* Find the base address of the compilation unit for range lists and
4316    location lists.  It will normally be specified by DW_AT_low_pc.
4317    In DWARF-3 draft 4, the base address could be overridden by
4318    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4319    compilation units with discontinuous ranges.  */
4320
4321 static void
4322 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4323 {
4324   struct attribute *attr;
4325
4326   cu->base_known = 0;
4327   cu->base_address = 0;
4328
4329   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4330   if (attr)
4331     {
4332       cu->base_address = attr_value_as_address (attr);
4333       cu->base_known = 1;
4334     }
4335   else
4336     {
4337       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4338       if (attr)
4339         {
4340           cu->base_address = attr_value_as_address (attr);
4341           cu->base_known = 1;
4342         }
4343     }
4344 }
4345
4346 /* Read in the comp unit header information from the debug_info at info_ptr.
4347    NOTE: This leaves members offset, first_die_offset to be filled in
4348    by the caller.  */
4349
4350 static const gdb_byte *
4351 read_comp_unit_head (struct comp_unit_head *cu_header,
4352                      const gdb_byte *info_ptr, bfd *abfd)
4353 {
4354   int signed_addr;
4355   unsigned int bytes_read;
4356
4357   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4358   cu_header->initial_length_size = bytes_read;
4359   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4360   info_ptr += bytes_read;
4361   cu_header->version = read_2_bytes (abfd, info_ptr);
4362   info_ptr += 2;
4363   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4364                                              &bytes_read);
4365   info_ptr += bytes_read;
4366   cu_header->addr_size = read_1_byte (abfd, info_ptr);
4367   info_ptr += 1;
4368   signed_addr = bfd_get_sign_extend_vma (abfd);
4369   if (signed_addr < 0)
4370     internal_error (__FILE__, __LINE__,
4371                     _("read_comp_unit_head: dwarf from non elf file"));
4372   cu_header->signed_addr_p = signed_addr;
4373
4374   return info_ptr;
4375 }
4376
4377 /* Helper function that returns the proper abbrev section for
4378    THIS_CU.  */
4379
4380 static struct dwarf2_section_info *
4381 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4382 {
4383   struct dwarf2_section_info *abbrev;
4384
4385   if (this_cu->is_dwz)
4386     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4387   else
4388     abbrev = &dwarf2_per_objfile->abbrev;
4389
4390   return abbrev;
4391 }
4392
4393 /* Subroutine of read_and_check_comp_unit_head and
4394    read_and_check_type_unit_head to simplify them.
4395    Perform various error checking on the header.  */
4396
4397 static void
4398 error_check_comp_unit_head (struct comp_unit_head *header,
4399                             struct dwarf2_section_info *section,
4400                             struct dwarf2_section_info *abbrev_section)
4401 {
4402   const char *filename = get_section_file_name (section);
4403
4404   if (header->version != 2 && header->version != 3 && header->version != 4)
4405     error (_("Dwarf Error: wrong version in compilation unit header "
4406            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4407            filename);
4408
4409   if (header->abbrev_offset.sect_off
4410       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4411     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4412            "(offset 0x%lx + 6) [in module %s]"),
4413            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4414            filename);
4415
4416   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4417      avoid potential 32-bit overflow.  */
4418   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4419       > section->size)
4420     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4421            "(offset 0x%lx + 0) [in module %s]"),
4422            (long) header->length, (long) header->offset.sect_off,
4423            filename);
4424 }
4425
4426 /* Read in a CU/TU header and perform some basic error checking.
4427    The contents of the header are stored in HEADER.
4428    The result is a pointer to the start of the first DIE.  */
4429
4430 static const gdb_byte *
4431 read_and_check_comp_unit_head (struct comp_unit_head *header,
4432                                struct dwarf2_section_info *section,
4433                                struct dwarf2_section_info *abbrev_section,
4434                                const gdb_byte *info_ptr,
4435                                int is_debug_types_section)
4436 {
4437   const gdb_byte *beg_of_comp_unit = info_ptr;
4438   bfd *abfd = get_section_bfd_owner (section);
4439
4440   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4441
4442   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4443
4444   /* If we're reading a type unit, skip over the signature and
4445      type_offset fields.  */
4446   if (is_debug_types_section)
4447     info_ptr += 8 /*signature*/ + header->offset_size;
4448
4449   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4450
4451   error_check_comp_unit_head (header, section, abbrev_section);
4452
4453   return info_ptr;
4454 }
4455
4456 /* Read in the types comp unit header information from .debug_types entry at
4457    types_ptr.  The result is a pointer to one past the end of the header.  */
4458
4459 static const gdb_byte *
4460 read_and_check_type_unit_head (struct comp_unit_head *header,
4461                                struct dwarf2_section_info *section,
4462                                struct dwarf2_section_info *abbrev_section,
4463                                const gdb_byte *info_ptr,
4464                                ULONGEST *signature,
4465                                cu_offset *type_offset_in_tu)
4466 {
4467   const gdb_byte *beg_of_comp_unit = info_ptr;
4468   bfd *abfd = get_section_bfd_owner (section);
4469
4470   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4471
4472   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4473
4474   /* If we're reading a type unit, skip over the signature and
4475      type_offset fields.  */
4476   if (signature != NULL)
4477     *signature = read_8_bytes (abfd, info_ptr);
4478   info_ptr += 8;
4479   if (type_offset_in_tu != NULL)
4480     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4481                                                header->offset_size);
4482   info_ptr += header->offset_size;
4483
4484   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4485
4486   error_check_comp_unit_head (header, section, abbrev_section);
4487
4488   return info_ptr;
4489 }
4490
4491 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4492
4493 static sect_offset
4494 read_abbrev_offset (struct dwarf2_section_info *section,
4495                     sect_offset offset)
4496 {
4497   bfd *abfd = get_section_bfd_owner (section);
4498   const gdb_byte *info_ptr;
4499   unsigned int initial_length_size, offset_size;
4500   sect_offset abbrev_offset;
4501
4502   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4503   info_ptr = section->buffer + offset.sect_off;
4504   read_initial_length (abfd, info_ptr, &initial_length_size);
4505   offset_size = initial_length_size == 4 ? 4 : 8;
4506   info_ptr += initial_length_size + 2 /*version*/;
4507   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4508   return abbrev_offset;
4509 }
4510
4511 /* Allocate a new partial symtab for file named NAME and mark this new
4512    partial symtab as being an include of PST.  */
4513
4514 static void
4515 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4516                                struct objfile *objfile)
4517 {
4518   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4519
4520   if (!IS_ABSOLUTE_PATH (subpst->filename))
4521     {
4522       /* It shares objfile->objfile_obstack.  */
4523       subpst->dirname = pst->dirname;
4524     }
4525
4526   subpst->textlow = 0;
4527   subpst->texthigh = 0;
4528
4529   subpst->dependencies
4530     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
4531   subpst->dependencies[0] = pst;
4532   subpst->number_of_dependencies = 1;
4533
4534   subpst->globals_offset = 0;
4535   subpst->n_global_syms = 0;
4536   subpst->statics_offset = 0;
4537   subpst->n_static_syms = 0;
4538   subpst->compunit_symtab = NULL;
4539   subpst->read_symtab = pst->read_symtab;
4540   subpst->readin = 0;
4541
4542   /* No private part is necessary for include psymtabs.  This property
4543      can be used to differentiate between such include psymtabs and
4544      the regular ones.  */
4545   subpst->read_symtab_private = NULL;
4546 }
4547
4548 /* Read the Line Number Program data and extract the list of files
4549    included by the source file represented by PST.  Build an include
4550    partial symtab for each of these included files.  */
4551
4552 static void
4553 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4554                                struct die_info *die,
4555                                struct partial_symtab *pst)
4556 {
4557   struct line_header *lh = NULL;
4558   struct attribute *attr;
4559
4560   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4561   if (attr)
4562     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4563   if (lh == NULL)
4564     return;  /* No linetable, so no includes.  */
4565
4566   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4567   dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
4568
4569   free_line_header (lh);
4570 }
4571
4572 static hashval_t
4573 hash_signatured_type (const void *item)
4574 {
4575   const struct signatured_type *sig_type
4576     = (const struct signatured_type *) item;
4577
4578   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4579   return sig_type->signature;
4580 }
4581
4582 static int
4583 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4584 {
4585   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
4586   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
4587
4588   return lhs->signature == rhs->signature;
4589 }
4590
4591 /* Allocate a hash table for signatured types.  */
4592
4593 static htab_t
4594 allocate_signatured_type_table (struct objfile *objfile)
4595 {
4596   return htab_create_alloc_ex (41,
4597                                hash_signatured_type,
4598                                eq_signatured_type,
4599                                NULL,
4600                                &objfile->objfile_obstack,
4601                                hashtab_obstack_allocate,
4602                                dummy_obstack_deallocate);
4603 }
4604
4605 /* A helper function to add a signatured type CU to a table.  */
4606
4607 static int
4608 add_signatured_type_cu_to_table (void **slot, void *datum)
4609 {
4610   struct signatured_type *sigt = (struct signatured_type *) *slot;
4611   struct signatured_type ***datap = (struct signatured_type ***) datum;
4612
4613   **datap = sigt;
4614   ++*datap;
4615
4616   return 1;
4617 }
4618
4619 /* Create the hash table of all entries in the .debug_types
4620    (or .debug_types.dwo) section(s).
4621    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4622    otherwise it is NULL.
4623
4624    The result is a pointer to the hash table or NULL if there are no types.
4625
4626    Note: This function processes DWO files only, not DWP files.  */
4627
4628 static htab_t
4629 create_debug_types_hash_table (struct dwo_file *dwo_file,
4630                                VEC (dwarf2_section_info_def) *types)
4631 {
4632   struct objfile *objfile = dwarf2_per_objfile->objfile;
4633   htab_t types_htab = NULL;
4634   int ix;
4635   struct dwarf2_section_info *section;
4636   struct dwarf2_section_info *abbrev_section;
4637
4638   if (VEC_empty (dwarf2_section_info_def, types))
4639     return NULL;
4640
4641   abbrev_section = (dwo_file != NULL
4642                     ? &dwo_file->sections.abbrev
4643                     : &dwarf2_per_objfile->abbrev);
4644
4645   if (dwarf_read_debug)
4646     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4647                         dwo_file ? ".dwo" : "",
4648                         get_section_file_name (abbrev_section));
4649
4650   for (ix = 0;
4651        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4652        ++ix)
4653     {
4654       bfd *abfd;
4655       const gdb_byte *info_ptr, *end_ptr;
4656
4657       dwarf2_read_section (objfile, section);
4658       info_ptr = section->buffer;
4659
4660       if (info_ptr == NULL)
4661         continue;
4662
4663       /* We can't set abfd until now because the section may be empty or
4664          not present, in which case the bfd is unknown.  */
4665       abfd = get_section_bfd_owner (section);
4666
4667       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4668          because we don't need to read any dies: the signature is in the
4669          header.  */
4670
4671       end_ptr = info_ptr + section->size;
4672       while (info_ptr < end_ptr)
4673         {
4674           sect_offset offset;
4675           cu_offset type_offset_in_tu;
4676           ULONGEST signature;
4677           struct signatured_type *sig_type;
4678           struct dwo_unit *dwo_tu;
4679           void **slot;
4680           const gdb_byte *ptr = info_ptr;
4681           struct comp_unit_head header;
4682           unsigned int length;
4683
4684           offset.sect_off = ptr - section->buffer;
4685
4686           /* We need to read the type's signature in order to build the hash
4687              table, but we don't need anything else just yet.  */
4688
4689           ptr = read_and_check_type_unit_head (&header, section,
4690                                                abbrev_section, ptr,
4691                                                &signature, &type_offset_in_tu);
4692
4693           length = get_cu_length (&header);
4694
4695           /* Skip dummy type units.  */
4696           if (ptr >= info_ptr + length
4697               || peek_abbrev_code (abfd, ptr) == 0)
4698             {
4699               info_ptr += length;
4700               continue;
4701             }
4702
4703           if (types_htab == NULL)
4704             {
4705               if (dwo_file)
4706                 types_htab = allocate_dwo_unit_table (objfile);
4707               else
4708                 types_htab = allocate_signatured_type_table (objfile);
4709             }
4710
4711           if (dwo_file)
4712             {
4713               sig_type = NULL;
4714               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4715                                        struct dwo_unit);
4716               dwo_tu->dwo_file = dwo_file;
4717               dwo_tu->signature = signature;
4718               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4719               dwo_tu->section = section;
4720               dwo_tu->offset = offset;
4721               dwo_tu->length = length;
4722             }
4723           else
4724             {
4725               /* N.B.: type_offset is not usable if this type uses a DWO file.
4726                  The real type_offset is in the DWO file.  */
4727               dwo_tu = NULL;
4728               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4729                                          struct signatured_type);
4730               sig_type->signature = signature;
4731               sig_type->type_offset_in_tu = type_offset_in_tu;
4732               sig_type->per_cu.objfile = objfile;
4733               sig_type->per_cu.is_debug_types = 1;
4734               sig_type->per_cu.section = section;
4735               sig_type->per_cu.offset = offset;
4736               sig_type->per_cu.length = length;
4737             }
4738
4739           slot = htab_find_slot (types_htab,
4740                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4741                                  INSERT);
4742           gdb_assert (slot != NULL);
4743           if (*slot != NULL)
4744             {
4745               sect_offset dup_offset;
4746
4747               if (dwo_file)
4748                 {
4749                   const struct dwo_unit *dup_tu
4750                     = (const struct dwo_unit *) *slot;
4751
4752                   dup_offset = dup_tu->offset;
4753                 }
4754               else
4755                 {
4756                   const struct signatured_type *dup_tu
4757                     = (const struct signatured_type *) *slot;
4758
4759                   dup_offset = dup_tu->per_cu.offset;
4760                 }
4761
4762               complaint (&symfile_complaints,
4763                          _("debug type entry at offset 0x%x is duplicate to"
4764                            " the entry at offset 0x%x, signature %s"),
4765                          offset.sect_off, dup_offset.sect_off,
4766                          hex_string (signature));
4767             }
4768           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4769
4770           if (dwarf_read_debug > 1)
4771             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4772                                 offset.sect_off,
4773                                 hex_string (signature));
4774
4775           info_ptr += length;
4776         }
4777     }
4778
4779   return types_htab;
4780 }
4781
4782 /* Create the hash table of all entries in the .debug_types section,
4783    and initialize all_type_units.
4784    The result is zero if there is an error (e.g. missing .debug_types section),
4785    otherwise non-zero.  */
4786
4787 static int
4788 create_all_type_units (struct objfile *objfile)
4789 {
4790   htab_t types_htab;
4791   struct signatured_type **iter;
4792
4793   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4794   if (types_htab == NULL)
4795     {
4796       dwarf2_per_objfile->signatured_types = NULL;
4797       return 0;
4798     }
4799
4800   dwarf2_per_objfile->signatured_types = types_htab;
4801
4802   dwarf2_per_objfile->n_type_units
4803     = dwarf2_per_objfile->n_allocated_type_units
4804     = htab_elements (types_htab);
4805   dwarf2_per_objfile->all_type_units =
4806     XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
4807   iter = &dwarf2_per_objfile->all_type_units[0];
4808   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4809   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4810               == dwarf2_per_objfile->n_type_units);
4811
4812   return 1;
4813 }
4814
4815 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4816    If SLOT is non-NULL, it is the entry to use in the hash table.
4817    Otherwise we find one.  */
4818
4819 static struct signatured_type *
4820 add_type_unit (ULONGEST sig, void **slot)
4821 {
4822   struct objfile *objfile = dwarf2_per_objfile->objfile;
4823   int n_type_units = dwarf2_per_objfile->n_type_units;
4824   struct signatured_type *sig_type;
4825
4826   gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4827   ++n_type_units;
4828   if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4829     {
4830       if (dwarf2_per_objfile->n_allocated_type_units == 0)
4831         dwarf2_per_objfile->n_allocated_type_units = 1;
4832       dwarf2_per_objfile->n_allocated_type_units *= 2;
4833       dwarf2_per_objfile->all_type_units
4834         = XRESIZEVEC (struct signatured_type *,
4835                       dwarf2_per_objfile->all_type_units,
4836                       dwarf2_per_objfile->n_allocated_type_units);
4837       ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4838     }
4839   dwarf2_per_objfile->n_type_units = n_type_units;
4840
4841   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4842                              struct signatured_type);
4843   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4844   sig_type->signature = sig;
4845   sig_type->per_cu.is_debug_types = 1;
4846   if (dwarf2_per_objfile->using_index)
4847     {
4848       sig_type->per_cu.v.quick =
4849         OBSTACK_ZALLOC (&objfile->objfile_obstack,
4850                         struct dwarf2_per_cu_quick_data);
4851     }
4852
4853   if (slot == NULL)
4854     {
4855       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4856                              sig_type, INSERT);
4857     }
4858   gdb_assert (*slot == NULL);
4859   *slot = sig_type;
4860   /* The rest of sig_type must be filled in by the caller.  */
4861   return sig_type;
4862 }
4863
4864 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4865    Fill in SIG_ENTRY with DWO_ENTRY.  */
4866
4867 static void
4868 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4869                                   struct signatured_type *sig_entry,
4870                                   struct dwo_unit *dwo_entry)
4871 {
4872   /* Make sure we're not clobbering something we don't expect to.  */
4873   gdb_assert (! sig_entry->per_cu.queued);
4874   gdb_assert (sig_entry->per_cu.cu == NULL);
4875   if (dwarf2_per_objfile->using_index)
4876     {
4877       gdb_assert (sig_entry->per_cu.v.quick != NULL);
4878       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
4879     }
4880   else
4881       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
4882   gdb_assert (sig_entry->signature == dwo_entry->signature);
4883   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4884   gdb_assert (sig_entry->type_unit_group == NULL);
4885   gdb_assert (sig_entry->dwo_unit == NULL);
4886
4887   sig_entry->per_cu.section = dwo_entry->section;
4888   sig_entry->per_cu.offset = dwo_entry->offset;
4889   sig_entry->per_cu.length = dwo_entry->length;
4890   sig_entry->per_cu.reading_dwo_directly = 1;
4891   sig_entry->per_cu.objfile = objfile;
4892   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4893   sig_entry->dwo_unit = dwo_entry;
4894 }
4895
4896 /* Subroutine of lookup_signatured_type.
4897    If we haven't read the TU yet, create the signatured_type data structure
4898    for a TU to be read in directly from a DWO file, bypassing the stub.
4899    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4900    using .gdb_index, then when reading a CU we want to stay in the DWO file
4901    containing that CU.  Otherwise we could end up reading several other DWO
4902    files (due to comdat folding) to process the transitive closure of all the
4903    mentioned TUs, and that can be slow.  The current DWO file will have every
4904    type signature that it needs.
4905    We only do this for .gdb_index because in the psymtab case we already have
4906    to read all the DWOs to build the type unit groups.  */
4907
4908 static struct signatured_type *
4909 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4910 {
4911   struct objfile *objfile = dwarf2_per_objfile->objfile;
4912   struct dwo_file *dwo_file;
4913   struct dwo_unit find_dwo_entry, *dwo_entry;
4914   struct signatured_type find_sig_entry, *sig_entry;
4915   void **slot;
4916
4917   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4918
4919   /* If TU skeletons have been removed then we may not have read in any
4920      TUs yet.  */
4921   if (dwarf2_per_objfile->signatured_types == NULL)
4922     {
4923       dwarf2_per_objfile->signatured_types
4924         = allocate_signatured_type_table (objfile);
4925     }
4926
4927   /* We only ever need to read in one copy of a signatured type.
4928      Use the global signatured_types array to do our own comdat-folding
4929      of types.  If this is the first time we're reading this TU, and
4930      the TU has an entry in .gdb_index, replace the recorded data from
4931      .gdb_index with this TU.  */
4932
4933   find_sig_entry.signature = sig;
4934   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4935                          &find_sig_entry, INSERT);
4936   sig_entry = (struct signatured_type *) *slot;
4937
4938   /* We can get here with the TU already read, *or* in the process of being
4939      read.  Don't reassign the global entry to point to this DWO if that's
4940      the case.  Also note that if the TU is already being read, it may not
4941      have come from a DWO, the program may be a mix of Fission-compiled
4942      code and non-Fission-compiled code.  */
4943
4944   /* Have we already tried to read this TU?
4945      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4946      needn't exist in the global table yet).  */
4947   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
4948     return sig_entry;
4949
4950   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4951      dwo_unit of the TU itself.  */
4952   dwo_file = cu->dwo_unit->dwo_file;
4953
4954   /* Ok, this is the first time we're reading this TU.  */
4955   if (dwo_file->tus == NULL)
4956     return NULL;
4957   find_dwo_entry.signature = sig;
4958   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
4959   if (dwo_entry == NULL)
4960     return NULL;
4961
4962   /* If the global table doesn't have an entry for this TU, add one.  */
4963   if (sig_entry == NULL)
4964     sig_entry = add_type_unit (sig, slot);
4965
4966   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4967   sig_entry->per_cu.tu_read = 1;
4968   return sig_entry;
4969 }
4970
4971 /* Subroutine of lookup_signatured_type.
4972    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4973    then try the DWP file.  If the TU stub (skeleton) has been removed then
4974    it won't be in .gdb_index.  */
4975
4976 static struct signatured_type *
4977 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4978 {
4979   struct objfile *objfile = dwarf2_per_objfile->objfile;
4980   struct dwp_file *dwp_file = get_dwp_file ();
4981   struct dwo_unit *dwo_entry;
4982   struct signatured_type find_sig_entry, *sig_entry;
4983   void **slot;
4984
4985   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4986   gdb_assert (dwp_file != NULL);
4987
4988   /* If TU skeletons have been removed then we may not have read in any
4989      TUs yet.  */
4990   if (dwarf2_per_objfile->signatured_types == NULL)
4991     {
4992       dwarf2_per_objfile->signatured_types
4993         = allocate_signatured_type_table (objfile);
4994     }
4995
4996   find_sig_entry.signature = sig;
4997   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4998                          &find_sig_entry, INSERT);
4999   sig_entry = (struct signatured_type *) *slot;
5000
5001   /* Have we already tried to read this TU?
5002      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
5003      needn't exist in the global table yet).  */
5004   if (sig_entry != NULL)
5005     return sig_entry;
5006
5007   if (dwp_file->tus == NULL)
5008     return NULL;
5009   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
5010                                       sig, 1 /* is_debug_types */);
5011   if (dwo_entry == NULL)
5012     return NULL;
5013
5014   sig_entry = add_type_unit (sig, slot);
5015   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
5016
5017   return sig_entry;
5018 }
5019
5020 /* Lookup a signature based type for DW_FORM_ref_sig8.
5021    Returns NULL if signature SIG is not present in the table.
5022    It is up to the caller to complain about this.  */
5023
5024 static struct signatured_type *
5025 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
5026 {
5027   if (cu->dwo_unit
5028       && dwarf2_per_objfile->using_index)
5029     {
5030       /* We're in a DWO/DWP file, and we're using .gdb_index.
5031          These cases require special processing.  */
5032       if (get_dwp_file () == NULL)
5033         return lookup_dwo_signatured_type (cu, sig);
5034       else
5035         return lookup_dwp_signatured_type (cu, sig);
5036     }
5037   else
5038     {
5039       struct signatured_type find_entry, *entry;
5040
5041       if (dwarf2_per_objfile->signatured_types == NULL)
5042         return NULL;
5043       find_entry.signature = sig;
5044       entry = ((struct signatured_type *)
5045                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
5046       return entry;
5047     }
5048 }
5049 \f
5050 /* Low level DIE reading support.  */
5051
5052 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
5053
5054 static void
5055 init_cu_die_reader (struct die_reader_specs *reader,
5056                     struct dwarf2_cu *cu,
5057                     struct dwarf2_section_info *section,
5058                     struct dwo_file *dwo_file)
5059 {
5060   gdb_assert (section->readin && section->buffer != NULL);
5061   reader->abfd = get_section_bfd_owner (section);
5062   reader->cu = cu;
5063   reader->dwo_file = dwo_file;
5064   reader->die_section = section;
5065   reader->buffer = section->buffer;
5066   reader->buffer_end = section->buffer + section->size;
5067   reader->comp_dir = NULL;
5068 }
5069
5070 /* Subroutine of init_cutu_and_read_dies to simplify it.
5071    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5072    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5073    already.
5074
5075    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5076    from it to the DIE in the DWO.  If NULL we are skipping the stub.
5077    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5078    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
5079    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
5080    STUB_COMP_DIR may be non-NULL.
5081    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5082    are filled in with the info of the DIE from the DWO file.
5083    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5084    provided an abbrev table to use.
5085    The result is non-zero if a valid (non-dummy) DIE was found.  */
5086
5087 static int
5088 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5089                         struct dwo_unit *dwo_unit,
5090                         int abbrev_table_provided,
5091                         struct die_info *stub_comp_unit_die,
5092                         const char *stub_comp_dir,
5093                         struct die_reader_specs *result_reader,
5094                         const gdb_byte **result_info_ptr,
5095                         struct die_info **result_comp_unit_die,
5096                         int *result_has_children)
5097 {
5098   struct objfile *objfile = dwarf2_per_objfile->objfile;
5099   struct dwarf2_cu *cu = this_cu->cu;
5100   struct dwarf2_section_info *section;
5101   bfd *abfd;
5102   const gdb_byte *begin_info_ptr, *info_ptr;
5103   ULONGEST signature; /* Or dwo_id.  */
5104   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5105   int i,num_extra_attrs;
5106   struct dwarf2_section_info *dwo_abbrev_section;
5107   struct attribute *attr;
5108   struct die_info *comp_unit_die;
5109
5110   /* At most one of these may be provided.  */
5111   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
5112
5113   /* These attributes aren't processed until later:
5114      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
5115      DW_AT_comp_dir is used now, to find the DWO file, but it is also
5116      referenced later.  However, these attributes are found in the stub
5117      which we won't have later.  In order to not impose this complication
5118      on the rest of the code, we read them here and copy them to the
5119      DWO CU/TU die.  */
5120
5121   stmt_list = NULL;
5122   low_pc = NULL;
5123   high_pc = NULL;
5124   ranges = NULL;
5125   comp_dir = NULL;
5126
5127   if (stub_comp_unit_die != NULL)
5128     {
5129       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5130          DWO file.  */
5131       if (! this_cu->is_debug_types)
5132         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5133       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5134       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5135       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5136       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5137
5138       /* There should be a DW_AT_addr_base attribute here (if needed).
5139          We need the value before we can process DW_FORM_GNU_addr_index.  */
5140       cu->addr_base = 0;
5141       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5142       if (attr)
5143         cu->addr_base = DW_UNSND (attr);
5144
5145       /* There should be a DW_AT_ranges_base attribute here (if needed).
5146          We need the value before we can process DW_AT_ranges.  */
5147       cu->ranges_base = 0;
5148       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5149       if (attr)
5150         cu->ranges_base = DW_UNSND (attr);
5151     }
5152   else if (stub_comp_dir != NULL)
5153     {
5154       /* Reconstruct the comp_dir attribute to simplify the code below.  */
5155       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
5156       comp_dir->name = DW_AT_comp_dir;
5157       comp_dir->form = DW_FORM_string;
5158       DW_STRING_IS_CANONICAL (comp_dir) = 0;
5159       DW_STRING (comp_dir) = stub_comp_dir;
5160     }
5161
5162   /* Set up for reading the DWO CU/TU.  */
5163   cu->dwo_unit = dwo_unit;
5164   section = dwo_unit->section;
5165   dwarf2_read_section (objfile, section);
5166   abfd = get_section_bfd_owner (section);
5167   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5168   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5169   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5170
5171   if (this_cu->is_debug_types)
5172     {
5173       ULONGEST header_signature;
5174       cu_offset type_offset_in_tu;
5175       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5176
5177       info_ptr = read_and_check_type_unit_head (&cu->header, section,
5178                                                 dwo_abbrev_section,
5179                                                 info_ptr,
5180                                                 &header_signature,
5181                                                 &type_offset_in_tu);
5182       /* This is not an assert because it can be caused by bad debug info.  */
5183       if (sig_type->signature != header_signature)
5184         {
5185           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5186                    " TU at offset 0x%x [in module %s]"),
5187                  hex_string (sig_type->signature),
5188                  hex_string (header_signature),
5189                  dwo_unit->offset.sect_off,
5190                  bfd_get_filename (abfd));
5191         }
5192       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5193       /* For DWOs coming from DWP files, we don't know the CU length
5194          nor the type's offset in the TU until now.  */
5195       dwo_unit->length = get_cu_length (&cu->header);
5196       dwo_unit->type_offset_in_tu = type_offset_in_tu;
5197
5198       /* Establish the type offset that can be used to lookup the type.
5199          For DWO files, we don't know it until now.  */
5200       sig_type->type_offset_in_section.sect_off =
5201         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5202     }
5203   else
5204     {
5205       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5206                                                 dwo_abbrev_section,
5207                                                 info_ptr, 0);
5208       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5209       /* For DWOs coming from DWP files, we don't know the CU length
5210          until now.  */
5211       dwo_unit->length = get_cu_length (&cu->header);
5212     }
5213
5214   /* Replace the CU's original abbrev table with the DWO's.
5215      Reminder: We can't read the abbrev table until we've read the header.  */
5216   if (abbrev_table_provided)
5217     {
5218       /* Don't free the provided abbrev table, the caller of
5219          init_cutu_and_read_dies owns it.  */
5220       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5221       /* Ensure the DWO abbrev table gets freed.  */
5222       make_cleanup (dwarf2_free_abbrev_table, cu);
5223     }
5224   else
5225     {
5226       dwarf2_free_abbrev_table (cu);
5227       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5228       /* Leave any existing abbrev table cleanup as is.  */
5229     }
5230
5231   /* Read in the die, but leave space to copy over the attributes
5232      from the stub.  This has the benefit of simplifying the rest of
5233      the code - all the work to maintain the illusion of a single
5234      DW_TAG_{compile,type}_unit DIE is done here.  */
5235   num_extra_attrs = ((stmt_list != NULL)
5236                      + (low_pc != NULL)
5237                      + (high_pc != NULL)
5238                      + (ranges != NULL)
5239                      + (comp_dir != NULL));
5240   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5241                               result_has_children, num_extra_attrs);
5242
5243   /* Copy over the attributes from the stub to the DIE we just read in.  */
5244   comp_unit_die = *result_comp_unit_die;
5245   i = comp_unit_die->num_attrs;
5246   if (stmt_list != NULL)
5247     comp_unit_die->attrs[i++] = *stmt_list;
5248   if (low_pc != NULL)
5249     comp_unit_die->attrs[i++] = *low_pc;
5250   if (high_pc != NULL)
5251     comp_unit_die->attrs[i++] = *high_pc;
5252   if (ranges != NULL)
5253     comp_unit_die->attrs[i++] = *ranges;
5254   if (comp_dir != NULL)
5255     comp_unit_die->attrs[i++] = *comp_dir;
5256   comp_unit_die->num_attrs += num_extra_attrs;
5257
5258   if (dwarf_die_debug)
5259     {
5260       fprintf_unfiltered (gdb_stdlog,
5261                           "Read die from %s@0x%x of %s:\n",
5262                           get_section_name (section),
5263                           (unsigned) (begin_info_ptr - section->buffer),
5264                           bfd_get_filename (abfd));
5265       dump_die (comp_unit_die, dwarf_die_debug);
5266     }
5267
5268   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5269      TUs by skipping the stub and going directly to the entry in the DWO file.
5270      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5271      to get it via circuitous means.  Blech.  */
5272   if (comp_dir != NULL)
5273     result_reader->comp_dir = DW_STRING (comp_dir);
5274
5275   /* Skip dummy compilation units.  */
5276   if (info_ptr >= begin_info_ptr + dwo_unit->length
5277       || peek_abbrev_code (abfd, info_ptr) == 0)
5278     return 0;
5279
5280   *result_info_ptr = info_ptr;
5281   return 1;
5282 }
5283
5284 /* Subroutine of init_cutu_and_read_dies to simplify it.
5285    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5286    Returns NULL if the specified DWO unit cannot be found.  */
5287
5288 static struct dwo_unit *
5289 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5290                  struct die_info *comp_unit_die)
5291 {
5292   struct dwarf2_cu *cu = this_cu->cu;
5293   struct attribute *attr;
5294   ULONGEST signature;
5295   struct dwo_unit *dwo_unit;
5296   const char *comp_dir, *dwo_name;
5297
5298   gdb_assert (cu != NULL);
5299
5300   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5301   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5302   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
5303
5304   if (this_cu->is_debug_types)
5305     {
5306       struct signatured_type *sig_type;
5307
5308       /* Since this_cu is the first member of struct signatured_type,
5309          we can go from a pointer to one to a pointer to the other.  */
5310       sig_type = (struct signatured_type *) this_cu;
5311       signature = sig_type->signature;
5312       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5313     }
5314   else
5315     {
5316       struct attribute *attr;
5317
5318       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5319       if (! attr)
5320         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5321                  " [in module %s]"),
5322                dwo_name, objfile_name (this_cu->objfile));
5323       signature = DW_UNSND (attr);
5324       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5325                                        signature);
5326     }
5327
5328   return dwo_unit;
5329 }
5330
5331 /* Subroutine of init_cutu_and_read_dies to simplify it.
5332    See it for a description of the parameters.
5333    Read a TU directly from a DWO file, bypassing the stub.
5334
5335    Note: This function could be a little bit simpler if we shared cleanups
5336    with our caller, init_cutu_and_read_dies.  That's generally a fragile thing
5337    to do, so we keep this function self-contained.  Or we could move this
5338    into our caller, but it's complex enough already.  */
5339
5340 static void
5341 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5342                            int use_existing_cu, int keep,
5343                            die_reader_func_ftype *die_reader_func,
5344                            void *data)
5345 {
5346   struct dwarf2_cu *cu;
5347   struct signatured_type *sig_type;
5348   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5349   struct die_reader_specs reader;
5350   const gdb_byte *info_ptr;
5351   struct die_info *comp_unit_die;
5352   int has_children;
5353
5354   /* Verify we can do the following downcast, and that we have the
5355      data we need.  */
5356   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5357   sig_type = (struct signatured_type *) this_cu;
5358   gdb_assert (sig_type->dwo_unit != NULL);
5359
5360   cleanups = make_cleanup (null_cleanup, NULL);
5361
5362   if (use_existing_cu && this_cu->cu != NULL)
5363     {
5364       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5365       cu = this_cu->cu;
5366       /* There's no need to do the rereading_dwo_cu handling that
5367          init_cutu_and_read_dies does since we don't read the stub.  */
5368     }
5369   else
5370     {
5371       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5372       gdb_assert (this_cu->cu == NULL);
5373       cu = XNEW (struct dwarf2_cu);
5374       init_one_comp_unit (cu, this_cu);
5375       /* If an error occurs while loading, release our storage.  */
5376       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5377     }
5378
5379   /* A future optimization, if needed, would be to use an existing
5380      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
5381      could share abbrev tables.  */
5382
5383   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5384                               0 /* abbrev_table_provided */,
5385                               NULL /* stub_comp_unit_die */,
5386                               sig_type->dwo_unit->dwo_file->comp_dir,
5387                               &reader, &info_ptr,
5388                               &comp_unit_die, &has_children) == 0)
5389     {
5390       /* Dummy die.  */
5391       do_cleanups (cleanups);
5392       return;
5393     }
5394
5395   /* All the "real" work is done here.  */
5396   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5397
5398   /* This duplicates the code in init_cutu_and_read_dies,
5399      but the alternative is making the latter more complex.
5400      This function is only for the special case of using DWO files directly:
5401      no point in overly complicating the general case just to handle this.  */
5402   if (free_cu_cleanup != NULL)
5403     {
5404       if (keep)
5405         {
5406           /* We've successfully allocated this compilation unit.  Let our
5407              caller clean it up when finished with it.  */
5408           discard_cleanups (free_cu_cleanup);
5409
5410           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5411              So we have to manually free the abbrev table.  */
5412           dwarf2_free_abbrev_table (cu);
5413
5414           /* Link this CU into read_in_chain.  */
5415           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5416           dwarf2_per_objfile->read_in_chain = this_cu;
5417         }
5418       else
5419         do_cleanups (free_cu_cleanup);
5420     }
5421
5422   do_cleanups (cleanups);
5423 }
5424
5425 /* Initialize a CU (or TU) and read its DIEs.
5426    If the CU defers to a DWO file, read the DWO file as well.
5427
5428    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5429    Otherwise the table specified in the comp unit header is read in and used.
5430    This is an optimization for when we already have the abbrev table.
5431
5432    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5433    Otherwise, a new CU is allocated with xmalloc.
5434
5435    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5436    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5437
5438    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5439    linker) then DIE_READER_FUNC will not get called.  */
5440
5441 static void
5442 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5443                          struct abbrev_table *abbrev_table,
5444                          int use_existing_cu, int keep,
5445                          die_reader_func_ftype *die_reader_func,
5446                          void *data)
5447 {
5448   struct objfile *objfile = dwarf2_per_objfile->objfile;
5449   struct dwarf2_section_info *section = this_cu->section;
5450   bfd *abfd = get_section_bfd_owner (section);
5451   struct dwarf2_cu *cu;
5452   const gdb_byte *begin_info_ptr, *info_ptr;
5453   struct die_reader_specs reader;
5454   struct die_info *comp_unit_die;
5455   int has_children;
5456   struct attribute *attr;
5457   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5458   struct signatured_type *sig_type = NULL;
5459   struct dwarf2_section_info *abbrev_section;
5460   /* Non-zero if CU currently points to a DWO file and we need to
5461      reread it.  When this happens we need to reread the skeleton die
5462      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5463   int rereading_dwo_cu = 0;
5464
5465   if (dwarf_die_debug)
5466     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5467                         this_cu->is_debug_types ? "type" : "comp",
5468                         this_cu->offset.sect_off);
5469
5470   if (use_existing_cu)
5471     gdb_assert (keep);
5472
5473   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5474      file (instead of going through the stub), short-circuit all of this.  */
5475   if (this_cu->reading_dwo_directly)
5476     {
5477       /* Narrow down the scope of possibilities to have to understand.  */
5478       gdb_assert (this_cu->is_debug_types);
5479       gdb_assert (abbrev_table == NULL);
5480       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5481                                  die_reader_func, data);
5482       return;
5483     }
5484
5485   cleanups = make_cleanup (null_cleanup, NULL);
5486
5487   /* This is cheap if the section is already read in.  */
5488   dwarf2_read_section (objfile, section);
5489
5490   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5491
5492   abbrev_section = get_abbrev_section_for_cu (this_cu);
5493
5494   if (use_existing_cu && this_cu->cu != NULL)
5495     {
5496       cu = this_cu->cu;
5497       /* If this CU is from a DWO file we need to start over, we need to
5498          refetch the attributes from the skeleton CU.
5499          This could be optimized by retrieving those attributes from when we
5500          were here the first time: the previous comp_unit_die was stored in
5501          comp_unit_obstack.  But there's no data yet that we need this
5502          optimization.  */
5503       if (cu->dwo_unit != NULL)
5504         rereading_dwo_cu = 1;
5505     }
5506   else
5507     {
5508       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5509       gdb_assert (this_cu->cu == NULL);
5510       cu = XNEW (struct dwarf2_cu);
5511       init_one_comp_unit (cu, this_cu);
5512       /* If an error occurs while loading, release our storage.  */
5513       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5514     }
5515
5516   /* Get the header.  */
5517   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5518     {
5519       /* We already have the header, there's no need to read it in again.  */
5520       info_ptr += cu->header.first_die_offset.cu_off;
5521     }
5522   else
5523     {
5524       if (this_cu->is_debug_types)
5525         {
5526           ULONGEST signature;
5527           cu_offset type_offset_in_tu;
5528
5529           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5530                                                     abbrev_section, info_ptr,
5531                                                     &signature,
5532                                                     &type_offset_in_tu);
5533
5534           /* Since per_cu is the first member of struct signatured_type,
5535              we can go from a pointer to one to a pointer to the other.  */
5536           sig_type = (struct signatured_type *) this_cu;
5537           gdb_assert (sig_type->signature == signature);
5538           gdb_assert (sig_type->type_offset_in_tu.cu_off
5539                       == type_offset_in_tu.cu_off);
5540           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5541
5542           /* LENGTH has not been set yet for type units if we're
5543              using .gdb_index.  */
5544           this_cu->length = get_cu_length (&cu->header);
5545
5546           /* Establish the type offset that can be used to lookup the type.  */
5547           sig_type->type_offset_in_section.sect_off =
5548             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5549         }
5550       else
5551         {
5552           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5553                                                     abbrev_section,
5554                                                     info_ptr, 0);
5555
5556           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5557           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5558         }
5559     }
5560
5561   /* Skip dummy compilation units.  */
5562   if (info_ptr >= begin_info_ptr + this_cu->length
5563       || peek_abbrev_code (abfd, info_ptr) == 0)
5564     {
5565       do_cleanups (cleanups);
5566       return;
5567     }
5568
5569   /* If we don't have them yet, read the abbrevs for this compilation unit.
5570      And if we need to read them now, make sure they're freed when we're
5571      done.  Note that it's important that if the CU had an abbrev table
5572      on entry we don't free it when we're done: Somewhere up the call stack
5573      it may be in use.  */
5574   if (abbrev_table != NULL)
5575     {
5576       gdb_assert (cu->abbrev_table == NULL);
5577       gdb_assert (cu->header.abbrev_offset.sect_off
5578                   == abbrev_table->offset.sect_off);
5579       cu->abbrev_table = abbrev_table;
5580     }
5581   else if (cu->abbrev_table == NULL)
5582     {
5583       dwarf2_read_abbrevs (cu, abbrev_section);
5584       make_cleanup (dwarf2_free_abbrev_table, cu);
5585     }
5586   else if (rereading_dwo_cu)
5587     {
5588       dwarf2_free_abbrev_table (cu);
5589       dwarf2_read_abbrevs (cu, abbrev_section);
5590     }
5591
5592   /* Read the top level CU/TU die.  */
5593   init_cu_die_reader (&reader, cu, section, NULL);
5594   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5595
5596   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5597      from the DWO file.
5598      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5599      DWO CU, that this test will fail (the attribute will not be present).  */
5600   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5601   if (attr)
5602     {
5603       struct dwo_unit *dwo_unit;
5604       struct die_info *dwo_comp_unit_die;
5605
5606       if (has_children)
5607         {
5608           complaint (&symfile_complaints,
5609                      _("compilation unit with DW_AT_GNU_dwo_name"
5610                        " has children (offset 0x%x) [in module %s]"),
5611                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5612         }
5613       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5614       if (dwo_unit != NULL)
5615         {
5616           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5617                                       abbrev_table != NULL,
5618                                       comp_unit_die, NULL,
5619                                       &reader, &info_ptr,
5620                                       &dwo_comp_unit_die, &has_children) == 0)
5621             {
5622               /* Dummy die.  */
5623               do_cleanups (cleanups);
5624               return;
5625             }
5626           comp_unit_die = dwo_comp_unit_die;
5627         }
5628       else
5629         {
5630           /* Yikes, we couldn't find the rest of the DIE, we only have
5631              the stub.  A complaint has already been logged.  There's
5632              not much more we can do except pass on the stub DIE to
5633              die_reader_func.  We don't want to throw an error on bad
5634              debug info.  */
5635         }
5636     }
5637
5638   /* All of the above is setup for this call.  Yikes.  */
5639   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5640
5641   /* Done, clean up.  */
5642   if (free_cu_cleanup != NULL)
5643     {
5644       if (keep)
5645         {
5646           /* We've successfully allocated this compilation unit.  Let our
5647              caller clean it up when finished with it.  */
5648           discard_cleanups (free_cu_cleanup);
5649
5650           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5651              So we have to manually free the abbrev table.  */
5652           dwarf2_free_abbrev_table (cu);
5653
5654           /* Link this CU into read_in_chain.  */
5655           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5656           dwarf2_per_objfile->read_in_chain = this_cu;
5657         }
5658       else
5659         do_cleanups (free_cu_cleanup);
5660     }
5661
5662   do_cleanups (cleanups);
5663 }
5664
5665 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5666    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5667    to have already done the lookup to find the DWO file).
5668
5669    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5670    THIS_CU->is_debug_types, but nothing else.
5671
5672    We fill in THIS_CU->length.
5673
5674    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5675    linker) then DIE_READER_FUNC will not get called.
5676
5677    THIS_CU->cu is always freed when done.
5678    This is done in order to not leave THIS_CU->cu in a state where we have
5679    to care whether it refers to the "main" CU or the DWO CU.  */
5680
5681 static void
5682 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5683                                    struct dwo_file *dwo_file,
5684                                    die_reader_func_ftype *die_reader_func,
5685                                    void *data)
5686 {
5687   struct objfile *objfile = dwarf2_per_objfile->objfile;
5688   struct dwarf2_section_info *section = this_cu->section;
5689   bfd *abfd = get_section_bfd_owner (section);
5690   struct dwarf2_section_info *abbrev_section;
5691   struct dwarf2_cu cu;
5692   const gdb_byte *begin_info_ptr, *info_ptr;
5693   struct die_reader_specs reader;
5694   struct cleanup *cleanups;
5695   struct die_info *comp_unit_die;
5696   int has_children;
5697
5698   if (dwarf_die_debug)
5699     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5700                         this_cu->is_debug_types ? "type" : "comp",
5701                         this_cu->offset.sect_off);
5702
5703   gdb_assert (this_cu->cu == NULL);
5704
5705   abbrev_section = (dwo_file != NULL
5706                     ? &dwo_file->sections.abbrev
5707                     : get_abbrev_section_for_cu (this_cu));
5708
5709   /* This is cheap if the section is already read in.  */
5710   dwarf2_read_section (objfile, section);
5711
5712   init_one_comp_unit (&cu, this_cu);
5713
5714   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5715
5716   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5717   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5718                                             abbrev_section, info_ptr,
5719                                             this_cu->is_debug_types);
5720
5721   this_cu->length = get_cu_length (&cu.header);
5722
5723   /* Skip dummy compilation units.  */
5724   if (info_ptr >= begin_info_ptr + this_cu->length
5725       || peek_abbrev_code (abfd, info_ptr) == 0)
5726     {
5727       do_cleanups (cleanups);
5728       return;
5729     }
5730
5731   dwarf2_read_abbrevs (&cu, abbrev_section);
5732   make_cleanup (dwarf2_free_abbrev_table, &cu);
5733
5734   init_cu_die_reader (&reader, &cu, section, dwo_file);
5735   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5736
5737   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5738
5739   do_cleanups (cleanups);
5740 }
5741
5742 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5743    does not lookup the specified DWO file.
5744    This cannot be used to read DWO files.
5745
5746    THIS_CU->cu is always freed when done.
5747    This is done in order to not leave THIS_CU->cu in a state where we have
5748    to care whether it refers to the "main" CU or the DWO CU.
5749    We can revisit this if the data shows there's a performance issue.  */
5750
5751 static void
5752 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5753                                 die_reader_func_ftype *die_reader_func,
5754                                 void *data)
5755 {
5756   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
5757 }
5758 \f
5759 /* Type Unit Groups.
5760
5761    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5762    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5763    so that all types coming from the same compilation (.o file) are grouped
5764    together.  A future step could be to put the types in the same symtab as
5765    the CU the types ultimately came from.  */
5766
5767 static hashval_t
5768 hash_type_unit_group (const void *item)
5769 {
5770   const struct type_unit_group *tu_group
5771     = (const struct type_unit_group *) item;
5772
5773   return hash_stmt_list_entry (&tu_group->hash);
5774 }
5775
5776 static int
5777 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5778 {
5779   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
5780   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
5781
5782   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5783 }
5784
5785 /* Allocate a hash table for type unit groups.  */
5786
5787 static htab_t
5788 allocate_type_unit_groups_table (void)
5789 {
5790   return htab_create_alloc_ex (3,
5791                                hash_type_unit_group,
5792                                eq_type_unit_group,
5793                                NULL,
5794                                &dwarf2_per_objfile->objfile->objfile_obstack,
5795                                hashtab_obstack_allocate,
5796                                dummy_obstack_deallocate);
5797 }
5798
5799 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5800    partial symtabs.  We combine several TUs per psymtab to not let the size
5801    of any one psymtab grow too big.  */
5802 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5803 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5804
5805 /* Helper routine for get_type_unit_group.
5806    Create the type_unit_group object used to hold one or more TUs.  */
5807
5808 static struct type_unit_group *
5809 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5810 {
5811   struct objfile *objfile = dwarf2_per_objfile->objfile;
5812   struct dwarf2_per_cu_data *per_cu;
5813   struct type_unit_group *tu_group;
5814
5815   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5816                              struct type_unit_group);
5817   per_cu = &tu_group->per_cu;
5818   per_cu->objfile = objfile;
5819
5820   if (dwarf2_per_objfile->using_index)
5821     {
5822       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5823                                         struct dwarf2_per_cu_quick_data);
5824     }
5825   else
5826     {
5827       unsigned int line_offset = line_offset_struct.sect_off;
5828       struct partial_symtab *pst;
5829       char *name;
5830
5831       /* Give the symtab a useful name for debug purposes.  */
5832       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5833         name = xstrprintf ("<type_units_%d>",
5834                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5835       else
5836         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5837
5838       pst = create_partial_symtab (per_cu, name);
5839       pst->anonymous = 1;
5840
5841       xfree (name);
5842     }
5843
5844   tu_group->hash.dwo_unit = cu->dwo_unit;
5845   tu_group->hash.line_offset = line_offset_struct;
5846
5847   return tu_group;
5848 }
5849
5850 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5851    STMT_LIST is a DW_AT_stmt_list attribute.  */
5852
5853 static struct type_unit_group *
5854 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5855 {
5856   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5857   struct type_unit_group *tu_group;
5858   void **slot;
5859   unsigned int line_offset;
5860   struct type_unit_group type_unit_group_for_lookup;
5861
5862   if (dwarf2_per_objfile->type_unit_groups == NULL)
5863     {
5864       dwarf2_per_objfile->type_unit_groups =
5865         allocate_type_unit_groups_table ();
5866     }
5867
5868   /* Do we need to create a new group, or can we use an existing one?  */
5869
5870   if (stmt_list)
5871     {
5872       line_offset = DW_UNSND (stmt_list);
5873       ++tu_stats->nr_symtab_sharers;
5874     }
5875   else
5876     {
5877       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5878          We can do various things here like create one group per TU or
5879          spread them over multiple groups to split up the expansion work.
5880          To avoid worst case scenarios (too many groups or too large groups)
5881          we, umm, group them in bunches.  */
5882       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5883                      | (tu_stats->nr_stmt_less_type_units
5884                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5885       ++tu_stats->nr_stmt_less_type_units;
5886     }
5887
5888   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5889   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5890   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5891                          &type_unit_group_for_lookup, INSERT);
5892   if (*slot != NULL)
5893     {
5894       tu_group = (struct type_unit_group *) *slot;
5895       gdb_assert (tu_group != NULL);
5896     }
5897   else
5898     {
5899       sect_offset line_offset_struct;
5900
5901       line_offset_struct.sect_off = line_offset;
5902       tu_group = create_type_unit_group (cu, line_offset_struct);
5903       *slot = tu_group;
5904       ++tu_stats->nr_symtabs;
5905     }
5906
5907   return tu_group;
5908 }
5909 \f
5910 /* Partial symbol tables.  */
5911
5912 /* Create a psymtab named NAME and assign it to PER_CU.
5913
5914    The caller must fill in the following details:
5915    dirname, textlow, texthigh.  */
5916
5917 static struct partial_symtab *
5918 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5919 {
5920   struct objfile *objfile = per_cu->objfile;
5921   struct partial_symtab *pst;
5922
5923   pst = start_psymtab_common (objfile, name, 0,
5924                               objfile->global_psymbols.next,
5925                               objfile->static_psymbols.next);
5926
5927   pst->psymtabs_addrmap_supported = 1;
5928
5929   /* This is the glue that links PST into GDB's symbol API.  */
5930   pst->read_symtab_private = per_cu;
5931   pst->read_symtab = dwarf2_read_symtab;
5932   per_cu->v.psymtab = pst;
5933
5934   return pst;
5935 }
5936
5937 /* The DATA object passed to process_psymtab_comp_unit_reader has this
5938    type.  */
5939
5940 struct process_psymtab_comp_unit_data
5941 {
5942   /* True if we are reading a DW_TAG_partial_unit.  */
5943
5944   int want_partial_unit;
5945
5946   /* The "pretend" language that is used if the CU doesn't declare a
5947      language.  */
5948
5949   enum language pretend_language;
5950 };
5951
5952 /* die_reader_func for process_psymtab_comp_unit.  */
5953
5954 static void
5955 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5956                                   const gdb_byte *info_ptr,
5957                                   struct die_info *comp_unit_die,
5958                                   int has_children,
5959                                   void *data)
5960 {
5961   struct dwarf2_cu *cu = reader->cu;
5962   struct objfile *objfile = cu->objfile;
5963   struct gdbarch *gdbarch = get_objfile_arch (objfile);
5964   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5965   CORE_ADDR baseaddr;
5966   CORE_ADDR best_lowpc = 0, best_highpc = 0;
5967   struct partial_symtab *pst;
5968   enum pc_bounds_kind cu_bounds_kind;
5969   const char *filename;
5970   struct process_psymtab_comp_unit_data *info
5971     = (struct process_psymtab_comp_unit_data *) data;
5972
5973   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
5974     return;
5975
5976   gdb_assert (! per_cu->is_debug_types);
5977
5978   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
5979
5980   cu->list_in_scope = &file_symbols;
5981
5982   /* Allocate a new partial symbol table structure.  */
5983   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
5984   if (filename == NULL)
5985     filename = "";
5986
5987   pst = create_partial_symtab (per_cu, filename);
5988
5989   /* This must be done before calling dwarf2_build_include_psymtabs.  */
5990   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
5991
5992   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5993
5994   dwarf2_find_base_address (comp_unit_die, cu);
5995
5996   /* Possibly set the default values of LOWPC and HIGHPC from
5997      `DW_AT_ranges'.  */
5998   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5999                                          &best_highpc, cu, pst);
6000   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
6001     /* Store the contiguous range if it is not empty; it can be empty for
6002        CUs with no code.  */
6003     addrmap_set_empty (objfile->psymtabs_addrmap,
6004                        gdbarch_adjust_dwarf2_addr (gdbarch,
6005                                                    best_lowpc + baseaddr),
6006                        gdbarch_adjust_dwarf2_addr (gdbarch,
6007                                                    best_highpc + baseaddr) - 1,
6008                        pst);
6009
6010   /* Check if comp unit has_children.
6011      If so, read the rest of the partial symbols from this comp unit.
6012      If not, there's no more debug_info for this comp unit.  */
6013   if (has_children)
6014     {
6015       struct partial_die_info *first_die;
6016       CORE_ADDR lowpc, highpc;
6017
6018       lowpc = ((CORE_ADDR) -1);
6019       highpc = ((CORE_ADDR) 0);
6020
6021       first_die = load_partial_dies (reader, info_ptr, 1);
6022
6023       scan_partial_symbols (first_die, &lowpc, &highpc,
6024                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
6025
6026       /* If we didn't find a lowpc, set it to highpc to avoid
6027          complaints from `maint check'.  */
6028       if (lowpc == ((CORE_ADDR) -1))
6029         lowpc = highpc;
6030
6031       /* If the compilation unit didn't have an explicit address range,
6032          then use the information extracted from its child dies.  */
6033       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
6034         {
6035           best_lowpc = lowpc;
6036           best_highpc = highpc;
6037         }
6038     }
6039   pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6040   pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
6041
6042   end_psymtab_common (objfile, pst);
6043
6044   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6045     {
6046       int i;
6047       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6048       struct dwarf2_per_cu_data *iter;
6049
6050       /* Fill in 'dependencies' here; we fill in 'users' in a
6051          post-pass.  */
6052       pst->number_of_dependencies = len;
6053       pst->dependencies =
6054         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
6055       for (i = 0;
6056            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6057                         i, iter);
6058            ++i)
6059         pst->dependencies[i] = iter->v.psymtab;
6060
6061       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6062     }
6063
6064   /* Get the list of files included in the current compilation unit,
6065      and build a psymtab for each of them.  */
6066   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6067
6068   if (dwarf_read_debug)
6069     {
6070       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6071
6072       fprintf_unfiltered (gdb_stdlog,
6073                           "Psymtab for %s unit @0x%x: %s - %s"
6074                           ", %d global, %d static syms\n",
6075                           per_cu->is_debug_types ? "type" : "comp",
6076                           per_cu->offset.sect_off,
6077                           paddress (gdbarch, pst->textlow),
6078                           paddress (gdbarch, pst->texthigh),
6079                           pst->n_global_syms, pst->n_static_syms);
6080     }
6081 }
6082
6083 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6084    Process compilation unit THIS_CU for a psymtab.  */
6085
6086 static void
6087 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
6088                            int want_partial_unit,
6089                            enum language pretend_language)
6090 {
6091   struct process_psymtab_comp_unit_data info;
6092
6093   /* If this compilation unit was already read in, free the
6094      cached copy in order to read it in again.  This is
6095      necessary because we skipped some symbols when we first
6096      read in the compilation unit (see load_partial_dies).
6097      This problem could be avoided, but the benefit is unclear.  */
6098   if (this_cu->cu != NULL)
6099     free_one_cached_comp_unit (this_cu);
6100
6101   gdb_assert (! this_cu->is_debug_types);
6102   info.want_partial_unit = want_partial_unit;
6103   info.pretend_language = pretend_language;
6104   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6105                            process_psymtab_comp_unit_reader,
6106                            &info);
6107
6108   /* Age out any secondary CUs.  */
6109   age_cached_comp_units ();
6110 }
6111
6112 /* Reader function for build_type_psymtabs.  */
6113
6114 static void
6115 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6116                             const gdb_byte *info_ptr,
6117                             struct die_info *type_unit_die,
6118                             int has_children,
6119                             void *data)
6120 {
6121   struct objfile *objfile = dwarf2_per_objfile->objfile;
6122   struct dwarf2_cu *cu = reader->cu;
6123   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6124   struct signatured_type *sig_type;
6125   struct type_unit_group *tu_group;
6126   struct attribute *attr;
6127   struct partial_die_info *first_die;
6128   CORE_ADDR lowpc, highpc;
6129   struct partial_symtab *pst;
6130
6131   gdb_assert (data == NULL);
6132   gdb_assert (per_cu->is_debug_types);
6133   sig_type = (struct signatured_type *) per_cu;
6134
6135   if (! has_children)
6136     return;
6137
6138   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6139   tu_group = get_type_unit_group (cu, attr);
6140
6141   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6142
6143   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6144   cu->list_in_scope = &file_symbols;
6145   pst = create_partial_symtab (per_cu, "");
6146   pst->anonymous = 1;
6147
6148   first_die = load_partial_dies (reader, info_ptr, 1);
6149
6150   lowpc = (CORE_ADDR) -1;
6151   highpc = (CORE_ADDR) 0;
6152   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6153
6154   end_psymtab_common (objfile, pst);
6155 }
6156
6157 /* Struct used to sort TUs by their abbreviation table offset.  */
6158
6159 struct tu_abbrev_offset
6160 {
6161   struct signatured_type *sig_type;
6162   sect_offset abbrev_offset;
6163 };
6164
6165 /* Helper routine for build_type_psymtabs_1, passed to qsort.  */
6166
6167 static int
6168 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6169 {
6170   const struct tu_abbrev_offset * const *a
6171     = (const struct tu_abbrev_offset * const*) ap;
6172   const struct tu_abbrev_offset * const *b
6173     = (const struct tu_abbrev_offset * const*) bp;
6174   unsigned int aoff = (*a)->abbrev_offset.sect_off;
6175   unsigned int boff = (*b)->abbrev_offset.sect_off;
6176
6177   return (aoff > boff) - (aoff < boff);
6178 }
6179
6180 /* Efficiently read all the type units.
6181    This does the bulk of the work for build_type_psymtabs.
6182
6183    The efficiency is because we sort TUs by the abbrev table they use and
6184    only read each abbrev table once.  In one program there are 200K TUs
6185    sharing 8K abbrev tables.
6186
6187    The main purpose of this function is to support building the
6188    dwarf2_per_objfile->type_unit_groups table.
6189    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6190    can collapse the search space by grouping them by stmt_list.
6191    The savings can be significant, in the same program from above the 200K TUs
6192    share 8K stmt_list tables.
6193
6194    FUNC is expected to call get_type_unit_group, which will create the
6195    struct type_unit_group if necessary and add it to
6196    dwarf2_per_objfile->type_unit_groups.  */
6197
6198 static void
6199 build_type_psymtabs_1 (void)
6200 {
6201   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6202   struct cleanup *cleanups;
6203   struct abbrev_table *abbrev_table;
6204   sect_offset abbrev_offset;
6205   struct tu_abbrev_offset *sorted_by_abbrev;
6206   int i;
6207
6208   /* It's up to the caller to not call us multiple times.  */
6209   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6210
6211   if (dwarf2_per_objfile->n_type_units == 0)
6212     return;
6213
6214   /* TUs typically share abbrev tables, and there can be way more TUs than
6215      abbrev tables.  Sort by abbrev table to reduce the number of times we
6216      read each abbrev table in.
6217      Alternatives are to punt or to maintain a cache of abbrev tables.
6218      This is simpler and efficient enough for now.
6219
6220      Later we group TUs by their DW_AT_stmt_list value (as this defines the
6221      symtab to use).  Typically TUs with the same abbrev offset have the same
6222      stmt_list value too so in practice this should work well.
6223
6224      The basic algorithm here is:
6225
6226       sort TUs by abbrev table
6227       for each TU with same abbrev table:
6228         read abbrev table if first user
6229         read TU top level DIE
6230           [IWBN if DWO skeletons had DW_AT_stmt_list]
6231         call FUNC  */
6232
6233   if (dwarf_read_debug)
6234     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6235
6236   /* Sort in a separate table to maintain the order of all_type_units
6237      for .gdb_index: TU indices directly index all_type_units.  */
6238   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6239                               dwarf2_per_objfile->n_type_units);
6240   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6241     {
6242       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6243
6244       sorted_by_abbrev[i].sig_type = sig_type;
6245       sorted_by_abbrev[i].abbrev_offset =
6246         read_abbrev_offset (sig_type->per_cu.section,
6247                             sig_type->per_cu.offset);
6248     }
6249   cleanups = make_cleanup (xfree, sorted_by_abbrev);
6250   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6251          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6252
6253   abbrev_offset.sect_off = ~(unsigned) 0;
6254   abbrev_table = NULL;
6255   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6256
6257   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6258     {
6259       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6260
6261       /* Switch to the next abbrev table if necessary.  */
6262       if (abbrev_table == NULL
6263           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6264         {
6265           if (abbrev_table != NULL)
6266             {
6267               abbrev_table_free (abbrev_table);
6268               /* Reset to NULL in case abbrev_table_read_table throws
6269                  an error: abbrev_table_free_cleanup will get called.  */
6270               abbrev_table = NULL;
6271             }
6272           abbrev_offset = tu->abbrev_offset;
6273           abbrev_table =
6274             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6275                                      abbrev_offset);
6276           ++tu_stats->nr_uniq_abbrev_tables;
6277         }
6278
6279       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6280                                build_type_psymtabs_reader, NULL);
6281     }
6282
6283   do_cleanups (cleanups);
6284 }
6285
6286 /* Print collected type unit statistics.  */
6287
6288 static void
6289 print_tu_stats (void)
6290 {
6291   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6292
6293   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6294   fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
6295                       dwarf2_per_objfile->n_type_units);
6296   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
6297                       tu_stats->nr_uniq_abbrev_tables);
6298   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
6299                       tu_stats->nr_symtabs);
6300   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
6301                       tu_stats->nr_symtab_sharers);
6302   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
6303                       tu_stats->nr_stmt_less_type_units);
6304   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
6305                       tu_stats->nr_all_type_units_reallocs);
6306 }
6307
6308 /* Traversal function for build_type_psymtabs.  */
6309
6310 static int
6311 build_type_psymtab_dependencies (void **slot, void *info)
6312 {
6313   struct objfile *objfile = dwarf2_per_objfile->objfile;
6314   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6315   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6316   struct partial_symtab *pst = per_cu->v.psymtab;
6317   int len = VEC_length (sig_type_ptr, tu_group->tus);
6318   struct signatured_type *iter;
6319   int i;
6320
6321   gdb_assert (len > 0);
6322   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6323
6324   pst->number_of_dependencies = len;
6325   pst->dependencies =
6326     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
6327   for (i = 0;
6328        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6329        ++i)
6330     {
6331       gdb_assert (iter->per_cu.is_debug_types);
6332       pst->dependencies[i] = iter->per_cu.v.psymtab;
6333       iter->type_unit_group = tu_group;
6334     }
6335
6336   VEC_free (sig_type_ptr, tu_group->tus);
6337
6338   return 1;
6339 }
6340
6341 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6342    Build partial symbol tables for the .debug_types comp-units.  */
6343
6344 static void
6345 build_type_psymtabs (struct objfile *objfile)
6346 {
6347   if (! create_all_type_units (objfile))
6348     return;
6349
6350   build_type_psymtabs_1 ();
6351 }
6352
6353 /* Traversal function for process_skeletonless_type_unit.
6354    Read a TU in a DWO file and build partial symbols for it.  */
6355
6356 static int
6357 process_skeletonless_type_unit (void **slot, void *info)
6358 {
6359   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6360   struct objfile *objfile = (struct objfile *) info;
6361   struct signatured_type find_entry, *entry;
6362
6363   /* If this TU doesn't exist in the global table, add it and read it in.  */
6364
6365   if (dwarf2_per_objfile->signatured_types == NULL)
6366     {
6367       dwarf2_per_objfile->signatured_types
6368         = allocate_signatured_type_table (objfile);
6369     }
6370
6371   find_entry.signature = dwo_unit->signature;
6372   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6373                          INSERT);
6374   /* If we've already seen this type there's nothing to do.  What's happening
6375      is we're doing our own version of comdat-folding here.  */
6376   if (*slot != NULL)
6377     return 1;
6378
6379   /* This does the job that create_all_type_units would have done for
6380      this TU.  */
6381   entry = add_type_unit (dwo_unit->signature, slot);
6382   fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6383   *slot = entry;
6384
6385   /* This does the job that build_type_psymtabs_1 would have done.  */
6386   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6387                            build_type_psymtabs_reader, NULL);
6388
6389   return 1;
6390 }
6391
6392 /* Traversal function for process_skeletonless_type_units.  */
6393
6394 static int
6395 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6396 {
6397   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6398
6399   if (dwo_file->tus != NULL)
6400     {
6401       htab_traverse_noresize (dwo_file->tus,
6402                               process_skeletonless_type_unit, info);
6403     }
6404
6405   return 1;
6406 }
6407
6408 /* Scan all TUs of DWO files, verifying we've processed them.
6409    This is needed in case a TU was emitted without its skeleton.
6410    Note: This can't be done until we know what all the DWO files are.  */
6411
6412 static void
6413 process_skeletonless_type_units (struct objfile *objfile)
6414 {
6415   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
6416   if (get_dwp_file () == NULL
6417       && dwarf2_per_objfile->dwo_files != NULL)
6418     {
6419       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6420                               process_dwo_file_for_skeletonless_type_units,
6421                               objfile);
6422     }
6423 }
6424
6425 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6426
6427 static void
6428 psymtabs_addrmap_cleanup (void *o)
6429 {
6430   struct objfile *objfile = (struct objfile *) o;
6431
6432   objfile->psymtabs_addrmap = NULL;
6433 }
6434
6435 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6436
6437 static void
6438 set_partial_user (struct objfile *objfile)
6439 {
6440   int i;
6441
6442   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6443     {
6444       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6445       struct partial_symtab *pst = per_cu->v.psymtab;
6446       int j;
6447
6448       if (pst == NULL)
6449         continue;
6450
6451       for (j = 0; j < pst->number_of_dependencies; ++j)
6452         {
6453           /* Set the 'user' field only if it is not already set.  */
6454           if (pst->dependencies[j]->user == NULL)
6455             pst->dependencies[j]->user = pst;
6456         }
6457     }
6458 }
6459
6460 /* Build the partial symbol table by doing a quick pass through the
6461    .debug_info and .debug_abbrev sections.  */
6462
6463 static void
6464 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6465 {
6466   struct cleanup *back_to, *addrmap_cleanup;
6467   struct obstack temp_obstack;
6468   int i;
6469
6470   if (dwarf_read_debug)
6471     {
6472       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6473                           objfile_name (objfile));
6474     }
6475
6476   dwarf2_per_objfile->reading_partial_symbols = 1;
6477
6478   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6479
6480   /* Any cached compilation units will be linked by the per-objfile
6481      read_in_chain.  Make sure to free them when we're done.  */
6482   back_to = make_cleanup (free_cached_comp_units, NULL);
6483
6484   build_type_psymtabs (objfile);
6485
6486   create_all_comp_units (objfile);
6487
6488   /* Create a temporary address map on a temporary obstack.  We later
6489      copy this to the final obstack.  */
6490   obstack_init (&temp_obstack);
6491   make_cleanup_obstack_free (&temp_obstack);
6492   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6493   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6494
6495   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6496     {
6497       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6498
6499       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6500     }
6501
6502   /* This has to wait until we read the CUs, we need the list of DWOs.  */
6503   process_skeletonless_type_units (objfile);
6504
6505   /* Now that all TUs have been processed we can fill in the dependencies.  */
6506   if (dwarf2_per_objfile->type_unit_groups != NULL)
6507     {
6508       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6509                               build_type_psymtab_dependencies, NULL);
6510     }
6511
6512   if (dwarf_read_debug)
6513     print_tu_stats ();
6514
6515   set_partial_user (objfile);
6516
6517   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6518                                                     &objfile->objfile_obstack);
6519   discard_cleanups (addrmap_cleanup);
6520
6521   do_cleanups (back_to);
6522
6523   if (dwarf_read_debug)
6524     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6525                         objfile_name (objfile));
6526 }
6527
6528 /* die_reader_func for load_partial_comp_unit.  */
6529
6530 static void
6531 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6532                                const gdb_byte *info_ptr,
6533                                struct die_info *comp_unit_die,
6534                                int has_children,
6535                                void *data)
6536 {
6537   struct dwarf2_cu *cu = reader->cu;
6538
6539   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6540
6541   /* Check if comp unit has_children.
6542      If so, read the rest of the partial symbols from this comp unit.
6543      If not, there's no more debug_info for this comp unit.  */
6544   if (has_children)
6545     load_partial_dies (reader, info_ptr, 0);
6546 }
6547
6548 /* Load the partial DIEs for a secondary CU into memory.
6549    This is also used when rereading a primary CU with load_all_dies.  */
6550
6551 static void
6552 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6553 {
6554   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6555                            load_partial_comp_unit_reader, NULL);
6556 }
6557
6558 static void
6559 read_comp_units_from_section (struct objfile *objfile,
6560                               struct dwarf2_section_info *section,
6561                               unsigned int is_dwz,
6562                               int *n_allocated,
6563                               int *n_comp_units,
6564                               struct dwarf2_per_cu_data ***all_comp_units)
6565 {
6566   const gdb_byte *info_ptr;
6567   bfd *abfd = get_section_bfd_owner (section);
6568
6569   if (dwarf_read_debug)
6570     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6571                         get_section_name (section),
6572                         get_section_file_name (section));
6573
6574   dwarf2_read_section (objfile, section);
6575
6576   info_ptr = section->buffer;
6577
6578   while (info_ptr < section->buffer + section->size)
6579     {
6580       unsigned int length, initial_length_size;
6581       struct dwarf2_per_cu_data *this_cu;
6582       sect_offset offset;
6583
6584       offset.sect_off = info_ptr - section->buffer;
6585
6586       /* Read just enough information to find out where the next
6587          compilation unit is.  */
6588       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6589
6590       /* Save the compilation unit for later lookup.  */
6591       this_cu = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_cu_data);
6592       memset (this_cu, 0, sizeof (*this_cu));
6593       this_cu->offset = offset;
6594       this_cu->length = length + initial_length_size;
6595       this_cu->is_dwz = is_dwz;
6596       this_cu->objfile = objfile;
6597       this_cu->section = section;
6598
6599       if (*n_comp_units == *n_allocated)
6600         {
6601           *n_allocated *= 2;
6602           *all_comp_units = XRESIZEVEC (struct dwarf2_per_cu_data *,
6603                                         *all_comp_units, *n_allocated);
6604         }
6605       (*all_comp_units)[*n_comp_units] = this_cu;
6606       ++*n_comp_units;
6607
6608       info_ptr = info_ptr + this_cu->length;
6609     }
6610 }
6611
6612 /* Create a list of all compilation units in OBJFILE.
6613    This is only done for -readnow and building partial symtabs.  */
6614
6615 static void
6616 create_all_comp_units (struct objfile *objfile)
6617 {
6618   int n_allocated;
6619   int n_comp_units;
6620   struct dwarf2_per_cu_data **all_comp_units;
6621   struct dwz_file *dwz;
6622
6623   n_comp_units = 0;
6624   n_allocated = 10;
6625   all_comp_units = XNEWVEC (struct dwarf2_per_cu_data *, n_allocated);
6626
6627   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6628                                 &n_allocated, &n_comp_units, &all_comp_units);
6629
6630   dwz = dwarf2_get_dwz_file ();
6631   if (dwz != NULL)
6632     read_comp_units_from_section (objfile, &dwz->info, 1,
6633                                   &n_allocated, &n_comp_units,
6634                                   &all_comp_units);
6635
6636   dwarf2_per_objfile->all_comp_units = XOBNEWVEC (&objfile->objfile_obstack,
6637                                                   struct dwarf2_per_cu_data *,
6638                                                   n_comp_units);
6639   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6640           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6641   xfree (all_comp_units);
6642   dwarf2_per_objfile->n_comp_units = n_comp_units;
6643 }
6644
6645 /* Process all loaded DIEs for compilation unit CU, starting at
6646    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
6647    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6648    DW_AT_ranges).  See the comments of add_partial_subprogram on how
6649    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
6650
6651 static void
6652 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6653                       CORE_ADDR *highpc, int set_addrmap,
6654                       struct dwarf2_cu *cu)
6655 {
6656   struct partial_die_info *pdi;
6657
6658   /* Now, march along the PDI's, descending into ones which have
6659      interesting children but skipping the children of the other ones,
6660      until we reach the end of the compilation unit.  */
6661
6662   pdi = first_die;
6663
6664   while (pdi != NULL)
6665     {
6666       fixup_partial_die (pdi, cu);
6667
6668       /* Anonymous namespaces or modules have no name but have interesting
6669          children, so we need to look at them.  Ditto for anonymous
6670          enums.  */
6671
6672       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6673           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6674           || pdi->tag == DW_TAG_imported_unit)
6675         {
6676           switch (pdi->tag)
6677             {
6678             case DW_TAG_subprogram:
6679               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
6680               break;
6681             case DW_TAG_constant:
6682             case DW_TAG_variable:
6683             case DW_TAG_typedef:
6684             case DW_TAG_union_type:
6685               if (!pdi->is_declaration)
6686                 {
6687                   add_partial_symbol (pdi, cu);
6688                 }
6689               break;
6690             case DW_TAG_class_type:
6691             case DW_TAG_interface_type:
6692             case DW_TAG_structure_type:
6693               if (!pdi->is_declaration)
6694                 {
6695                   add_partial_symbol (pdi, cu);
6696                 }
6697               if (cu->language == language_rust && pdi->has_children)
6698                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
6699                                       set_addrmap, cu);
6700               break;
6701             case DW_TAG_enumeration_type:
6702               if (!pdi->is_declaration)
6703                 add_partial_enumeration (pdi, cu);
6704               break;
6705             case DW_TAG_base_type:
6706             case DW_TAG_subrange_type:
6707               /* File scope base type definitions are added to the partial
6708                  symbol table.  */
6709               add_partial_symbol (pdi, cu);
6710               break;
6711             case DW_TAG_namespace:
6712               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
6713               break;
6714             case DW_TAG_module:
6715               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
6716               break;
6717             case DW_TAG_imported_unit:
6718               {
6719                 struct dwarf2_per_cu_data *per_cu;
6720
6721                 /* For now we don't handle imported units in type units.  */
6722                 if (cu->per_cu->is_debug_types)
6723                   {
6724                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6725                              " supported in type units [in module %s]"),
6726                            objfile_name (cu->objfile));
6727                   }
6728
6729                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6730                                                            pdi->is_dwz,
6731                                                            cu->objfile);
6732
6733                 /* Go read the partial unit, if needed.  */
6734                 if (per_cu->v.psymtab == NULL)
6735                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6736
6737                 VEC_safe_push (dwarf2_per_cu_ptr,
6738                                cu->per_cu->imported_symtabs, per_cu);
6739               }
6740               break;
6741             case DW_TAG_imported_declaration:
6742               add_partial_symbol (pdi, cu);
6743               break;
6744             default:
6745               break;
6746             }
6747         }
6748
6749       /* If the die has a sibling, skip to the sibling.  */
6750
6751       pdi = pdi->die_sibling;
6752     }
6753 }
6754
6755 /* Functions used to compute the fully scoped name of a partial DIE.
6756
6757    Normally, this is simple.  For C++, the parent DIE's fully scoped
6758    name is concatenated with "::" and the partial DIE's name.
6759    Enumerators are an exception; they use the scope of their parent
6760    enumeration type, i.e. the name of the enumeration type is not
6761    prepended to the enumerator.
6762
6763    There are two complexities.  One is DW_AT_specification; in this
6764    case "parent" means the parent of the target of the specification,
6765    instead of the direct parent of the DIE.  The other is compilers
6766    which do not emit DW_TAG_namespace; in this case we try to guess
6767    the fully qualified name of structure types from their members'
6768    linkage names.  This must be done using the DIE's children rather
6769    than the children of any DW_AT_specification target.  We only need
6770    to do this for structures at the top level, i.e. if the target of
6771    any DW_AT_specification (if any; otherwise the DIE itself) does not
6772    have a parent.  */
6773
6774 /* Compute the scope prefix associated with PDI's parent, in
6775    compilation unit CU.  The result will be allocated on CU's
6776    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6777    field.  NULL is returned if no prefix is necessary.  */
6778 static const char *
6779 partial_die_parent_scope (struct partial_die_info *pdi,
6780                           struct dwarf2_cu *cu)
6781 {
6782   const char *grandparent_scope;
6783   struct partial_die_info *parent, *real_pdi;
6784
6785   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6786      then this means the parent of the specification DIE.  */
6787
6788   real_pdi = pdi;
6789   while (real_pdi->has_specification)
6790     real_pdi = find_partial_die (real_pdi->spec_offset,
6791                                  real_pdi->spec_is_dwz, cu);
6792
6793   parent = real_pdi->die_parent;
6794   if (parent == NULL)
6795     return NULL;
6796
6797   if (parent->scope_set)
6798     return parent->scope;
6799
6800   fixup_partial_die (parent, cu);
6801
6802   grandparent_scope = partial_die_parent_scope (parent, cu);
6803
6804   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6805      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6806      Work around this problem here.  */
6807   if (cu->language == language_cplus
6808       && parent->tag == DW_TAG_namespace
6809       && strcmp (parent->name, "::") == 0
6810       && grandparent_scope == NULL)
6811     {
6812       parent->scope = NULL;
6813       parent->scope_set = 1;
6814       return NULL;
6815     }
6816
6817   if (pdi->tag == DW_TAG_enumerator)
6818     /* Enumerators should not get the name of the enumeration as a prefix.  */
6819     parent->scope = grandparent_scope;
6820   else if (parent->tag == DW_TAG_namespace
6821       || parent->tag == DW_TAG_module
6822       || parent->tag == DW_TAG_structure_type
6823       || parent->tag == DW_TAG_class_type
6824       || parent->tag == DW_TAG_interface_type
6825       || parent->tag == DW_TAG_union_type
6826       || parent->tag == DW_TAG_enumeration_type)
6827     {
6828       if (grandparent_scope == NULL)
6829         parent->scope = parent->name;
6830       else
6831         parent->scope = typename_concat (&cu->comp_unit_obstack,
6832                                          grandparent_scope,
6833                                          parent->name, 0, cu);
6834     }
6835   else
6836     {
6837       /* FIXME drow/2004-04-01: What should we be doing with
6838          function-local names?  For partial symbols, we should probably be
6839          ignoring them.  */
6840       complaint (&symfile_complaints,
6841                  _("unhandled containing DIE tag %d for DIE at %d"),
6842                  parent->tag, pdi->offset.sect_off);
6843       parent->scope = grandparent_scope;
6844     }
6845
6846   parent->scope_set = 1;
6847   return parent->scope;
6848 }
6849
6850 /* Return the fully scoped name associated with PDI, from compilation unit
6851    CU.  The result will be allocated with malloc.  */
6852
6853 static char *
6854 partial_die_full_name (struct partial_die_info *pdi,
6855                        struct dwarf2_cu *cu)
6856 {
6857   const char *parent_scope;
6858
6859   /* If this is a template instantiation, we can not work out the
6860      template arguments from partial DIEs.  So, unfortunately, we have
6861      to go through the full DIEs.  At least any work we do building
6862      types here will be reused if full symbols are loaded later.  */
6863   if (pdi->has_template_arguments)
6864     {
6865       fixup_partial_die (pdi, cu);
6866
6867       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6868         {
6869           struct die_info *die;
6870           struct attribute attr;
6871           struct dwarf2_cu *ref_cu = cu;
6872
6873           /* DW_FORM_ref_addr is using section offset.  */
6874           attr.name = (enum dwarf_attribute) 0;
6875           attr.form = DW_FORM_ref_addr;
6876           attr.u.unsnd = pdi->offset.sect_off;
6877           die = follow_die_ref (NULL, &attr, &ref_cu);
6878
6879           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6880         }
6881     }
6882
6883   parent_scope = partial_die_parent_scope (pdi, cu);
6884   if (parent_scope == NULL)
6885     return NULL;
6886   else
6887     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6888 }
6889
6890 static void
6891 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6892 {
6893   struct objfile *objfile = cu->objfile;
6894   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6895   CORE_ADDR addr = 0;
6896   const char *actual_name = NULL;
6897   CORE_ADDR baseaddr;
6898   char *built_actual_name;
6899
6900   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6901
6902   built_actual_name = partial_die_full_name (pdi, cu);
6903   if (built_actual_name != NULL)
6904     actual_name = built_actual_name;
6905
6906   if (actual_name == NULL)
6907     actual_name = pdi->name;
6908
6909   switch (pdi->tag)
6910     {
6911     case DW_TAG_subprogram:
6912       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
6913       if (pdi->is_external || cu->language == language_ada)
6914         {
6915           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6916              of the global scope.  But in Ada, we want to be able to access
6917              nested procedures globally.  So all Ada subprograms are stored
6918              in the global scope.  */
6919           add_psymbol_to_list (actual_name, strlen (actual_name),
6920                                built_actual_name != NULL,
6921                                VAR_DOMAIN, LOC_BLOCK,
6922                                &objfile->global_psymbols,
6923                                addr, cu->language, objfile);
6924         }
6925       else
6926         {
6927           add_psymbol_to_list (actual_name, strlen (actual_name),
6928                                built_actual_name != NULL,
6929                                VAR_DOMAIN, LOC_BLOCK,
6930                                &objfile->static_psymbols,
6931                                addr, cu->language, objfile);
6932         }
6933       break;
6934     case DW_TAG_constant:
6935       {
6936         struct psymbol_allocation_list *list;
6937
6938         if (pdi->is_external)
6939           list = &objfile->global_psymbols;
6940         else
6941           list = &objfile->static_psymbols;
6942         add_psymbol_to_list (actual_name, strlen (actual_name),
6943                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6944                              list, 0, cu->language, objfile);
6945       }
6946       break;
6947     case DW_TAG_variable:
6948       if (pdi->d.locdesc)
6949         addr = decode_locdesc (pdi->d.locdesc, cu);
6950
6951       if (pdi->d.locdesc
6952           && addr == 0
6953           && !dwarf2_per_objfile->has_section_at_zero)
6954         {
6955           /* A global or static variable may also have been stripped
6956              out by the linker if unused, in which case its address
6957              will be nullified; do not add such variables into partial
6958              symbol table then.  */
6959         }
6960       else if (pdi->is_external)
6961         {
6962           /* Global Variable.
6963              Don't enter into the minimal symbol tables as there is
6964              a minimal symbol table entry from the ELF symbols already.
6965              Enter into partial symbol table if it has a location
6966              descriptor or a type.
6967              If the location descriptor is missing, new_symbol will create
6968              a LOC_UNRESOLVED symbol, the address of the variable will then
6969              be determined from the minimal symbol table whenever the variable
6970              is referenced.
6971              The address for the partial symbol table entry is not
6972              used by GDB, but it comes in handy for debugging partial symbol
6973              table building.  */
6974
6975           if (pdi->d.locdesc || pdi->has_type)
6976             add_psymbol_to_list (actual_name, strlen (actual_name),
6977                                  built_actual_name != NULL,
6978                                  VAR_DOMAIN, LOC_STATIC,
6979                                  &objfile->global_psymbols,
6980                                  addr + baseaddr,
6981                                  cu->language, objfile);
6982         }
6983       else
6984         {
6985           int has_loc = pdi->d.locdesc != NULL;
6986
6987           /* Static Variable.  Skip symbols whose value we cannot know (those
6988              without location descriptors or constant values).  */
6989           if (!has_loc && !pdi->has_const_value)
6990             {
6991               xfree (built_actual_name);
6992               return;
6993             }
6994
6995           add_psymbol_to_list (actual_name, strlen (actual_name),
6996                                built_actual_name != NULL,
6997                                VAR_DOMAIN, LOC_STATIC,
6998                                &objfile->static_psymbols,
6999                                has_loc ? addr + baseaddr : (CORE_ADDR) 0,
7000                                cu->language, objfile);
7001         }
7002       break;
7003     case DW_TAG_typedef:
7004     case DW_TAG_base_type:
7005     case DW_TAG_subrange_type:
7006       add_psymbol_to_list (actual_name, strlen (actual_name),
7007                            built_actual_name != NULL,
7008                            VAR_DOMAIN, LOC_TYPEDEF,
7009                            &objfile->static_psymbols,
7010                            0, cu->language, objfile);
7011       break;
7012     case DW_TAG_imported_declaration:
7013     case DW_TAG_namespace:
7014       add_psymbol_to_list (actual_name, strlen (actual_name),
7015                            built_actual_name != NULL,
7016                            VAR_DOMAIN, LOC_TYPEDEF,
7017                            &objfile->global_psymbols,
7018                            0, cu->language, objfile);
7019       break;
7020     case DW_TAG_module:
7021       add_psymbol_to_list (actual_name, strlen (actual_name),
7022                            built_actual_name != NULL,
7023                            MODULE_DOMAIN, LOC_TYPEDEF,
7024                            &objfile->global_psymbols,
7025                            0, cu->language, objfile);
7026       break;
7027     case DW_TAG_class_type:
7028     case DW_TAG_interface_type:
7029     case DW_TAG_structure_type:
7030     case DW_TAG_union_type:
7031     case DW_TAG_enumeration_type:
7032       /* Skip external references.  The DWARF standard says in the section
7033          about "Structure, Union, and Class Type Entries": "An incomplete
7034          structure, union or class type is represented by a structure,
7035          union or class entry that does not have a byte size attribute
7036          and that has a DW_AT_declaration attribute."  */
7037       if (!pdi->has_byte_size && pdi->is_declaration)
7038         {
7039           xfree (built_actual_name);
7040           return;
7041         }
7042
7043       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7044          static vs. global.  */
7045       add_psymbol_to_list (actual_name, strlen (actual_name),
7046                            built_actual_name != NULL,
7047                            STRUCT_DOMAIN, LOC_TYPEDEF,
7048                            cu->language == language_cplus
7049                            ? &objfile->global_psymbols
7050                            : &objfile->static_psymbols,
7051                            0, cu->language, objfile);
7052
7053       break;
7054     case DW_TAG_enumerator:
7055       add_psymbol_to_list (actual_name, strlen (actual_name),
7056                            built_actual_name != NULL,
7057                            VAR_DOMAIN, LOC_CONST,
7058                            cu->language == language_cplus
7059                            ? &objfile->global_psymbols
7060                            : &objfile->static_psymbols,
7061                            0, cu->language, objfile);
7062       break;
7063     default:
7064       break;
7065     }
7066
7067   xfree (built_actual_name);
7068 }
7069
7070 /* Read a partial die corresponding to a namespace; also, add a symbol
7071    corresponding to that namespace to the symbol table.  NAMESPACE is
7072    the name of the enclosing namespace.  */
7073
7074 static void
7075 add_partial_namespace (struct partial_die_info *pdi,
7076                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
7077                        int set_addrmap, struct dwarf2_cu *cu)
7078 {
7079   /* Add a symbol for the namespace.  */
7080
7081   add_partial_symbol (pdi, cu);
7082
7083   /* Now scan partial symbols in that namespace.  */
7084
7085   if (pdi->has_children)
7086     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7087 }
7088
7089 /* Read a partial die corresponding to a Fortran module.  */
7090
7091 static void
7092 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
7093                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
7094 {
7095   /* Add a symbol for the namespace.  */
7096
7097   add_partial_symbol (pdi, cu);
7098
7099   /* Now scan partial symbols in that module.  */
7100
7101   if (pdi->has_children)
7102     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7103 }
7104
7105 /* Read a partial die corresponding to a subprogram and create a partial
7106    symbol for that subprogram.  When the CU language allows it, this
7107    routine also defines a partial symbol for each nested subprogram
7108    that this subprogram contains.  If SET_ADDRMAP is true, record the
7109    covered ranges in the addrmap.  Set *LOWPC and *HIGHPC to the lowest
7110    and highest PC values found in PDI.
7111
7112    PDI may also be a lexical block, in which case we simply search
7113    recursively for subprograms defined inside that lexical block.
7114    Again, this is only performed when the CU language allows this
7115    type of definitions.  */
7116
7117 static void
7118 add_partial_subprogram (struct partial_die_info *pdi,
7119                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
7120                         int set_addrmap, struct dwarf2_cu *cu)
7121 {
7122   if (pdi->tag == DW_TAG_subprogram)
7123     {
7124       if (pdi->has_pc_info)
7125         {
7126           if (pdi->lowpc < *lowpc)
7127             *lowpc = pdi->lowpc;
7128           if (pdi->highpc > *highpc)
7129             *highpc = pdi->highpc;
7130           if (set_addrmap)
7131             {
7132               struct objfile *objfile = cu->objfile;
7133               struct gdbarch *gdbarch = get_objfile_arch (objfile);
7134               CORE_ADDR baseaddr;
7135               CORE_ADDR highpc;
7136               CORE_ADDR lowpc;
7137
7138               baseaddr = ANOFFSET (objfile->section_offsets,
7139                                    SECT_OFF_TEXT (objfile));
7140               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7141                                                   pdi->lowpc + baseaddr);
7142               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7143                                                    pdi->highpc + baseaddr);
7144               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
7145                                  cu->per_cu->v.psymtab);
7146             }
7147         }
7148
7149       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7150         {
7151           if (!pdi->is_declaration)
7152             /* Ignore subprogram DIEs that do not have a name, they are
7153                illegal.  Do not emit a complaint at this point, we will
7154                do so when we convert this psymtab into a symtab.  */
7155             if (pdi->name)
7156               add_partial_symbol (pdi, cu);
7157         }
7158     }
7159
7160   if (! pdi->has_children)
7161     return;
7162
7163   if (cu->language == language_ada)
7164     {
7165       pdi = pdi->die_child;
7166       while (pdi != NULL)
7167         {
7168           fixup_partial_die (pdi, cu);
7169           if (pdi->tag == DW_TAG_subprogram
7170               || pdi->tag == DW_TAG_lexical_block)
7171             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
7172           pdi = pdi->die_sibling;
7173         }
7174     }
7175 }
7176
7177 /* Read a partial die corresponding to an enumeration type.  */
7178
7179 static void
7180 add_partial_enumeration (struct partial_die_info *enum_pdi,
7181                          struct dwarf2_cu *cu)
7182 {
7183   struct partial_die_info *pdi;
7184
7185   if (enum_pdi->name != NULL)
7186     add_partial_symbol (enum_pdi, cu);
7187
7188   pdi = enum_pdi->die_child;
7189   while (pdi)
7190     {
7191       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
7192         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
7193       else
7194         add_partial_symbol (pdi, cu);
7195       pdi = pdi->die_sibling;
7196     }
7197 }
7198
7199 /* Return the initial uleb128 in the die at INFO_PTR.  */
7200
7201 static unsigned int
7202 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
7203 {
7204   unsigned int bytes_read;
7205
7206   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7207 }
7208
7209 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7210    Return the corresponding abbrev, or NULL if the number is zero (indicating
7211    an empty DIE).  In either case *BYTES_READ will be set to the length of
7212    the initial number.  */
7213
7214 static struct abbrev_info *
7215 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
7216                  struct dwarf2_cu *cu)
7217 {
7218   bfd *abfd = cu->objfile->obfd;
7219   unsigned int abbrev_number;
7220   struct abbrev_info *abbrev;
7221
7222   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7223
7224   if (abbrev_number == 0)
7225     return NULL;
7226
7227   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
7228   if (!abbrev)
7229     {
7230       error (_("Dwarf Error: Could not find abbrev number %d in %s"
7231                " at offset 0x%x [in module %s]"),
7232              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7233              cu->header.offset.sect_off, bfd_get_filename (abfd));
7234     }
7235
7236   return abbrev;
7237 }
7238
7239 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7240    Returns a pointer to the end of a series of DIEs, terminated by an empty
7241    DIE.  Any children of the skipped DIEs will also be skipped.  */
7242
7243 static const gdb_byte *
7244 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
7245 {
7246   struct dwarf2_cu *cu = reader->cu;
7247   struct abbrev_info *abbrev;
7248   unsigned int bytes_read;
7249
7250   while (1)
7251     {
7252       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7253       if (abbrev == NULL)
7254         return info_ptr + bytes_read;
7255       else
7256         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7257     }
7258 }
7259
7260 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7261    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7262    abbrev corresponding to that skipped uleb128 should be passed in
7263    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7264    children.  */
7265
7266 static const gdb_byte *
7267 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7268               struct abbrev_info *abbrev)
7269 {
7270   unsigned int bytes_read;
7271   struct attribute attr;
7272   bfd *abfd = reader->abfd;
7273   struct dwarf2_cu *cu = reader->cu;
7274   const gdb_byte *buffer = reader->buffer;
7275   const gdb_byte *buffer_end = reader->buffer_end;
7276   unsigned int form, i;
7277
7278   for (i = 0; i < abbrev->num_attrs; i++)
7279     {
7280       /* The only abbrev we care about is DW_AT_sibling.  */
7281       if (abbrev->attrs[i].name == DW_AT_sibling)
7282         {
7283           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7284           if (attr.form == DW_FORM_ref_addr)
7285             complaint (&symfile_complaints,
7286                        _("ignoring absolute DW_AT_sibling"));
7287           else
7288             {
7289               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7290               const gdb_byte *sibling_ptr = buffer + off;
7291
7292               if (sibling_ptr < info_ptr)
7293                 complaint (&symfile_complaints,
7294                            _("DW_AT_sibling points backwards"));
7295               else if (sibling_ptr > reader->buffer_end)
7296                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
7297               else
7298                 return sibling_ptr;
7299             }
7300         }
7301
7302       /* If it isn't DW_AT_sibling, skip this attribute.  */
7303       form = abbrev->attrs[i].form;
7304     skip_attribute:
7305       switch (form)
7306         {
7307         case DW_FORM_ref_addr:
7308           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7309              and later it is offset sized.  */
7310           if (cu->header.version == 2)
7311             info_ptr += cu->header.addr_size;
7312           else
7313             info_ptr += cu->header.offset_size;
7314           break;
7315         case DW_FORM_GNU_ref_alt:
7316           info_ptr += cu->header.offset_size;
7317           break;
7318         case DW_FORM_addr:
7319           info_ptr += cu->header.addr_size;
7320           break;
7321         case DW_FORM_data1:
7322         case DW_FORM_ref1:
7323         case DW_FORM_flag:
7324           info_ptr += 1;
7325           break;
7326         case DW_FORM_flag_present:
7327           break;
7328         case DW_FORM_data2:
7329         case DW_FORM_ref2:
7330           info_ptr += 2;
7331           break;
7332         case DW_FORM_data4:
7333         case DW_FORM_ref4:
7334           info_ptr += 4;
7335           break;
7336         case DW_FORM_data8:
7337         case DW_FORM_ref8:
7338         case DW_FORM_ref_sig8:
7339           info_ptr += 8;
7340           break;
7341         case DW_FORM_string:
7342           read_direct_string (abfd, info_ptr, &bytes_read);
7343           info_ptr += bytes_read;
7344           break;
7345         case DW_FORM_sec_offset:
7346         case DW_FORM_strp:
7347         case DW_FORM_GNU_strp_alt:
7348           info_ptr += cu->header.offset_size;
7349           break;
7350         case DW_FORM_exprloc:
7351         case DW_FORM_block:
7352           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7353           info_ptr += bytes_read;
7354           break;
7355         case DW_FORM_block1:
7356           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7357           break;
7358         case DW_FORM_block2:
7359           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7360           break;
7361         case DW_FORM_block4:
7362           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7363           break;
7364         case DW_FORM_sdata:
7365         case DW_FORM_udata:
7366         case DW_FORM_ref_udata:
7367         case DW_FORM_GNU_addr_index:
7368         case DW_FORM_GNU_str_index:
7369           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7370           break;
7371         case DW_FORM_indirect:
7372           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7373           info_ptr += bytes_read;
7374           /* We need to continue parsing from here, so just go back to
7375              the top.  */
7376           goto skip_attribute;
7377
7378         default:
7379           error (_("Dwarf Error: Cannot handle %s "
7380                    "in DWARF reader [in module %s]"),
7381                  dwarf_form_name (form),
7382                  bfd_get_filename (abfd));
7383         }
7384     }
7385
7386   if (abbrev->has_children)
7387     return skip_children (reader, info_ptr);
7388   else
7389     return info_ptr;
7390 }
7391
7392 /* Locate ORIG_PDI's sibling.
7393    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7394
7395 static const gdb_byte *
7396 locate_pdi_sibling (const struct die_reader_specs *reader,
7397                     struct partial_die_info *orig_pdi,
7398                     const gdb_byte *info_ptr)
7399 {
7400   /* Do we know the sibling already?  */
7401
7402   if (orig_pdi->sibling)
7403     return orig_pdi->sibling;
7404
7405   /* Are there any children to deal with?  */
7406
7407   if (!orig_pdi->has_children)
7408     return info_ptr;
7409
7410   /* Skip the children the long way.  */
7411
7412   return skip_children (reader, info_ptr);
7413 }
7414
7415 /* Expand this partial symbol table into a full symbol table.  SELF is
7416    not NULL.  */
7417
7418 static void
7419 dwarf2_read_symtab (struct partial_symtab *self,
7420                     struct objfile *objfile)
7421 {
7422   if (self->readin)
7423     {
7424       warning (_("bug: psymtab for %s is already read in."),
7425                self->filename);
7426     }
7427   else
7428     {
7429       if (info_verbose)
7430         {
7431           printf_filtered (_("Reading in symbols for %s..."),
7432                            self->filename);
7433           gdb_flush (gdb_stdout);
7434         }
7435
7436       /* Restore our global data.  */
7437       dwarf2_per_objfile
7438         = (struct dwarf2_per_objfile *) objfile_data (objfile,
7439                                                       dwarf2_objfile_data_key);
7440
7441       /* If this psymtab is constructed from a debug-only objfile, the
7442          has_section_at_zero flag will not necessarily be correct.  We
7443          can get the correct value for this flag by looking at the data
7444          associated with the (presumably stripped) associated objfile.  */
7445       if (objfile->separate_debug_objfile_backlink)
7446         {
7447           struct dwarf2_per_objfile *dpo_backlink
7448             = ((struct dwarf2_per_objfile *)
7449                objfile_data (objfile->separate_debug_objfile_backlink,
7450                              dwarf2_objfile_data_key));
7451
7452           dwarf2_per_objfile->has_section_at_zero
7453             = dpo_backlink->has_section_at_zero;
7454         }
7455
7456       dwarf2_per_objfile->reading_partial_symbols = 0;
7457
7458       psymtab_to_symtab_1 (self);
7459
7460       /* Finish up the debug error message.  */
7461       if (info_verbose)
7462         printf_filtered (_("done.\n"));
7463     }
7464
7465   process_cu_includes ();
7466 }
7467 \f
7468 /* Reading in full CUs.  */
7469
7470 /* Add PER_CU to the queue.  */
7471
7472 static void
7473 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7474                  enum language pretend_language)
7475 {
7476   struct dwarf2_queue_item *item;
7477
7478   per_cu->queued = 1;
7479   item = XNEW (struct dwarf2_queue_item);
7480   item->per_cu = per_cu;
7481   item->pretend_language = pretend_language;
7482   item->next = NULL;
7483
7484   if (dwarf2_queue == NULL)
7485     dwarf2_queue = item;
7486   else
7487     dwarf2_queue_tail->next = item;
7488
7489   dwarf2_queue_tail = item;
7490 }
7491
7492 /* If PER_CU is not yet queued, add it to the queue.
7493    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7494    dependency.
7495    The result is non-zero if PER_CU was queued, otherwise the result is zero
7496    meaning either PER_CU is already queued or it is already loaded.
7497
7498    N.B. There is an invariant here that if a CU is queued then it is loaded.
7499    The caller is required to load PER_CU if we return non-zero.  */
7500
7501 static int
7502 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7503                        struct dwarf2_per_cu_data *per_cu,
7504                        enum language pretend_language)
7505 {
7506   /* We may arrive here during partial symbol reading, if we need full
7507      DIEs to process an unusual case (e.g. template arguments).  Do
7508      not queue PER_CU, just tell our caller to load its DIEs.  */
7509   if (dwarf2_per_objfile->reading_partial_symbols)
7510     {
7511       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7512         return 1;
7513       return 0;
7514     }
7515
7516   /* Mark the dependence relation so that we don't flush PER_CU
7517      too early.  */
7518   if (dependent_cu != NULL)
7519     dwarf2_add_dependence (dependent_cu, per_cu);
7520
7521   /* If it's already on the queue, we have nothing to do.  */
7522   if (per_cu->queued)
7523     return 0;
7524
7525   /* If the compilation unit is already loaded, just mark it as
7526      used.  */
7527   if (per_cu->cu != NULL)
7528     {
7529       per_cu->cu->last_used = 0;
7530       return 0;
7531     }
7532
7533   /* Add it to the queue.  */
7534   queue_comp_unit (per_cu, pretend_language);
7535
7536   return 1;
7537 }
7538
7539 /* Process the queue.  */
7540
7541 static void
7542 process_queue (void)
7543 {
7544   struct dwarf2_queue_item *item, *next_item;
7545
7546   if (dwarf_read_debug)
7547     {
7548       fprintf_unfiltered (gdb_stdlog,
7549                           "Expanding one or more symtabs of objfile %s ...\n",
7550                           objfile_name (dwarf2_per_objfile->objfile));
7551     }
7552
7553   /* The queue starts out with one item, but following a DIE reference
7554      may load a new CU, adding it to the end of the queue.  */
7555   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7556     {
7557       if ((dwarf2_per_objfile->using_index
7558            ? !item->per_cu->v.quick->compunit_symtab
7559            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7560           /* Skip dummy CUs.  */
7561           && item->per_cu->cu != NULL)
7562         {
7563           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7564           unsigned int debug_print_threshold;
7565           char buf[100];
7566
7567           if (per_cu->is_debug_types)
7568             {
7569               struct signatured_type *sig_type =
7570                 (struct signatured_type *) per_cu;
7571
7572               sprintf (buf, "TU %s at offset 0x%x",
7573                        hex_string (sig_type->signature),
7574                        per_cu->offset.sect_off);
7575               /* There can be 100s of TUs.
7576                  Only print them in verbose mode.  */
7577               debug_print_threshold = 2;
7578             }
7579           else
7580             {
7581               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7582               debug_print_threshold = 1;
7583             }
7584
7585           if (dwarf_read_debug >= debug_print_threshold)
7586             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7587
7588           if (per_cu->is_debug_types)
7589             process_full_type_unit (per_cu, item->pretend_language);
7590           else
7591             process_full_comp_unit (per_cu, item->pretend_language);
7592
7593           if (dwarf_read_debug >= debug_print_threshold)
7594             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7595         }
7596
7597       item->per_cu->queued = 0;
7598       next_item = item->next;
7599       xfree (item);
7600     }
7601
7602   dwarf2_queue_tail = NULL;
7603
7604   if (dwarf_read_debug)
7605     {
7606       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7607                           objfile_name (dwarf2_per_objfile->objfile));
7608     }
7609 }
7610
7611 /* Free all allocated queue entries.  This function only releases anything if
7612    an error was thrown; if the queue was processed then it would have been
7613    freed as we went along.  */
7614
7615 static void
7616 dwarf2_release_queue (void *dummy)
7617 {
7618   struct dwarf2_queue_item *item, *last;
7619
7620   item = dwarf2_queue;
7621   while (item)
7622     {
7623       /* Anything still marked queued is likely to be in an
7624          inconsistent state, so discard it.  */
7625       if (item->per_cu->queued)
7626         {
7627           if (item->per_cu->cu != NULL)
7628             free_one_cached_comp_unit (item->per_cu);
7629           item->per_cu->queued = 0;
7630         }
7631
7632       last = item;
7633       item = item->next;
7634       xfree (last);
7635     }
7636
7637   dwarf2_queue = dwarf2_queue_tail = NULL;
7638 }
7639
7640 /* Read in full symbols for PST, and anything it depends on.  */
7641
7642 static void
7643 psymtab_to_symtab_1 (struct partial_symtab *pst)
7644 {
7645   struct dwarf2_per_cu_data *per_cu;
7646   int i;
7647
7648   if (pst->readin)
7649     return;
7650
7651   for (i = 0; i < pst->number_of_dependencies; i++)
7652     if (!pst->dependencies[i]->readin
7653         && pst->dependencies[i]->user == NULL)
7654       {
7655         /* Inform about additional files that need to be read in.  */
7656         if (info_verbose)
7657           {
7658             /* FIXME: i18n: Need to make this a single string.  */
7659             fputs_filtered (" ", gdb_stdout);
7660             wrap_here ("");
7661             fputs_filtered ("and ", gdb_stdout);
7662             wrap_here ("");
7663             printf_filtered ("%s...", pst->dependencies[i]->filename);
7664             wrap_here ("");     /* Flush output.  */
7665             gdb_flush (gdb_stdout);
7666           }
7667         psymtab_to_symtab_1 (pst->dependencies[i]);
7668       }
7669
7670   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
7671
7672   if (per_cu == NULL)
7673     {
7674       /* It's an include file, no symbols to read for it.
7675          Everything is in the parent symtab.  */
7676       pst->readin = 1;
7677       return;
7678     }
7679
7680   dw2_do_instantiate_symtab (per_cu);
7681 }
7682
7683 /* Trivial hash function for die_info: the hash value of a DIE
7684    is its offset in .debug_info for this objfile.  */
7685
7686 static hashval_t
7687 die_hash (const void *item)
7688 {
7689   const struct die_info *die = (const struct die_info *) item;
7690
7691   return die->offset.sect_off;
7692 }
7693
7694 /* Trivial comparison function for die_info structures: two DIEs
7695    are equal if they have the same offset.  */
7696
7697 static int
7698 die_eq (const void *item_lhs, const void *item_rhs)
7699 {
7700   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
7701   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
7702
7703   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7704 }
7705
7706 /* die_reader_func for load_full_comp_unit.
7707    This is identical to read_signatured_type_reader,
7708    but is kept separate for now.  */
7709
7710 static void
7711 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7712                             const gdb_byte *info_ptr,
7713                             struct die_info *comp_unit_die,
7714                             int has_children,
7715                             void *data)
7716 {
7717   struct dwarf2_cu *cu = reader->cu;
7718   enum language *language_ptr = (enum language *) data;
7719
7720   gdb_assert (cu->die_hash == NULL);
7721   cu->die_hash =
7722     htab_create_alloc_ex (cu->header.length / 12,
7723                           die_hash,
7724                           die_eq,
7725                           NULL,
7726                           &cu->comp_unit_obstack,
7727                           hashtab_obstack_allocate,
7728                           dummy_obstack_deallocate);
7729
7730   if (has_children)
7731     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7732                                                   &info_ptr, comp_unit_die);
7733   cu->dies = comp_unit_die;
7734   /* comp_unit_die is not stored in die_hash, no need.  */
7735
7736   /* We try not to read any attributes in this function, because not
7737      all CUs needed for references have been loaded yet, and symbol
7738      table processing isn't initialized.  But we have to set the CU language,
7739      or we won't be able to build types correctly.
7740      Similarly, if we do not read the producer, we can not apply
7741      producer-specific interpretation.  */
7742   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7743 }
7744
7745 /* Load the DIEs associated with PER_CU into memory.  */
7746
7747 static void
7748 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7749                      enum language pretend_language)
7750 {
7751   gdb_assert (! this_cu->is_debug_types);
7752
7753   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7754                            load_full_comp_unit_reader, &pretend_language);
7755 }
7756
7757 /* Add a DIE to the delayed physname list.  */
7758
7759 static void
7760 add_to_method_list (struct type *type, int fnfield_index, int index,
7761                     const char *name, struct die_info *die,
7762                     struct dwarf2_cu *cu)
7763 {
7764   struct delayed_method_info mi;
7765   mi.type = type;
7766   mi.fnfield_index = fnfield_index;
7767   mi.index = index;
7768   mi.name = name;
7769   mi.die = die;
7770   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7771 }
7772
7773 /* A cleanup for freeing the delayed method list.  */
7774
7775 static void
7776 free_delayed_list (void *ptr)
7777 {
7778   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7779   if (cu->method_list != NULL)
7780     {
7781       VEC_free (delayed_method_info, cu->method_list);
7782       cu->method_list = NULL;
7783     }
7784 }
7785
7786 /* Compute the physnames of any methods on the CU's method list.
7787
7788    The computation of method physnames is delayed in order to avoid the
7789    (bad) condition that one of the method's formal parameters is of an as yet
7790    incomplete type.  */
7791
7792 static void
7793 compute_delayed_physnames (struct dwarf2_cu *cu)
7794 {
7795   int i;
7796   struct delayed_method_info *mi;
7797   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7798     {
7799       const char *physname;
7800       struct fn_fieldlist *fn_flp
7801         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7802       physname = dwarf2_physname (mi->name, mi->die, cu);
7803       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7804         = physname ? physname : "";
7805     }
7806 }
7807
7808 /* Go objects should be embedded in a DW_TAG_module DIE,
7809    and it's not clear if/how imported objects will appear.
7810    To keep Go support simple until that's worked out,
7811    go back through what we've read and create something usable.
7812    We could do this while processing each DIE, and feels kinda cleaner,
7813    but that way is more invasive.
7814    This is to, for example, allow the user to type "p var" or "b main"
7815    without having to specify the package name, and allow lookups
7816    of module.object to work in contexts that use the expression
7817    parser.  */
7818
7819 static void
7820 fixup_go_packaging (struct dwarf2_cu *cu)
7821 {
7822   char *package_name = NULL;
7823   struct pending *list;
7824   int i;
7825
7826   for (list = global_symbols; list != NULL; list = list->next)
7827     {
7828       for (i = 0; i < list->nsyms; ++i)
7829         {
7830           struct symbol *sym = list->symbol[i];
7831
7832           if (SYMBOL_LANGUAGE (sym) == language_go
7833               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7834             {
7835               char *this_package_name = go_symbol_package_name (sym);
7836
7837               if (this_package_name == NULL)
7838                 continue;
7839               if (package_name == NULL)
7840                 package_name = this_package_name;
7841               else
7842                 {
7843                   if (strcmp (package_name, this_package_name) != 0)
7844                     complaint (&symfile_complaints,
7845                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7846                                (symbol_symtab (sym) != NULL
7847                                 ? symtab_to_filename_for_display
7848                                     (symbol_symtab (sym))
7849                                 : objfile_name (cu->objfile)),
7850                                this_package_name, package_name);
7851                   xfree (this_package_name);
7852                 }
7853             }
7854         }
7855     }
7856
7857   if (package_name != NULL)
7858     {
7859       struct objfile *objfile = cu->objfile;
7860       const char *saved_package_name
7861         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
7862                                         package_name,
7863                                         strlen (package_name));
7864       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
7865                                      saved_package_name);
7866       struct symbol *sym;
7867
7868       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7869
7870       sym = allocate_symbol (objfile);
7871       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7872       SYMBOL_SET_NAMES (sym, saved_package_name,
7873                         strlen (saved_package_name), 0, objfile);
7874       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7875          e.g., "main" finds the "main" module and not C's main().  */
7876       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7877       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7878       SYMBOL_TYPE (sym) = type;
7879
7880       add_symbol_to_list (sym, &global_symbols);
7881
7882       xfree (package_name);
7883     }
7884 }
7885
7886 /* Return the symtab for PER_CU.  This works properly regardless of
7887    whether we're using the index or psymtabs.  */
7888
7889 static struct compunit_symtab *
7890 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
7891 {
7892   return (dwarf2_per_objfile->using_index
7893           ? per_cu->v.quick->compunit_symtab
7894           : per_cu->v.psymtab->compunit_symtab);
7895 }
7896
7897 /* A helper function for computing the list of all symbol tables
7898    included by PER_CU.  */
7899
7900 static void
7901 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
7902                                 htab_t all_children, htab_t all_type_symtabs,
7903                                 struct dwarf2_per_cu_data *per_cu,
7904                                 struct compunit_symtab *immediate_parent)
7905 {
7906   void **slot;
7907   int ix;
7908   struct compunit_symtab *cust;
7909   struct dwarf2_per_cu_data *iter;
7910
7911   slot = htab_find_slot (all_children, per_cu, INSERT);
7912   if (*slot != NULL)
7913     {
7914       /* This inclusion and its children have been processed.  */
7915       return;
7916     }
7917
7918   *slot = per_cu;
7919   /* Only add a CU if it has a symbol table.  */
7920   cust = get_compunit_symtab (per_cu);
7921   if (cust != NULL)
7922     {
7923       /* If this is a type unit only add its symbol table if we haven't
7924          seen it yet (type unit per_cu's can share symtabs).  */
7925       if (per_cu->is_debug_types)
7926         {
7927           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
7928           if (*slot == NULL)
7929             {
7930               *slot = cust;
7931               VEC_safe_push (compunit_symtab_ptr, *result, cust);
7932               if (cust->user == NULL)
7933                 cust->user = immediate_parent;
7934             }
7935         }
7936       else
7937         {
7938           VEC_safe_push (compunit_symtab_ptr, *result, cust);
7939           if (cust->user == NULL)
7940             cust->user = immediate_parent;
7941         }
7942     }
7943
7944   for (ix = 0;
7945        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7946        ++ix)
7947     {
7948       recursively_compute_inclusions (result, all_children,
7949                                       all_type_symtabs, iter, cust);
7950     }
7951 }
7952
7953 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
7954    PER_CU.  */
7955
7956 static void
7957 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7958 {
7959   gdb_assert (! per_cu->is_debug_types);
7960
7961   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7962     {
7963       int ix, len;
7964       struct dwarf2_per_cu_data *per_cu_iter;
7965       struct compunit_symtab *compunit_symtab_iter;
7966       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
7967       htab_t all_children, all_type_symtabs;
7968       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
7969
7970       /* If we don't have a symtab, we can just skip this case.  */
7971       if (cust == NULL)
7972         return;
7973
7974       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7975                                         NULL, xcalloc, xfree);
7976       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7977                                             NULL, xcalloc, xfree);
7978
7979       for (ix = 0;
7980            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7981                         ix, per_cu_iter);
7982            ++ix)
7983         {
7984           recursively_compute_inclusions (&result_symtabs, all_children,
7985                                           all_type_symtabs, per_cu_iter,
7986                                           cust);
7987         }
7988
7989       /* Now we have a transitive closure of all the included symtabs.  */
7990       len = VEC_length (compunit_symtab_ptr, result_symtabs);
7991       cust->includes
7992         = XOBNEWVEC (&dwarf2_per_objfile->objfile->objfile_obstack,
7993                      struct compunit_symtab *, len + 1);
7994       for (ix = 0;
7995            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7996                         compunit_symtab_iter);
7997            ++ix)
7998         cust->includes[ix] = compunit_symtab_iter;
7999       cust->includes[len] = NULL;
8000
8001       VEC_free (compunit_symtab_ptr, result_symtabs);
8002       htab_delete (all_children);
8003       htab_delete (all_type_symtabs);
8004     }
8005 }
8006
8007 /* Compute the 'includes' field for the symtabs of all the CUs we just
8008    read.  */
8009
8010 static void
8011 process_cu_includes (void)
8012 {
8013   int ix;
8014   struct dwarf2_per_cu_data *iter;
8015
8016   for (ix = 0;
8017        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8018                     ix, iter);
8019        ++ix)
8020     {
8021       if (! iter->is_debug_types)
8022         compute_compunit_symtab_includes (iter);
8023     }
8024
8025   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8026 }
8027
8028 /* Generate full symbol information for PER_CU, whose DIEs have
8029    already been loaded into memory.  */
8030
8031 static void
8032 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8033                         enum language pretend_language)
8034 {
8035   struct dwarf2_cu *cu = per_cu->cu;
8036   struct objfile *objfile = per_cu->objfile;
8037   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8038   CORE_ADDR lowpc, highpc;
8039   struct compunit_symtab *cust;
8040   struct cleanup *back_to, *delayed_list_cleanup;
8041   CORE_ADDR baseaddr;
8042   struct block *static_block;
8043   CORE_ADDR addr;
8044
8045   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8046
8047   buildsym_init ();
8048   back_to = make_cleanup (really_free_pendings, NULL);
8049   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8050
8051   cu->list_in_scope = &file_symbols;
8052
8053   cu->language = pretend_language;
8054   cu->language_defn = language_def (cu->language);
8055
8056   /* Do line number decoding in read_file_scope () */
8057   process_die (cu->dies, cu);
8058
8059   /* For now fudge the Go package.  */
8060   if (cu->language == language_go)
8061     fixup_go_packaging (cu);
8062
8063   /* Now that we have processed all the DIEs in the CU, all the types 
8064      should be complete, and it should now be safe to compute all of the
8065      physnames.  */
8066   compute_delayed_physnames (cu);
8067   do_cleanups (delayed_list_cleanup);
8068
8069   /* Some compilers don't define a DW_AT_high_pc attribute for the
8070      compilation unit.  If the DW_AT_high_pc is missing, synthesize
8071      it, by scanning the DIE's below the compilation unit.  */
8072   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
8073
8074   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8075   static_block = end_symtab_get_static_block (addr, 0, 1);
8076
8077   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8078      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8079      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
8080      addrmap to help ensure it has an accurate map of pc values belonging to
8081      this comp unit.  */
8082   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8083
8084   cust = end_symtab_from_static_block (static_block,
8085                                        SECT_OFF_TEXT (objfile), 0);
8086
8087   if (cust != NULL)
8088     {
8089       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
8090
8091       /* Set symtab language to language from DW_AT_language.  If the
8092          compilation is from a C file generated by language preprocessors, do
8093          not set the language if it was already deduced by start_subfile.  */
8094       if (!(cu->language == language_c
8095             && COMPUNIT_FILETABS (cust)->language != language_unknown))
8096         COMPUNIT_FILETABS (cust)->language = cu->language;
8097
8098       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
8099          produce DW_AT_location with location lists but it can be possibly
8100          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
8101          there were bugs in prologue debug info, fixed later in GCC-4.5
8102          by "unwind info for epilogues" patch (which is not directly related).
8103
8104          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8105          needed, it would be wrong due to missing DW_AT_producer there.
8106
8107          Still one can confuse GDB by using non-standard GCC compilation
8108          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8109          */ 
8110       if (cu->has_loclist && gcc_4_minor >= 5)
8111         cust->locations_valid = 1;
8112
8113       if (gcc_4_minor >= 5)
8114         cust->epilogue_unwind_valid = 1;
8115
8116       cust->call_site_htab = cu->call_site_htab;
8117     }
8118
8119   if (dwarf2_per_objfile->using_index)
8120     per_cu->v.quick->compunit_symtab = cust;
8121   else
8122     {
8123       struct partial_symtab *pst = per_cu->v.psymtab;
8124       pst->compunit_symtab = cust;
8125       pst->readin = 1;
8126     }
8127
8128   /* Push it for inclusion processing later.  */
8129   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8130
8131   do_cleanups (back_to);
8132 }
8133
8134 /* Generate full symbol information for type unit PER_CU, whose DIEs have
8135    already been loaded into memory.  */
8136
8137 static void
8138 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8139                         enum language pretend_language)
8140 {
8141   struct dwarf2_cu *cu = per_cu->cu;
8142   struct objfile *objfile = per_cu->objfile;
8143   struct compunit_symtab *cust;
8144   struct cleanup *back_to, *delayed_list_cleanup;
8145   struct signatured_type *sig_type;
8146
8147   gdb_assert (per_cu->is_debug_types);
8148   sig_type = (struct signatured_type *) per_cu;
8149
8150   buildsym_init ();
8151   back_to = make_cleanup (really_free_pendings, NULL);
8152   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8153
8154   cu->list_in_scope = &file_symbols;
8155
8156   cu->language = pretend_language;
8157   cu->language_defn = language_def (cu->language);
8158
8159   /* The symbol tables are set up in read_type_unit_scope.  */
8160   process_die (cu->dies, cu);
8161
8162   /* For now fudge the Go package.  */
8163   if (cu->language == language_go)
8164     fixup_go_packaging (cu);
8165
8166   /* Now that we have processed all the DIEs in the CU, all the types 
8167      should be complete, and it should now be safe to compute all of the
8168      physnames.  */
8169   compute_delayed_physnames (cu);
8170   do_cleanups (delayed_list_cleanup);
8171
8172   /* TUs share symbol tables.
8173      If this is the first TU to use this symtab, complete the construction
8174      of it with end_expandable_symtab.  Otherwise, complete the addition of
8175      this TU's symbols to the existing symtab.  */
8176   if (sig_type->type_unit_group->compunit_symtab == NULL)
8177     {
8178       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8179       sig_type->type_unit_group->compunit_symtab = cust;
8180
8181       if (cust != NULL)
8182         {
8183           /* Set symtab language to language from DW_AT_language.  If the
8184              compilation is from a C file generated by language preprocessors,
8185              do not set the language if it was already deduced by
8186              start_subfile.  */
8187           if (!(cu->language == language_c
8188                 && COMPUNIT_FILETABS (cust)->language != language_c))
8189             COMPUNIT_FILETABS (cust)->language = cu->language;
8190         }
8191     }
8192   else
8193     {
8194       augment_type_symtab ();
8195       cust = sig_type->type_unit_group->compunit_symtab;
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   do_cleanups (back_to);
8208 }
8209
8210 /* Process an imported unit DIE.  */
8211
8212 static void
8213 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8214 {
8215   struct attribute *attr;
8216
8217   /* For now we don't handle imported units in type units.  */
8218   if (cu->per_cu->is_debug_types)
8219     {
8220       error (_("Dwarf Error: DW_TAG_imported_unit is not"
8221                " supported in type units [in module %s]"),
8222              objfile_name (cu->objfile));
8223     }
8224
8225   attr = dwarf2_attr (die, DW_AT_import, cu);
8226   if (attr != NULL)
8227     {
8228       struct dwarf2_per_cu_data *per_cu;
8229       sect_offset offset;
8230       int is_dwz;
8231
8232       offset = dwarf2_get_ref_die_offset (attr);
8233       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8234       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
8235
8236       /* If necessary, add it to the queue and load its DIEs.  */
8237       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8238         load_full_comp_unit (per_cu, cu->language);
8239
8240       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8241                      per_cu);
8242     }
8243 }
8244
8245 /* Reset the in_process bit of a die.  */
8246
8247 static void
8248 reset_die_in_process (void *arg)
8249 {
8250   struct die_info *die = (struct die_info *) arg;
8251
8252   die->in_process = 0;
8253 }
8254
8255 /* Process a die and its children.  */
8256
8257 static void
8258 process_die (struct die_info *die, struct dwarf2_cu *cu)
8259 {
8260   struct cleanup *in_process;
8261
8262   /* We should only be processing those not already in process.  */
8263   gdb_assert (!die->in_process);
8264
8265   die->in_process = 1;
8266   in_process = make_cleanup (reset_die_in_process,die);
8267
8268   switch (die->tag)
8269     {
8270     case DW_TAG_padding:
8271       break;
8272     case DW_TAG_compile_unit:
8273     case DW_TAG_partial_unit:
8274       read_file_scope (die, cu);
8275       break;
8276     case DW_TAG_type_unit:
8277       read_type_unit_scope (die, cu);
8278       break;
8279     case DW_TAG_subprogram:
8280     case DW_TAG_inlined_subroutine:
8281       read_func_scope (die, cu);
8282       break;
8283     case DW_TAG_lexical_block:
8284     case DW_TAG_try_block:
8285     case DW_TAG_catch_block:
8286       read_lexical_block_scope (die, cu);
8287       break;
8288     case DW_TAG_GNU_call_site:
8289       read_call_site_scope (die, cu);
8290       break;
8291     case DW_TAG_class_type:
8292     case DW_TAG_interface_type:
8293     case DW_TAG_structure_type:
8294     case DW_TAG_union_type:
8295       process_structure_scope (die, cu);
8296       break;
8297     case DW_TAG_enumeration_type:
8298       process_enumeration_scope (die, cu);
8299       break;
8300
8301     /* These dies have a type, but processing them does not create
8302        a symbol or recurse to process the children.  Therefore we can
8303        read them on-demand through read_type_die.  */
8304     case DW_TAG_subroutine_type:
8305     case DW_TAG_set_type:
8306     case DW_TAG_array_type:
8307     case DW_TAG_pointer_type:
8308     case DW_TAG_ptr_to_member_type:
8309     case DW_TAG_reference_type:
8310     case DW_TAG_string_type:
8311       break;
8312
8313     case DW_TAG_base_type:
8314     case DW_TAG_subrange_type:
8315     case DW_TAG_typedef:
8316       /* Add a typedef symbol for the type definition, if it has a
8317          DW_AT_name.  */
8318       new_symbol (die, read_type_die (die, cu), cu);
8319       break;
8320     case DW_TAG_common_block:
8321       read_common_block (die, cu);
8322       break;
8323     case DW_TAG_common_inclusion:
8324       break;
8325     case DW_TAG_namespace:
8326       cu->processing_has_namespace_info = 1;
8327       read_namespace (die, cu);
8328       break;
8329     case DW_TAG_module:
8330       cu->processing_has_namespace_info = 1;
8331       read_module (die, cu);
8332       break;
8333     case DW_TAG_imported_declaration:
8334       cu->processing_has_namespace_info = 1;
8335       if (read_namespace_alias (die, cu))
8336         break;
8337       /* The declaration is not a global namespace alias: fall through.  */
8338     case DW_TAG_imported_module:
8339       cu->processing_has_namespace_info = 1;
8340       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8341                                  || cu->language != language_fortran))
8342         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8343                    dwarf_tag_name (die->tag));
8344       read_import_statement (die, cu);
8345       break;
8346
8347     case DW_TAG_imported_unit:
8348       process_imported_unit_die (die, cu);
8349       break;
8350
8351     default:
8352       new_symbol (die, NULL, cu);
8353       break;
8354     }
8355
8356   do_cleanups (in_process);
8357 }
8358 \f
8359 /* DWARF name computation.  */
8360
8361 /* A helper function for dwarf2_compute_name which determines whether DIE
8362    needs to have the name of the scope prepended to the name listed in the
8363    die.  */
8364
8365 static int
8366 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8367 {
8368   struct attribute *attr;
8369
8370   switch (die->tag)
8371     {
8372     case DW_TAG_namespace:
8373     case DW_TAG_typedef:
8374     case DW_TAG_class_type:
8375     case DW_TAG_interface_type:
8376     case DW_TAG_structure_type:
8377     case DW_TAG_union_type:
8378     case DW_TAG_enumeration_type:
8379     case DW_TAG_enumerator:
8380     case DW_TAG_subprogram:
8381     case DW_TAG_inlined_subroutine:
8382     case DW_TAG_member:
8383     case DW_TAG_imported_declaration:
8384       return 1;
8385
8386     case DW_TAG_variable:
8387     case DW_TAG_constant:
8388       /* We only need to prefix "globally" visible variables.  These include
8389          any variable marked with DW_AT_external or any variable that
8390          lives in a namespace.  [Variables in anonymous namespaces
8391          require prefixing, but they are not DW_AT_external.]  */
8392
8393       if (dwarf2_attr (die, DW_AT_specification, cu))
8394         {
8395           struct dwarf2_cu *spec_cu = cu;
8396
8397           return die_needs_namespace (die_specification (die, &spec_cu),
8398                                       spec_cu);
8399         }
8400
8401       attr = dwarf2_attr (die, DW_AT_external, cu);
8402       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8403           && die->parent->tag != DW_TAG_module)
8404         return 0;
8405       /* A variable in a lexical block of some kind does not need a
8406          namespace, even though in C++ such variables may be external
8407          and have a mangled name.  */
8408       if (die->parent->tag ==  DW_TAG_lexical_block
8409           || die->parent->tag ==  DW_TAG_try_block
8410           || die->parent->tag ==  DW_TAG_catch_block
8411           || die->parent->tag == DW_TAG_subprogram)
8412         return 0;
8413       return 1;
8414
8415     default:
8416       return 0;
8417     }
8418 }
8419
8420 /* Retrieve the last character from a mem_file.  */
8421
8422 static void
8423 do_ui_file_peek_last (void *object, const char *buffer, long length)
8424 {
8425   char *last_char_p = (char *) object;
8426
8427   if (length > 0)
8428     *last_char_p = buffer[length - 1];
8429 }
8430
8431 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8432    compute the physname for the object, which include a method's:
8433    - formal parameters (C++),
8434    - receiver type (Go),
8435
8436    The term "physname" is a bit confusing.
8437    For C++, for example, it is the demangled name.
8438    For Go, for example, it's the mangled name.
8439
8440    For Ada, return the DIE's linkage name rather than the fully qualified
8441    name.  PHYSNAME is ignored..
8442
8443    The result is allocated on the objfile_obstack and canonicalized.  */
8444
8445 static const char *
8446 dwarf2_compute_name (const char *name,
8447                      struct die_info *die, struct dwarf2_cu *cu,
8448                      int physname)
8449 {
8450   struct objfile *objfile = cu->objfile;
8451
8452   if (name == NULL)
8453     name = dwarf2_name (die, cu);
8454
8455   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
8456      but otherwise compute it by typename_concat inside GDB.
8457      FIXME: Actually this is not really true, or at least not always true.
8458      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
8459      Fortran names because there is no mangling standard.  So new_symbol_full
8460      will set the demangled name to the result of dwarf2_full_name, and it is
8461      the demangled name that GDB uses if it exists.  */
8462   if (cu->language == language_ada
8463       || (cu->language == language_fortran && physname))
8464     {
8465       /* For Ada unit, we prefer the linkage name over the name, as
8466          the former contains the exported name, which the user expects
8467          to be able to reference.  Ideally, we want the user to be able
8468          to reference this entity using either natural or linkage name,
8469          but we haven't started looking at this enhancement yet.  */
8470       const char *linkage_name;
8471
8472       linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8473       if (linkage_name == NULL)
8474         linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8475       if (linkage_name != NULL)
8476         return linkage_name;
8477     }
8478
8479   /* These are the only languages we know how to qualify names in.  */
8480   if (name != NULL
8481       && (cu->language == language_cplus
8482           || cu->language == language_fortran || cu->language == language_d
8483           || cu->language == language_rust))
8484     {
8485       if (die_needs_namespace (die, cu))
8486         {
8487           long length;
8488           const char *prefix;
8489           struct ui_file *buf;
8490           const char *canonical_name = NULL;
8491
8492           prefix = determine_prefix (die, cu);
8493           buf = mem_fileopen ();
8494           if (*prefix != '\0')
8495             {
8496               char *prefixed_name = typename_concat (NULL, prefix, name,
8497                                                      physname, cu);
8498
8499               fputs_unfiltered (prefixed_name, buf);
8500               xfree (prefixed_name);
8501             }
8502           else
8503             fputs_unfiltered (name, buf);
8504
8505           /* Template parameters may be specified in the DIE's DW_AT_name, or
8506              as children with DW_TAG_template_type_param or
8507              DW_TAG_value_type_param.  If the latter, add them to the name
8508              here.  If the name already has template parameters, then
8509              skip this step; some versions of GCC emit both, and
8510              it is more efficient to use the pre-computed name.
8511
8512              Something to keep in mind about this process: it is very
8513              unlikely, or in some cases downright impossible, to produce
8514              something that will match the mangled name of a function.
8515              If the definition of the function has the same debug info,
8516              we should be able to match up with it anyway.  But fallbacks
8517              using the minimal symbol, for instance to find a method
8518              implemented in a stripped copy of libstdc++, will not work.
8519              If we do not have debug info for the definition, we will have to
8520              match them up some other way.
8521
8522              When we do name matching there is a related problem with function
8523              templates; two instantiated function templates are allowed to
8524              differ only by their return types, which we do not add here.  */
8525
8526           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8527             {
8528               struct attribute *attr;
8529               struct die_info *child;
8530               int first = 1;
8531
8532               die->building_fullname = 1;
8533
8534               for (child = die->child; child != NULL; child = child->sibling)
8535                 {
8536                   struct type *type;
8537                   LONGEST value;
8538                   const gdb_byte *bytes;
8539                   struct dwarf2_locexpr_baton *baton;
8540                   struct value *v;
8541
8542                   if (child->tag != DW_TAG_template_type_param
8543                       && child->tag != DW_TAG_template_value_param)
8544                     continue;
8545
8546                   if (first)
8547                     {
8548                       fputs_unfiltered ("<", buf);
8549                       first = 0;
8550                     }
8551                   else
8552                     fputs_unfiltered (", ", buf);
8553
8554                   attr = dwarf2_attr (child, DW_AT_type, cu);
8555                   if (attr == NULL)
8556                     {
8557                       complaint (&symfile_complaints,
8558                                  _("template parameter missing DW_AT_type"));
8559                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
8560                       continue;
8561                     }
8562                   type = die_type (child, cu);
8563
8564                   if (child->tag == DW_TAG_template_type_param)
8565                     {
8566                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
8567                       continue;
8568                     }
8569
8570                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8571                   if (attr == NULL)
8572                     {
8573                       complaint (&symfile_complaints,
8574                                  _("template parameter missing "
8575                                    "DW_AT_const_value"));
8576                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
8577                       continue;
8578                     }
8579
8580                   dwarf2_const_value_attr (attr, type, name,
8581                                            &cu->comp_unit_obstack, cu,
8582                                            &value, &bytes, &baton);
8583
8584                   if (TYPE_NOSIGN (type))
8585                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8586                        changed, this can use value_print instead.  */
8587                     c_printchar (value, type, buf);
8588                   else
8589                     {
8590                       struct value_print_options opts;
8591
8592                       if (baton != NULL)
8593                         v = dwarf2_evaluate_loc_desc (type, NULL,
8594                                                       baton->data,
8595                                                       baton->size,
8596                                                       baton->per_cu);
8597                       else if (bytes != NULL)
8598                         {
8599                           v = allocate_value (type);
8600                           memcpy (value_contents_writeable (v), bytes,
8601                                   TYPE_LENGTH (type));
8602                         }
8603                       else
8604                         v = value_from_longest (type, value);
8605
8606                       /* Specify decimal so that we do not depend on
8607                          the radix.  */
8608                       get_formatted_print_options (&opts, 'd');
8609                       opts.raw = 1;
8610                       value_print (v, buf, &opts);
8611                       release_value (v);
8612                       value_free (v);
8613                     }
8614                 }
8615
8616               die->building_fullname = 0;
8617
8618               if (!first)
8619                 {
8620                   /* Close the argument list, with a space if necessary
8621                      (nested templates).  */
8622                   char last_char = '\0';
8623                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8624                   if (last_char == '>')
8625                     fputs_unfiltered (" >", buf);
8626                   else
8627                     fputs_unfiltered (">", buf);
8628                 }
8629             }
8630
8631           /* For C++ methods, append formal parameter type
8632              information, if PHYSNAME.  */
8633
8634           if (physname && die->tag == DW_TAG_subprogram
8635               && cu->language == language_cplus)
8636             {
8637               struct type *type = read_type_die (die, cu);
8638
8639               c_type_print_args (type, buf, 1, cu->language,
8640                                  &type_print_raw_options);
8641
8642               if (cu->language == language_cplus)
8643                 {
8644                   /* Assume that an artificial first parameter is
8645                      "this", but do not crash if it is not.  RealView
8646                      marks unnamed (and thus unused) parameters as
8647                      artificial; there is no way to differentiate
8648                      the two cases.  */
8649                   if (TYPE_NFIELDS (type) > 0
8650                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8651                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8652                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8653                                                                         0))))
8654                     fputs_unfiltered (" const", buf);
8655                 }
8656             }
8657
8658           std::string intermediate_name = ui_file_as_string (buf);
8659           ui_file_delete (buf);
8660
8661           if (cu->language == language_cplus)
8662             canonical_name
8663               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
8664                                           &objfile->per_bfd->storage_obstack);
8665
8666           /* If we only computed INTERMEDIATE_NAME, or if
8667              INTERMEDIATE_NAME is already canonical, then we need to
8668              copy it to the appropriate obstack.  */
8669           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
8670             name = ((const char *)
8671                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
8672                                    intermediate_name.c_str (),
8673                                    intermediate_name.length ()));
8674           else
8675             name = canonical_name;
8676         }
8677     }
8678
8679   return name;
8680 }
8681
8682 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8683    If scope qualifiers are appropriate they will be added.  The result
8684    will be allocated on the storage_obstack, or NULL if the DIE does
8685    not have a name.  NAME may either be from a previous call to
8686    dwarf2_name or NULL.
8687
8688    The output string will be canonicalized (if C++).  */
8689
8690 static const char *
8691 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8692 {
8693   return dwarf2_compute_name (name, die, cu, 0);
8694 }
8695
8696 /* Construct a physname for the given DIE in CU.  NAME may either be
8697    from a previous call to dwarf2_name or NULL.  The result will be
8698    allocated on the objfile_objstack or NULL if the DIE does not have a
8699    name.
8700
8701    The output string will be canonicalized (if C++).  */
8702
8703 static const char *
8704 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8705 {
8706   struct objfile *objfile = cu->objfile;
8707   const char *retval, *mangled = NULL, *canon = NULL;
8708   struct cleanup *back_to;
8709   int need_copy = 1;
8710
8711   /* In this case dwarf2_compute_name is just a shortcut not building anything
8712      on its own.  */
8713   if (!die_needs_namespace (die, cu))
8714     return dwarf2_compute_name (name, die, cu, 1);
8715
8716   back_to = make_cleanup (null_cleanup, NULL);
8717
8718   mangled = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8719   if (mangled == NULL)
8720     mangled = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8721
8722   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
8723      See https://github.com/rust-lang/rust/issues/32925.  */
8724   if (cu->language == language_rust && mangled != NULL
8725       && strchr (mangled, '{') != NULL)
8726     mangled = NULL;
8727
8728   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8729      has computed.  */
8730   if (mangled != NULL)
8731     {
8732       char *demangled;
8733
8734       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8735          type.  It is easier for GDB users to search for such functions as
8736          `name(params)' than `long name(params)'.  In such case the minimal
8737          symbol names do not match the full symbol names but for template
8738          functions there is never a need to look up their definition from their
8739          declaration so the only disadvantage remains the minimal symbol
8740          variant `long name(params)' does not have the proper inferior type.
8741          */
8742
8743       if (cu->language == language_go)
8744         {
8745           /* This is a lie, but we already lie to the caller new_symbol_full.
8746              new_symbol_full assumes we return the mangled name.
8747              This just undoes that lie until things are cleaned up.  */
8748           demangled = NULL;
8749         }
8750       else
8751         {
8752           demangled = gdb_demangle (mangled,
8753                                     (DMGL_PARAMS | DMGL_ANSI | DMGL_RET_DROP));
8754         }
8755       if (demangled)
8756         {
8757           make_cleanup (xfree, demangled);
8758           canon = demangled;
8759         }
8760       else
8761         {
8762           canon = mangled;
8763           need_copy = 0;
8764         }
8765     }
8766
8767   if (canon == NULL || check_physname)
8768     {
8769       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8770
8771       if (canon != NULL && strcmp (physname, canon) != 0)
8772         {
8773           /* It may not mean a bug in GDB.  The compiler could also
8774              compute DW_AT_linkage_name incorrectly.  But in such case
8775              GDB would need to be bug-to-bug compatible.  */
8776
8777           complaint (&symfile_complaints,
8778                      _("Computed physname <%s> does not match demangled <%s> "
8779                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8780                      physname, canon, mangled, die->offset.sect_off,
8781                      objfile_name (objfile));
8782
8783           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8784              is available here - over computed PHYSNAME.  It is safer
8785              against both buggy GDB and buggy compilers.  */
8786
8787           retval = canon;
8788         }
8789       else
8790         {
8791           retval = physname;
8792           need_copy = 0;
8793         }
8794     }
8795   else
8796     retval = canon;
8797
8798   if (need_copy)
8799     retval = ((const char *)
8800               obstack_copy0 (&objfile->per_bfd->storage_obstack,
8801                              retval, strlen (retval)));
8802
8803   do_cleanups (back_to);
8804   return retval;
8805 }
8806
8807 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8808    a new symbol for it.
8809
8810    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8811
8812 static int
8813 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8814 {
8815   struct attribute *attr;
8816
8817   /* If the die does not have a name, this is not a namespace
8818      alias.  */
8819   attr = dwarf2_attr (die, DW_AT_name, cu);
8820   if (attr != NULL)
8821     {
8822       int num;
8823       struct die_info *d = die;
8824       struct dwarf2_cu *imported_cu = cu;
8825
8826       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8827          keep inspecting DIEs until we hit the underlying import.  */
8828 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8829       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8830         {
8831           attr = dwarf2_attr (d, DW_AT_import, cu);
8832           if (attr == NULL)
8833             break;
8834
8835           d = follow_die_ref (d, attr, &imported_cu);
8836           if (d->tag != DW_TAG_imported_declaration)
8837             break;
8838         }
8839
8840       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8841         {
8842           complaint (&symfile_complaints,
8843                      _("DIE at 0x%x has too many recursively imported "
8844                        "declarations"), d->offset.sect_off);
8845           return 0;
8846         }
8847
8848       if (attr != NULL)
8849         {
8850           struct type *type;
8851           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8852
8853           type = get_die_type_at_offset (offset, cu->per_cu);
8854           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8855             {
8856               /* This declaration is a global namespace alias.  Add
8857                  a symbol for it whose type is the aliased namespace.  */
8858               new_symbol (die, type, cu);
8859               return 1;
8860             }
8861         }
8862     }
8863
8864   return 0;
8865 }
8866
8867 /* Return the using directives repository (global or local?) to use in the
8868    current context for LANGUAGE.
8869
8870    For Ada, imported declarations can materialize renamings, which *may* be
8871    global.  However it is impossible (for now?) in DWARF to distinguish
8872    "external" imported declarations and "static" ones.  As all imported
8873    declarations seem to be static in all other languages, make them all CU-wide
8874    global only in Ada.  */
8875
8876 static struct using_direct **
8877 using_directives (enum language language)
8878 {
8879   if (language == language_ada && context_stack_depth == 0)
8880     return &global_using_directives;
8881   else
8882     return &local_using_directives;
8883 }
8884
8885 /* Read the import statement specified by the given die and record it.  */
8886
8887 static void
8888 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8889 {
8890   struct objfile *objfile = cu->objfile;
8891   struct attribute *import_attr;
8892   struct die_info *imported_die, *child_die;
8893   struct dwarf2_cu *imported_cu;
8894   const char *imported_name;
8895   const char *imported_name_prefix;
8896   const char *canonical_name;
8897   const char *import_alias;
8898   const char *imported_declaration = NULL;
8899   const char *import_prefix;
8900   VEC (const_char_ptr) *excludes = NULL;
8901   struct cleanup *cleanups;
8902
8903   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8904   if (import_attr == NULL)
8905     {
8906       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8907                  dwarf_tag_name (die->tag));
8908       return;
8909     }
8910
8911   imported_cu = cu;
8912   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8913   imported_name = dwarf2_name (imported_die, imported_cu);
8914   if (imported_name == NULL)
8915     {
8916       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8917
8918         The import in the following code:
8919         namespace A
8920           {
8921             typedef int B;
8922           }
8923
8924         int main ()
8925           {
8926             using A::B;
8927             B b;
8928             return b;
8929           }
8930
8931         ...
8932          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8933             <52>   DW_AT_decl_file   : 1
8934             <53>   DW_AT_decl_line   : 6
8935             <54>   DW_AT_import      : <0x75>
8936          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8937             <59>   DW_AT_name        : B
8938             <5b>   DW_AT_decl_file   : 1
8939             <5c>   DW_AT_decl_line   : 2
8940             <5d>   DW_AT_type        : <0x6e>
8941         ...
8942          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8943             <76>   DW_AT_byte_size   : 4
8944             <77>   DW_AT_encoding    : 5        (signed)
8945
8946         imports the wrong die ( 0x75 instead of 0x58 ).
8947         This case will be ignored until the gcc bug is fixed.  */
8948       return;
8949     }
8950
8951   /* Figure out the local name after import.  */
8952   import_alias = dwarf2_name (die, cu);
8953
8954   /* Figure out where the statement is being imported to.  */
8955   import_prefix = determine_prefix (die, cu);
8956
8957   /* Figure out what the scope of the imported die is and prepend it
8958      to the name of the imported die.  */
8959   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8960
8961   if (imported_die->tag != DW_TAG_namespace
8962       && imported_die->tag != DW_TAG_module)
8963     {
8964       imported_declaration = imported_name;
8965       canonical_name = imported_name_prefix;
8966     }
8967   else if (strlen (imported_name_prefix) > 0)
8968     canonical_name = obconcat (&objfile->objfile_obstack,
8969                                imported_name_prefix,
8970                                (cu->language == language_d ? "." : "::"),
8971                                imported_name, (char *) NULL);
8972   else
8973     canonical_name = imported_name;
8974
8975   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8976
8977   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8978     for (child_die = die->child; child_die && child_die->tag;
8979          child_die = sibling_die (child_die))
8980       {
8981         /* DWARF-4: A Fortran use statement with a “rename list” may be
8982            represented by an imported module entry with an import attribute
8983            referring to the module and owned entries corresponding to those
8984            entities that are renamed as part of being imported.  */
8985
8986         if (child_die->tag != DW_TAG_imported_declaration)
8987           {
8988             complaint (&symfile_complaints,
8989                        _("child DW_TAG_imported_declaration expected "
8990                          "- DIE at 0x%x [in module %s]"),
8991                        child_die->offset.sect_off, objfile_name (objfile));
8992             continue;
8993           }
8994
8995         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8996         if (import_attr == NULL)
8997           {
8998             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8999                        dwarf_tag_name (child_die->tag));
9000             continue;
9001           }
9002
9003         imported_cu = cu;
9004         imported_die = follow_die_ref_or_sig (child_die, import_attr,
9005                                               &imported_cu);
9006         imported_name = dwarf2_name (imported_die, imported_cu);
9007         if (imported_name == NULL)
9008           {
9009             complaint (&symfile_complaints,
9010                        _("child DW_TAG_imported_declaration has unknown "
9011                          "imported name - DIE at 0x%x [in module %s]"),
9012                        child_die->offset.sect_off, objfile_name (objfile));
9013             continue;
9014           }
9015
9016         VEC_safe_push (const_char_ptr, excludes, imported_name);
9017
9018         process_die (child_die, cu);
9019       }
9020
9021   add_using_directive (using_directives (cu->language),
9022                        import_prefix,
9023                        canonical_name,
9024                        import_alias,
9025                        imported_declaration,
9026                        excludes,
9027                        0,
9028                        &objfile->objfile_obstack);
9029
9030   do_cleanups (cleanups);
9031 }
9032
9033 /* Cleanup function for handle_DW_AT_stmt_list.  */
9034
9035 static void
9036 free_cu_line_header (void *arg)
9037 {
9038   struct dwarf2_cu *cu = (struct dwarf2_cu *) arg;
9039
9040   free_line_header (cu->line_header);
9041   cu->line_header = NULL;
9042 }
9043
9044 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9045    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9046    this, it was first present in GCC release 4.3.0.  */
9047
9048 static int
9049 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9050 {
9051   if (!cu->checked_producer)
9052     check_producer (cu);
9053
9054   return cu->producer_is_gcc_lt_4_3;
9055 }
9056
9057 static void
9058 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
9059                          const char **name, const char **comp_dir)
9060 {
9061   /* Find the filename.  Do not use dwarf2_name here, since the filename
9062      is not a source language identifier.  */
9063   *name = dwarf2_string_attr (die, DW_AT_name, cu);
9064   *comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9065
9066   if (*comp_dir == NULL
9067       && producer_is_gcc_lt_4_3 (cu) && *name != NULL
9068       && IS_ABSOLUTE_PATH (*name))
9069     {
9070       char *d = ldirname (*name);
9071
9072       *comp_dir = d;
9073       if (d != NULL)
9074         make_cleanup (xfree, d);
9075     }
9076   if (*comp_dir != NULL)
9077     {
9078       /* Irix 6.2 native cc prepends <machine>.: to the compilation
9079          directory, get rid of it.  */
9080       const char *cp = strchr (*comp_dir, ':');
9081
9082       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9083         *comp_dir = cp + 1;
9084     }
9085
9086   if (*name == NULL)
9087     *name = "<unknown>";
9088 }
9089
9090 /* Handle DW_AT_stmt_list for a compilation unit.
9091    DIE is the DW_TAG_compile_unit die for CU.
9092    COMP_DIR is the compilation directory.  LOWPC is passed to
9093    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
9094
9095 static void
9096 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
9097                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
9098 {
9099   struct objfile *objfile = dwarf2_per_objfile->objfile;
9100   struct attribute *attr;
9101   unsigned int line_offset;
9102   struct line_header line_header_local;
9103   hashval_t line_header_local_hash;
9104   unsigned u;
9105   void **slot;
9106   int decode_mapping;
9107
9108   gdb_assert (! cu->per_cu->is_debug_types);
9109
9110   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9111   if (attr == NULL)
9112     return;
9113
9114   line_offset = DW_UNSND (attr);
9115
9116   /* The line header hash table is only created if needed (it exists to
9117      prevent redundant reading of the line table for partial_units).
9118      If we're given a partial_unit, we'll need it.  If we're given a
9119      compile_unit, then use the line header hash table if it's already
9120      created, but don't create one just yet.  */
9121
9122   if (dwarf2_per_objfile->line_header_hash == NULL
9123       && die->tag == DW_TAG_partial_unit)
9124     {
9125       dwarf2_per_objfile->line_header_hash
9126         = htab_create_alloc_ex (127, line_header_hash_voidp,
9127                                 line_header_eq_voidp,
9128                                 free_line_header_voidp,
9129                                 &objfile->objfile_obstack,
9130                                 hashtab_obstack_allocate,
9131                                 dummy_obstack_deallocate);
9132     }
9133
9134   line_header_local.offset.sect_off = line_offset;
9135   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9136   line_header_local_hash = line_header_hash (&line_header_local);
9137   if (dwarf2_per_objfile->line_header_hash != NULL)
9138     {
9139       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9140                                        &line_header_local,
9141                                        line_header_local_hash, NO_INSERT);
9142
9143       /* For DW_TAG_compile_unit we need info like symtab::linetable which
9144          is not present in *SLOT (since if there is something in *SLOT then
9145          it will be for a partial_unit).  */
9146       if (die->tag == DW_TAG_partial_unit && slot != NULL)
9147         {
9148           gdb_assert (*slot != NULL);
9149           cu->line_header = (struct line_header *) *slot;
9150           return;
9151         }
9152     }
9153
9154   /* dwarf_decode_line_header does not yet provide sufficient information.
9155      We always have to call also dwarf_decode_lines for it.  */
9156   cu->line_header = dwarf_decode_line_header (line_offset, cu);
9157   if (cu->line_header == NULL)
9158     return;
9159
9160   if (dwarf2_per_objfile->line_header_hash == NULL)
9161     slot = NULL;
9162   else
9163     {
9164       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9165                                        &line_header_local,
9166                                        line_header_local_hash, INSERT);
9167       gdb_assert (slot != NULL);
9168     }
9169   if (slot != NULL && *slot == NULL)
9170     {
9171       /* This newly decoded line number information unit will be owned
9172          by line_header_hash hash table.  */
9173       *slot = cu->line_header;
9174     }
9175   else
9176     {
9177       /* We cannot free any current entry in (*slot) as that struct line_header
9178          may be already used by multiple CUs.  Create only temporary decoded
9179          line_header for this CU - it may happen at most once for each line
9180          number information unit.  And if we're not using line_header_hash
9181          then this is what we want as well.  */
9182       gdb_assert (die->tag != DW_TAG_partial_unit);
9183       make_cleanup (free_cu_line_header, cu);
9184     }
9185   decode_mapping = (die->tag != DW_TAG_partial_unit);
9186   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9187                       decode_mapping);
9188 }
9189
9190 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
9191
9192 static void
9193 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
9194 {
9195   struct objfile *objfile = dwarf2_per_objfile->objfile;
9196   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9197   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
9198   CORE_ADDR lowpc = ((CORE_ADDR) -1);
9199   CORE_ADDR highpc = ((CORE_ADDR) 0);
9200   struct attribute *attr;
9201   const char *name = NULL;
9202   const char *comp_dir = NULL;
9203   struct die_info *child_die;
9204   CORE_ADDR baseaddr;
9205
9206   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9207
9208   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
9209
9210   /* If we didn't find a lowpc, set it to highpc to avoid complaints
9211      from finish_block.  */
9212   if (lowpc == ((CORE_ADDR) -1))
9213     lowpc = highpc;
9214   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
9215
9216   find_file_and_directory (die, cu, &name, &comp_dir);
9217
9218   prepare_one_comp_unit (cu, die, cu->language);
9219
9220   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9221      standardised yet.  As a workaround for the language detection we fall
9222      back to the DW_AT_producer string.  */
9223   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9224     cu->language = language_opencl;
9225
9226   /* Similar hack for Go.  */
9227   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9228     set_cu_language (DW_LANG_Go, cu);
9229
9230   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
9231
9232   /* Decode line number information if present.  We do this before
9233      processing child DIEs, so that the line header table is available
9234      for DW_AT_decl_file.  */
9235   handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
9236
9237   /* Process all dies in compilation unit.  */
9238   if (die->child != NULL)
9239     {
9240       child_die = die->child;
9241       while (child_die && child_die->tag)
9242         {
9243           process_die (child_die, cu);
9244           child_die = sibling_die (child_die);
9245         }
9246     }
9247
9248   /* Decode macro information, if present.  Dwarf 2 macro information
9249      refers to information in the line number info statement program
9250      header, so we can only read it if we've read the header
9251      successfully.  */
9252   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9253   if (attr && cu->line_header)
9254     {
9255       if (dwarf2_attr (die, DW_AT_macro_info, cu))
9256         complaint (&symfile_complaints,
9257                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9258
9259       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
9260     }
9261   else
9262     {
9263       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9264       if (attr && cu->line_header)
9265         {
9266           unsigned int macro_offset = DW_UNSND (attr);
9267
9268           dwarf_decode_macros (cu, macro_offset, 0);
9269         }
9270     }
9271
9272   do_cleanups (back_to);
9273 }
9274
9275 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9276    Create the set of symtabs used by this TU, or if this TU is sharing
9277    symtabs with another TU and the symtabs have already been created
9278    then restore those symtabs in the line header.
9279    We don't need the pc/line-number mapping for type units.  */
9280
9281 static void
9282 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
9283 {
9284   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9285   struct type_unit_group *tu_group;
9286   int first_time;
9287   struct line_header *lh;
9288   struct attribute *attr;
9289   unsigned int i, line_offset;
9290   struct signatured_type *sig_type;
9291
9292   gdb_assert (per_cu->is_debug_types);
9293   sig_type = (struct signatured_type *) per_cu;
9294
9295   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9296
9297   /* If we're using .gdb_index (includes -readnow) then
9298      per_cu->type_unit_group may not have been set up yet.  */
9299   if (sig_type->type_unit_group == NULL)
9300     sig_type->type_unit_group = get_type_unit_group (cu, attr);
9301   tu_group = sig_type->type_unit_group;
9302
9303   /* If we've already processed this stmt_list there's no real need to
9304      do it again, we could fake it and just recreate the part we need
9305      (file name,index -> symtab mapping).  If data shows this optimization
9306      is useful we can do it then.  */
9307   first_time = tu_group->compunit_symtab == NULL;
9308
9309   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9310      debug info.  */
9311   lh = NULL;
9312   if (attr != NULL)
9313     {
9314       line_offset = DW_UNSND (attr);
9315       lh = dwarf_decode_line_header (line_offset, cu);
9316     }
9317   if (lh == NULL)
9318     {
9319       if (first_time)
9320         dwarf2_start_symtab (cu, "", NULL, 0);
9321       else
9322         {
9323           gdb_assert (tu_group->symtabs == NULL);
9324           restart_symtab (tu_group->compunit_symtab, "", 0);
9325         }
9326       return;
9327     }
9328
9329   cu->line_header = lh;
9330   make_cleanup (free_cu_line_header, cu);
9331
9332   if (first_time)
9333     {
9334       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
9335
9336       /* Note: We don't assign tu_group->compunit_symtab yet because we're
9337          still initializing it, and our caller (a few levels up)
9338          process_full_type_unit still needs to know if this is the first
9339          time.  */
9340
9341       tu_group->num_symtabs = lh->num_file_names;
9342       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
9343
9344       for (i = 0; i < lh->num_file_names; ++i)
9345         {
9346           const char *dir = NULL;
9347           struct file_entry *fe = &lh->file_names[i];
9348
9349           if (fe->dir_index && lh->include_dirs != NULL)
9350             dir = lh->include_dirs[fe->dir_index - 1];
9351           dwarf2_start_subfile (fe->name, dir);
9352
9353           if (current_subfile->symtab == NULL)
9354             {
9355               /* NOTE: start_subfile will recognize when it's been passed
9356                  a file it has already seen.  So we can't assume there's a
9357                  simple mapping from lh->file_names to subfiles, plus
9358                  lh->file_names may contain dups.  */
9359               current_subfile->symtab
9360                 = allocate_symtab (cust, current_subfile->name);
9361             }
9362
9363           fe->symtab = current_subfile->symtab;
9364           tu_group->symtabs[i] = fe->symtab;
9365         }
9366     }
9367   else
9368     {
9369       restart_symtab (tu_group->compunit_symtab, "", 0);
9370
9371       for (i = 0; i < lh->num_file_names; ++i)
9372         {
9373           struct file_entry *fe = &lh->file_names[i];
9374
9375           fe->symtab = tu_group->symtabs[i];
9376         }
9377     }
9378
9379   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9380      so they don't have a "real" (so to speak) symtab anyway.
9381      There is later code that will assign the main symtab to all symbols
9382      that don't have one.  We need to handle the case of a symbol with a
9383      missing symtab (DW_AT_decl_file) anyway.  */
9384 }
9385
9386 /* Process DW_TAG_type_unit.
9387    For TUs we want to skip the first top level sibling if it's not the
9388    actual type being defined by this TU.  In this case the first top
9389    level sibling is there to provide context only.  */
9390
9391 static void
9392 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9393 {
9394   struct die_info *child_die;
9395
9396   prepare_one_comp_unit (cu, die, language_minimal);
9397
9398   /* Initialize (or reinitialize) the machinery for building symtabs.
9399      We do this before processing child DIEs, so that the line header table
9400      is available for DW_AT_decl_file.  */
9401   setup_type_unit_groups (die, cu);
9402
9403   if (die->child != NULL)
9404     {
9405       child_die = die->child;
9406       while (child_die && child_die->tag)
9407         {
9408           process_die (child_die, cu);
9409           child_die = sibling_die (child_die);
9410         }
9411     }
9412 }
9413 \f
9414 /* DWO/DWP files.
9415
9416    http://gcc.gnu.org/wiki/DebugFission
9417    http://gcc.gnu.org/wiki/DebugFissionDWP
9418
9419    To simplify handling of both DWO files ("object" files with the DWARF info)
9420    and DWP files (a file with the DWOs packaged up into one file), we treat
9421    DWP files as having a collection of virtual DWO files.  */
9422
9423 static hashval_t
9424 hash_dwo_file (const void *item)
9425 {
9426   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
9427   hashval_t hash;
9428
9429   hash = htab_hash_string (dwo_file->dwo_name);
9430   if (dwo_file->comp_dir != NULL)
9431     hash += htab_hash_string (dwo_file->comp_dir);
9432   return hash;
9433 }
9434
9435 static int
9436 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9437 {
9438   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
9439   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
9440
9441   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9442     return 0;
9443   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9444     return lhs->comp_dir == rhs->comp_dir;
9445   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9446 }
9447
9448 /* Allocate a hash table for DWO files.  */
9449
9450 static htab_t
9451 allocate_dwo_file_hash_table (void)
9452 {
9453   struct objfile *objfile = dwarf2_per_objfile->objfile;
9454
9455   return htab_create_alloc_ex (41,
9456                                hash_dwo_file,
9457                                eq_dwo_file,
9458                                NULL,
9459                                &objfile->objfile_obstack,
9460                                hashtab_obstack_allocate,
9461                                dummy_obstack_deallocate);
9462 }
9463
9464 /* Lookup DWO file DWO_NAME.  */
9465
9466 static void **
9467 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9468 {
9469   struct dwo_file find_entry;
9470   void **slot;
9471
9472   if (dwarf2_per_objfile->dwo_files == NULL)
9473     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9474
9475   memset (&find_entry, 0, sizeof (find_entry));
9476   find_entry.dwo_name = dwo_name;
9477   find_entry.comp_dir = comp_dir;
9478   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9479
9480   return slot;
9481 }
9482
9483 static hashval_t
9484 hash_dwo_unit (const void *item)
9485 {
9486   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
9487
9488   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9489   return dwo_unit->signature;
9490 }
9491
9492 static int
9493 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9494 {
9495   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
9496   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
9497
9498   /* The signature is assumed to be unique within the DWO file.
9499      So while object file CU dwo_id's always have the value zero,
9500      that's OK, assuming each object file DWO file has only one CU,
9501      and that's the rule for now.  */
9502   return lhs->signature == rhs->signature;
9503 }
9504
9505 /* Allocate a hash table for DWO CUs,TUs.
9506    There is one of these tables for each of CUs,TUs for each DWO file.  */
9507
9508 static htab_t
9509 allocate_dwo_unit_table (struct objfile *objfile)
9510 {
9511   /* Start out with a pretty small number.
9512      Generally DWO files contain only one CU and maybe some TUs.  */
9513   return htab_create_alloc_ex (3,
9514                                hash_dwo_unit,
9515                                eq_dwo_unit,
9516                                NULL,
9517                                &objfile->objfile_obstack,
9518                                hashtab_obstack_allocate,
9519                                dummy_obstack_deallocate);
9520 }
9521
9522 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9523
9524 struct create_dwo_cu_data
9525 {
9526   struct dwo_file *dwo_file;
9527   struct dwo_unit dwo_unit;
9528 };
9529
9530 /* die_reader_func for create_dwo_cu.  */
9531
9532 static void
9533 create_dwo_cu_reader (const struct die_reader_specs *reader,
9534                       const gdb_byte *info_ptr,
9535                       struct die_info *comp_unit_die,
9536                       int has_children,
9537                       void *datap)
9538 {
9539   struct dwarf2_cu *cu = reader->cu;
9540   sect_offset offset = cu->per_cu->offset;
9541   struct dwarf2_section_info *section = cu->per_cu->section;
9542   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
9543   struct dwo_file *dwo_file = data->dwo_file;
9544   struct dwo_unit *dwo_unit = &data->dwo_unit;
9545   struct attribute *attr;
9546
9547   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9548   if (attr == NULL)
9549     {
9550       complaint (&symfile_complaints,
9551                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9552                    " its dwo_id [in module %s]"),
9553                  offset.sect_off, dwo_file->dwo_name);
9554       return;
9555     }
9556
9557   dwo_unit->dwo_file = dwo_file;
9558   dwo_unit->signature = DW_UNSND (attr);
9559   dwo_unit->section = section;
9560   dwo_unit->offset = offset;
9561   dwo_unit->length = cu->per_cu->length;
9562
9563   if (dwarf_read_debug)
9564     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9565                         offset.sect_off, hex_string (dwo_unit->signature));
9566 }
9567
9568 /* Create the dwo_unit for the lone CU in DWO_FILE.
9569    Note: This function processes DWO files only, not DWP files.  */
9570
9571 static struct dwo_unit *
9572 create_dwo_cu (struct dwo_file *dwo_file)
9573 {
9574   struct objfile *objfile = dwarf2_per_objfile->objfile;
9575   struct dwarf2_section_info *section = &dwo_file->sections.info;
9576   const gdb_byte *info_ptr, *end_ptr;
9577   struct create_dwo_cu_data create_dwo_cu_data;
9578   struct dwo_unit *dwo_unit;
9579
9580   dwarf2_read_section (objfile, section);
9581   info_ptr = section->buffer;
9582
9583   if (info_ptr == NULL)
9584     return NULL;
9585
9586   if (dwarf_read_debug)
9587     {
9588       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9589                           get_section_name (section),
9590                           get_section_file_name (section));
9591     }
9592
9593   create_dwo_cu_data.dwo_file = dwo_file;
9594   dwo_unit = NULL;
9595
9596   end_ptr = info_ptr + section->size;
9597   while (info_ptr < end_ptr)
9598     {
9599       struct dwarf2_per_cu_data per_cu;
9600
9601       memset (&create_dwo_cu_data.dwo_unit, 0,
9602               sizeof (create_dwo_cu_data.dwo_unit));
9603       memset (&per_cu, 0, sizeof (per_cu));
9604       per_cu.objfile = objfile;
9605       per_cu.is_debug_types = 0;
9606       per_cu.offset.sect_off = info_ptr - section->buffer;
9607       per_cu.section = section;
9608
9609       init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
9610                                          create_dwo_cu_reader,
9611                                          &create_dwo_cu_data);
9612
9613       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9614         {
9615           /* If we've already found one, complain.  We only support one
9616              because having more than one requires hacking the dwo_name of
9617              each to match, which is highly unlikely to happen.  */
9618           if (dwo_unit != NULL)
9619             {
9620               complaint (&symfile_complaints,
9621                          _("Multiple CUs in DWO file %s [in module %s]"),
9622                          dwo_file->dwo_name, objfile_name (objfile));
9623               break;
9624             }
9625
9626           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9627           *dwo_unit = create_dwo_cu_data.dwo_unit;
9628         }
9629
9630       info_ptr += per_cu.length;
9631     }
9632
9633   return dwo_unit;
9634 }
9635
9636 /* DWP file .debug_{cu,tu}_index section format:
9637    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9638
9639    DWP Version 1:
9640
9641    Both index sections have the same format, and serve to map a 64-bit
9642    signature to a set of section numbers.  Each section begins with a header,
9643    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9644    indexes, and a pool of 32-bit section numbers.  The index sections will be
9645    aligned at 8-byte boundaries in the file.
9646
9647    The index section header consists of:
9648
9649     V, 32 bit version number
9650     -, 32 bits unused
9651     N, 32 bit number of compilation units or type units in the index
9652     M, 32 bit number of slots in the hash table
9653
9654    Numbers are recorded using the byte order of the application binary.
9655
9656    The hash table begins at offset 16 in the section, and consists of an array
9657    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9658    order of the application binary).  Unused slots in the hash table are 0.
9659    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9660
9661    The parallel table begins immediately after the hash table
9662    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9663    array of 32-bit indexes (using the byte order of the application binary),
9664    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9665    table contains a 32-bit index into the pool of section numbers.  For unused
9666    hash table slots, the corresponding entry in the parallel table will be 0.
9667
9668    The pool of section numbers begins immediately following the hash table
9669    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9670    section numbers consists of an array of 32-bit words (using the byte order
9671    of the application binary).  Each item in the array is indexed starting
9672    from 0.  The hash table entry provides the index of the first section
9673    number in the set.  Additional section numbers in the set follow, and the
9674    set is terminated by a 0 entry (section number 0 is not used in ELF).
9675
9676    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9677    section must be the first entry in the set, and the .debug_abbrev.dwo must
9678    be the second entry. Other members of the set may follow in any order.
9679
9680    ---
9681
9682    DWP Version 2:
9683
9684    DWP Version 2 combines all the .debug_info, etc. sections into one,
9685    and the entries in the index tables are now offsets into these sections.
9686    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9687    section.
9688
9689    Index Section Contents:
9690     Header
9691     Hash Table of Signatures   dwp_hash_table.hash_table
9692     Parallel Table of Indices  dwp_hash_table.unit_table
9693     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9694     Table of Section Sizes     dwp_hash_table.v2.sizes
9695
9696    The index section header consists of:
9697
9698     V, 32 bit version number
9699     L, 32 bit number of columns in the table of section offsets
9700     N, 32 bit number of compilation units or type units in the index
9701     M, 32 bit number of slots in the hash table
9702
9703    Numbers are recorded using the byte order of the application binary.
9704
9705    The hash table has the same format as version 1.
9706    The parallel table of indices has the same format as version 1,
9707    except that the entries are origin-1 indices into the table of sections
9708    offsets and the table of section sizes.
9709
9710    The table of offsets begins immediately following the parallel table
9711    (at offset 16 + 12 * M from the beginning of the section).  The table is
9712    a two-dimensional array of 32-bit words (using the byte order of the
9713    application binary), with L columns and N+1 rows, in row-major order.
9714    Each row in the array is indexed starting from 0.  The first row provides
9715    a key to the remaining rows: each column in this row provides an identifier
9716    for a debug section, and the offsets in the same column of subsequent rows
9717    refer to that section.  The section identifiers are:
9718
9719     DW_SECT_INFO         1  .debug_info.dwo
9720     DW_SECT_TYPES        2  .debug_types.dwo
9721     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9722     DW_SECT_LINE         4  .debug_line.dwo
9723     DW_SECT_LOC          5  .debug_loc.dwo
9724     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9725     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9726     DW_SECT_MACRO        8  .debug_macro.dwo
9727
9728    The offsets provided by the CU and TU index sections are the base offsets
9729    for the contributions made by each CU or TU to the corresponding section
9730    in the package file.  Each CU and TU header contains an abbrev_offset
9731    field, used to find the abbreviations table for that CU or TU within the
9732    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9733    be interpreted as relative to the base offset given in the index section.
9734    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9735    should be interpreted as relative to the base offset for .debug_line.dwo,
9736    and offsets into other debug sections obtained from DWARF attributes should
9737    also be interpreted as relative to the corresponding base offset.
9738
9739    The table of sizes begins immediately following the table of offsets.
9740    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9741    with L columns and N rows, in row-major order.  Each row in the array is
9742    indexed starting from 1 (row 0 is shared by the two tables).
9743
9744    ---
9745
9746    Hash table lookup is handled the same in version 1 and 2:
9747
9748    We assume that N and M will not exceed 2^32 - 1.
9749    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9750
9751    Given a 64-bit compilation unit signature or a type signature S, an entry
9752    in the hash table is located as follows:
9753
9754    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9755       the low-order k bits all set to 1.
9756
9757    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9758
9759    3) If the hash table entry at index H matches the signature, use that
9760       entry.  If the hash table entry at index H is unused (all zeroes),
9761       terminate the search: the signature is not present in the table.
9762
9763    4) Let H = (H + H') modulo M. Repeat at Step 3.
9764
9765    Because M > N and H' and M are relatively prime, the search is guaranteed
9766    to stop at an unused slot or find the match.  */
9767
9768 /* Create a hash table to map DWO IDs to their CU/TU entry in
9769    .debug_{info,types}.dwo in DWP_FILE.
9770    Returns NULL if there isn't one.
9771    Note: This function processes DWP files only, not DWO files.  */
9772
9773 static struct dwp_hash_table *
9774 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9775 {
9776   struct objfile *objfile = dwarf2_per_objfile->objfile;
9777   bfd *dbfd = dwp_file->dbfd;
9778   const gdb_byte *index_ptr, *index_end;
9779   struct dwarf2_section_info *index;
9780   uint32_t version, nr_columns, nr_units, nr_slots;
9781   struct dwp_hash_table *htab;
9782
9783   if (is_debug_types)
9784     index = &dwp_file->sections.tu_index;
9785   else
9786     index = &dwp_file->sections.cu_index;
9787
9788   if (dwarf2_section_empty_p (index))
9789     return NULL;
9790   dwarf2_read_section (objfile, index);
9791
9792   index_ptr = index->buffer;
9793   index_end = index_ptr + index->size;
9794
9795   version = read_4_bytes (dbfd, index_ptr);
9796   index_ptr += 4;
9797   if (version == 2)
9798     nr_columns = read_4_bytes (dbfd, index_ptr);
9799   else
9800     nr_columns = 0;
9801   index_ptr += 4;
9802   nr_units = read_4_bytes (dbfd, index_ptr);
9803   index_ptr += 4;
9804   nr_slots = read_4_bytes (dbfd, index_ptr);
9805   index_ptr += 4;
9806
9807   if (version != 1 && version != 2)
9808     {
9809       error (_("Dwarf Error: unsupported DWP file version (%s)"
9810                " [in module %s]"),
9811              pulongest (version), dwp_file->name);
9812     }
9813   if (nr_slots != (nr_slots & -nr_slots))
9814     {
9815       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9816                " is not power of 2 [in module %s]"),
9817              pulongest (nr_slots), dwp_file->name);
9818     }
9819
9820   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9821   htab->version = version;
9822   htab->nr_columns = nr_columns;
9823   htab->nr_units = nr_units;
9824   htab->nr_slots = nr_slots;
9825   htab->hash_table = index_ptr;
9826   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9827
9828   /* Exit early if the table is empty.  */
9829   if (nr_slots == 0 || nr_units == 0
9830       || (version == 2 && nr_columns == 0))
9831     {
9832       /* All must be zero.  */
9833       if (nr_slots != 0 || nr_units != 0
9834           || (version == 2 && nr_columns != 0))
9835         {
9836           complaint (&symfile_complaints,
9837                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9838                        " all zero [in modules %s]"),
9839                      dwp_file->name);
9840         }
9841       return htab;
9842     }
9843
9844   if (version == 1)
9845     {
9846       htab->section_pool.v1.indices =
9847         htab->unit_table + sizeof (uint32_t) * nr_slots;
9848       /* It's harder to decide whether the section is too small in v1.
9849          V1 is deprecated anyway so we punt.  */
9850     }
9851   else
9852     {
9853       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9854       int *ids = htab->section_pool.v2.section_ids;
9855       /* Reverse map for error checking.  */
9856       int ids_seen[DW_SECT_MAX + 1];
9857       int i;
9858
9859       if (nr_columns < 2)
9860         {
9861           error (_("Dwarf Error: bad DWP hash table, too few columns"
9862                    " in section table [in module %s]"),
9863                  dwp_file->name);
9864         }
9865       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9866         {
9867           error (_("Dwarf Error: bad DWP hash table, too many columns"
9868                    " in section table [in module %s]"),
9869                  dwp_file->name);
9870         }
9871       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9872       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9873       for (i = 0; i < nr_columns; ++i)
9874         {
9875           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9876
9877           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9878             {
9879               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9880                        " in section table [in module %s]"),
9881                      id, dwp_file->name);
9882             }
9883           if (ids_seen[id] != -1)
9884             {
9885               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9886                        " id %d in section table [in module %s]"),
9887                      id, dwp_file->name);
9888             }
9889           ids_seen[id] = i;
9890           ids[i] = id;
9891         }
9892       /* Must have exactly one info or types section.  */
9893       if (((ids_seen[DW_SECT_INFO] != -1)
9894            + (ids_seen[DW_SECT_TYPES] != -1))
9895           != 1)
9896         {
9897           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9898                    " DWO info/types section [in module %s]"),
9899                  dwp_file->name);
9900         }
9901       /* Must have an abbrev section.  */
9902       if (ids_seen[DW_SECT_ABBREV] == -1)
9903         {
9904           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9905                    " section [in module %s]"),
9906                  dwp_file->name);
9907         }
9908       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9909       htab->section_pool.v2.sizes =
9910         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9911                                          * nr_units * nr_columns);
9912       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9913                                           * nr_units * nr_columns))
9914           > index_end)
9915         {
9916           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9917                    " [in module %s]"),
9918                  dwp_file->name);
9919         }
9920     }
9921
9922   return htab;
9923 }
9924
9925 /* Update SECTIONS with the data from SECTP.
9926
9927    This function is like the other "locate" section routines that are
9928    passed to bfd_map_over_sections, but in this context the sections to
9929    read comes from the DWP V1 hash table, not the full ELF section table.
9930
9931    The result is non-zero for success, or zero if an error was found.  */
9932
9933 static int
9934 locate_v1_virtual_dwo_sections (asection *sectp,
9935                                 struct virtual_v1_dwo_sections *sections)
9936 {
9937   const struct dwop_section_names *names = &dwop_section_names;
9938
9939   if (section_is_p (sectp->name, &names->abbrev_dwo))
9940     {
9941       /* There can be only one.  */
9942       if (sections->abbrev.s.section != NULL)
9943         return 0;
9944       sections->abbrev.s.section = sectp;
9945       sections->abbrev.size = bfd_get_section_size (sectp);
9946     }
9947   else if (section_is_p (sectp->name, &names->info_dwo)
9948            || section_is_p (sectp->name, &names->types_dwo))
9949     {
9950       /* There can be only one.  */
9951       if (sections->info_or_types.s.section != NULL)
9952         return 0;
9953       sections->info_or_types.s.section = sectp;
9954       sections->info_or_types.size = bfd_get_section_size (sectp);
9955     }
9956   else if (section_is_p (sectp->name, &names->line_dwo))
9957     {
9958       /* There can be only one.  */
9959       if (sections->line.s.section != NULL)
9960         return 0;
9961       sections->line.s.section = sectp;
9962       sections->line.size = bfd_get_section_size (sectp);
9963     }
9964   else if (section_is_p (sectp->name, &names->loc_dwo))
9965     {
9966       /* There can be only one.  */
9967       if (sections->loc.s.section != NULL)
9968         return 0;
9969       sections->loc.s.section = sectp;
9970       sections->loc.size = bfd_get_section_size (sectp);
9971     }
9972   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9973     {
9974       /* There can be only one.  */
9975       if (sections->macinfo.s.section != NULL)
9976         return 0;
9977       sections->macinfo.s.section = sectp;
9978       sections->macinfo.size = bfd_get_section_size (sectp);
9979     }
9980   else if (section_is_p (sectp->name, &names->macro_dwo))
9981     {
9982       /* There can be only one.  */
9983       if (sections->macro.s.section != NULL)
9984         return 0;
9985       sections->macro.s.section = sectp;
9986       sections->macro.size = bfd_get_section_size (sectp);
9987     }
9988   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9989     {
9990       /* There can be only one.  */
9991       if (sections->str_offsets.s.section != NULL)
9992         return 0;
9993       sections->str_offsets.s.section = sectp;
9994       sections->str_offsets.size = bfd_get_section_size (sectp);
9995     }
9996   else
9997     {
9998       /* No other kind of section is valid.  */
9999       return 0;
10000     }
10001
10002   return 1;
10003 }
10004
10005 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10006    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10007    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10008    This is for DWP version 1 files.  */
10009
10010 static struct dwo_unit *
10011 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
10012                            uint32_t unit_index,
10013                            const char *comp_dir,
10014                            ULONGEST signature, int is_debug_types)
10015 {
10016   struct objfile *objfile = dwarf2_per_objfile->objfile;
10017   const struct dwp_hash_table *dwp_htab =
10018     is_debug_types ? dwp_file->tus : dwp_file->cus;
10019   bfd *dbfd = dwp_file->dbfd;
10020   const char *kind = is_debug_types ? "TU" : "CU";
10021   struct dwo_file *dwo_file;
10022   struct dwo_unit *dwo_unit;
10023   struct virtual_v1_dwo_sections sections;
10024   void **dwo_file_slot;
10025   char *virtual_dwo_name;
10026   struct cleanup *cleanups;
10027   int i;
10028
10029   gdb_assert (dwp_file->version == 1);
10030
10031   if (dwarf_read_debug)
10032     {
10033       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
10034                           kind,
10035                           pulongest (unit_index), hex_string (signature),
10036                           dwp_file->name);
10037     }
10038
10039   /* Fetch the sections of this DWO unit.
10040      Put a limit on the number of sections we look for so that bad data
10041      doesn't cause us to loop forever.  */
10042
10043 #define MAX_NR_V1_DWO_SECTIONS \
10044   (1 /* .debug_info or .debug_types */ \
10045    + 1 /* .debug_abbrev */ \
10046    + 1 /* .debug_line */ \
10047    + 1 /* .debug_loc */ \
10048    + 1 /* .debug_str_offsets */ \
10049    + 1 /* .debug_macro or .debug_macinfo */ \
10050    + 1 /* trailing zero */)
10051
10052   memset (&sections, 0, sizeof (sections));
10053   cleanups = make_cleanup (null_cleanup, 0);
10054
10055   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
10056     {
10057       asection *sectp;
10058       uint32_t section_nr =
10059         read_4_bytes (dbfd,
10060                       dwp_htab->section_pool.v1.indices
10061                       + (unit_index + i) * sizeof (uint32_t));
10062
10063       if (section_nr == 0)
10064         break;
10065       if (section_nr >= dwp_file->num_sections)
10066         {
10067           error (_("Dwarf Error: bad DWP hash table, section number too large"
10068                    " [in module %s]"),
10069                  dwp_file->name);
10070         }
10071
10072       sectp = dwp_file->elf_sections[section_nr];
10073       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
10074         {
10075           error (_("Dwarf Error: bad DWP hash table, invalid section found"
10076                    " [in module %s]"),
10077                  dwp_file->name);
10078         }
10079     }
10080
10081   if (i < 2
10082       || dwarf2_section_empty_p (&sections.info_or_types)
10083       || dwarf2_section_empty_p (&sections.abbrev))
10084     {
10085       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10086                " [in module %s]"),
10087              dwp_file->name);
10088     }
10089   if (i == MAX_NR_V1_DWO_SECTIONS)
10090     {
10091       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10092                " [in module %s]"),
10093              dwp_file->name);
10094     }
10095
10096   /* It's easier for the rest of the code if we fake a struct dwo_file and
10097      have dwo_unit "live" in that.  At least for now.
10098
10099      The DWP file can be made up of a random collection of CUs and TUs.
10100      However, for each CU + set of TUs that came from the same original DWO
10101      file, we can combine them back into a virtual DWO file to save space
10102      (fewer struct dwo_file objects to allocate).  Remember that for really
10103      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10104
10105   virtual_dwo_name =
10106     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
10107                 get_section_id (&sections.abbrev),
10108                 get_section_id (&sections.line),
10109                 get_section_id (&sections.loc),
10110                 get_section_id (&sections.str_offsets));
10111   make_cleanup (xfree, virtual_dwo_name);
10112   /* Can we use an existing virtual DWO file?  */
10113   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10114   /* Create one if necessary.  */
10115   if (*dwo_file_slot == NULL)
10116     {
10117       if (dwarf_read_debug)
10118         {
10119           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10120                               virtual_dwo_name);
10121         }
10122       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10123       dwo_file->dwo_name
10124         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
10125                                         virtual_dwo_name,
10126                                         strlen (virtual_dwo_name));
10127       dwo_file->comp_dir = comp_dir;
10128       dwo_file->sections.abbrev = sections.abbrev;
10129       dwo_file->sections.line = sections.line;
10130       dwo_file->sections.loc = sections.loc;
10131       dwo_file->sections.macinfo = sections.macinfo;
10132       dwo_file->sections.macro = sections.macro;
10133       dwo_file->sections.str_offsets = sections.str_offsets;
10134       /* The "str" section is global to the entire DWP file.  */
10135       dwo_file->sections.str = dwp_file->sections.str;
10136       /* The info or types section is assigned below to dwo_unit,
10137          there's no need to record it in dwo_file.
10138          Also, we can't simply record type sections in dwo_file because
10139          we record a pointer into the vector in dwo_unit.  As we collect more
10140          types we'll grow the vector and eventually have to reallocate space
10141          for it, invalidating all copies of pointers into the previous
10142          contents.  */
10143       *dwo_file_slot = dwo_file;
10144     }
10145   else
10146     {
10147       if (dwarf_read_debug)
10148         {
10149           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10150                               virtual_dwo_name);
10151         }
10152       dwo_file = (struct dwo_file *) *dwo_file_slot;
10153     }
10154   do_cleanups (cleanups);
10155
10156   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10157   dwo_unit->dwo_file = dwo_file;
10158   dwo_unit->signature = signature;
10159   dwo_unit->section =
10160     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
10161   *dwo_unit->section = sections.info_or_types;
10162   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10163
10164   return dwo_unit;
10165 }
10166
10167 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10168    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10169    piece within that section used by a TU/CU, return a virtual section
10170    of just that piece.  */
10171
10172 static struct dwarf2_section_info
10173 create_dwp_v2_section (struct dwarf2_section_info *section,
10174                        bfd_size_type offset, bfd_size_type size)
10175 {
10176   struct dwarf2_section_info result;
10177   asection *sectp;
10178
10179   gdb_assert (section != NULL);
10180   gdb_assert (!section->is_virtual);
10181
10182   memset (&result, 0, sizeof (result));
10183   result.s.containing_section = section;
10184   result.is_virtual = 1;
10185
10186   if (size == 0)
10187     return result;
10188
10189   sectp = get_section_bfd_section (section);
10190
10191   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10192      bounds of the real section.  This is a pretty-rare event, so just
10193      flag an error (easier) instead of a warning and trying to cope.  */
10194   if (sectp == NULL
10195       || offset + size > bfd_get_section_size (sectp))
10196     {
10197       bfd *abfd = sectp->owner;
10198
10199       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10200                " in section %s [in module %s]"),
10201              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10202              objfile_name (dwarf2_per_objfile->objfile));
10203     }
10204
10205   result.virtual_offset = offset;
10206   result.size = size;
10207   return result;
10208 }
10209
10210 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10211    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10212    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10213    This is for DWP version 2 files.  */
10214
10215 static struct dwo_unit *
10216 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10217                            uint32_t unit_index,
10218                            const char *comp_dir,
10219                            ULONGEST signature, int is_debug_types)
10220 {
10221   struct objfile *objfile = dwarf2_per_objfile->objfile;
10222   const struct dwp_hash_table *dwp_htab =
10223     is_debug_types ? dwp_file->tus : dwp_file->cus;
10224   bfd *dbfd = dwp_file->dbfd;
10225   const char *kind = is_debug_types ? "TU" : "CU";
10226   struct dwo_file *dwo_file;
10227   struct dwo_unit *dwo_unit;
10228   struct virtual_v2_dwo_sections sections;
10229   void **dwo_file_slot;
10230   char *virtual_dwo_name;
10231   struct cleanup *cleanups;
10232   int i;
10233
10234   gdb_assert (dwp_file->version == 2);
10235
10236   if (dwarf_read_debug)
10237     {
10238       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10239                           kind,
10240                           pulongest (unit_index), hex_string (signature),
10241                           dwp_file->name);
10242     }
10243
10244   /* Fetch the section offsets of this DWO unit.  */
10245
10246   memset (&sections, 0, sizeof (sections));
10247   cleanups = make_cleanup (null_cleanup, 0);
10248
10249   for (i = 0; i < dwp_htab->nr_columns; ++i)
10250     {
10251       uint32_t offset = read_4_bytes (dbfd,
10252                                       dwp_htab->section_pool.v2.offsets
10253                                       + (((unit_index - 1) * dwp_htab->nr_columns
10254                                           + i)
10255                                          * sizeof (uint32_t)));
10256       uint32_t size = read_4_bytes (dbfd,
10257                                     dwp_htab->section_pool.v2.sizes
10258                                     + (((unit_index - 1) * dwp_htab->nr_columns
10259                                         + i)
10260                                        * sizeof (uint32_t)));
10261
10262       switch (dwp_htab->section_pool.v2.section_ids[i])
10263         {
10264         case DW_SECT_INFO:
10265         case DW_SECT_TYPES:
10266           sections.info_or_types_offset = offset;
10267           sections.info_or_types_size = size;
10268           break;
10269         case DW_SECT_ABBREV:
10270           sections.abbrev_offset = offset;
10271           sections.abbrev_size = size;
10272           break;
10273         case DW_SECT_LINE:
10274           sections.line_offset = offset;
10275           sections.line_size = size;
10276           break;
10277         case DW_SECT_LOC:
10278           sections.loc_offset = offset;
10279           sections.loc_size = size;
10280           break;
10281         case DW_SECT_STR_OFFSETS:
10282           sections.str_offsets_offset = offset;
10283           sections.str_offsets_size = size;
10284           break;
10285         case DW_SECT_MACINFO:
10286           sections.macinfo_offset = offset;
10287           sections.macinfo_size = size;
10288           break;
10289         case DW_SECT_MACRO:
10290           sections.macro_offset = offset;
10291           sections.macro_size = size;
10292           break;
10293         }
10294     }
10295
10296   /* It's easier for the rest of the code if we fake a struct dwo_file and
10297      have dwo_unit "live" in that.  At least for now.
10298
10299      The DWP file can be made up of a random collection of CUs and TUs.
10300      However, for each CU + set of TUs that came from the same original DWO
10301      file, we can combine them back into a virtual DWO file to save space
10302      (fewer struct dwo_file objects to allocate).  Remember that for really
10303      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10304
10305   virtual_dwo_name =
10306     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10307                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10308                 (long) (sections.line_size ? sections.line_offset : 0),
10309                 (long) (sections.loc_size ? sections.loc_offset : 0),
10310                 (long) (sections.str_offsets_size
10311                         ? sections.str_offsets_offset : 0));
10312   make_cleanup (xfree, virtual_dwo_name);
10313   /* Can we use an existing virtual DWO file?  */
10314   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10315   /* Create one if necessary.  */
10316   if (*dwo_file_slot == NULL)
10317     {
10318       if (dwarf_read_debug)
10319         {
10320           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10321                               virtual_dwo_name);
10322         }
10323       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10324       dwo_file->dwo_name
10325         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
10326                                         virtual_dwo_name,
10327                                         strlen (virtual_dwo_name));
10328       dwo_file->comp_dir = comp_dir;
10329       dwo_file->sections.abbrev =
10330         create_dwp_v2_section (&dwp_file->sections.abbrev,
10331                                sections.abbrev_offset, sections.abbrev_size);
10332       dwo_file->sections.line =
10333         create_dwp_v2_section (&dwp_file->sections.line,
10334                                sections.line_offset, sections.line_size);
10335       dwo_file->sections.loc =
10336         create_dwp_v2_section (&dwp_file->sections.loc,
10337                                sections.loc_offset, sections.loc_size);
10338       dwo_file->sections.macinfo =
10339         create_dwp_v2_section (&dwp_file->sections.macinfo,
10340                                sections.macinfo_offset, sections.macinfo_size);
10341       dwo_file->sections.macro =
10342         create_dwp_v2_section (&dwp_file->sections.macro,
10343                                sections.macro_offset, sections.macro_size);
10344       dwo_file->sections.str_offsets =
10345         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10346                                sections.str_offsets_offset,
10347                                sections.str_offsets_size);
10348       /* The "str" section is global to the entire DWP file.  */
10349       dwo_file->sections.str = dwp_file->sections.str;
10350       /* The info or types section is assigned below to dwo_unit,
10351          there's no need to record it in dwo_file.
10352          Also, we can't simply record type sections in dwo_file because
10353          we record a pointer into the vector in dwo_unit.  As we collect more
10354          types we'll grow the vector and eventually have to reallocate space
10355          for it, invalidating all copies of pointers into the previous
10356          contents.  */
10357       *dwo_file_slot = dwo_file;
10358     }
10359   else
10360     {
10361       if (dwarf_read_debug)
10362         {
10363           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10364                               virtual_dwo_name);
10365         }
10366       dwo_file = (struct dwo_file *) *dwo_file_slot;
10367     }
10368   do_cleanups (cleanups);
10369
10370   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10371   dwo_unit->dwo_file = dwo_file;
10372   dwo_unit->signature = signature;
10373   dwo_unit->section =
10374     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
10375   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10376                                               ? &dwp_file->sections.types
10377                                               : &dwp_file->sections.info,
10378                                               sections.info_or_types_offset,
10379                                               sections.info_or_types_size);
10380   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10381
10382   return dwo_unit;
10383 }
10384
10385 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10386    Returns NULL if the signature isn't found.  */
10387
10388 static struct dwo_unit *
10389 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10390                         ULONGEST signature, int is_debug_types)
10391 {
10392   const struct dwp_hash_table *dwp_htab =
10393     is_debug_types ? dwp_file->tus : dwp_file->cus;
10394   bfd *dbfd = dwp_file->dbfd;
10395   uint32_t mask = dwp_htab->nr_slots - 1;
10396   uint32_t hash = signature & mask;
10397   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10398   unsigned int i;
10399   void **slot;
10400   struct dwo_unit find_dwo_cu;
10401
10402   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10403   find_dwo_cu.signature = signature;
10404   slot = htab_find_slot (is_debug_types
10405                          ? dwp_file->loaded_tus
10406                          : dwp_file->loaded_cus,
10407                          &find_dwo_cu, INSERT);
10408
10409   if (*slot != NULL)
10410     return (struct dwo_unit *) *slot;
10411
10412   /* Use a for loop so that we don't loop forever on bad debug info.  */
10413   for (i = 0; i < dwp_htab->nr_slots; ++i)
10414     {
10415       ULONGEST signature_in_table;
10416
10417       signature_in_table =
10418         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10419       if (signature_in_table == signature)
10420         {
10421           uint32_t unit_index =
10422             read_4_bytes (dbfd,
10423                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10424
10425           if (dwp_file->version == 1)
10426             {
10427               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10428                                                  comp_dir, signature,
10429                                                  is_debug_types);
10430             }
10431           else
10432             {
10433               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10434                                                  comp_dir, signature,
10435                                                  is_debug_types);
10436             }
10437           return (struct dwo_unit *) *slot;
10438         }
10439       if (signature_in_table == 0)
10440         return NULL;
10441       hash = (hash + hash2) & mask;
10442     }
10443
10444   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10445            " [in module %s]"),
10446          dwp_file->name);
10447 }
10448
10449 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10450    Open the file specified by FILE_NAME and hand it off to BFD for
10451    preliminary analysis.  Return a newly initialized bfd *, which
10452    includes a canonicalized copy of FILE_NAME.
10453    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10454    SEARCH_CWD is true if the current directory is to be searched.
10455    It will be searched before debug-file-directory.
10456    If successful, the file is added to the bfd include table of the
10457    objfile's bfd (see gdb_bfd_record_inclusion).
10458    If unable to find/open the file, return NULL.
10459    NOTE: This function is derived from symfile_bfd_open.  */
10460
10461 static bfd *
10462 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10463 {
10464   bfd *sym_bfd;
10465   int desc, flags;
10466   char *absolute_name;
10467   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10468      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10469      to debug_file_directory.  */
10470   char *search_path;
10471   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10472
10473   if (search_cwd)
10474     {
10475       if (*debug_file_directory != '\0')
10476         search_path = concat (".", dirname_separator_string,
10477                               debug_file_directory, (char *) NULL);
10478       else
10479         search_path = xstrdup (".");
10480     }
10481   else
10482     search_path = xstrdup (debug_file_directory);
10483
10484   flags = OPF_RETURN_REALPATH;
10485   if (is_dwp)
10486     flags |= OPF_SEARCH_IN_PATH;
10487   desc = openp (search_path, flags, file_name,
10488                 O_RDONLY | O_BINARY, &absolute_name);
10489   xfree (search_path);
10490   if (desc < 0)
10491     return NULL;
10492
10493   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
10494   xfree (absolute_name);
10495   if (sym_bfd == NULL)
10496     return NULL;
10497   bfd_set_cacheable (sym_bfd, 1);
10498
10499   if (!bfd_check_format (sym_bfd, bfd_object))
10500     {
10501       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
10502       return NULL;
10503     }
10504
10505   /* Success.  Record the bfd as having been included by the objfile's bfd.
10506      This is important because things like demangled_names_hash lives in the
10507      objfile's per_bfd space and may have references to things like symbol
10508      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
10509   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10510
10511   return sym_bfd;
10512 }
10513
10514 /* Try to open DWO file FILE_NAME.
10515    COMP_DIR is the DW_AT_comp_dir attribute.
10516    The result is the bfd handle of the file.
10517    If there is a problem finding or opening the file, return NULL.
10518    Upon success, the canonicalized path of the file is stored in the bfd,
10519    same as symfile_bfd_open.  */
10520
10521 static bfd *
10522 open_dwo_file (const char *file_name, const char *comp_dir)
10523 {
10524   bfd *abfd;
10525
10526   if (IS_ABSOLUTE_PATH (file_name))
10527     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10528
10529   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10530
10531   if (comp_dir != NULL)
10532     {
10533       char *path_to_try = concat (comp_dir, SLASH_STRING,
10534                                   file_name, (char *) NULL);
10535
10536       /* NOTE: If comp_dir is a relative path, this will also try the
10537          search path, which seems useful.  */
10538       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
10539       xfree (path_to_try);
10540       if (abfd != NULL)
10541         return abfd;
10542     }
10543
10544   /* That didn't work, try debug-file-directory, which, despite its name,
10545      is a list of paths.  */
10546
10547   if (*debug_file_directory == '\0')
10548     return NULL;
10549
10550   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10551 }
10552
10553 /* This function is mapped across the sections and remembers the offset and
10554    size of each of the DWO debugging sections we are interested in.  */
10555
10556 static void
10557 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10558 {
10559   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
10560   const struct dwop_section_names *names = &dwop_section_names;
10561
10562   if (section_is_p (sectp->name, &names->abbrev_dwo))
10563     {
10564       dwo_sections->abbrev.s.section = sectp;
10565       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10566     }
10567   else if (section_is_p (sectp->name, &names->info_dwo))
10568     {
10569       dwo_sections->info.s.section = sectp;
10570       dwo_sections->info.size = bfd_get_section_size (sectp);
10571     }
10572   else if (section_is_p (sectp->name, &names->line_dwo))
10573     {
10574       dwo_sections->line.s.section = sectp;
10575       dwo_sections->line.size = bfd_get_section_size (sectp);
10576     }
10577   else if (section_is_p (sectp->name, &names->loc_dwo))
10578     {
10579       dwo_sections->loc.s.section = sectp;
10580       dwo_sections->loc.size = bfd_get_section_size (sectp);
10581     }
10582   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10583     {
10584       dwo_sections->macinfo.s.section = sectp;
10585       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10586     }
10587   else if (section_is_p (sectp->name, &names->macro_dwo))
10588     {
10589       dwo_sections->macro.s.section = sectp;
10590       dwo_sections->macro.size = bfd_get_section_size (sectp);
10591     }
10592   else if (section_is_p (sectp->name, &names->str_dwo))
10593     {
10594       dwo_sections->str.s.section = sectp;
10595       dwo_sections->str.size = bfd_get_section_size (sectp);
10596     }
10597   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10598     {
10599       dwo_sections->str_offsets.s.section = sectp;
10600       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10601     }
10602   else if (section_is_p (sectp->name, &names->types_dwo))
10603     {
10604       struct dwarf2_section_info type_section;
10605
10606       memset (&type_section, 0, sizeof (type_section));
10607       type_section.s.section = sectp;
10608       type_section.size = bfd_get_section_size (sectp);
10609       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10610                      &type_section);
10611     }
10612 }
10613
10614 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10615    by PER_CU.  This is for the non-DWP case.
10616    The result is NULL if DWO_NAME can't be found.  */
10617
10618 static struct dwo_file *
10619 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10620                         const char *dwo_name, const char *comp_dir)
10621 {
10622   struct objfile *objfile = dwarf2_per_objfile->objfile;
10623   struct dwo_file *dwo_file;
10624   bfd *dbfd;
10625   struct cleanup *cleanups;
10626
10627   dbfd = open_dwo_file (dwo_name, comp_dir);
10628   if (dbfd == NULL)
10629     {
10630       if (dwarf_read_debug)
10631         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10632       return NULL;
10633     }
10634   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10635   dwo_file->dwo_name = dwo_name;
10636   dwo_file->comp_dir = comp_dir;
10637   dwo_file->dbfd = dbfd;
10638
10639   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10640
10641   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
10642
10643   dwo_file->cu = create_dwo_cu (dwo_file);
10644
10645   dwo_file->tus = create_debug_types_hash_table (dwo_file,
10646                                                  dwo_file->sections.types);
10647
10648   discard_cleanups (cleanups);
10649
10650   if (dwarf_read_debug)
10651     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10652
10653   return dwo_file;
10654 }
10655
10656 /* This function is mapped across the sections and remembers the offset and
10657    size of each of the DWP debugging sections common to version 1 and 2 that
10658    we are interested in.  */
10659
10660 static void
10661 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10662                                    void *dwp_file_ptr)
10663 {
10664   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
10665   const struct dwop_section_names *names = &dwop_section_names;
10666   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10667
10668   /* Record the ELF section number for later lookup: this is what the
10669      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10670   gdb_assert (elf_section_nr < dwp_file->num_sections);
10671   dwp_file->elf_sections[elf_section_nr] = sectp;
10672
10673   /* Look for specific sections that we need.  */
10674   if (section_is_p (sectp->name, &names->str_dwo))
10675     {
10676       dwp_file->sections.str.s.section = sectp;
10677       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10678     }
10679   else if (section_is_p (sectp->name, &names->cu_index))
10680     {
10681       dwp_file->sections.cu_index.s.section = sectp;
10682       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10683     }
10684   else if (section_is_p (sectp->name, &names->tu_index))
10685     {
10686       dwp_file->sections.tu_index.s.section = sectp;
10687       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10688     }
10689 }
10690
10691 /* This function is mapped across the sections and remembers the offset and
10692    size of each of the DWP version 2 debugging sections that we are interested
10693    in.  This is split into a separate function because we don't know if we
10694    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10695
10696 static void
10697 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10698 {
10699   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
10700   const struct dwop_section_names *names = &dwop_section_names;
10701   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10702
10703   /* Record the ELF section number for later lookup: this is what the
10704      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10705   gdb_assert (elf_section_nr < dwp_file->num_sections);
10706   dwp_file->elf_sections[elf_section_nr] = sectp;
10707
10708   /* Look for specific sections that we need.  */
10709   if (section_is_p (sectp->name, &names->abbrev_dwo))
10710     {
10711       dwp_file->sections.abbrev.s.section = sectp;
10712       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10713     }
10714   else if (section_is_p (sectp->name, &names->info_dwo))
10715     {
10716       dwp_file->sections.info.s.section = sectp;
10717       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10718     }
10719   else if (section_is_p (sectp->name, &names->line_dwo))
10720     {
10721       dwp_file->sections.line.s.section = sectp;
10722       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10723     }
10724   else if (section_is_p (sectp->name, &names->loc_dwo))
10725     {
10726       dwp_file->sections.loc.s.section = sectp;
10727       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10728     }
10729   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10730     {
10731       dwp_file->sections.macinfo.s.section = sectp;
10732       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10733     }
10734   else if (section_is_p (sectp->name, &names->macro_dwo))
10735     {
10736       dwp_file->sections.macro.s.section = sectp;
10737       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10738     }
10739   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10740     {
10741       dwp_file->sections.str_offsets.s.section = sectp;
10742       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10743     }
10744   else if (section_is_p (sectp->name, &names->types_dwo))
10745     {
10746       dwp_file->sections.types.s.section = sectp;
10747       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10748     }
10749 }
10750
10751 /* Hash function for dwp_file loaded CUs/TUs.  */
10752
10753 static hashval_t
10754 hash_dwp_loaded_cutus (const void *item)
10755 {
10756   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
10757
10758   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10759   return dwo_unit->signature;
10760 }
10761
10762 /* Equality function for dwp_file loaded CUs/TUs.  */
10763
10764 static int
10765 eq_dwp_loaded_cutus (const void *a, const void *b)
10766 {
10767   const struct dwo_unit *dua = (const struct dwo_unit *) a;
10768   const struct dwo_unit *dub = (const struct dwo_unit *) b;
10769
10770   return dua->signature == dub->signature;
10771 }
10772
10773 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10774
10775 static htab_t
10776 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10777 {
10778   return htab_create_alloc_ex (3,
10779                                hash_dwp_loaded_cutus,
10780                                eq_dwp_loaded_cutus,
10781                                NULL,
10782                                &objfile->objfile_obstack,
10783                                hashtab_obstack_allocate,
10784                                dummy_obstack_deallocate);
10785 }
10786
10787 /* Try to open DWP file FILE_NAME.
10788    The result is the bfd handle of the file.
10789    If there is a problem finding or opening the file, return NULL.
10790    Upon success, the canonicalized path of the file is stored in the bfd,
10791    same as symfile_bfd_open.  */
10792
10793 static bfd *
10794 open_dwp_file (const char *file_name)
10795 {
10796   bfd *abfd;
10797
10798   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10799   if (abfd != NULL)
10800     return abfd;
10801
10802   /* Work around upstream bug 15652.
10803      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10804      [Whether that's a "bug" is debatable, but it is getting in our way.]
10805      We have no real idea where the dwp file is, because gdb's realpath-ing
10806      of the executable's path may have discarded the needed info.
10807      [IWBN if the dwp file name was recorded in the executable, akin to
10808      .gnu_debuglink, but that doesn't exist yet.]
10809      Strip the directory from FILE_NAME and search again.  */
10810   if (*debug_file_directory != '\0')
10811     {
10812       /* Don't implicitly search the current directory here.
10813          If the user wants to search "." to handle this case,
10814          it must be added to debug-file-directory.  */
10815       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10816                                  0 /*search_cwd*/);
10817     }
10818
10819   return NULL;
10820 }
10821
10822 /* Initialize the use of the DWP file for the current objfile.
10823    By convention the name of the DWP file is ${objfile}.dwp.
10824    The result is NULL if it can't be found.  */
10825
10826 static struct dwp_file *
10827 open_and_init_dwp_file (void)
10828 {
10829   struct objfile *objfile = dwarf2_per_objfile->objfile;
10830   struct dwp_file *dwp_file;
10831   char *dwp_name;
10832   bfd *dbfd;
10833   struct cleanup *cleanups = make_cleanup (null_cleanup, 0);
10834
10835   /* Try to find first .dwp for the binary file before any symbolic links
10836      resolving.  */
10837
10838   /* If the objfile is a debug file, find the name of the real binary
10839      file and get the name of dwp file from there.  */
10840   if (objfile->separate_debug_objfile_backlink != NULL)
10841     {
10842       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
10843       const char *backlink_basename = lbasename (backlink->original_name);
10844       char *debug_dirname = ldirname (objfile->original_name);
10845
10846       make_cleanup (xfree, debug_dirname);
10847       dwp_name = xstrprintf ("%s%s%s.dwp", debug_dirname,
10848                              SLASH_STRING, backlink_basename);
10849     }
10850   else
10851     dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10852   make_cleanup (xfree, dwp_name);
10853
10854   dbfd = open_dwp_file (dwp_name);
10855   if (dbfd == NULL
10856       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10857     {
10858       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10859       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10860       make_cleanup (xfree, dwp_name);
10861       dbfd = open_dwp_file (dwp_name);
10862     }
10863
10864   if (dbfd == NULL)
10865     {
10866       if (dwarf_read_debug)
10867         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10868       do_cleanups (cleanups);
10869       return NULL;
10870     }
10871   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10872   dwp_file->name = bfd_get_filename (dbfd);
10873   dwp_file->dbfd = dbfd;
10874   do_cleanups (cleanups);
10875
10876   /* +1: section 0 is unused */
10877   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10878   dwp_file->elf_sections =
10879     OBSTACK_CALLOC (&objfile->objfile_obstack,
10880                     dwp_file->num_sections, asection *);
10881
10882   bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
10883
10884   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10885
10886   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10887
10888   /* The DWP file version is stored in the hash table.  Oh well.  */
10889   if (dwp_file->cus->version != dwp_file->tus->version)
10890     {
10891       /* Technically speaking, we should try to limp along, but this is
10892          pretty bizarre.  We use pulongest here because that's the established
10893          portability solution (e.g, we cannot use %u for uint32_t).  */
10894       error (_("Dwarf Error: DWP file CU version %s doesn't match"
10895                " TU version %s [in DWP file %s]"),
10896              pulongest (dwp_file->cus->version),
10897              pulongest (dwp_file->tus->version), dwp_name);
10898     }
10899   dwp_file->version = dwp_file->cus->version;
10900
10901   if (dwp_file->version == 2)
10902     bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10903
10904   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10905   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10906
10907   if (dwarf_read_debug)
10908     {
10909       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10910       fprintf_unfiltered (gdb_stdlog,
10911                           "    %s CUs, %s TUs\n",
10912                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10913                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10914     }
10915
10916   return dwp_file;
10917 }
10918
10919 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10920
10921 static struct dwp_file *
10922 get_dwp_file (void)
10923 {
10924   if (! dwarf2_per_objfile->dwp_checked)
10925     {
10926       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10927       dwarf2_per_objfile->dwp_checked = 1;
10928     }
10929   return dwarf2_per_objfile->dwp_file;
10930 }
10931
10932 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10933    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10934    or in the DWP file for the objfile, referenced by THIS_UNIT.
10935    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10936    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10937
10938    This is called, for example, when wanting to read a variable with a
10939    complex location.  Therefore we don't want to do file i/o for every call.
10940    Therefore we don't want to look for a DWO file on every call.
10941    Therefore we first see if we've already seen SIGNATURE in a DWP file,
10942    then we check if we've already seen DWO_NAME, and only THEN do we check
10943    for a DWO file.
10944
10945    The result is a pointer to the dwo_unit object or NULL if we didn't find it
10946    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
10947
10948 static struct dwo_unit *
10949 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10950                  const char *dwo_name, const char *comp_dir,
10951                  ULONGEST signature, int is_debug_types)
10952 {
10953   struct objfile *objfile = dwarf2_per_objfile->objfile;
10954   const char *kind = is_debug_types ? "TU" : "CU";
10955   void **dwo_file_slot;
10956   struct dwo_file *dwo_file;
10957   struct dwp_file *dwp_file;
10958
10959   /* First see if there's a DWP file.
10960      If we have a DWP file but didn't find the DWO inside it, don't
10961      look for the original DWO file.  It makes gdb behave differently
10962      depending on whether one is debugging in the build tree.  */
10963
10964   dwp_file = get_dwp_file ();
10965   if (dwp_file != NULL)
10966     {
10967       const struct dwp_hash_table *dwp_htab =
10968         is_debug_types ? dwp_file->tus : dwp_file->cus;
10969
10970       if (dwp_htab != NULL)
10971         {
10972           struct dwo_unit *dwo_cutu =
10973             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10974                                     signature, is_debug_types);
10975
10976           if (dwo_cutu != NULL)
10977             {
10978               if (dwarf_read_debug)
10979                 {
10980                   fprintf_unfiltered (gdb_stdlog,
10981                                       "Virtual DWO %s %s found: @%s\n",
10982                                       kind, hex_string (signature),
10983                                       host_address_to_string (dwo_cutu));
10984                 }
10985               return dwo_cutu;
10986             }
10987         }
10988     }
10989   else
10990     {
10991       /* No DWP file, look for the DWO file.  */
10992
10993       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10994       if (*dwo_file_slot == NULL)
10995         {
10996           /* Read in the file and build a table of the CUs/TUs it contains.  */
10997           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
10998         }
10999       /* NOTE: This will be NULL if unable to open the file.  */
11000       dwo_file = (struct dwo_file *) *dwo_file_slot;
11001
11002       if (dwo_file != NULL)
11003         {
11004           struct dwo_unit *dwo_cutu = NULL;
11005
11006           if (is_debug_types && dwo_file->tus)
11007             {
11008               struct dwo_unit find_dwo_cutu;
11009
11010               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
11011               find_dwo_cutu.signature = signature;
11012               dwo_cutu
11013                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
11014             }
11015           else if (!is_debug_types && dwo_file->cu)
11016             {
11017               if (signature == dwo_file->cu->signature)
11018                 dwo_cutu = dwo_file->cu;
11019             }
11020
11021           if (dwo_cutu != NULL)
11022             {
11023               if (dwarf_read_debug)
11024                 {
11025                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
11026                                       kind, dwo_name, hex_string (signature),
11027                                       host_address_to_string (dwo_cutu));
11028                 }
11029               return dwo_cutu;
11030             }
11031         }
11032     }
11033
11034   /* We didn't find it.  This could mean a dwo_id mismatch, or
11035      someone deleted the DWO/DWP file, or the search path isn't set up
11036      correctly to find the file.  */
11037
11038   if (dwarf_read_debug)
11039     {
11040       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11041                           kind, dwo_name, hex_string (signature));
11042     }
11043
11044   /* This is a warning and not a complaint because it can be caused by
11045      pilot error (e.g., user accidentally deleting the DWO).  */
11046   {
11047     /* Print the name of the DWP file if we looked there, helps the user
11048        better diagnose the problem.  */
11049     char *dwp_text = NULL;
11050     struct cleanup *cleanups;
11051
11052     if (dwp_file != NULL)
11053       dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11054     cleanups = make_cleanup (xfree, dwp_text);
11055
11056     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11057                " [in module %s]"),
11058              kind, dwo_name, hex_string (signature),
11059              dwp_text != NULL ? dwp_text : "",
11060              this_unit->is_debug_types ? "TU" : "CU",
11061              this_unit->offset.sect_off, objfile_name (objfile));
11062
11063     do_cleanups (cleanups);
11064   }
11065   return NULL;
11066 }
11067
11068 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11069    See lookup_dwo_cutu_unit for details.  */
11070
11071 static struct dwo_unit *
11072 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11073                       const char *dwo_name, const char *comp_dir,
11074                       ULONGEST signature)
11075 {
11076   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11077 }
11078
11079 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11080    See lookup_dwo_cutu_unit for details.  */
11081
11082 static struct dwo_unit *
11083 lookup_dwo_type_unit (struct signatured_type *this_tu,
11084                       const char *dwo_name, const char *comp_dir)
11085 {
11086   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11087 }
11088
11089 /* Traversal function for queue_and_load_all_dwo_tus.  */
11090
11091 static int
11092 queue_and_load_dwo_tu (void **slot, void *info)
11093 {
11094   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11095   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11096   ULONGEST signature = dwo_unit->signature;
11097   struct signatured_type *sig_type =
11098     lookup_dwo_signatured_type (per_cu->cu, signature);
11099
11100   if (sig_type != NULL)
11101     {
11102       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11103
11104       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11105          a real dependency of PER_CU on SIG_TYPE.  That is detected later
11106          while processing PER_CU.  */
11107       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11108         load_full_type_unit (sig_cu);
11109       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11110     }
11111
11112   return 1;
11113 }
11114
11115 /* Queue all TUs contained in the DWO of PER_CU to be read in.
11116    The DWO may have the only definition of the type, though it may not be
11117    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
11118    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
11119
11120 static void
11121 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11122 {
11123   struct dwo_unit *dwo_unit;
11124   struct dwo_file *dwo_file;
11125
11126   gdb_assert (!per_cu->is_debug_types);
11127   gdb_assert (get_dwp_file () == NULL);
11128   gdb_assert (per_cu->cu != NULL);
11129
11130   dwo_unit = per_cu->cu->dwo_unit;
11131   gdb_assert (dwo_unit != NULL);
11132
11133   dwo_file = dwo_unit->dwo_file;
11134   if (dwo_file->tus != NULL)
11135     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11136 }
11137
11138 /* Free all resources associated with DWO_FILE.
11139    Close the DWO file and munmap the sections.
11140    All memory should be on the objfile obstack.  */
11141
11142 static void
11143 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
11144 {
11145
11146   /* Note: dbfd is NULL for virtual DWO files.  */
11147   gdb_bfd_unref (dwo_file->dbfd);
11148
11149   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11150 }
11151
11152 /* Wrapper for free_dwo_file for use in cleanups.  */
11153
11154 static void
11155 free_dwo_file_cleanup (void *arg)
11156 {
11157   struct dwo_file *dwo_file = (struct dwo_file *) arg;
11158   struct objfile *objfile = dwarf2_per_objfile->objfile;
11159
11160   free_dwo_file (dwo_file, objfile);
11161 }
11162
11163 /* Traversal function for free_dwo_files.  */
11164
11165 static int
11166 free_dwo_file_from_slot (void **slot, void *info)
11167 {
11168   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11169   struct objfile *objfile = (struct objfile *) info;
11170
11171   free_dwo_file (dwo_file, objfile);
11172
11173   return 1;
11174 }
11175
11176 /* Free all resources associated with DWO_FILES.  */
11177
11178 static void
11179 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11180 {
11181   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
11182 }
11183 \f
11184 /* Read in various DIEs.  */
11185
11186 /* qsort helper for inherit_abstract_dies.  */
11187
11188 static int
11189 unsigned_int_compar (const void *ap, const void *bp)
11190 {
11191   unsigned int a = *(unsigned int *) ap;
11192   unsigned int b = *(unsigned int *) bp;
11193
11194   return (a > b) - (b > a);
11195 }
11196
11197 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
11198    Inherit only the children of the DW_AT_abstract_origin DIE not being
11199    already referenced by DW_AT_abstract_origin from the children of the
11200    current DIE.  */
11201
11202 static void
11203 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11204 {
11205   struct die_info *child_die;
11206   unsigned die_children_count;
11207   /* CU offsets which were referenced by children of the current DIE.  */
11208   sect_offset *offsets;
11209   sect_offset *offsets_end, *offsetp;
11210   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
11211   struct die_info *origin_die;
11212   /* Iterator of the ORIGIN_DIE children.  */
11213   struct die_info *origin_child_die;
11214   struct cleanup *cleanups;
11215   struct attribute *attr;
11216   struct dwarf2_cu *origin_cu;
11217   struct pending **origin_previous_list_in_scope;
11218
11219   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11220   if (!attr)
11221     return;
11222
11223   /* Note that following die references may follow to a die in a
11224      different cu.  */
11225
11226   origin_cu = cu;
11227   origin_die = follow_die_ref (die, attr, &origin_cu);
11228
11229   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11230      symbols in.  */
11231   origin_previous_list_in_scope = origin_cu->list_in_scope;
11232   origin_cu->list_in_scope = cu->list_in_scope;
11233
11234   if (die->tag != origin_die->tag
11235       && !(die->tag == DW_TAG_inlined_subroutine
11236            && origin_die->tag == DW_TAG_subprogram))
11237     complaint (&symfile_complaints,
11238                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
11239                die->offset.sect_off, origin_die->offset.sect_off);
11240
11241   child_die = die->child;
11242   die_children_count = 0;
11243   while (child_die && child_die->tag)
11244     {
11245       child_die = sibling_die (child_die);
11246       die_children_count++;
11247     }
11248   offsets = XNEWVEC (sect_offset, die_children_count);
11249   cleanups = make_cleanup (xfree, offsets);
11250
11251   offsets_end = offsets;
11252   for (child_die = die->child;
11253        child_die && child_die->tag;
11254        child_die = sibling_die (child_die))
11255     {
11256       struct die_info *child_origin_die;
11257       struct dwarf2_cu *child_origin_cu;
11258
11259       /* We are trying to process concrete instance entries:
11260          DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11261          it's not relevant to our analysis here. i.e. detecting DIEs that are
11262          present in the abstract instance but not referenced in the concrete
11263          one.  */
11264       if (child_die->tag == DW_TAG_GNU_call_site)
11265         continue;
11266
11267       /* For each CHILD_DIE, find the corresponding child of
11268          ORIGIN_DIE.  If there is more than one layer of
11269          DW_AT_abstract_origin, follow them all; there shouldn't be,
11270          but GCC versions at least through 4.4 generate this (GCC PR
11271          40573).  */
11272       child_origin_die = child_die;
11273       child_origin_cu = cu;
11274       while (1)
11275         {
11276           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11277                               child_origin_cu);
11278           if (attr == NULL)
11279             break;
11280           child_origin_die = follow_die_ref (child_origin_die, attr,
11281                                              &child_origin_cu);
11282         }
11283
11284       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11285          counterpart may exist.  */
11286       if (child_origin_die != child_die)
11287         {
11288           if (child_die->tag != child_origin_die->tag
11289               && !(child_die->tag == DW_TAG_inlined_subroutine
11290                    && child_origin_die->tag == DW_TAG_subprogram))
11291             complaint (&symfile_complaints,
11292                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11293                          "different tags"), child_die->offset.sect_off,
11294                        child_origin_die->offset.sect_off);
11295           if (child_origin_die->parent != origin_die)
11296             complaint (&symfile_complaints,
11297                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11298                          "different parents"), child_die->offset.sect_off,
11299                        child_origin_die->offset.sect_off);
11300           else
11301             *offsets_end++ = child_origin_die->offset;
11302         }
11303     }
11304   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11305          unsigned_int_compar);
11306   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
11307     if (offsetp[-1].sect_off == offsetp->sect_off)
11308       complaint (&symfile_complaints,
11309                  _("Multiple children of DIE 0x%x refer "
11310                    "to DIE 0x%x as their abstract origin"),
11311                  die->offset.sect_off, offsetp->sect_off);
11312
11313   offsetp = offsets;
11314   origin_child_die = origin_die->child;
11315   while (origin_child_die && origin_child_die->tag)
11316     {
11317       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
11318       while (offsetp < offsets_end
11319              && offsetp->sect_off < origin_child_die->offset.sect_off)
11320         offsetp++;
11321       if (offsetp >= offsets_end
11322           || offsetp->sect_off > origin_child_die->offset.sect_off)
11323         {
11324           /* Found that ORIGIN_CHILD_DIE is really not referenced.
11325              Check whether we're already processing ORIGIN_CHILD_DIE.
11326              This can happen with mutually referenced abstract_origins.
11327              PR 16581.  */
11328           if (!origin_child_die->in_process)
11329             process_die (origin_child_die, origin_cu);
11330         }
11331       origin_child_die = sibling_die (origin_child_die);
11332     }
11333   origin_cu->list_in_scope = origin_previous_list_in_scope;
11334
11335   do_cleanups (cleanups);
11336 }
11337
11338 static void
11339 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
11340 {
11341   struct objfile *objfile = cu->objfile;
11342   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11343   struct context_stack *newobj;
11344   CORE_ADDR lowpc;
11345   CORE_ADDR highpc;
11346   struct die_info *child_die;
11347   struct attribute *attr, *call_line, *call_file;
11348   const char *name;
11349   CORE_ADDR baseaddr;
11350   struct block *block;
11351   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
11352   VEC (symbolp) *template_args = NULL;
11353   struct template_symbol *templ_func = NULL;
11354
11355   if (inlined_func)
11356     {
11357       /* If we do not have call site information, we can't show the
11358          caller of this inlined function.  That's too confusing, so
11359          only use the scope for local variables.  */
11360       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11361       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11362       if (call_line == NULL || call_file == NULL)
11363         {
11364           read_lexical_block_scope (die, cu);
11365           return;
11366         }
11367     }
11368
11369   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11370
11371   name = dwarf2_name (die, cu);
11372
11373   /* Ignore functions with missing or empty names.  These are actually
11374      illegal according to the DWARF standard.  */
11375   if (name == NULL)
11376     {
11377       complaint (&symfile_complaints,
11378                  _("missing name for subprogram DIE at %d"),
11379                  die->offset.sect_off);
11380       return;
11381     }
11382
11383   /* Ignore functions with missing or invalid low and high pc attributes.  */
11384   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
11385       <= PC_BOUNDS_INVALID)
11386     {
11387       attr = dwarf2_attr (die, DW_AT_external, cu);
11388       if (!attr || !DW_UNSND (attr))
11389         complaint (&symfile_complaints,
11390                    _("cannot get low and high bounds "
11391                      "for subprogram DIE at %d"),
11392                    die->offset.sect_off);
11393       return;
11394     }
11395
11396   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11397   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
11398
11399   /* If we have any template arguments, then we must allocate a
11400      different sort of symbol.  */
11401   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11402     {
11403       if (child_die->tag == DW_TAG_template_type_param
11404           || child_die->tag == DW_TAG_template_value_param)
11405         {
11406           templ_func = allocate_template_symbol (objfile);
11407           templ_func->base.is_cplus_template_function = 1;
11408           break;
11409         }
11410     }
11411
11412   newobj = push_context (0, lowpc);
11413   newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
11414                                (struct symbol *) templ_func);
11415
11416   /* If there is a location expression for DW_AT_frame_base, record
11417      it.  */
11418   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11419   if (attr)
11420     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
11421
11422   /* If there is a location for the static link, record it.  */
11423   newobj->static_link = NULL;
11424   attr = dwarf2_attr (die, DW_AT_static_link, cu);
11425   if (attr)
11426     {
11427       newobj->static_link
11428         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
11429       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
11430     }
11431
11432   cu->list_in_scope = &local_symbols;
11433
11434   if (die->child != NULL)
11435     {
11436       child_die = die->child;
11437       while (child_die && child_die->tag)
11438         {
11439           if (child_die->tag == DW_TAG_template_type_param
11440               || child_die->tag == DW_TAG_template_value_param)
11441             {
11442               struct symbol *arg = new_symbol (child_die, NULL, cu);
11443
11444               if (arg != NULL)
11445                 VEC_safe_push (symbolp, template_args, arg);
11446             }
11447           else
11448             process_die (child_die, cu);
11449           child_die = sibling_die (child_die);
11450         }
11451     }
11452
11453   inherit_abstract_dies (die, cu);
11454
11455   /* If we have a DW_AT_specification, we might need to import using
11456      directives from the context of the specification DIE.  See the
11457      comment in determine_prefix.  */
11458   if (cu->language == language_cplus
11459       && dwarf2_attr (die, DW_AT_specification, cu))
11460     {
11461       struct dwarf2_cu *spec_cu = cu;
11462       struct die_info *spec_die = die_specification (die, &spec_cu);
11463
11464       while (spec_die)
11465         {
11466           child_die = spec_die->child;
11467           while (child_die && child_die->tag)
11468             {
11469               if (child_die->tag == DW_TAG_imported_module)
11470                 process_die (child_die, spec_cu);
11471               child_die = sibling_die (child_die);
11472             }
11473
11474           /* In some cases, GCC generates specification DIEs that
11475              themselves contain DW_AT_specification attributes.  */
11476           spec_die = die_specification (spec_die, &spec_cu);
11477         }
11478     }
11479
11480   newobj = pop_context ();
11481   /* Make a block for the local symbols within.  */
11482   block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
11483                         newobj->static_link, lowpc, highpc);
11484
11485   /* For C++, set the block's scope.  */
11486   if ((cu->language == language_cplus
11487        || cu->language == language_fortran
11488        || cu->language == language_d
11489        || cu->language == language_rust)
11490       && cu->processing_has_namespace_info)
11491     block_set_scope (block, determine_prefix (die, cu),
11492                      &objfile->objfile_obstack);
11493
11494   /* If we have address ranges, record them.  */
11495   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11496
11497   gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
11498
11499   /* Attach template arguments to function.  */
11500   if (! VEC_empty (symbolp, template_args))
11501     {
11502       gdb_assert (templ_func != NULL);
11503
11504       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11505       templ_func->template_arguments
11506         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
11507                      templ_func->n_template_arguments);
11508       memcpy (templ_func->template_arguments,
11509               VEC_address (symbolp, template_args),
11510               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11511       VEC_free (symbolp, template_args);
11512     }
11513
11514   /* In C++, we can have functions nested inside functions (e.g., when
11515      a function declares a class that has methods).  This means that
11516      when we finish processing a function scope, we may need to go
11517      back to building a containing block's symbol lists.  */
11518   local_symbols = newobj->locals;
11519   local_using_directives = newobj->local_using_directives;
11520
11521   /* If we've finished processing a top-level function, subsequent
11522      symbols go in the file symbol list.  */
11523   if (outermost_context_p ())
11524     cu->list_in_scope = &file_symbols;
11525 }
11526
11527 /* Process all the DIES contained within a lexical block scope.  Start
11528    a new scope, process the dies, and then close the scope.  */
11529
11530 static void
11531 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11532 {
11533   struct objfile *objfile = cu->objfile;
11534   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11535   struct context_stack *newobj;
11536   CORE_ADDR lowpc, highpc;
11537   struct die_info *child_die;
11538   CORE_ADDR baseaddr;
11539
11540   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11541
11542   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11543   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11544      as multiple lexical blocks?  Handling children in a sane way would
11545      be nasty.  Might be easier to properly extend generic blocks to
11546      describe ranges.  */
11547   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11548     {
11549     case PC_BOUNDS_NOT_PRESENT:
11550       /* DW_TAG_lexical_block has no attributes, process its children as if
11551          there was no wrapping by that DW_TAG_lexical_block.
11552          GCC does no longer produces such DWARF since GCC r224161.  */
11553       for (child_die = die->child;
11554            child_die != NULL && child_die->tag;
11555            child_die = sibling_die (child_die))
11556         process_die (child_die, cu);
11557       return;
11558     case PC_BOUNDS_INVALID:
11559       return;
11560     }
11561   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11562   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
11563
11564   push_context (0, lowpc);
11565   if (die->child != NULL)
11566     {
11567       child_die = die->child;
11568       while (child_die && child_die->tag)
11569         {
11570           process_die (child_die, cu);
11571           child_die = sibling_die (child_die);
11572         }
11573     }
11574   inherit_abstract_dies (die, cu);
11575   newobj = pop_context ();
11576
11577   if (local_symbols != NULL || local_using_directives != NULL)
11578     {
11579       struct block *block
11580         = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
11581                         newobj->start_addr, highpc);
11582
11583       /* Note that recording ranges after traversing children, as we
11584          do here, means that recording a parent's ranges entails
11585          walking across all its children's ranges as they appear in
11586          the address map, which is quadratic behavior.
11587
11588          It would be nicer to record the parent's ranges before
11589          traversing its children, simply overriding whatever you find
11590          there.  But since we don't even decide whether to create a
11591          block until after we've traversed its children, that's hard
11592          to do.  */
11593       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11594     }
11595   local_symbols = newobj->locals;
11596   local_using_directives = newobj->local_using_directives;
11597 }
11598
11599 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
11600
11601 static void
11602 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11603 {
11604   struct objfile *objfile = cu->objfile;
11605   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11606   CORE_ADDR pc, baseaddr;
11607   struct attribute *attr;
11608   struct call_site *call_site, call_site_local;
11609   void **slot;
11610   int nparams;
11611   struct die_info *child_die;
11612
11613   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11614
11615   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11616   if (!attr)
11617     {
11618       complaint (&symfile_complaints,
11619                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11620                    "DIE 0x%x [in module %s]"),
11621                  die->offset.sect_off, objfile_name (objfile));
11622       return;
11623     }
11624   pc = attr_value_as_address (attr) + baseaddr;
11625   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
11626
11627   if (cu->call_site_htab == NULL)
11628     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11629                                                NULL, &objfile->objfile_obstack,
11630                                                hashtab_obstack_allocate, NULL);
11631   call_site_local.pc = pc;
11632   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11633   if (*slot != NULL)
11634     {
11635       complaint (&symfile_complaints,
11636                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
11637                    "DIE 0x%x [in module %s]"),
11638                  paddress (gdbarch, pc), die->offset.sect_off,
11639                  objfile_name (objfile));
11640       return;
11641     }
11642
11643   /* Count parameters at the caller.  */
11644
11645   nparams = 0;
11646   for (child_die = die->child; child_die && child_die->tag;
11647        child_die = sibling_die (child_die))
11648     {
11649       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11650         {
11651           complaint (&symfile_complaints,
11652                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11653                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11654                      child_die->tag, child_die->offset.sect_off,
11655                      objfile_name (objfile));
11656           continue;
11657         }
11658
11659       nparams++;
11660     }
11661
11662   call_site
11663     = ((struct call_site *)
11664        obstack_alloc (&objfile->objfile_obstack,
11665                       sizeof (*call_site)
11666                       + (sizeof (*call_site->parameter) * (nparams - 1))));
11667   *slot = call_site;
11668   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11669   call_site->pc = pc;
11670
11671   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11672     {
11673       struct die_info *func_die;
11674
11675       /* Skip also over DW_TAG_inlined_subroutine.  */
11676       for (func_die = die->parent;
11677            func_die && func_die->tag != DW_TAG_subprogram
11678            && func_die->tag != DW_TAG_subroutine_type;
11679            func_die = func_die->parent);
11680
11681       /* DW_AT_GNU_all_call_sites is a superset
11682          of DW_AT_GNU_all_tail_call_sites.  */
11683       if (func_die
11684           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11685           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11686         {
11687           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11688              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11689              both the initial caller containing the real return address PC and
11690              the final callee containing the current PC of a chain of tail
11691              calls do not need to have the tail call list complete.  But any
11692              function candidate for a virtual tail call frame searched via
11693              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11694              determined unambiguously.  */
11695         }
11696       else
11697         {
11698           struct type *func_type = NULL;
11699
11700           if (func_die)
11701             func_type = get_die_type (func_die, cu);
11702           if (func_type != NULL)
11703             {
11704               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11705
11706               /* Enlist this call site to the function.  */
11707               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11708               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11709             }
11710           else
11711             complaint (&symfile_complaints,
11712                        _("Cannot find function owning DW_TAG_GNU_call_site "
11713                          "DIE 0x%x [in module %s]"),
11714                        die->offset.sect_off, objfile_name (objfile));
11715         }
11716     }
11717
11718   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11719   if (attr == NULL)
11720     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11721   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11722   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11723     /* Keep NULL DWARF_BLOCK.  */;
11724   else if (attr_form_is_block (attr))
11725     {
11726       struct dwarf2_locexpr_baton *dlbaton;
11727
11728       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
11729       dlbaton->data = DW_BLOCK (attr)->data;
11730       dlbaton->size = DW_BLOCK (attr)->size;
11731       dlbaton->per_cu = cu->per_cu;
11732
11733       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11734     }
11735   else if (attr_form_is_ref (attr))
11736     {
11737       struct dwarf2_cu *target_cu = cu;
11738       struct die_info *target_die;
11739
11740       target_die = follow_die_ref (die, attr, &target_cu);
11741       gdb_assert (target_cu->objfile == objfile);
11742       if (die_is_declaration (target_die, target_cu))
11743         {
11744           const char *target_physname;
11745
11746           /* Prefer the mangled name; otherwise compute the demangled one.  */
11747           target_physname = dwarf2_string_attr (target_die,
11748                                                 DW_AT_linkage_name,
11749                                                 target_cu);
11750           if (target_physname == NULL)
11751             target_physname = dwarf2_string_attr (target_die,
11752                                                  DW_AT_MIPS_linkage_name,
11753                                                  target_cu);
11754           if (target_physname == NULL)
11755             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11756           if (target_physname == NULL)
11757             complaint (&symfile_complaints,
11758                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11759                          "physname, for referencing DIE 0x%x [in module %s]"),
11760                        die->offset.sect_off, objfile_name (objfile));
11761           else
11762             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11763         }
11764       else
11765         {
11766           CORE_ADDR lowpc;
11767
11768           /* DW_AT_entry_pc should be preferred.  */
11769           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
11770               <= PC_BOUNDS_INVALID)
11771             complaint (&symfile_complaints,
11772                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11773                          "low pc, for referencing DIE 0x%x [in module %s]"),
11774                        die->offset.sect_off, objfile_name (objfile));
11775           else
11776             {
11777               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11778               SET_FIELD_PHYSADDR (call_site->target, lowpc);
11779             }
11780         }
11781     }
11782   else
11783     complaint (&symfile_complaints,
11784                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11785                  "block nor reference, for DIE 0x%x [in module %s]"),
11786                die->offset.sect_off, objfile_name (objfile));
11787
11788   call_site->per_cu = cu->per_cu;
11789
11790   for (child_die = die->child;
11791        child_die && child_die->tag;
11792        child_die = sibling_die (child_die))
11793     {
11794       struct call_site_parameter *parameter;
11795       struct attribute *loc, *origin;
11796
11797       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11798         {
11799           /* Already printed the complaint above.  */
11800           continue;
11801         }
11802
11803       gdb_assert (call_site->parameter_count < nparams);
11804       parameter = &call_site->parameter[call_site->parameter_count];
11805
11806       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11807          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11808          register is contained in DW_AT_GNU_call_site_value.  */
11809
11810       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11811       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11812       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11813         {
11814           sect_offset offset;
11815
11816           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11817           offset = dwarf2_get_ref_die_offset (origin);
11818           if (!offset_in_cu_p (&cu->header, offset))
11819             {
11820               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11821                  binding can be done only inside one CU.  Such referenced DIE
11822                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11823               complaint (&symfile_complaints,
11824                          _("DW_AT_abstract_origin offset is not in CU for "
11825                            "DW_TAG_GNU_call_site child DIE 0x%x "
11826                            "[in module %s]"),
11827                          child_die->offset.sect_off, objfile_name (objfile));
11828               continue;
11829             }
11830           parameter->u.param_offset.cu_off = (offset.sect_off
11831                                               - cu->header.offset.sect_off);
11832         }
11833       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11834         {
11835           complaint (&symfile_complaints,
11836                      _("No DW_FORM_block* DW_AT_location for "
11837                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11838                      child_die->offset.sect_off, objfile_name (objfile));
11839           continue;
11840         }
11841       else
11842         {
11843           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11844             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11845           if (parameter->u.dwarf_reg != -1)
11846             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11847           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11848                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11849                                              &parameter->u.fb_offset))
11850             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11851           else
11852             {
11853               complaint (&symfile_complaints,
11854                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11855                            "for DW_FORM_block* DW_AT_location is supported for "
11856                            "DW_TAG_GNU_call_site child DIE 0x%x "
11857                            "[in module %s]"),
11858                          child_die->offset.sect_off, objfile_name (objfile));
11859               continue;
11860             }
11861         }
11862
11863       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11864       if (!attr_form_is_block (attr))
11865         {
11866           complaint (&symfile_complaints,
11867                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11868                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11869                      child_die->offset.sect_off, objfile_name (objfile));
11870           continue;
11871         }
11872       parameter->value = DW_BLOCK (attr)->data;
11873       parameter->value_size = DW_BLOCK (attr)->size;
11874
11875       /* Parameters are not pre-cleared by memset above.  */
11876       parameter->data_value = NULL;
11877       parameter->data_value_size = 0;
11878       call_site->parameter_count++;
11879
11880       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11881       if (attr)
11882         {
11883           if (!attr_form_is_block (attr))
11884             complaint (&symfile_complaints,
11885                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11886                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11887                        child_die->offset.sect_off, objfile_name (objfile));
11888           else
11889             {
11890               parameter->data_value = DW_BLOCK (attr)->data;
11891               parameter->data_value_size = DW_BLOCK (attr)->size;
11892             }
11893         }
11894     }
11895 }
11896
11897 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
11898    Return 1 if the attributes are present and valid, otherwise, return 0.
11899    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
11900
11901 static int
11902 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
11903                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
11904                     struct partial_symtab *ranges_pst)
11905 {
11906   struct objfile *objfile = cu->objfile;
11907   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11908   struct comp_unit_head *cu_header = &cu->header;
11909   bfd *obfd = objfile->obfd;
11910   unsigned int addr_size = cu_header->addr_size;
11911   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11912   /* Base address selection entry.  */
11913   CORE_ADDR base;
11914   int found_base;
11915   unsigned int dummy;
11916   const gdb_byte *buffer;
11917   int low_set;
11918   CORE_ADDR low = 0;
11919   CORE_ADDR high = 0;
11920   CORE_ADDR baseaddr;
11921
11922   found_base = cu->base_known;
11923   base = cu->base_address;
11924
11925   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11926   if (offset >= dwarf2_per_objfile->ranges.size)
11927     {
11928       complaint (&symfile_complaints,
11929                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
11930                  offset);
11931       return 0;
11932     }
11933   buffer = dwarf2_per_objfile->ranges.buffer + offset;
11934
11935   low_set = 0;
11936
11937   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11938
11939   while (1)
11940     {
11941       CORE_ADDR range_beginning, range_end;
11942
11943       range_beginning = read_address (obfd, buffer, cu, &dummy);
11944       buffer += addr_size;
11945       range_end = read_address (obfd, buffer, cu, &dummy);
11946       buffer += addr_size;
11947       offset += 2 * addr_size;
11948
11949       /* An end of list marker is a pair of zero addresses.  */
11950       if (range_beginning == 0 && range_end == 0)
11951         /* Found the end of list entry.  */
11952         break;
11953
11954       /* Each base address selection entry is a pair of 2 values.
11955          The first is the largest possible address, the second is
11956          the base address.  Check for a base address here.  */
11957       if ((range_beginning & mask) == mask)
11958         {
11959           /* If we found the largest possible address, then we already
11960              have the base address in range_end.  */
11961           base = range_end;
11962           found_base = 1;
11963           continue;
11964         }
11965
11966       if (!found_base)
11967         {
11968           /* We have no valid base address for the ranges
11969              data.  */
11970           complaint (&symfile_complaints,
11971                      _("Invalid .debug_ranges data (no base address)"));
11972           return 0;
11973         }
11974
11975       if (range_beginning > range_end)
11976         {
11977           /* Inverted range entries are invalid.  */
11978           complaint (&symfile_complaints,
11979                      _("Invalid .debug_ranges data (inverted range)"));
11980           return 0;
11981         }
11982
11983       /* Empty range entries have no effect.  */
11984       if (range_beginning == range_end)
11985         continue;
11986
11987       range_beginning += base;
11988       range_end += base;
11989
11990       /* A not-uncommon case of bad debug info.
11991          Don't pollute the addrmap with bad data.  */
11992       if (range_beginning + baseaddr == 0
11993           && !dwarf2_per_objfile->has_section_at_zero)
11994         {
11995           complaint (&symfile_complaints,
11996                      _(".debug_ranges entry has start address of zero"
11997                        " [in module %s]"), objfile_name (objfile));
11998           continue;
11999         }
12000
12001       if (ranges_pst != NULL)
12002         {
12003           CORE_ADDR lowpc;
12004           CORE_ADDR highpc;
12005
12006           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
12007                                               range_beginning + baseaddr);
12008           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
12009                                                range_end + baseaddr);
12010           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
12011                              ranges_pst);
12012         }
12013
12014       /* FIXME: This is recording everything as a low-high
12015          segment of consecutive addresses.  We should have a
12016          data structure for discontiguous block ranges
12017          instead.  */
12018       if (! low_set)
12019         {
12020           low = range_beginning;
12021           high = range_end;
12022           low_set = 1;
12023         }
12024       else
12025         {
12026           if (range_beginning < low)
12027             low = range_beginning;
12028           if (range_end > high)
12029             high = range_end;
12030         }
12031     }
12032
12033   if (! low_set)
12034     /* If the first entry is an end-of-list marker, the range
12035        describes an empty scope, i.e. no instructions.  */
12036     return 0;
12037
12038   if (low_return)
12039     *low_return = low;
12040   if (high_return)
12041     *high_return = high;
12042   return 1;
12043 }
12044
12045 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
12046    definition for the return value.  *LOWPC and *HIGHPC are set iff
12047    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
12048
12049 static enum pc_bounds_kind
12050 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
12051                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
12052                       struct partial_symtab *pst)
12053 {
12054   struct attribute *attr;
12055   struct attribute *attr_high;
12056   CORE_ADDR low = 0;
12057   CORE_ADDR high = 0;
12058   enum pc_bounds_kind ret;
12059
12060   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12061   if (attr_high)
12062     {
12063       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12064       if (attr)
12065         {
12066           low = attr_value_as_address (attr);
12067           high = attr_value_as_address (attr_high);
12068           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12069             high += low;
12070         }
12071       else
12072         /* Found high w/o low attribute.  */
12073         return PC_BOUNDS_INVALID;
12074
12075       /* Found consecutive range of addresses.  */
12076       ret = PC_BOUNDS_HIGH_LOW;
12077     }
12078   else
12079     {
12080       attr = dwarf2_attr (die, DW_AT_ranges, cu);
12081       if (attr != NULL)
12082         {
12083           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12084              We take advantage of the fact that DW_AT_ranges does not appear
12085              in DW_TAG_compile_unit of DWO files.  */
12086           int need_ranges_base = die->tag != DW_TAG_compile_unit;
12087           unsigned int ranges_offset = (DW_UNSND (attr)
12088                                         + (need_ranges_base
12089                                            ? cu->ranges_base
12090                                            : 0));
12091
12092           /* Value of the DW_AT_ranges attribute is the offset in the
12093              .debug_ranges section.  */
12094           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
12095             return PC_BOUNDS_INVALID;
12096           /* Found discontinuous range of addresses.  */
12097           ret = PC_BOUNDS_RANGES;
12098         }
12099       else
12100         return PC_BOUNDS_NOT_PRESENT;
12101     }
12102
12103   /* read_partial_die has also the strict LOW < HIGH requirement.  */
12104   if (high <= low)
12105     return PC_BOUNDS_INVALID;
12106
12107   /* When using the GNU linker, .gnu.linkonce. sections are used to
12108      eliminate duplicate copies of functions and vtables and such.
12109      The linker will arbitrarily choose one and discard the others.
12110      The AT_*_pc values for such functions refer to local labels in
12111      these sections.  If the section from that file was discarded, the
12112      labels are not in the output, so the relocs get a value of 0.
12113      If this is a discarded function, mark the pc bounds as invalid,
12114      so that GDB will ignore it.  */
12115   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
12116     return PC_BOUNDS_INVALID;
12117
12118   *lowpc = low;
12119   if (highpc)
12120     *highpc = high;
12121   return ret;
12122 }
12123
12124 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
12125    its low and high PC addresses.  Do nothing if these addresses could not
12126    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
12127    and HIGHPC to the high address if greater than HIGHPC.  */
12128
12129 static void
12130 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12131                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
12132                                  struct dwarf2_cu *cu)
12133 {
12134   CORE_ADDR low, high;
12135   struct die_info *child = die->child;
12136
12137   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
12138     {
12139       *lowpc = std::min (*lowpc, low);
12140       *highpc = std::max (*highpc, high);
12141     }
12142
12143   /* If the language does not allow nested subprograms (either inside
12144      subprograms or lexical blocks), we're done.  */
12145   if (cu->language != language_ada)
12146     return;
12147
12148   /* Check all the children of the given DIE.  If it contains nested
12149      subprograms, then check their pc bounds.  Likewise, we need to
12150      check lexical blocks as well, as they may also contain subprogram
12151      definitions.  */
12152   while (child && child->tag)
12153     {
12154       if (child->tag == DW_TAG_subprogram
12155           || child->tag == DW_TAG_lexical_block)
12156         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12157       child = sibling_die (child);
12158     }
12159 }
12160
12161 /* Get the low and high pc's represented by the scope DIE, and store
12162    them in *LOWPC and *HIGHPC.  If the correct values can't be
12163    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
12164
12165 static void
12166 get_scope_pc_bounds (struct die_info *die,
12167                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
12168                      struct dwarf2_cu *cu)
12169 {
12170   CORE_ADDR best_low = (CORE_ADDR) -1;
12171   CORE_ADDR best_high = (CORE_ADDR) 0;
12172   CORE_ADDR current_low, current_high;
12173
12174   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
12175       >= PC_BOUNDS_RANGES)
12176     {
12177       best_low = current_low;
12178       best_high = current_high;
12179     }
12180   else
12181     {
12182       struct die_info *child = die->child;
12183
12184       while (child && child->tag)
12185         {
12186           switch (child->tag) {
12187           case DW_TAG_subprogram:
12188             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
12189             break;
12190           case DW_TAG_namespace:
12191           case DW_TAG_module:
12192             /* FIXME: carlton/2004-01-16: Should we do this for
12193                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
12194                that current GCC's always emit the DIEs corresponding
12195                to definitions of methods of classes as children of a
12196                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12197                the DIEs giving the declarations, which could be
12198                anywhere).  But I don't see any reason why the
12199                standards says that they have to be there.  */
12200             get_scope_pc_bounds (child, &current_low, &current_high, cu);
12201
12202             if (current_low != ((CORE_ADDR) -1))
12203               {
12204                 best_low = std::min (best_low, current_low);
12205                 best_high = std::max (best_high, current_high);
12206               }
12207             break;
12208           default:
12209             /* Ignore.  */
12210             break;
12211           }
12212
12213           child = sibling_die (child);
12214         }
12215     }
12216
12217   *lowpc = best_low;
12218   *highpc = best_high;
12219 }
12220
12221 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
12222    in DIE.  */
12223
12224 static void
12225 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12226                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12227 {
12228   struct objfile *objfile = cu->objfile;
12229   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12230   struct attribute *attr;
12231   struct attribute *attr_high;
12232
12233   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12234   if (attr_high)
12235     {
12236       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12237       if (attr)
12238         {
12239           CORE_ADDR low = attr_value_as_address (attr);
12240           CORE_ADDR high = attr_value_as_address (attr_high);
12241
12242           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12243             high += low;
12244
12245           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12246           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12247           record_block_range (block, low, high - 1);
12248         }
12249     }
12250
12251   attr = dwarf2_attr (die, DW_AT_ranges, cu);
12252   if (attr)
12253     {
12254       bfd *obfd = objfile->obfd;
12255       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12256          We take advantage of the fact that DW_AT_ranges does not appear
12257          in DW_TAG_compile_unit of DWO files.  */
12258       int need_ranges_base = die->tag != DW_TAG_compile_unit;
12259
12260       /* The value of the DW_AT_ranges attribute is the offset of the
12261          address range list in the .debug_ranges section.  */
12262       unsigned long offset = (DW_UNSND (attr)
12263                               + (need_ranges_base ? cu->ranges_base : 0));
12264       const gdb_byte *buffer;
12265
12266       /* For some target architectures, but not others, the
12267          read_address function sign-extends the addresses it returns.
12268          To recognize base address selection entries, we need a
12269          mask.  */
12270       unsigned int addr_size = cu->header.addr_size;
12271       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12272
12273       /* The base address, to which the next pair is relative.  Note
12274          that this 'base' is a DWARF concept: most entries in a range
12275          list are relative, to reduce the number of relocs against the
12276          debugging information.  This is separate from this function's
12277          'baseaddr' argument, which GDB uses to relocate debugging
12278          information from a shared library based on the address at
12279          which the library was loaded.  */
12280       CORE_ADDR base = cu->base_address;
12281       int base_known = cu->base_known;
12282
12283       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
12284       if (offset >= dwarf2_per_objfile->ranges.size)
12285         {
12286           complaint (&symfile_complaints,
12287                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12288                      offset);
12289           return;
12290         }
12291       buffer = dwarf2_per_objfile->ranges.buffer + offset;
12292
12293       for (;;)
12294         {
12295           unsigned int bytes_read;
12296           CORE_ADDR start, end;
12297
12298           start = read_address (obfd, buffer, cu, &bytes_read);
12299           buffer += bytes_read;
12300           end = read_address (obfd, buffer, cu, &bytes_read);
12301           buffer += bytes_read;
12302
12303           /* Did we find the end of the range list?  */
12304           if (start == 0 && end == 0)
12305             break;
12306
12307           /* Did we find a base address selection entry?  */
12308           else if ((start & base_select_mask) == base_select_mask)
12309             {
12310               base = end;
12311               base_known = 1;
12312             }
12313
12314           /* We found an ordinary address range.  */
12315           else
12316             {
12317               if (!base_known)
12318                 {
12319                   complaint (&symfile_complaints,
12320                              _("Invalid .debug_ranges data "
12321                                "(no base address)"));
12322                   return;
12323                 }
12324
12325               if (start > end)
12326                 {
12327                   /* Inverted range entries are invalid.  */
12328                   complaint (&symfile_complaints,
12329                              _("Invalid .debug_ranges data "
12330                                "(inverted range)"));
12331                   return;
12332                 }
12333
12334               /* Empty range entries have no effect.  */
12335               if (start == end)
12336                 continue;
12337
12338               start += base + baseaddr;
12339               end += base + baseaddr;
12340
12341               /* A not-uncommon case of bad debug info.
12342                  Don't pollute the addrmap with bad data.  */
12343               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12344                 {
12345                   complaint (&symfile_complaints,
12346                              _(".debug_ranges entry has start address of zero"
12347                                " [in module %s]"), objfile_name (objfile));
12348                   continue;
12349                 }
12350
12351               start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12352               end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
12353               record_block_range (block, start, end - 1);
12354             }
12355         }
12356     }
12357 }
12358
12359 /* Check whether the producer field indicates either of GCC < 4.6, or the
12360    Intel C/C++ compiler, and cache the result in CU.  */
12361
12362 static void
12363 check_producer (struct dwarf2_cu *cu)
12364 {
12365   int major, minor;
12366
12367   if (cu->producer == NULL)
12368     {
12369       /* For unknown compilers expect their behavior is DWARF version
12370          compliant.
12371
12372          GCC started to support .debug_types sections by -gdwarf-4 since
12373          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
12374          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12375          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12376          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
12377     }
12378   else if (producer_is_gcc (cu->producer, &major, &minor))
12379     {
12380       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12381       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
12382     }
12383   else if (startswith (cu->producer, "Intel(R) C"))
12384     cu->producer_is_icc = 1;
12385   else
12386     {
12387       /* For other non-GCC compilers, expect their behavior is DWARF version
12388          compliant.  */
12389     }
12390
12391   cu->checked_producer = 1;
12392 }
12393
12394 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12395    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12396    during 4.6.0 experimental.  */
12397
12398 static int
12399 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12400 {
12401   if (!cu->checked_producer)
12402     check_producer (cu);
12403
12404   return cu->producer_is_gxx_lt_4_6;
12405 }
12406
12407 /* Return the default accessibility type if it is not overriden by
12408    DW_AT_accessibility.  */
12409
12410 static enum dwarf_access_attribute
12411 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12412 {
12413   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12414     {
12415       /* The default DWARF 2 accessibility for members is public, the default
12416          accessibility for inheritance is private.  */
12417
12418       if (die->tag != DW_TAG_inheritance)
12419         return DW_ACCESS_public;
12420       else
12421         return DW_ACCESS_private;
12422     }
12423   else
12424     {
12425       /* DWARF 3+ defines the default accessibility a different way.  The same
12426          rules apply now for DW_TAG_inheritance as for the members and it only
12427          depends on the container kind.  */
12428
12429       if (die->parent->tag == DW_TAG_class_type)
12430         return DW_ACCESS_private;
12431       else
12432         return DW_ACCESS_public;
12433     }
12434 }
12435
12436 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12437    offset.  If the attribute was not found return 0, otherwise return
12438    1.  If it was found but could not properly be handled, set *OFFSET
12439    to 0.  */
12440
12441 static int
12442 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12443                              LONGEST *offset)
12444 {
12445   struct attribute *attr;
12446
12447   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12448   if (attr != NULL)
12449     {
12450       *offset = 0;
12451
12452       /* Note that we do not check for a section offset first here.
12453          This is because DW_AT_data_member_location is new in DWARF 4,
12454          so if we see it, we can assume that a constant form is really
12455          a constant and not a section offset.  */
12456       if (attr_form_is_constant (attr))
12457         *offset = dwarf2_get_attr_constant_value (attr, 0);
12458       else if (attr_form_is_section_offset (attr))
12459         dwarf2_complex_location_expr_complaint ();
12460       else if (attr_form_is_block (attr))
12461         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12462       else
12463         dwarf2_complex_location_expr_complaint ();
12464
12465       return 1;
12466     }
12467
12468   return 0;
12469 }
12470
12471 /* Add an aggregate field to the field list.  */
12472
12473 static void
12474 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12475                   struct dwarf2_cu *cu)
12476 {
12477   struct objfile *objfile = cu->objfile;
12478   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12479   struct nextfield *new_field;
12480   struct attribute *attr;
12481   struct field *fp;
12482   const char *fieldname = "";
12483
12484   /* Allocate a new field list entry and link it in.  */
12485   new_field = XNEW (struct nextfield);
12486   make_cleanup (xfree, new_field);
12487   memset (new_field, 0, sizeof (struct nextfield));
12488
12489   if (die->tag == DW_TAG_inheritance)
12490     {
12491       new_field->next = fip->baseclasses;
12492       fip->baseclasses = new_field;
12493     }
12494   else
12495     {
12496       new_field->next = fip->fields;
12497       fip->fields = new_field;
12498     }
12499   fip->nfields++;
12500
12501   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12502   if (attr)
12503     new_field->accessibility = DW_UNSND (attr);
12504   else
12505     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12506   if (new_field->accessibility != DW_ACCESS_public)
12507     fip->non_public_fields = 1;
12508
12509   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12510   if (attr)
12511     new_field->virtuality = DW_UNSND (attr);
12512   else
12513     new_field->virtuality = DW_VIRTUALITY_none;
12514
12515   fp = &new_field->field;
12516
12517   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12518     {
12519       LONGEST offset;
12520
12521       /* Data member other than a C++ static data member.  */
12522
12523       /* Get type of field.  */
12524       fp->type = die_type (die, cu);
12525
12526       SET_FIELD_BITPOS (*fp, 0);
12527
12528       /* Get bit size of field (zero if none).  */
12529       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12530       if (attr)
12531         {
12532           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12533         }
12534       else
12535         {
12536           FIELD_BITSIZE (*fp) = 0;
12537         }
12538
12539       /* Get bit offset of field.  */
12540       if (handle_data_member_location (die, cu, &offset))
12541         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12542       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12543       if (attr)
12544         {
12545           if (gdbarch_bits_big_endian (gdbarch))
12546             {
12547               /* For big endian bits, the DW_AT_bit_offset gives the
12548                  additional bit offset from the MSB of the containing
12549                  anonymous object to the MSB of the field.  We don't
12550                  have to do anything special since we don't need to
12551                  know the size of the anonymous object.  */
12552               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12553             }
12554           else
12555             {
12556               /* For little endian bits, compute the bit offset to the
12557                  MSB of the anonymous object, subtract off the number of
12558                  bits from the MSB of the field to the MSB of the
12559                  object, and then subtract off the number of bits of
12560                  the field itself.  The result is the bit offset of
12561                  the LSB of the field.  */
12562               int anonymous_size;
12563               int bit_offset = DW_UNSND (attr);
12564
12565               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12566               if (attr)
12567                 {
12568                   /* The size of the anonymous object containing
12569                      the bit field is explicit, so use the
12570                      indicated size (in bytes).  */
12571                   anonymous_size = DW_UNSND (attr);
12572                 }
12573               else
12574                 {
12575                   /* The size of the anonymous object containing
12576                      the bit field must be inferred from the type
12577                      attribute of the data member containing the
12578                      bit field.  */
12579                   anonymous_size = TYPE_LENGTH (fp->type);
12580                 }
12581               SET_FIELD_BITPOS (*fp,
12582                                 (FIELD_BITPOS (*fp)
12583                                  + anonymous_size * bits_per_byte
12584                                  - bit_offset - FIELD_BITSIZE (*fp)));
12585             }
12586         }
12587
12588       /* Get name of field.  */
12589       fieldname = dwarf2_name (die, cu);
12590       if (fieldname == NULL)
12591         fieldname = "";
12592
12593       /* The name is already allocated along with this objfile, so we don't
12594          need to duplicate it for the type.  */
12595       fp->name = fieldname;
12596
12597       /* Change accessibility for artificial fields (e.g. virtual table
12598          pointer or virtual base class pointer) to private.  */
12599       if (dwarf2_attr (die, DW_AT_artificial, cu))
12600         {
12601           FIELD_ARTIFICIAL (*fp) = 1;
12602           new_field->accessibility = DW_ACCESS_private;
12603           fip->non_public_fields = 1;
12604         }
12605     }
12606   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12607     {
12608       /* C++ static member.  */
12609
12610       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12611          is a declaration, but all versions of G++ as of this writing
12612          (so through at least 3.2.1) incorrectly generate
12613          DW_TAG_variable tags.  */
12614
12615       const char *physname;
12616
12617       /* Get name of field.  */
12618       fieldname = dwarf2_name (die, cu);
12619       if (fieldname == NULL)
12620         return;
12621
12622       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12623       if (attr
12624           /* Only create a symbol if this is an external value.
12625              new_symbol checks this and puts the value in the global symbol
12626              table, which we want.  If it is not external, new_symbol
12627              will try to put the value in cu->list_in_scope which is wrong.  */
12628           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12629         {
12630           /* A static const member, not much different than an enum as far as
12631              we're concerned, except that we can support more types.  */
12632           new_symbol (die, NULL, cu);
12633         }
12634
12635       /* Get physical name.  */
12636       physname = dwarf2_physname (fieldname, die, cu);
12637
12638       /* The name is already allocated along with this objfile, so we don't
12639          need to duplicate it for the type.  */
12640       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12641       FIELD_TYPE (*fp) = die_type (die, cu);
12642       FIELD_NAME (*fp) = fieldname;
12643     }
12644   else if (die->tag == DW_TAG_inheritance)
12645     {
12646       LONGEST offset;
12647
12648       /* C++ base class field.  */
12649       if (handle_data_member_location (die, cu, &offset))
12650         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12651       FIELD_BITSIZE (*fp) = 0;
12652       FIELD_TYPE (*fp) = die_type (die, cu);
12653       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12654       fip->nbaseclasses++;
12655     }
12656 }
12657
12658 /* Add a typedef defined in the scope of the FIP's class.  */
12659
12660 static void
12661 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12662                     struct dwarf2_cu *cu)
12663 {
12664   struct typedef_field_list *new_field;
12665   struct typedef_field *fp;
12666
12667   /* Allocate a new field list entry and link it in.  */
12668   new_field = XCNEW (struct typedef_field_list);
12669   make_cleanup (xfree, new_field);
12670
12671   gdb_assert (die->tag == DW_TAG_typedef);
12672
12673   fp = &new_field->field;
12674
12675   /* Get name of field.  */
12676   fp->name = dwarf2_name (die, cu);
12677   if (fp->name == NULL)
12678     return;
12679
12680   fp->type = read_type_die (die, cu);
12681
12682   new_field->next = fip->typedef_field_list;
12683   fip->typedef_field_list = new_field;
12684   fip->typedef_field_list_count++;
12685 }
12686
12687 /* Create the vector of fields, and attach it to the type.  */
12688
12689 static void
12690 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12691                               struct dwarf2_cu *cu)
12692 {
12693   int nfields = fip->nfields;
12694
12695   /* Record the field count, allocate space for the array of fields,
12696      and create blank accessibility bitfields if necessary.  */
12697   TYPE_NFIELDS (type) = nfields;
12698   TYPE_FIELDS (type) = (struct field *)
12699     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12700   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12701
12702   if (fip->non_public_fields && cu->language != language_ada)
12703     {
12704       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12705
12706       TYPE_FIELD_PRIVATE_BITS (type) =
12707         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12708       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12709
12710       TYPE_FIELD_PROTECTED_BITS (type) =
12711         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12712       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12713
12714       TYPE_FIELD_IGNORE_BITS (type) =
12715         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12716       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12717     }
12718
12719   /* If the type has baseclasses, allocate and clear a bit vector for
12720      TYPE_FIELD_VIRTUAL_BITS.  */
12721   if (fip->nbaseclasses && cu->language != language_ada)
12722     {
12723       int num_bytes = B_BYTES (fip->nbaseclasses);
12724       unsigned char *pointer;
12725
12726       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12727       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
12728       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12729       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12730       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12731     }
12732
12733   /* Copy the saved-up fields into the field vector.  Start from the head of
12734      the list, adding to the tail of the field array, so that they end up in
12735      the same order in the array in which they were added to the list.  */
12736   while (nfields-- > 0)
12737     {
12738       struct nextfield *fieldp;
12739
12740       if (fip->fields)
12741         {
12742           fieldp = fip->fields;
12743           fip->fields = fieldp->next;
12744         }
12745       else
12746         {
12747           fieldp = fip->baseclasses;
12748           fip->baseclasses = fieldp->next;
12749         }
12750
12751       TYPE_FIELD (type, nfields) = fieldp->field;
12752       switch (fieldp->accessibility)
12753         {
12754         case DW_ACCESS_private:
12755           if (cu->language != language_ada)
12756             SET_TYPE_FIELD_PRIVATE (type, nfields);
12757           break;
12758
12759         case DW_ACCESS_protected:
12760           if (cu->language != language_ada)
12761             SET_TYPE_FIELD_PROTECTED (type, nfields);
12762           break;
12763
12764         case DW_ACCESS_public:
12765           break;
12766
12767         default:
12768           /* Unknown accessibility.  Complain and treat it as public.  */
12769           {
12770             complaint (&symfile_complaints, _("unsupported accessibility %d"),
12771                        fieldp->accessibility);
12772           }
12773           break;
12774         }
12775       if (nfields < fip->nbaseclasses)
12776         {
12777           switch (fieldp->virtuality)
12778             {
12779             case DW_VIRTUALITY_virtual:
12780             case DW_VIRTUALITY_pure_virtual:
12781               if (cu->language == language_ada)
12782                 error (_("unexpected virtuality in component of Ada type"));
12783               SET_TYPE_FIELD_VIRTUAL (type, nfields);
12784               break;
12785             }
12786         }
12787     }
12788 }
12789
12790 /* Return true if this member function is a constructor, false
12791    otherwise.  */
12792
12793 static int
12794 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12795 {
12796   const char *fieldname;
12797   const char *type_name;
12798   int len;
12799
12800   if (die->parent == NULL)
12801     return 0;
12802
12803   if (die->parent->tag != DW_TAG_structure_type
12804       && die->parent->tag != DW_TAG_union_type
12805       && die->parent->tag != DW_TAG_class_type)
12806     return 0;
12807
12808   fieldname = dwarf2_name (die, cu);
12809   type_name = dwarf2_name (die->parent, cu);
12810   if (fieldname == NULL || type_name == NULL)
12811     return 0;
12812
12813   len = strlen (fieldname);
12814   return (strncmp (fieldname, type_name, len) == 0
12815           && (type_name[len] == '\0' || type_name[len] == '<'));
12816 }
12817
12818 /* Add a member function to the proper fieldlist.  */
12819
12820 static void
12821 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
12822                       struct type *type, struct dwarf2_cu *cu)
12823 {
12824   struct objfile *objfile = cu->objfile;
12825   struct attribute *attr;
12826   struct fnfieldlist *flp;
12827   int i;
12828   struct fn_field *fnp;
12829   const char *fieldname;
12830   struct nextfnfield *new_fnfield;
12831   struct type *this_type;
12832   enum dwarf_access_attribute accessibility;
12833
12834   if (cu->language == language_ada)
12835     error (_("unexpected member function in Ada type"));
12836
12837   /* Get name of member function.  */
12838   fieldname = dwarf2_name (die, cu);
12839   if (fieldname == NULL)
12840     return;
12841
12842   /* Look up member function name in fieldlist.  */
12843   for (i = 0; i < fip->nfnfields; i++)
12844     {
12845       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
12846         break;
12847     }
12848
12849   /* Create new list element if necessary.  */
12850   if (i < fip->nfnfields)
12851     flp = &fip->fnfieldlists[i];
12852   else
12853     {
12854       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12855         {
12856           fip->fnfieldlists = (struct fnfieldlist *)
12857             xrealloc (fip->fnfieldlists,
12858                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
12859                       * sizeof (struct fnfieldlist));
12860           if (fip->nfnfields == 0)
12861             make_cleanup (free_current_contents, &fip->fnfieldlists);
12862         }
12863       flp = &fip->fnfieldlists[fip->nfnfields];
12864       flp->name = fieldname;
12865       flp->length = 0;
12866       flp->head = NULL;
12867       i = fip->nfnfields++;
12868     }
12869
12870   /* Create a new member function field and chain it to the field list
12871      entry.  */
12872   new_fnfield = XNEW (struct nextfnfield);
12873   make_cleanup (xfree, new_fnfield);
12874   memset (new_fnfield, 0, sizeof (struct nextfnfield));
12875   new_fnfield->next = flp->head;
12876   flp->head = new_fnfield;
12877   flp->length++;
12878
12879   /* Fill in the member function field info.  */
12880   fnp = &new_fnfield->fnfield;
12881
12882   /* Delay processing of the physname until later.  */
12883   if (cu->language == language_cplus)
12884     {
12885       add_to_method_list (type, i, flp->length - 1, fieldname,
12886                           die, cu);
12887     }
12888   else
12889     {
12890       const char *physname = dwarf2_physname (fieldname, die, cu);
12891       fnp->physname = physname ? physname : "";
12892     }
12893
12894   fnp->type = alloc_type (objfile);
12895   this_type = read_type_die (die, cu);
12896   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
12897     {
12898       int nparams = TYPE_NFIELDS (this_type);
12899
12900       /* TYPE is the domain of this method, and THIS_TYPE is the type
12901            of the method itself (TYPE_CODE_METHOD).  */
12902       smash_to_method_type (fnp->type, type,
12903                             TYPE_TARGET_TYPE (this_type),
12904                             TYPE_FIELDS (this_type),
12905                             TYPE_NFIELDS (this_type),
12906                             TYPE_VARARGS (this_type));
12907
12908       /* Handle static member functions.
12909          Dwarf2 has no clean way to discern C++ static and non-static
12910          member functions.  G++ helps GDB by marking the first
12911          parameter for non-static member functions (which is the this
12912          pointer) as artificial.  We obtain this information from
12913          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
12914       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
12915         fnp->voffset = VOFFSET_STATIC;
12916     }
12917   else
12918     complaint (&symfile_complaints, _("member function type missing for '%s'"),
12919                dwarf2_full_name (fieldname, die, cu));
12920
12921   /* Get fcontext from DW_AT_containing_type if present.  */
12922   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12923     fnp->fcontext = die_containing_type (die, cu);
12924
12925   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12926      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
12927
12928   /* Get accessibility.  */
12929   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12930   if (attr)
12931     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
12932   else
12933     accessibility = dwarf2_default_access_attribute (die, cu);
12934   switch (accessibility)
12935     {
12936     case DW_ACCESS_private:
12937       fnp->is_private = 1;
12938       break;
12939     case DW_ACCESS_protected:
12940       fnp->is_protected = 1;
12941       break;
12942     }
12943
12944   /* Check for artificial methods.  */
12945   attr = dwarf2_attr (die, DW_AT_artificial, cu);
12946   if (attr && DW_UNSND (attr) != 0)
12947     fnp->is_artificial = 1;
12948
12949   fnp->is_constructor = dwarf2_is_constructor (die, cu);
12950
12951   /* Get index in virtual function table if it is a virtual member
12952      function.  For older versions of GCC, this is an offset in the
12953      appropriate virtual table, as specified by DW_AT_containing_type.
12954      For everyone else, it is an expression to be evaluated relative
12955      to the object address.  */
12956
12957   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
12958   if (attr)
12959     {
12960       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
12961         {
12962           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12963             {
12964               /* Old-style GCC.  */
12965               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12966             }
12967           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12968                    || (DW_BLOCK (attr)->size > 1
12969                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12970                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12971             {
12972               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12973               if ((fnp->voffset % cu->header.addr_size) != 0)
12974                 dwarf2_complex_location_expr_complaint ();
12975               else
12976                 fnp->voffset /= cu->header.addr_size;
12977               fnp->voffset += 2;
12978             }
12979           else
12980             dwarf2_complex_location_expr_complaint ();
12981
12982           if (!fnp->fcontext)
12983             {
12984               /* If there is no `this' field and no DW_AT_containing_type,
12985                  we cannot actually find a base class context for the
12986                  vtable!  */
12987               if (TYPE_NFIELDS (this_type) == 0
12988                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12989                 {
12990                   complaint (&symfile_complaints,
12991                              _("cannot determine context for virtual member "
12992                                "function \"%s\" (offset %d)"),
12993                              fieldname, die->offset.sect_off);
12994                 }
12995               else
12996                 {
12997                   fnp->fcontext
12998                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12999                 }
13000             }
13001         }
13002       else if (attr_form_is_section_offset (attr))
13003         {
13004           dwarf2_complex_location_expr_complaint ();
13005         }
13006       else
13007         {
13008           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
13009                                                  fieldname);
13010         }
13011     }
13012   else
13013     {
13014       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
13015       if (attr && DW_UNSND (attr))
13016         {
13017           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
13018           complaint (&symfile_complaints,
13019                      _("Member function \"%s\" (offset %d) is virtual "
13020                        "but the vtable offset is not specified"),
13021                      fieldname, die->offset.sect_off);
13022           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13023           TYPE_CPLUS_DYNAMIC (type) = 1;
13024         }
13025     }
13026 }
13027
13028 /* Create the vector of member function fields, and attach it to the type.  */
13029
13030 static void
13031 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
13032                                  struct dwarf2_cu *cu)
13033 {
13034   struct fnfieldlist *flp;
13035   int i;
13036
13037   if (cu->language == language_ada)
13038     error (_("unexpected member functions in Ada type"));
13039
13040   ALLOCATE_CPLUS_STRUCT_TYPE (type);
13041   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13042     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13043
13044   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13045     {
13046       struct nextfnfield *nfp = flp->head;
13047       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13048       int k;
13049
13050       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13051       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13052       fn_flp->fn_fields = (struct fn_field *)
13053         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13054       for (k = flp->length; (k--, nfp); nfp = nfp->next)
13055         fn_flp->fn_fields[k] = nfp->fnfield;
13056     }
13057
13058   TYPE_NFN_FIELDS (type) = fip->nfnfields;
13059 }
13060
13061 /* Returns non-zero if NAME is the name of a vtable member in CU's
13062    language, zero otherwise.  */
13063 static int
13064 is_vtable_name (const char *name, struct dwarf2_cu *cu)
13065 {
13066   static const char vptr[] = "_vptr";
13067   static const char vtable[] = "vtable";
13068
13069   /* Look for the C++ form of the vtable.  */
13070   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
13071     return 1;
13072
13073   return 0;
13074 }
13075
13076 /* GCC outputs unnamed structures that are really pointers to member
13077    functions, with the ABI-specified layout.  If TYPE describes
13078    such a structure, smash it into a member function type.
13079
13080    GCC shouldn't do this; it should just output pointer to member DIEs.
13081    This is GCC PR debug/28767.  */
13082
13083 static void
13084 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
13085 {
13086   struct type *pfn_type, *self_type, *new_type;
13087
13088   /* Check for a structure with no name and two children.  */
13089   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13090     return;
13091
13092   /* Check for __pfn and __delta members.  */
13093   if (TYPE_FIELD_NAME (type, 0) == NULL
13094       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13095       || TYPE_FIELD_NAME (type, 1) == NULL
13096       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13097     return;
13098
13099   /* Find the type of the method.  */
13100   pfn_type = TYPE_FIELD_TYPE (type, 0);
13101   if (pfn_type == NULL
13102       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13103       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
13104     return;
13105
13106   /* Look for the "this" argument.  */
13107   pfn_type = TYPE_TARGET_TYPE (pfn_type);
13108   if (TYPE_NFIELDS (pfn_type) == 0
13109       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
13110       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
13111     return;
13112
13113   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
13114   new_type = alloc_type (objfile);
13115   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
13116                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13117                         TYPE_VARARGS (pfn_type));
13118   smash_to_methodptr_type (type, new_type);
13119 }
13120
13121 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13122    (icc).  */
13123
13124 static int
13125 producer_is_icc (struct dwarf2_cu *cu)
13126 {
13127   if (!cu->checked_producer)
13128     check_producer (cu);
13129
13130   return cu->producer_is_icc;
13131 }
13132
13133 /* Called when we find the DIE that starts a structure or union scope
13134    (definition) to create a type for the structure or union.  Fill in
13135    the type's name and general properties; the members will not be
13136    processed until process_structure_scope.  A symbol table entry for
13137    the type will also not be done until process_structure_scope (assuming
13138    the type has a name).
13139
13140    NOTE: we need to call these functions regardless of whether or not the
13141    DIE has a DW_AT_name attribute, since it might be an anonymous
13142    structure or union.  This gets the type entered into our set of
13143    user defined types.  */
13144
13145 static struct type *
13146 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
13147 {
13148   struct objfile *objfile = cu->objfile;
13149   struct type *type;
13150   struct attribute *attr;
13151   const char *name;
13152
13153   /* If the definition of this type lives in .debug_types, read that type.
13154      Don't follow DW_AT_specification though, that will take us back up
13155      the chain and we want to go down.  */
13156   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13157   if (attr)
13158     {
13159       type = get_DW_AT_signature_type (die, attr, cu);
13160
13161       /* The type's CU may not be the same as CU.
13162          Ensure TYPE is recorded with CU in die_type_hash.  */
13163       return set_die_type (die, type, cu);
13164     }
13165
13166   type = alloc_type (objfile);
13167   INIT_CPLUS_SPECIFIC (type);
13168
13169   name = dwarf2_name (die, cu);
13170   if (name != NULL)
13171     {
13172       if (cu->language == language_cplus
13173           || cu->language == language_d
13174           || cu->language == language_rust)
13175         {
13176           const char *full_name = dwarf2_full_name (name, die, cu);
13177
13178           /* dwarf2_full_name might have already finished building the DIE's
13179              type.  If so, there is no need to continue.  */
13180           if (get_die_type (die, cu) != NULL)
13181             return get_die_type (die, cu);
13182
13183           TYPE_TAG_NAME (type) = full_name;
13184           if (die->tag == DW_TAG_structure_type
13185               || die->tag == DW_TAG_class_type)
13186             TYPE_NAME (type) = TYPE_TAG_NAME (type);
13187         }
13188       else
13189         {
13190           /* The name is already allocated along with this objfile, so
13191              we don't need to duplicate it for the type.  */
13192           TYPE_TAG_NAME (type) = name;
13193           if (die->tag == DW_TAG_class_type)
13194             TYPE_NAME (type) = TYPE_TAG_NAME (type);
13195         }
13196     }
13197
13198   if (die->tag == DW_TAG_structure_type)
13199     {
13200       TYPE_CODE (type) = TYPE_CODE_STRUCT;
13201     }
13202   else if (die->tag == DW_TAG_union_type)
13203     {
13204       TYPE_CODE (type) = TYPE_CODE_UNION;
13205     }
13206   else
13207     {
13208       TYPE_CODE (type) = TYPE_CODE_STRUCT;
13209     }
13210
13211   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13212     TYPE_DECLARED_CLASS (type) = 1;
13213
13214   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13215   if (attr)
13216     {
13217       if (attr_form_is_constant (attr))
13218         TYPE_LENGTH (type) = DW_UNSND (attr);
13219       else
13220         {
13221           /* For the moment, dynamic type sizes are not supported
13222              by GDB's struct type.  The actual size is determined
13223              on-demand when resolving the type of a given object,
13224              so set the type's length to zero for now.  Otherwise,
13225              we record an expression as the length, and that expression
13226              could lead to a very large value, which could eventually
13227              lead to us trying to allocate that much memory when creating
13228              a value of that type.  */
13229           TYPE_LENGTH (type) = 0;
13230         }
13231     }
13232   else
13233     {
13234       TYPE_LENGTH (type) = 0;
13235     }
13236
13237   if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
13238     {
13239       /* ICC does not output the required DW_AT_declaration
13240          on incomplete types, but gives them a size of zero.  */
13241       TYPE_STUB (type) = 1;
13242     }
13243   else
13244     TYPE_STUB_SUPPORTED (type) = 1;
13245
13246   if (die_is_declaration (die, cu))
13247     TYPE_STUB (type) = 1;
13248   else if (attr == NULL && die->child == NULL
13249            && producer_is_realview (cu->producer))
13250     /* RealView does not output the required DW_AT_declaration
13251        on incomplete types.  */
13252     TYPE_STUB (type) = 1;
13253
13254   /* We need to add the type field to the die immediately so we don't
13255      infinitely recurse when dealing with pointers to the structure
13256      type within the structure itself.  */
13257   set_die_type (die, type, cu);
13258
13259   /* set_die_type should be already done.  */
13260   set_descriptive_type (type, die, cu);
13261
13262   return type;
13263 }
13264
13265 /* Finish creating a structure or union type, including filling in
13266    its members and creating a symbol for it.  */
13267
13268 static void
13269 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13270 {
13271   struct objfile *objfile = cu->objfile;
13272   struct die_info *child_die;
13273   struct type *type;
13274
13275   type = get_die_type (die, cu);
13276   if (type == NULL)
13277     type = read_structure_type (die, cu);
13278
13279   if (die->child != NULL && ! die_is_declaration (die, cu))
13280     {
13281       struct field_info fi;
13282       VEC (symbolp) *template_args = NULL;
13283       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
13284
13285       memset (&fi, 0, sizeof (struct field_info));
13286
13287       child_die = die->child;
13288
13289       while (child_die && child_die->tag)
13290         {
13291           if (child_die->tag == DW_TAG_member
13292               || child_die->tag == DW_TAG_variable)
13293             {
13294               /* NOTE: carlton/2002-11-05: A C++ static data member
13295                  should be a DW_TAG_member that is a declaration, but
13296                  all versions of G++ as of this writing (so through at
13297                  least 3.2.1) incorrectly generate DW_TAG_variable
13298                  tags for them instead.  */
13299               dwarf2_add_field (&fi, child_die, cu);
13300             }
13301           else if (child_die->tag == DW_TAG_subprogram)
13302             {
13303               /* Rust doesn't have member functions in the C++ sense.
13304                  However, it does emit ordinary functions as children
13305                  of a struct DIE.  */
13306               if (cu->language == language_rust)
13307                 read_func_scope (child_die, cu);
13308               else
13309                 {
13310                   /* C++ member function.  */
13311                   dwarf2_add_member_fn (&fi, child_die, type, cu);
13312                 }
13313             }
13314           else if (child_die->tag == DW_TAG_inheritance)
13315             {
13316               /* C++ base class field.  */
13317               dwarf2_add_field (&fi, child_die, cu);
13318             }
13319           else if (child_die->tag == DW_TAG_typedef)
13320             dwarf2_add_typedef (&fi, child_die, cu);
13321           else if (child_die->tag == DW_TAG_template_type_param
13322                    || child_die->tag == DW_TAG_template_value_param)
13323             {
13324               struct symbol *arg = new_symbol (child_die, NULL, cu);
13325
13326               if (arg != NULL)
13327                 VEC_safe_push (symbolp, template_args, arg);
13328             }
13329
13330           child_die = sibling_die (child_die);
13331         }
13332
13333       /* Attach template arguments to type.  */
13334       if (! VEC_empty (symbolp, template_args))
13335         {
13336           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13337           TYPE_N_TEMPLATE_ARGUMENTS (type)
13338             = VEC_length (symbolp, template_args);
13339           TYPE_TEMPLATE_ARGUMENTS (type)
13340             = XOBNEWVEC (&objfile->objfile_obstack,
13341                          struct symbol *,
13342                          TYPE_N_TEMPLATE_ARGUMENTS (type));
13343           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13344                   VEC_address (symbolp, template_args),
13345                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
13346                    * sizeof (struct symbol *)));
13347           VEC_free (symbolp, template_args);
13348         }
13349
13350       /* Attach fields and member functions to the type.  */
13351       if (fi.nfields)
13352         dwarf2_attach_fields_to_type (&fi, type, cu);
13353       if (fi.nfnfields)
13354         {
13355           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
13356
13357           /* Get the type which refers to the base class (possibly this
13358              class itself) which contains the vtable pointer for the current
13359              class from the DW_AT_containing_type attribute.  This use of
13360              DW_AT_containing_type is a GNU extension.  */
13361
13362           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
13363             {
13364               struct type *t = die_containing_type (die, cu);
13365
13366               set_type_vptr_basetype (type, t);
13367               if (type == t)
13368                 {
13369                   int i;
13370
13371                   /* Our own class provides vtbl ptr.  */
13372                   for (i = TYPE_NFIELDS (t) - 1;
13373                        i >= TYPE_N_BASECLASSES (t);
13374                        --i)
13375                     {
13376                       const char *fieldname = TYPE_FIELD_NAME (t, i);
13377
13378                       if (is_vtable_name (fieldname, cu))
13379                         {
13380                           set_type_vptr_fieldno (type, i);
13381                           break;
13382                         }
13383                     }
13384
13385                   /* Complain if virtual function table field not found.  */
13386                   if (i < TYPE_N_BASECLASSES (t))
13387                     complaint (&symfile_complaints,
13388                                _("virtual function table pointer "
13389                                  "not found when defining class '%s'"),
13390                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13391                                "");
13392                 }
13393               else
13394                 {
13395                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
13396                 }
13397             }
13398           else if (cu->producer
13399                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
13400             {
13401               /* The IBM XLC compiler does not provide direct indication
13402                  of the containing type, but the vtable pointer is
13403                  always named __vfp.  */
13404
13405               int i;
13406
13407               for (i = TYPE_NFIELDS (type) - 1;
13408                    i >= TYPE_N_BASECLASSES (type);
13409                    --i)
13410                 {
13411                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13412                     {
13413                       set_type_vptr_fieldno (type, i);
13414                       set_type_vptr_basetype (type, type);
13415                       break;
13416                     }
13417                 }
13418             }
13419         }
13420
13421       /* Copy fi.typedef_field_list linked list elements content into the
13422          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
13423       if (fi.typedef_field_list)
13424         {
13425           int i = fi.typedef_field_list_count;
13426
13427           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13428           TYPE_TYPEDEF_FIELD_ARRAY (type)
13429             = ((struct typedef_field *)
13430                TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i));
13431           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13432
13433           /* Reverse the list order to keep the debug info elements order.  */
13434           while (--i >= 0)
13435             {
13436               struct typedef_field *dest, *src;
13437
13438               dest = &TYPE_TYPEDEF_FIELD (type, i);
13439               src = &fi.typedef_field_list->field;
13440               fi.typedef_field_list = fi.typedef_field_list->next;
13441               *dest = *src;
13442             }
13443         }
13444
13445       do_cleanups (back_to);
13446     }
13447
13448   quirk_gcc_member_function_pointer (type, objfile);
13449
13450   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13451      snapshots) has been known to create a die giving a declaration
13452      for a class that has, as a child, a die giving a definition for a
13453      nested class.  So we have to process our children even if the
13454      current die is a declaration.  Normally, of course, a declaration
13455      won't have any children at all.  */
13456
13457   child_die = die->child;
13458
13459   while (child_die != NULL && child_die->tag)
13460     {
13461       if (child_die->tag == DW_TAG_member
13462           || child_die->tag == DW_TAG_variable
13463           || child_die->tag == DW_TAG_inheritance
13464           || child_die->tag == DW_TAG_template_value_param
13465           || child_die->tag == DW_TAG_template_type_param)
13466         {
13467           /* Do nothing.  */
13468         }
13469       else
13470         process_die (child_die, cu);
13471
13472       child_die = sibling_die (child_die);
13473     }
13474
13475   /* Do not consider external references.  According to the DWARF standard,
13476      these DIEs are identified by the fact that they have no byte_size
13477      attribute, and a declaration attribute.  */
13478   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13479       || !die_is_declaration (die, cu))
13480     new_symbol (die, type, cu);
13481 }
13482
13483 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
13484    update TYPE using some information only available in DIE's children.  */
13485
13486 static void
13487 update_enumeration_type_from_children (struct die_info *die,
13488                                        struct type *type,
13489                                        struct dwarf2_cu *cu)
13490 {
13491   struct obstack obstack;
13492   struct die_info *child_die;
13493   int unsigned_enum = 1;
13494   int flag_enum = 1;
13495   ULONGEST mask = 0;
13496   struct cleanup *old_chain;
13497
13498   obstack_init (&obstack);
13499   old_chain = make_cleanup_obstack_free (&obstack);
13500
13501   for (child_die = die->child;
13502        child_die != NULL && child_die->tag;
13503        child_die = sibling_die (child_die))
13504     {
13505       struct attribute *attr;
13506       LONGEST value;
13507       const gdb_byte *bytes;
13508       struct dwarf2_locexpr_baton *baton;
13509       const char *name;
13510
13511       if (child_die->tag != DW_TAG_enumerator)
13512         continue;
13513
13514       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13515       if (attr == NULL)
13516         continue;
13517
13518       name = dwarf2_name (child_die, cu);
13519       if (name == NULL)
13520         name = "<anonymous enumerator>";
13521
13522       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13523                                &value, &bytes, &baton);
13524       if (value < 0)
13525         {
13526           unsigned_enum = 0;
13527           flag_enum = 0;
13528         }
13529       else if ((mask & value) != 0)
13530         flag_enum = 0;
13531       else
13532         mask |= value;
13533
13534       /* If we already know that the enum type is neither unsigned, nor
13535          a flag type, no need to look at the rest of the enumerates.  */
13536       if (!unsigned_enum && !flag_enum)
13537         break;
13538     }
13539
13540   if (unsigned_enum)
13541     TYPE_UNSIGNED (type) = 1;
13542   if (flag_enum)
13543     TYPE_FLAG_ENUM (type) = 1;
13544
13545   do_cleanups (old_chain);
13546 }
13547
13548 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13549    complete the type's fields yet, or create any symbols.  */
13550
13551 static struct type *
13552 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13553 {
13554   struct objfile *objfile = cu->objfile;
13555   struct type *type;
13556   struct attribute *attr;
13557   const char *name;
13558
13559   /* If the definition of this type lives in .debug_types, read that type.
13560      Don't follow DW_AT_specification though, that will take us back up
13561      the chain and we want to go down.  */
13562   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13563   if (attr)
13564     {
13565       type = get_DW_AT_signature_type (die, attr, cu);
13566
13567       /* The type's CU may not be the same as CU.
13568          Ensure TYPE is recorded with CU in die_type_hash.  */
13569       return set_die_type (die, type, cu);
13570     }
13571
13572   type = alloc_type (objfile);
13573
13574   TYPE_CODE (type) = TYPE_CODE_ENUM;
13575   name = dwarf2_full_name (NULL, die, cu);
13576   if (name != NULL)
13577     TYPE_TAG_NAME (type) = name;
13578
13579   attr = dwarf2_attr (die, DW_AT_type, cu);
13580   if (attr != NULL)
13581     {
13582       struct type *underlying_type = die_type (die, cu);
13583
13584       TYPE_TARGET_TYPE (type) = underlying_type;
13585     }
13586
13587   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13588   if (attr)
13589     {
13590       TYPE_LENGTH (type) = DW_UNSND (attr);
13591     }
13592   else
13593     {
13594       TYPE_LENGTH (type) = 0;
13595     }
13596
13597   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13598      declared as private in the package spec, and then defined only
13599      inside the package body.  Such types are known as Taft Amendment
13600      Types.  When another package uses such a type, an incomplete DIE
13601      may be generated by the compiler.  */
13602   if (die_is_declaration (die, cu))
13603     TYPE_STUB (type) = 1;
13604
13605   /* Finish the creation of this type by using the enum's children.
13606      We must call this even when the underlying type has been provided
13607      so that we can determine if we're looking at a "flag" enum.  */
13608   update_enumeration_type_from_children (die, type, cu);
13609
13610   /* If this type has an underlying type that is not a stub, then we
13611      may use its attributes.  We always use the "unsigned" attribute
13612      in this situation, because ordinarily we guess whether the type
13613      is unsigned -- but the guess can be wrong and the underlying type
13614      can tell us the reality.  However, we defer to a local size
13615      attribute if one exists, because this lets the compiler override
13616      the underlying type if needed.  */
13617   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13618     {
13619       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13620       if (TYPE_LENGTH (type) == 0)
13621         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13622     }
13623
13624   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13625
13626   return set_die_type (die, type, cu);
13627 }
13628
13629 /* Given a pointer to a die which begins an enumeration, process all
13630    the dies that define the members of the enumeration, and create the
13631    symbol for the enumeration type.
13632
13633    NOTE: We reverse the order of the element list.  */
13634
13635 static void
13636 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13637 {
13638   struct type *this_type;
13639
13640   this_type = get_die_type (die, cu);
13641   if (this_type == NULL)
13642     this_type = read_enumeration_type (die, cu);
13643
13644   if (die->child != NULL)
13645     {
13646       struct die_info *child_die;
13647       struct symbol *sym;
13648       struct field *fields = NULL;
13649       int num_fields = 0;
13650       const char *name;
13651
13652       child_die = die->child;
13653       while (child_die && child_die->tag)
13654         {
13655           if (child_die->tag != DW_TAG_enumerator)
13656             {
13657               process_die (child_die, cu);
13658             }
13659           else
13660             {
13661               name = dwarf2_name (child_die, cu);
13662               if (name)
13663                 {
13664                   sym = new_symbol (child_die, this_type, cu);
13665
13666                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13667                     {
13668                       fields = (struct field *)
13669                         xrealloc (fields,
13670                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13671                                   * sizeof (struct field));
13672                     }
13673
13674                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13675                   FIELD_TYPE (fields[num_fields]) = NULL;
13676                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13677                   FIELD_BITSIZE (fields[num_fields]) = 0;
13678
13679                   num_fields++;
13680                 }
13681             }
13682
13683           child_die = sibling_die (child_die);
13684         }
13685
13686       if (num_fields)
13687         {
13688           TYPE_NFIELDS (this_type) = num_fields;
13689           TYPE_FIELDS (this_type) = (struct field *)
13690             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13691           memcpy (TYPE_FIELDS (this_type), fields,
13692                   sizeof (struct field) * num_fields);
13693           xfree (fields);
13694         }
13695     }
13696
13697   /* If we are reading an enum from a .debug_types unit, and the enum
13698      is a declaration, and the enum is not the signatured type in the
13699      unit, then we do not want to add a symbol for it.  Adding a
13700      symbol would in some cases obscure the true definition of the
13701      enum, giving users an incomplete type when the definition is
13702      actually available.  Note that we do not want to do this for all
13703      enums which are just declarations, because C++0x allows forward
13704      enum declarations.  */
13705   if (cu->per_cu->is_debug_types
13706       && die_is_declaration (die, cu))
13707     {
13708       struct signatured_type *sig_type;
13709
13710       sig_type = (struct signatured_type *) cu->per_cu;
13711       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13712       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13713         return;
13714     }
13715
13716   new_symbol (die, this_type, cu);
13717 }
13718
13719 /* Extract all information from a DW_TAG_array_type DIE and put it in
13720    the DIE's type field.  For now, this only handles one dimensional
13721    arrays.  */
13722
13723 static struct type *
13724 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13725 {
13726   struct objfile *objfile = cu->objfile;
13727   struct die_info *child_die;
13728   struct type *type;
13729   struct type *element_type, *range_type, *index_type;
13730   struct type **range_types = NULL;
13731   struct attribute *attr;
13732   int ndim = 0;
13733   struct cleanup *back_to;
13734   const char *name;
13735   unsigned int bit_stride = 0;
13736
13737   element_type = die_type (die, cu);
13738
13739   /* The die_type call above may have already set the type for this DIE.  */
13740   type = get_die_type (die, cu);
13741   if (type)
13742     return type;
13743
13744   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13745   if (attr != NULL)
13746     bit_stride = DW_UNSND (attr) * 8;
13747
13748   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13749   if (attr != NULL)
13750     bit_stride = DW_UNSND (attr);
13751
13752   /* Irix 6.2 native cc creates array types without children for
13753      arrays with unspecified length.  */
13754   if (die->child == NULL)
13755     {
13756       index_type = objfile_type (objfile)->builtin_int;
13757       range_type = create_static_range_type (NULL, index_type, 0, -1);
13758       type = create_array_type_with_stride (NULL, element_type, range_type,
13759                                             bit_stride);
13760       return set_die_type (die, type, cu);
13761     }
13762
13763   back_to = make_cleanup (null_cleanup, NULL);
13764   child_die = die->child;
13765   while (child_die && child_die->tag)
13766     {
13767       if (child_die->tag == DW_TAG_subrange_type)
13768         {
13769           struct type *child_type = read_type_die (child_die, cu);
13770
13771           if (child_type != NULL)
13772             {
13773               /* The range type was succesfully read.  Save it for the
13774                  array type creation.  */
13775               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13776                 {
13777                   range_types = (struct type **)
13778                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13779                               * sizeof (struct type *));
13780                   if (ndim == 0)
13781                     make_cleanup (free_current_contents, &range_types);
13782                 }
13783               range_types[ndim++] = child_type;
13784             }
13785         }
13786       child_die = sibling_die (child_die);
13787     }
13788
13789   /* Dwarf2 dimensions are output from left to right, create the
13790      necessary array types in backwards order.  */
13791
13792   type = element_type;
13793
13794   if (read_array_order (die, cu) == DW_ORD_col_major)
13795     {
13796       int i = 0;
13797
13798       while (i < ndim)
13799         type = create_array_type_with_stride (NULL, type, range_types[i++],
13800                                               bit_stride);
13801     }
13802   else
13803     {
13804       while (ndim-- > 0)
13805         type = create_array_type_with_stride (NULL, type, range_types[ndim],
13806                                               bit_stride);
13807     }
13808
13809   /* Understand Dwarf2 support for vector types (like they occur on
13810      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
13811      array type.  This is not part of the Dwarf2/3 standard yet, but a
13812      custom vendor extension.  The main difference between a regular
13813      array and the vector variant is that vectors are passed by value
13814      to functions.  */
13815   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
13816   if (attr)
13817     make_vector_type (type);
13818
13819   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
13820      implementation may choose to implement triple vectors using this
13821      attribute.  */
13822   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13823   if (attr)
13824     {
13825       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13826         TYPE_LENGTH (type) = DW_UNSND (attr);
13827       else
13828         complaint (&symfile_complaints,
13829                    _("DW_AT_byte_size for array type smaller "
13830                      "than the total size of elements"));
13831     }
13832
13833   name = dwarf2_name (die, cu);
13834   if (name)
13835     TYPE_NAME (type) = name;
13836
13837   /* Install the type in the die.  */
13838   set_die_type (die, type, cu);
13839
13840   /* set_die_type should be already done.  */
13841   set_descriptive_type (type, die, cu);
13842
13843   do_cleanups (back_to);
13844
13845   return type;
13846 }
13847
13848 static enum dwarf_array_dim_ordering
13849 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
13850 {
13851   struct attribute *attr;
13852
13853   attr = dwarf2_attr (die, DW_AT_ordering, cu);
13854
13855   if (attr)
13856     return (enum dwarf_array_dim_ordering) DW_SND (attr);
13857
13858   /* GNU F77 is a special case, as at 08/2004 array type info is the
13859      opposite order to the dwarf2 specification, but data is still
13860      laid out as per normal fortran.
13861
13862      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13863      version checking.  */
13864
13865   if (cu->language == language_fortran
13866       && cu->producer && strstr (cu->producer, "GNU F77"))
13867     {
13868       return DW_ORD_row_major;
13869     }
13870
13871   switch (cu->language_defn->la_array_ordering)
13872     {
13873     case array_column_major:
13874       return DW_ORD_col_major;
13875     case array_row_major:
13876     default:
13877       return DW_ORD_row_major;
13878     };
13879 }
13880
13881 /* Extract all information from a DW_TAG_set_type DIE and put it in
13882    the DIE's type field.  */
13883
13884 static struct type *
13885 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13886 {
13887   struct type *domain_type, *set_type;
13888   struct attribute *attr;
13889
13890   domain_type = die_type (die, cu);
13891
13892   /* The die_type call above may have already set the type for this DIE.  */
13893   set_type = get_die_type (die, cu);
13894   if (set_type)
13895     return set_type;
13896
13897   set_type = create_set_type (NULL, domain_type);
13898
13899   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13900   if (attr)
13901     TYPE_LENGTH (set_type) = DW_UNSND (attr);
13902
13903   return set_die_type (die, set_type, cu);
13904 }
13905
13906 /* A helper for read_common_block that creates a locexpr baton.
13907    SYM is the symbol which we are marking as computed.
13908    COMMON_DIE is the DIE for the common block.
13909    COMMON_LOC is the location expression attribute for the common
13910    block itself.
13911    MEMBER_LOC is the location expression attribute for the particular
13912    member of the common block that we are processing.
13913    CU is the CU from which the above come.  */
13914
13915 static void
13916 mark_common_block_symbol_computed (struct symbol *sym,
13917                                    struct die_info *common_die,
13918                                    struct attribute *common_loc,
13919                                    struct attribute *member_loc,
13920                                    struct dwarf2_cu *cu)
13921 {
13922   struct objfile *objfile = dwarf2_per_objfile->objfile;
13923   struct dwarf2_locexpr_baton *baton;
13924   gdb_byte *ptr;
13925   unsigned int cu_off;
13926   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13927   LONGEST offset = 0;
13928
13929   gdb_assert (common_loc && member_loc);
13930   gdb_assert (attr_form_is_block (common_loc));
13931   gdb_assert (attr_form_is_block (member_loc)
13932               || attr_form_is_constant (member_loc));
13933
13934   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
13935   baton->per_cu = cu->per_cu;
13936   gdb_assert (baton->per_cu);
13937
13938   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13939
13940   if (attr_form_is_constant (member_loc))
13941     {
13942       offset = dwarf2_get_attr_constant_value (member_loc, 0);
13943       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13944     }
13945   else
13946     baton->size += DW_BLOCK (member_loc)->size;
13947
13948   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
13949   baton->data = ptr;
13950
13951   *ptr++ = DW_OP_call4;
13952   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13953   store_unsigned_integer (ptr, 4, byte_order, cu_off);
13954   ptr += 4;
13955
13956   if (attr_form_is_constant (member_loc))
13957     {
13958       *ptr++ = DW_OP_addr;
13959       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13960       ptr += cu->header.addr_size;
13961     }
13962   else
13963     {
13964       /* We have to copy the data here, because DW_OP_call4 will only
13965          use a DW_AT_location attribute.  */
13966       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13967       ptr += DW_BLOCK (member_loc)->size;
13968     }
13969
13970   *ptr++ = DW_OP_plus;
13971   gdb_assert (ptr - baton->data == baton->size);
13972
13973   SYMBOL_LOCATION_BATON (sym) = baton;
13974   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
13975 }
13976
13977 /* Create appropriate locally-scoped variables for all the
13978    DW_TAG_common_block entries.  Also create a struct common_block
13979    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
13980    is used to sepate the common blocks name namespace from regular
13981    variable names.  */
13982
13983 static void
13984 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
13985 {
13986   struct attribute *attr;
13987
13988   attr = dwarf2_attr (die, DW_AT_location, cu);
13989   if (attr)
13990     {
13991       /* Support the .debug_loc offsets.  */
13992       if (attr_form_is_block (attr))
13993         {
13994           /* Ok.  */
13995         }
13996       else if (attr_form_is_section_offset (attr))
13997         {
13998           dwarf2_complex_location_expr_complaint ();
13999           attr = NULL;
14000         }
14001       else
14002         {
14003           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14004                                                  "common block member");
14005           attr = NULL;
14006         }
14007     }
14008
14009   if (die->child != NULL)
14010     {
14011       struct objfile *objfile = cu->objfile;
14012       struct die_info *child_die;
14013       size_t n_entries = 0, size;
14014       struct common_block *common_block;
14015       struct symbol *sym;
14016
14017       for (child_die = die->child;
14018            child_die && child_die->tag;
14019            child_die = sibling_die (child_die))
14020         ++n_entries;
14021
14022       size = (sizeof (struct common_block)
14023               + (n_entries - 1) * sizeof (struct symbol *));
14024       common_block
14025         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
14026                                                  size);
14027       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
14028       common_block->n_entries = 0;
14029
14030       for (child_die = die->child;
14031            child_die && child_die->tag;
14032            child_die = sibling_die (child_die))
14033         {
14034           /* Create the symbol in the DW_TAG_common_block block in the current
14035              symbol scope.  */
14036           sym = new_symbol (child_die, NULL, cu);
14037           if (sym != NULL)
14038             {
14039               struct attribute *member_loc;
14040
14041               common_block->contents[common_block->n_entries++] = sym;
14042
14043               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
14044                                         cu);
14045               if (member_loc)
14046                 {
14047                   /* GDB has handled this for a long time, but it is
14048                      not specified by DWARF.  It seems to have been
14049                      emitted by gfortran at least as recently as:
14050                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
14051                   complaint (&symfile_complaints,
14052                              _("Variable in common block has "
14053                                "DW_AT_data_member_location "
14054                                "- DIE at 0x%x [in module %s]"),
14055                              child_die->offset.sect_off,
14056                              objfile_name (cu->objfile));
14057
14058                   if (attr_form_is_section_offset (member_loc))
14059                     dwarf2_complex_location_expr_complaint ();
14060                   else if (attr_form_is_constant (member_loc)
14061                            || attr_form_is_block (member_loc))
14062                     {
14063                       if (attr)
14064                         mark_common_block_symbol_computed (sym, die, attr,
14065                                                            member_loc, cu);
14066                     }
14067                   else
14068                     dwarf2_complex_location_expr_complaint ();
14069                 }
14070             }
14071         }
14072
14073       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14074       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
14075     }
14076 }
14077
14078 /* Create a type for a C++ namespace.  */
14079
14080 static struct type *
14081 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
14082 {
14083   struct objfile *objfile = cu->objfile;
14084   const char *previous_prefix, *name;
14085   int is_anonymous;
14086   struct type *type;
14087
14088   /* For extensions, reuse the type of the original namespace.  */
14089   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14090     {
14091       struct die_info *ext_die;
14092       struct dwarf2_cu *ext_cu = cu;
14093
14094       ext_die = dwarf2_extension (die, &ext_cu);
14095       type = read_type_die (ext_die, ext_cu);
14096
14097       /* EXT_CU may not be the same as CU.
14098          Ensure TYPE is recorded with CU in die_type_hash.  */
14099       return set_die_type (die, type, cu);
14100     }
14101
14102   name = namespace_name (die, &is_anonymous, cu);
14103
14104   /* Now build the name of the current namespace.  */
14105
14106   previous_prefix = determine_prefix (die, cu);
14107   if (previous_prefix[0] != '\0')
14108     name = typename_concat (&objfile->objfile_obstack,
14109                             previous_prefix, name, 0, cu);
14110
14111   /* Create the type.  */
14112   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
14113   TYPE_TAG_NAME (type) = TYPE_NAME (type);
14114
14115   return set_die_type (die, type, cu);
14116 }
14117
14118 /* Read a namespace scope.  */
14119
14120 static void
14121 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14122 {
14123   struct objfile *objfile = cu->objfile;
14124   int is_anonymous;
14125
14126   /* Add a symbol associated to this if we haven't seen the namespace
14127      before.  Also, add a using directive if it's an anonymous
14128      namespace.  */
14129
14130   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
14131     {
14132       struct type *type;
14133
14134       type = read_type_die (die, cu);
14135       new_symbol (die, type, cu);
14136
14137       namespace_name (die, &is_anonymous, cu);
14138       if (is_anonymous)
14139         {
14140           const char *previous_prefix = determine_prefix (die, cu);
14141
14142           add_using_directive (using_directives (cu->language),
14143                                previous_prefix, TYPE_NAME (type), NULL,
14144                                NULL, NULL, 0, &objfile->objfile_obstack);
14145         }
14146     }
14147
14148   if (die->child != NULL)
14149     {
14150       struct die_info *child_die = die->child;
14151
14152       while (child_die && child_die->tag)
14153         {
14154           process_die (child_die, cu);
14155           child_die = sibling_die (child_die);
14156         }
14157     }
14158 }
14159
14160 /* Read a Fortran module as type.  This DIE can be only a declaration used for
14161    imported module.  Still we need that type as local Fortran "use ... only"
14162    declaration imports depend on the created type in determine_prefix.  */
14163
14164 static struct type *
14165 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14166 {
14167   struct objfile *objfile = cu->objfile;
14168   const char *module_name;
14169   struct type *type;
14170
14171   module_name = dwarf2_name (die, cu);
14172   if (!module_name)
14173     complaint (&symfile_complaints,
14174                _("DW_TAG_module has no name, offset 0x%x"),
14175                die->offset.sect_off);
14176   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
14177
14178   /* determine_prefix uses TYPE_TAG_NAME.  */
14179   TYPE_TAG_NAME (type) = TYPE_NAME (type);
14180
14181   return set_die_type (die, type, cu);
14182 }
14183
14184 /* Read a Fortran module.  */
14185
14186 static void
14187 read_module (struct die_info *die, struct dwarf2_cu *cu)
14188 {
14189   struct die_info *child_die = die->child;
14190   struct type *type;
14191
14192   type = read_type_die (die, cu);
14193   new_symbol (die, type, cu);
14194
14195   while (child_die && child_die->tag)
14196     {
14197       process_die (child_die, cu);
14198       child_die = sibling_die (child_die);
14199     }
14200 }
14201
14202 /* Return the name of the namespace represented by DIE.  Set
14203    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14204    namespace.  */
14205
14206 static const char *
14207 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
14208 {
14209   struct die_info *current_die;
14210   const char *name = NULL;
14211
14212   /* Loop through the extensions until we find a name.  */
14213
14214   for (current_die = die;
14215        current_die != NULL;
14216        current_die = dwarf2_extension (die, &cu))
14217     {
14218       /* We don't use dwarf2_name here so that we can detect the absence
14219          of a name -> anonymous namespace.  */
14220       name = dwarf2_string_attr (die, DW_AT_name, cu);
14221
14222       if (name != NULL)
14223         break;
14224     }
14225
14226   /* Is it an anonymous namespace?  */
14227
14228   *is_anonymous = (name == NULL);
14229   if (*is_anonymous)
14230     name = CP_ANONYMOUS_NAMESPACE_STR;
14231
14232   return name;
14233 }
14234
14235 /* Extract all information from a DW_TAG_pointer_type DIE and add to
14236    the user defined type vector.  */
14237
14238 static struct type *
14239 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
14240 {
14241   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
14242   struct comp_unit_head *cu_header = &cu->header;
14243   struct type *type;
14244   struct attribute *attr_byte_size;
14245   struct attribute *attr_address_class;
14246   int byte_size, addr_class;
14247   struct type *target_type;
14248
14249   target_type = die_type (die, cu);
14250
14251   /* The die_type call above may have already set the type for this DIE.  */
14252   type = get_die_type (die, cu);
14253   if (type)
14254     return type;
14255
14256   type = lookup_pointer_type (target_type);
14257
14258   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
14259   if (attr_byte_size)
14260     byte_size = DW_UNSND (attr_byte_size);
14261   else
14262     byte_size = cu_header->addr_size;
14263
14264   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
14265   if (attr_address_class)
14266     addr_class = DW_UNSND (attr_address_class);
14267   else
14268     addr_class = DW_ADDR_none;
14269
14270   /* If the pointer size or address class is different than the
14271      default, create a type variant marked as such and set the
14272      length accordingly.  */
14273   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
14274     {
14275       if (gdbarch_address_class_type_flags_p (gdbarch))
14276         {
14277           int type_flags;
14278
14279           type_flags = gdbarch_address_class_type_flags
14280                          (gdbarch, byte_size, addr_class);
14281           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14282                       == 0);
14283           type = make_type_with_address_space (type, type_flags);
14284         }
14285       else if (TYPE_LENGTH (type) != byte_size)
14286         {
14287           complaint (&symfile_complaints,
14288                      _("invalid pointer size %d"), byte_size);
14289         }
14290       else
14291         {
14292           /* Should we also complain about unhandled address classes?  */
14293         }
14294     }
14295
14296   TYPE_LENGTH (type) = byte_size;
14297   return set_die_type (die, type, cu);
14298 }
14299
14300 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14301    the user defined type vector.  */
14302
14303 static struct type *
14304 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
14305 {
14306   struct type *type;
14307   struct type *to_type;
14308   struct type *domain;
14309
14310   to_type = die_type (die, cu);
14311   domain = die_containing_type (die, cu);
14312
14313   /* The calls above may have already set the type for this DIE.  */
14314   type = get_die_type (die, cu);
14315   if (type)
14316     return type;
14317
14318   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14319     type = lookup_methodptr_type (to_type);
14320   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14321     {
14322       struct type *new_type = alloc_type (cu->objfile);
14323
14324       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14325                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14326                             TYPE_VARARGS (to_type));
14327       type = lookup_methodptr_type (new_type);
14328     }
14329   else
14330     type = lookup_memberptr_type (to_type, domain);
14331
14332   return set_die_type (die, type, cu);
14333 }
14334
14335 /* Extract all information from a DW_TAG_reference_type DIE and add to
14336    the user defined type vector.  */
14337
14338 static struct type *
14339 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
14340 {
14341   struct comp_unit_head *cu_header = &cu->header;
14342   struct type *type, *target_type;
14343   struct attribute *attr;
14344
14345   target_type = die_type (die, cu);
14346
14347   /* The die_type call above may have already set the type for this DIE.  */
14348   type = get_die_type (die, cu);
14349   if (type)
14350     return type;
14351
14352   type = lookup_reference_type (target_type);
14353   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14354   if (attr)
14355     {
14356       TYPE_LENGTH (type) = DW_UNSND (attr);
14357     }
14358   else
14359     {
14360       TYPE_LENGTH (type) = cu_header->addr_size;
14361     }
14362   return set_die_type (die, type, cu);
14363 }
14364
14365 /* Add the given cv-qualifiers to the element type of the array.  GCC
14366    outputs DWARF type qualifiers that apply to an array, not the
14367    element type.  But GDB relies on the array element type to carry
14368    the cv-qualifiers.  This mimics section 6.7.3 of the C99
14369    specification.  */
14370
14371 static struct type *
14372 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14373                    struct type *base_type, int cnst, int voltl)
14374 {
14375   struct type *el_type, *inner_array;
14376
14377   base_type = copy_type (base_type);
14378   inner_array = base_type;
14379
14380   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14381     {
14382       TYPE_TARGET_TYPE (inner_array) =
14383         copy_type (TYPE_TARGET_TYPE (inner_array));
14384       inner_array = TYPE_TARGET_TYPE (inner_array);
14385     }
14386
14387   el_type = TYPE_TARGET_TYPE (inner_array);
14388   cnst |= TYPE_CONST (el_type);
14389   voltl |= TYPE_VOLATILE (el_type);
14390   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14391
14392   return set_die_type (die, base_type, cu);
14393 }
14394
14395 static struct type *
14396 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
14397 {
14398   struct type *base_type, *cv_type;
14399
14400   base_type = die_type (die, cu);
14401
14402   /* The die_type call above may have already set the type for this DIE.  */
14403   cv_type = get_die_type (die, cu);
14404   if (cv_type)
14405     return cv_type;
14406
14407   /* In case the const qualifier is applied to an array type, the element type
14408      is so qualified, not the array type (section 6.7.3 of C99).  */
14409   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14410     return add_array_cv_type (die, cu, base_type, 1, 0);
14411
14412   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14413   return set_die_type (die, cv_type, cu);
14414 }
14415
14416 static struct type *
14417 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
14418 {
14419   struct type *base_type, *cv_type;
14420
14421   base_type = die_type (die, cu);
14422
14423   /* The die_type call above may have already set the type for this DIE.  */
14424   cv_type = get_die_type (die, cu);
14425   if (cv_type)
14426     return cv_type;
14427
14428   /* In case the volatile qualifier is applied to an array type, the
14429      element type is so qualified, not the array type (section 6.7.3
14430      of C99).  */
14431   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14432     return add_array_cv_type (die, cu, base_type, 0, 1);
14433
14434   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14435   return set_die_type (die, cv_type, cu);
14436 }
14437
14438 /* Handle DW_TAG_restrict_type.  */
14439
14440 static struct type *
14441 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14442 {
14443   struct type *base_type, *cv_type;
14444
14445   base_type = die_type (die, cu);
14446
14447   /* The die_type call above may have already set the type for this DIE.  */
14448   cv_type = get_die_type (die, cu);
14449   if (cv_type)
14450     return cv_type;
14451
14452   cv_type = make_restrict_type (base_type);
14453   return set_die_type (die, cv_type, cu);
14454 }
14455
14456 /* Handle DW_TAG_atomic_type.  */
14457
14458 static struct type *
14459 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14460 {
14461   struct type *base_type, *cv_type;
14462
14463   base_type = die_type (die, cu);
14464
14465   /* The die_type call above may have already set the type for this DIE.  */
14466   cv_type = get_die_type (die, cu);
14467   if (cv_type)
14468     return cv_type;
14469
14470   cv_type = make_atomic_type (base_type);
14471   return set_die_type (die, cv_type, cu);
14472 }
14473
14474 /* Extract all information from a DW_TAG_string_type DIE and add to
14475    the user defined type vector.  It isn't really a user defined type,
14476    but it behaves like one, with other DIE's using an AT_user_def_type
14477    attribute to reference it.  */
14478
14479 static struct type *
14480 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
14481 {
14482   struct objfile *objfile = cu->objfile;
14483   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14484   struct type *type, *range_type, *index_type, *char_type;
14485   struct attribute *attr;
14486   unsigned int length;
14487
14488   attr = dwarf2_attr (die, DW_AT_string_length, cu);
14489   if (attr)
14490     {
14491       length = DW_UNSND (attr);
14492     }
14493   else
14494     {
14495       /* Check for the DW_AT_byte_size attribute.  */
14496       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14497       if (attr)
14498         {
14499           length = DW_UNSND (attr);
14500         }
14501       else
14502         {
14503           length = 1;
14504         }
14505     }
14506
14507   index_type = objfile_type (objfile)->builtin_int;
14508   range_type = create_static_range_type (NULL, index_type, 1, length);
14509   char_type = language_string_char_type (cu->language_defn, gdbarch);
14510   type = create_string_type (NULL, char_type, range_type);
14511
14512   return set_die_type (die, type, cu);
14513 }
14514
14515 /* Assuming that DIE corresponds to a function, returns nonzero
14516    if the function is prototyped.  */
14517
14518 static int
14519 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14520 {
14521   struct attribute *attr;
14522
14523   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14524   if (attr && (DW_UNSND (attr) != 0))
14525     return 1;
14526
14527   /* The DWARF standard implies that the DW_AT_prototyped attribute
14528      is only meaninful for C, but the concept also extends to other
14529      languages that allow unprototyped functions (Eg: Objective C).
14530      For all other languages, assume that functions are always
14531      prototyped.  */
14532   if (cu->language != language_c
14533       && cu->language != language_objc
14534       && cu->language != language_opencl)
14535     return 1;
14536
14537   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
14538      prototyped and unprototyped functions; default to prototyped,
14539      since that is more common in modern code (and RealView warns
14540      about unprototyped functions).  */
14541   if (producer_is_realview (cu->producer))
14542     return 1;
14543
14544   return 0;
14545 }
14546
14547 /* Handle DIES due to C code like:
14548
14549    struct foo
14550    {
14551    int (*funcp)(int a, long l);
14552    int b;
14553    };
14554
14555    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
14556
14557 static struct type *
14558 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
14559 {
14560   struct objfile *objfile = cu->objfile;
14561   struct type *type;            /* Type that this function returns.  */
14562   struct type *ftype;           /* Function that returns above type.  */
14563   struct attribute *attr;
14564
14565   type = die_type (die, cu);
14566
14567   /* The die_type call above may have already set the type for this DIE.  */
14568   ftype = get_die_type (die, cu);
14569   if (ftype)
14570     return ftype;
14571
14572   ftype = lookup_function_type (type);
14573
14574   if (prototyped_function_p (die, cu))
14575     TYPE_PROTOTYPED (ftype) = 1;
14576
14577   /* Store the calling convention in the type if it's available in
14578      the subroutine die.  Otherwise set the calling convention to
14579      the default value DW_CC_normal.  */
14580   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14581   if (attr)
14582     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14583   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14584     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14585   else
14586     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14587
14588   /* Record whether the function returns normally to its caller or not
14589      if the DWARF producer set that information.  */
14590   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14591   if (attr && (DW_UNSND (attr) != 0))
14592     TYPE_NO_RETURN (ftype) = 1;
14593
14594   /* We need to add the subroutine type to the die immediately so
14595      we don't infinitely recurse when dealing with parameters
14596      declared as the same subroutine type.  */
14597   set_die_type (die, ftype, cu);
14598
14599   if (die->child != NULL)
14600     {
14601       struct type *void_type = objfile_type (objfile)->builtin_void;
14602       struct die_info *child_die;
14603       int nparams, iparams;
14604
14605       /* Count the number of parameters.
14606          FIXME: GDB currently ignores vararg functions, but knows about
14607          vararg member functions.  */
14608       nparams = 0;
14609       child_die = die->child;
14610       while (child_die && child_die->tag)
14611         {
14612           if (child_die->tag == DW_TAG_formal_parameter)
14613             nparams++;
14614           else if (child_die->tag == DW_TAG_unspecified_parameters)
14615             TYPE_VARARGS (ftype) = 1;
14616           child_die = sibling_die (child_die);
14617         }
14618
14619       /* Allocate storage for parameters and fill them in.  */
14620       TYPE_NFIELDS (ftype) = nparams;
14621       TYPE_FIELDS (ftype) = (struct field *)
14622         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14623
14624       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14625          even if we error out during the parameters reading below.  */
14626       for (iparams = 0; iparams < nparams; iparams++)
14627         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14628
14629       iparams = 0;
14630       child_die = die->child;
14631       while (child_die && child_die->tag)
14632         {
14633           if (child_die->tag == DW_TAG_formal_parameter)
14634             {
14635               struct type *arg_type;
14636
14637               /* DWARF version 2 has no clean way to discern C++
14638                  static and non-static member functions.  G++ helps
14639                  GDB by marking the first parameter for non-static
14640                  member functions (which is the this pointer) as
14641                  artificial.  We pass this information to
14642                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14643
14644                  DWARF version 3 added DW_AT_object_pointer, which GCC
14645                  4.5 does not yet generate.  */
14646               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14647               if (attr)
14648                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14649               else
14650                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14651               arg_type = die_type (child_die, cu);
14652
14653               /* RealView does not mark THIS as const, which the testsuite
14654                  expects.  GCC marks THIS as const in method definitions,
14655                  but not in the class specifications (GCC PR 43053).  */
14656               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14657                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14658                 {
14659                   int is_this = 0;
14660                   struct dwarf2_cu *arg_cu = cu;
14661                   const char *name = dwarf2_name (child_die, cu);
14662
14663                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14664                   if (attr)
14665                     {
14666                       /* If the compiler emits this, use it.  */
14667                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14668                         is_this = 1;
14669                     }
14670                   else if (name && strcmp (name, "this") == 0)
14671                     /* Function definitions will have the argument names.  */
14672                     is_this = 1;
14673                   else if (name == NULL && iparams == 0)
14674                     /* Declarations may not have the names, so like
14675                        elsewhere in GDB, assume an artificial first
14676                        argument is "this".  */
14677                     is_this = 1;
14678
14679                   if (is_this)
14680                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14681                                              arg_type, 0);
14682                 }
14683
14684               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14685               iparams++;
14686             }
14687           child_die = sibling_die (child_die);
14688         }
14689     }
14690
14691   return ftype;
14692 }
14693
14694 static struct type *
14695 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14696 {
14697   struct objfile *objfile = cu->objfile;
14698   const char *name = NULL;
14699   struct type *this_type, *target_type;
14700
14701   name = dwarf2_full_name (NULL, die, cu);
14702   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
14703   TYPE_TARGET_STUB (this_type) = 1;
14704   set_die_type (die, this_type, cu);
14705   target_type = die_type (die, cu);
14706   if (target_type != this_type)
14707     TYPE_TARGET_TYPE (this_type) = target_type;
14708   else
14709     {
14710       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14711          spec and cause infinite loops in GDB.  */
14712       complaint (&symfile_complaints,
14713                  _("Self-referential DW_TAG_typedef "
14714                    "- DIE at 0x%x [in module %s]"),
14715                  die->offset.sect_off, objfile_name (objfile));
14716       TYPE_TARGET_TYPE (this_type) = NULL;
14717     }
14718   return this_type;
14719 }
14720
14721 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
14722    (which may be different from NAME) to the architecture back-end to allow
14723    it to guess the correct format if necessary.  */
14724
14725 static struct type *
14726 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
14727                         const char *name_hint)
14728 {
14729   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14730   const struct floatformat **format;
14731   struct type *type;
14732
14733   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
14734   if (format)
14735     type = init_float_type (objfile, bits, name, format);
14736   else
14737     type = init_type (objfile, TYPE_CODE_ERROR, bits / TARGET_CHAR_BIT, name);
14738
14739   return type;
14740 }
14741
14742 /* Find a representation of a given base type and install
14743    it in the TYPE field of the die.  */
14744
14745 static struct type *
14746 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14747 {
14748   struct objfile *objfile = cu->objfile;
14749   struct type *type;
14750   struct attribute *attr;
14751   int encoding = 0, bits = 0;
14752   const char *name;
14753
14754   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14755   if (attr)
14756     {
14757       encoding = DW_UNSND (attr);
14758     }
14759   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14760   if (attr)
14761     {
14762       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
14763     }
14764   name = dwarf2_name (die, cu);
14765   if (!name)
14766     {
14767       complaint (&symfile_complaints,
14768                  _("DW_AT_name missing from DW_TAG_base_type"));
14769     }
14770
14771   switch (encoding)
14772     {
14773       case DW_ATE_address:
14774         /* Turn DW_ATE_address into a void * pointer.  */
14775         type = init_type (objfile, TYPE_CODE_VOID, 1, NULL);
14776         type = init_pointer_type (objfile, bits, name, type);
14777         break;
14778       case DW_ATE_boolean:
14779         type = init_boolean_type (objfile, bits, 1, name);
14780         break;
14781       case DW_ATE_complex_float:
14782         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
14783         type = init_complex_type (objfile, name, type);
14784         break;
14785       case DW_ATE_decimal_float:
14786         type = init_decfloat_type (objfile, bits, name);
14787         break;
14788       case DW_ATE_float:
14789         type = dwarf2_init_float_type (objfile, bits, name, name);
14790         break;
14791       case DW_ATE_signed:
14792         type = init_integer_type (objfile, bits, 0, name);
14793         break;
14794       case DW_ATE_unsigned:
14795         if (cu->language == language_fortran
14796             && name
14797             && startswith (name, "character("))
14798           type = init_character_type (objfile, bits, 1, name);
14799         else
14800           type = init_integer_type (objfile, bits, 1, name);
14801         break;
14802       case DW_ATE_signed_char:
14803         if (cu->language == language_ada || cu->language == language_m2
14804             || cu->language == language_pascal
14805             || cu->language == language_fortran)
14806           type = init_character_type (objfile, bits, 0, name);
14807         else
14808           type = init_integer_type (objfile, bits, 0, name);
14809         break;
14810       case DW_ATE_unsigned_char:
14811         if (cu->language == language_ada || cu->language == language_m2
14812             || cu->language == language_pascal
14813             || cu->language == language_fortran
14814             || cu->language == language_rust)
14815           type = init_character_type (objfile, bits, 1, name);
14816         else
14817           type = init_integer_type (objfile, bits, 1, name);
14818         break;
14819       case DW_ATE_UTF:
14820         /* We just treat this as an integer and then recognize the
14821            type by name elsewhere.  */
14822         type = init_integer_type (objfile, bits, 0, name);
14823         break;
14824
14825       default:
14826         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14827                    dwarf_type_encoding_name (encoding));
14828         type = init_type (objfile, TYPE_CODE_ERROR,
14829                           bits / TARGET_CHAR_BIT, name);
14830         break;
14831     }
14832
14833   if (name && strcmp (name, "char") == 0)
14834     TYPE_NOSIGN (type) = 1;
14835
14836   return set_die_type (die, type, cu);
14837 }
14838
14839 /* Parse dwarf attribute if it's a block, reference or constant and put the
14840    resulting value of the attribute into struct bound_prop.
14841    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
14842
14843 static int
14844 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14845                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
14846 {
14847   struct dwarf2_property_baton *baton;
14848   struct obstack *obstack = &cu->objfile->objfile_obstack;
14849
14850   if (attr == NULL || prop == NULL)
14851     return 0;
14852
14853   if (attr_form_is_block (attr))
14854     {
14855       baton = XOBNEW (obstack, struct dwarf2_property_baton);
14856       baton->referenced_type = NULL;
14857       baton->locexpr.per_cu = cu->per_cu;
14858       baton->locexpr.size = DW_BLOCK (attr)->size;
14859       baton->locexpr.data = DW_BLOCK (attr)->data;
14860       prop->data.baton = baton;
14861       prop->kind = PROP_LOCEXPR;
14862       gdb_assert (prop->data.baton != NULL);
14863     }
14864   else if (attr_form_is_ref (attr))
14865     {
14866       struct dwarf2_cu *target_cu = cu;
14867       struct die_info *target_die;
14868       struct attribute *target_attr;
14869
14870       target_die = follow_die_ref (die, attr, &target_cu);
14871       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
14872       if (target_attr == NULL)
14873         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14874                                    target_cu);
14875       if (target_attr == NULL)
14876         return 0;
14877
14878       switch (target_attr->name)
14879         {
14880           case DW_AT_location:
14881             if (attr_form_is_section_offset (target_attr))
14882               {
14883                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
14884                 baton->referenced_type = die_type (target_die, target_cu);
14885                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14886                 prop->data.baton = baton;
14887                 prop->kind = PROP_LOCLIST;
14888                 gdb_assert (prop->data.baton != NULL);
14889               }
14890             else if (attr_form_is_block (target_attr))
14891               {
14892                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
14893                 baton->referenced_type = die_type (target_die, target_cu);
14894                 baton->locexpr.per_cu = cu->per_cu;
14895                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14896                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14897                 prop->data.baton = baton;
14898                 prop->kind = PROP_LOCEXPR;
14899                 gdb_assert (prop->data.baton != NULL);
14900               }
14901             else
14902               {
14903                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14904                                                        "dynamic property");
14905                 return 0;
14906               }
14907             break;
14908           case DW_AT_data_member_location:
14909             {
14910               LONGEST offset;
14911
14912               if (!handle_data_member_location (target_die, target_cu,
14913                                                 &offset))
14914                 return 0;
14915
14916               baton = XOBNEW (obstack, struct dwarf2_property_baton);
14917               baton->referenced_type = read_type_die (target_die->parent,
14918                                                       target_cu);
14919               baton->offset_info.offset = offset;
14920               baton->offset_info.type = die_type (target_die, target_cu);
14921               prop->data.baton = baton;
14922               prop->kind = PROP_ADDR_OFFSET;
14923               break;
14924             }
14925         }
14926     }
14927   else if (attr_form_is_constant (attr))
14928     {
14929       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14930       prop->kind = PROP_CONST;
14931     }
14932   else
14933     {
14934       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14935                                              dwarf2_name (die, cu));
14936       return 0;
14937     }
14938
14939   return 1;
14940 }
14941
14942 /* Read the given DW_AT_subrange DIE.  */
14943
14944 static struct type *
14945 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14946 {
14947   struct type *base_type, *orig_base_type;
14948   struct type *range_type;
14949   struct attribute *attr;
14950   struct dynamic_prop low, high;
14951   int low_default_is_valid;
14952   int high_bound_is_count = 0;
14953   const char *name;
14954   LONGEST negative_mask;
14955
14956   orig_base_type = die_type (die, cu);
14957   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14958      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
14959      creating the range type, but we use the result of check_typedef
14960      when examining properties of the type.  */
14961   base_type = check_typedef (orig_base_type);
14962
14963   /* The die_type call above may have already set the type for this DIE.  */
14964   range_type = get_die_type (die, cu);
14965   if (range_type)
14966     return range_type;
14967
14968   low.kind = PROP_CONST;
14969   high.kind = PROP_CONST;
14970   high.data.const_val = 0;
14971
14972   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14973      omitting DW_AT_lower_bound.  */
14974   switch (cu->language)
14975     {
14976     case language_c:
14977     case language_cplus:
14978       low.data.const_val = 0;
14979       low_default_is_valid = 1;
14980       break;
14981     case language_fortran:
14982       low.data.const_val = 1;
14983       low_default_is_valid = 1;
14984       break;
14985     case language_d:
14986     case language_objc:
14987     case language_rust:
14988       low.data.const_val = 0;
14989       low_default_is_valid = (cu->header.version >= 4);
14990       break;
14991     case language_ada:
14992     case language_m2:
14993     case language_pascal:
14994       low.data.const_val = 1;
14995       low_default_is_valid = (cu->header.version >= 4);
14996       break;
14997     default:
14998       low.data.const_val = 0;
14999       low_default_is_valid = 0;
15000       break;
15001     }
15002
15003   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
15004   if (attr)
15005     attr_to_dynamic_prop (attr, die, cu, &low);
15006   else if (!low_default_is_valid)
15007     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
15008                                       "- DIE at 0x%x [in module %s]"),
15009                die->offset.sect_off, objfile_name (cu->objfile));
15010
15011   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
15012   if (!attr_to_dynamic_prop (attr, die, cu, &high))
15013     {
15014       attr = dwarf2_attr (die, DW_AT_count, cu);
15015       if (attr_to_dynamic_prop (attr, die, cu, &high))
15016         {
15017           /* If bounds are constant do the final calculation here.  */
15018           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
15019             high.data.const_val = low.data.const_val + high.data.const_val - 1;
15020           else
15021             high_bound_is_count = 1;
15022         }
15023     }
15024
15025   /* Dwarf-2 specifications explicitly allows to create subrange types
15026      without specifying a base type.
15027      In that case, the base type must be set to the type of
15028      the lower bound, upper bound or count, in that order, if any of these
15029      three attributes references an object that has a type.
15030      If no base type is found, the Dwarf-2 specifications say that
15031      a signed integer type of size equal to the size of an address should
15032      be used.
15033      For the following C code: `extern char gdb_int [];'
15034      GCC produces an empty range DIE.
15035      FIXME: muller/2010-05-28: Possible references to object for low bound,
15036      high bound or count are not yet handled by this code.  */
15037   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
15038     {
15039       struct objfile *objfile = cu->objfile;
15040       struct gdbarch *gdbarch = get_objfile_arch (objfile);
15041       int addr_size = gdbarch_addr_bit (gdbarch) /8;
15042       struct type *int_type = objfile_type (objfile)->builtin_int;
15043
15044       /* Test "int", "long int", and "long long int" objfile types,
15045          and select the first one having a size above or equal to the
15046          architecture address size.  */
15047       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15048         base_type = int_type;
15049       else
15050         {
15051           int_type = objfile_type (objfile)->builtin_long;
15052           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15053             base_type = int_type;
15054           else
15055             {
15056               int_type = objfile_type (objfile)->builtin_long_long;
15057               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15058                 base_type = int_type;
15059             }
15060         }
15061     }
15062
15063   /* Normally, the DWARF producers are expected to use a signed
15064      constant form (Eg. DW_FORM_sdata) to express negative bounds.
15065      But this is unfortunately not always the case, as witnessed
15066      with GCC, for instance, where the ambiguous DW_FORM_dataN form
15067      is used instead.  To work around that ambiguity, we treat
15068      the bounds as signed, and thus sign-extend their values, when
15069      the base type is signed.  */
15070   negative_mask =
15071     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
15072   if (low.kind == PROP_CONST
15073       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15074     low.data.const_val |= negative_mask;
15075   if (high.kind == PROP_CONST
15076       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15077     high.data.const_val |= negative_mask;
15078
15079   range_type = create_range_type (NULL, orig_base_type, &low, &high);
15080
15081   if (high_bound_is_count)
15082     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15083
15084   /* Ada expects an empty array on no boundary attributes.  */
15085   if (attr == NULL && cu->language != language_ada)
15086     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
15087
15088   name = dwarf2_name (die, cu);
15089   if (name)
15090     TYPE_NAME (range_type) = name;
15091
15092   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15093   if (attr)
15094     TYPE_LENGTH (range_type) = DW_UNSND (attr);
15095
15096   set_die_type (die, range_type, cu);
15097
15098   /* set_die_type should be already done.  */
15099   set_descriptive_type (range_type, die, cu);
15100
15101   return range_type;
15102 }
15103
15104 static struct type *
15105 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15106 {
15107   struct type *type;
15108
15109   /* For now, we only support the C meaning of an unspecified type: void.  */
15110
15111   type = init_type (cu->objfile, TYPE_CODE_VOID, 0, NULL);
15112   TYPE_NAME (type) = dwarf2_name (die, cu);
15113
15114   return set_die_type (die, type, cu);
15115 }
15116
15117 /* Read a single die and all its descendents.  Set the die's sibling
15118    field to NULL; set other fields in the die correctly, and set all
15119    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
15120    location of the info_ptr after reading all of those dies.  PARENT
15121    is the parent of the die in question.  */
15122
15123 static struct die_info *
15124 read_die_and_children (const struct die_reader_specs *reader,
15125                        const gdb_byte *info_ptr,
15126                        const gdb_byte **new_info_ptr,
15127                        struct die_info *parent)
15128 {
15129   struct die_info *die;
15130   const gdb_byte *cur_ptr;
15131   int has_children;
15132
15133   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
15134   if (die == NULL)
15135     {
15136       *new_info_ptr = cur_ptr;
15137       return NULL;
15138     }
15139   store_in_ref_table (die, reader->cu);
15140
15141   if (has_children)
15142     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
15143   else
15144     {
15145       die->child = NULL;
15146       *new_info_ptr = cur_ptr;
15147     }
15148
15149   die->sibling = NULL;
15150   die->parent = parent;
15151   return die;
15152 }
15153
15154 /* Read a die, all of its descendents, and all of its siblings; set
15155    all of the fields of all of the dies correctly.  Arguments are as
15156    in read_die_and_children.  */
15157
15158 static struct die_info *
15159 read_die_and_siblings_1 (const struct die_reader_specs *reader,
15160                          const gdb_byte *info_ptr,
15161                          const gdb_byte **new_info_ptr,
15162                          struct die_info *parent)
15163 {
15164   struct die_info *first_die, *last_sibling;
15165   const gdb_byte *cur_ptr;
15166
15167   cur_ptr = info_ptr;
15168   first_die = last_sibling = NULL;
15169
15170   while (1)
15171     {
15172       struct die_info *die
15173         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
15174
15175       if (die == NULL)
15176         {
15177           *new_info_ptr = cur_ptr;
15178           return first_die;
15179         }
15180
15181       if (!first_die)
15182         first_die = die;
15183       else
15184         last_sibling->sibling = die;
15185
15186       last_sibling = die;
15187     }
15188 }
15189
15190 /* Read a die, all of its descendents, and all of its siblings; set
15191    all of the fields of all of the dies correctly.  Arguments are as
15192    in read_die_and_children.
15193    This the main entry point for reading a DIE and all its children.  */
15194
15195 static struct die_info *
15196 read_die_and_siblings (const struct die_reader_specs *reader,
15197                        const gdb_byte *info_ptr,
15198                        const gdb_byte **new_info_ptr,
15199                        struct die_info *parent)
15200 {
15201   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15202                                                   new_info_ptr, parent);
15203
15204   if (dwarf_die_debug)
15205     {
15206       fprintf_unfiltered (gdb_stdlog,
15207                           "Read die from %s@0x%x of %s:\n",
15208                           get_section_name (reader->die_section),
15209                           (unsigned) (info_ptr - reader->die_section->buffer),
15210                           bfd_get_filename (reader->abfd));
15211       dump_die (die, dwarf_die_debug);
15212     }
15213
15214   return die;
15215 }
15216
15217 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15218    attributes.
15219    The caller is responsible for filling in the extra attributes
15220    and updating (*DIEP)->num_attrs.
15221    Set DIEP to point to a newly allocated die with its information,
15222    except for its child, sibling, and parent fields.
15223    Set HAS_CHILDREN to tell whether the die has children or not.  */
15224
15225 static const gdb_byte *
15226 read_full_die_1 (const struct die_reader_specs *reader,
15227                  struct die_info **diep, const gdb_byte *info_ptr,
15228                  int *has_children, int num_extra_attrs)
15229 {
15230   unsigned int abbrev_number, bytes_read, i;
15231   sect_offset offset;
15232   struct abbrev_info *abbrev;
15233   struct die_info *die;
15234   struct dwarf2_cu *cu = reader->cu;
15235   bfd *abfd = reader->abfd;
15236
15237   offset.sect_off = info_ptr - reader->buffer;
15238   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15239   info_ptr += bytes_read;
15240   if (!abbrev_number)
15241     {
15242       *diep = NULL;
15243       *has_children = 0;
15244       return info_ptr;
15245     }
15246
15247   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
15248   if (!abbrev)
15249     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15250            abbrev_number,
15251            bfd_get_filename (abfd));
15252
15253   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
15254   die->offset = offset;
15255   die->tag = abbrev->tag;
15256   die->abbrev = abbrev_number;
15257
15258   /* Make the result usable.
15259      The caller needs to update num_attrs after adding the extra
15260      attributes.  */
15261   die->num_attrs = abbrev->num_attrs;
15262
15263   for (i = 0; i < abbrev->num_attrs; ++i)
15264     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15265                                info_ptr);
15266
15267   *diep = die;
15268   *has_children = abbrev->has_children;
15269   return info_ptr;
15270 }
15271
15272 /* Read a die and all its attributes.
15273    Set DIEP to point to a newly allocated die with its information,
15274    except for its child, sibling, and parent fields.
15275    Set HAS_CHILDREN to tell whether the die has children or not.  */
15276
15277 static const gdb_byte *
15278 read_full_die (const struct die_reader_specs *reader,
15279                struct die_info **diep, const gdb_byte *info_ptr,
15280                int *has_children)
15281 {
15282   const gdb_byte *result;
15283
15284   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15285
15286   if (dwarf_die_debug)
15287     {
15288       fprintf_unfiltered (gdb_stdlog,
15289                           "Read die from %s@0x%x of %s:\n",
15290                           get_section_name (reader->die_section),
15291                           (unsigned) (info_ptr - reader->die_section->buffer),
15292                           bfd_get_filename (reader->abfd));
15293       dump_die (*diep, dwarf_die_debug);
15294     }
15295
15296   return result;
15297 }
15298 \f
15299 /* Abbreviation tables.
15300
15301    In DWARF version 2, the description of the debugging information is
15302    stored in a separate .debug_abbrev section.  Before we read any
15303    dies from a section we read in all abbreviations and install them
15304    in a hash table.  */
15305
15306 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
15307
15308 static struct abbrev_info *
15309 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15310 {
15311   struct abbrev_info *abbrev;
15312
15313   abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
15314   memset (abbrev, 0, sizeof (struct abbrev_info));
15315
15316   return abbrev;
15317 }
15318
15319 /* Add an abbreviation to the table.  */
15320
15321 static void
15322 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15323                          unsigned int abbrev_number,
15324                          struct abbrev_info *abbrev)
15325 {
15326   unsigned int hash_number;
15327
15328   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15329   abbrev->next = abbrev_table->abbrevs[hash_number];
15330   abbrev_table->abbrevs[hash_number] = abbrev;
15331 }
15332
15333 /* Look up an abbrev in the table.
15334    Returns NULL if the abbrev is not found.  */
15335
15336 static struct abbrev_info *
15337 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15338                             unsigned int abbrev_number)
15339 {
15340   unsigned int hash_number;
15341   struct abbrev_info *abbrev;
15342
15343   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15344   abbrev = abbrev_table->abbrevs[hash_number];
15345
15346   while (abbrev)
15347     {
15348       if (abbrev->number == abbrev_number)
15349         return abbrev;
15350       abbrev = abbrev->next;
15351     }
15352   return NULL;
15353 }
15354
15355 /* Read in an abbrev table.  */
15356
15357 static struct abbrev_table *
15358 abbrev_table_read_table (struct dwarf2_section_info *section,
15359                          sect_offset offset)
15360 {
15361   struct objfile *objfile = dwarf2_per_objfile->objfile;
15362   bfd *abfd = get_section_bfd_owner (section);
15363   struct abbrev_table *abbrev_table;
15364   const gdb_byte *abbrev_ptr;
15365   struct abbrev_info *cur_abbrev;
15366   unsigned int abbrev_number, bytes_read, abbrev_name;
15367   unsigned int abbrev_form;
15368   struct attr_abbrev *cur_attrs;
15369   unsigned int allocated_attrs;
15370
15371   abbrev_table = XNEW (struct abbrev_table);
15372   abbrev_table->offset = offset;
15373   obstack_init (&abbrev_table->abbrev_obstack);
15374   abbrev_table->abbrevs =
15375     XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
15376                ABBREV_HASH_SIZE);
15377   memset (abbrev_table->abbrevs, 0,
15378           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
15379
15380   dwarf2_read_section (objfile, section);
15381   abbrev_ptr = section->buffer + offset.sect_off;
15382   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15383   abbrev_ptr += bytes_read;
15384
15385   allocated_attrs = ATTR_ALLOC_CHUNK;
15386   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
15387
15388   /* Loop until we reach an abbrev number of 0.  */
15389   while (abbrev_number)
15390     {
15391       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
15392
15393       /* read in abbrev header */
15394       cur_abbrev->number = abbrev_number;
15395       cur_abbrev->tag
15396         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15397       abbrev_ptr += bytes_read;
15398       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15399       abbrev_ptr += 1;
15400
15401       /* now read in declarations */
15402       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15403       abbrev_ptr += bytes_read;
15404       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15405       abbrev_ptr += bytes_read;
15406       while (abbrev_name)
15407         {
15408           if (cur_abbrev->num_attrs == allocated_attrs)
15409             {
15410               allocated_attrs += ATTR_ALLOC_CHUNK;
15411               cur_attrs
15412                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
15413             }
15414
15415           cur_attrs[cur_abbrev->num_attrs].name
15416             = (enum dwarf_attribute) abbrev_name;
15417           cur_attrs[cur_abbrev->num_attrs++].form
15418             = (enum dwarf_form) abbrev_form;
15419           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15420           abbrev_ptr += bytes_read;
15421           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15422           abbrev_ptr += bytes_read;
15423         }
15424
15425       cur_abbrev->attrs =
15426         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
15427                    cur_abbrev->num_attrs);
15428       memcpy (cur_abbrev->attrs, cur_attrs,
15429               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15430
15431       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
15432
15433       /* Get next abbreviation.
15434          Under Irix6 the abbreviations for a compilation unit are not
15435          always properly terminated with an abbrev number of 0.
15436          Exit loop if we encounter an abbreviation which we have
15437          already read (which means we are about to read the abbreviations
15438          for the next compile unit) or if the end of the abbreviation
15439          table is reached.  */
15440       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
15441         break;
15442       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15443       abbrev_ptr += bytes_read;
15444       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
15445         break;
15446     }
15447
15448   xfree (cur_attrs);
15449   return abbrev_table;
15450 }
15451
15452 /* Free the resources held by ABBREV_TABLE.  */
15453
15454 static void
15455 abbrev_table_free (struct abbrev_table *abbrev_table)
15456 {
15457   obstack_free (&abbrev_table->abbrev_obstack, NULL);
15458   xfree (abbrev_table);
15459 }
15460
15461 /* Same as abbrev_table_free but as a cleanup.
15462    We pass in a pointer to the pointer to the table so that we can
15463    set the pointer to NULL when we're done.  It also simplifies
15464    build_type_psymtabs_1.  */
15465
15466 static void
15467 abbrev_table_free_cleanup (void *table_ptr)
15468 {
15469   struct abbrev_table **abbrev_table_ptr = (struct abbrev_table **) table_ptr;
15470
15471   if (*abbrev_table_ptr != NULL)
15472     abbrev_table_free (*abbrev_table_ptr);
15473   *abbrev_table_ptr = NULL;
15474 }
15475
15476 /* Read the abbrev table for CU from ABBREV_SECTION.  */
15477
15478 static void
15479 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15480                      struct dwarf2_section_info *abbrev_section)
15481 {
15482   cu->abbrev_table =
15483     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15484 }
15485
15486 /* Release the memory used by the abbrev table for a compilation unit.  */
15487
15488 static void
15489 dwarf2_free_abbrev_table (void *ptr_to_cu)
15490 {
15491   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr_to_cu;
15492
15493   if (cu->abbrev_table != NULL)
15494     abbrev_table_free (cu->abbrev_table);
15495   /* Set this to NULL so that we SEGV if we try to read it later,
15496      and also because free_comp_unit verifies this is NULL.  */
15497   cu->abbrev_table = NULL;
15498 }
15499 \f
15500 /* Returns nonzero if TAG represents a type that we might generate a partial
15501    symbol for.  */
15502
15503 static int
15504 is_type_tag_for_partial (int tag)
15505 {
15506   switch (tag)
15507     {
15508 #if 0
15509     /* Some types that would be reasonable to generate partial symbols for,
15510        that we don't at present.  */
15511     case DW_TAG_array_type:
15512     case DW_TAG_file_type:
15513     case DW_TAG_ptr_to_member_type:
15514     case DW_TAG_set_type:
15515     case DW_TAG_string_type:
15516     case DW_TAG_subroutine_type:
15517 #endif
15518     case DW_TAG_base_type:
15519     case DW_TAG_class_type:
15520     case DW_TAG_interface_type:
15521     case DW_TAG_enumeration_type:
15522     case DW_TAG_structure_type:
15523     case DW_TAG_subrange_type:
15524     case DW_TAG_typedef:
15525     case DW_TAG_union_type:
15526       return 1;
15527     default:
15528       return 0;
15529     }
15530 }
15531
15532 /* Load all DIEs that are interesting for partial symbols into memory.  */
15533
15534 static struct partial_die_info *
15535 load_partial_dies (const struct die_reader_specs *reader,
15536                    const gdb_byte *info_ptr, int building_psymtab)
15537 {
15538   struct dwarf2_cu *cu = reader->cu;
15539   struct objfile *objfile = cu->objfile;
15540   struct partial_die_info *part_die;
15541   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15542   struct abbrev_info *abbrev;
15543   unsigned int bytes_read;
15544   unsigned int load_all = 0;
15545   int nesting_level = 1;
15546
15547   parent_die = NULL;
15548   last_die = NULL;
15549
15550   gdb_assert (cu->per_cu != NULL);
15551   if (cu->per_cu->load_all_dies)
15552     load_all = 1;
15553
15554   cu->partial_dies
15555     = htab_create_alloc_ex (cu->header.length / 12,
15556                             partial_die_hash,
15557                             partial_die_eq,
15558                             NULL,
15559                             &cu->comp_unit_obstack,
15560                             hashtab_obstack_allocate,
15561                             dummy_obstack_deallocate);
15562
15563   part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
15564
15565   while (1)
15566     {
15567       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15568
15569       /* A NULL abbrev means the end of a series of children.  */
15570       if (abbrev == NULL)
15571         {
15572           if (--nesting_level == 0)
15573             {
15574               /* PART_DIE was probably the last thing allocated on the
15575                  comp_unit_obstack, so we could call obstack_free
15576                  here.  We don't do that because the waste is small,
15577                  and will be cleaned up when we're done with this
15578                  compilation unit.  This way, we're also more robust
15579                  against other users of the comp_unit_obstack.  */
15580               return first_die;
15581             }
15582           info_ptr += bytes_read;
15583           last_die = parent_die;
15584           parent_die = parent_die->die_parent;
15585           continue;
15586         }
15587
15588       /* Check for template arguments.  We never save these; if
15589          they're seen, we just mark the parent, and go on our way.  */
15590       if (parent_die != NULL
15591           && cu->language == language_cplus
15592           && (abbrev->tag == DW_TAG_template_type_param
15593               || abbrev->tag == DW_TAG_template_value_param))
15594         {
15595           parent_die->has_template_arguments = 1;
15596
15597           if (!load_all)
15598             {
15599               /* We don't need a partial DIE for the template argument.  */
15600               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15601               continue;
15602             }
15603         }
15604
15605       /* We only recurse into c++ subprograms looking for template arguments.
15606          Skip their other children.  */
15607       if (!load_all
15608           && cu->language == language_cplus
15609           && parent_die != NULL
15610           && parent_die->tag == DW_TAG_subprogram)
15611         {
15612           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15613           continue;
15614         }
15615
15616       /* Check whether this DIE is interesting enough to save.  Normally
15617          we would not be interested in members here, but there may be
15618          later variables referencing them via DW_AT_specification (for
15619          static members).  */
15620       if (!load_all
15621           && !is_type_tag_for_partial (abbrev->tag)
15622           && abbrev->tag != DW_TAG_constant
15623           && abbrev->tag != DW_TAG_enumerator
15624           && abbrev->tag != DW_TAG_subprogram
15625           && abbrev->tag != DW_TAG_lexical_block
15626           && abbrev->tag != DW_TAG_variable
15627           && abbrev->tag != DW_TAG_namespace
15628           && abbrev->tag != DW_TAG_module
15629           && abbrev->tag != DW_TAG_member
15630           && abbrev->tag != DW_TAG_imported_unit
15631           && abbrev->tag != DW_TAG_imported_declaration)
15632         {
15633           /* Otherwise we skip to the next sibling, if any.  */
15634           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15635           continue;
15636         }
15637
15638       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15639                                    info_ptr);
15640
15641       /* This two-pass algorithm for processing partial symbols has a
15642          high cost in cache pressure.  Thus, handle some simple cases
15643          here which cover the majority of C partial symbols.  DIEs
15644          which neither have specification tags in them, nor could have
15645          specification tags elsewhere pointing at them, can simply be
15646          processed and discarded.
15647
15648          This segment is also optional; scan_partial_symbols and
15649          add_partial_symbol will handle these DIEs if we chain
15650          them in normally.  When compilers which do not emit large
15651          quantities of duplicate debug information are more common,
15652          this code can probably be removed.  */
15653
15654       /* Any complete simple types at the top level (pretty much all
15655          of them, for a language without namespaces), can be processed
15656          directly.  */
15657       if (parent_die == NULL
15658           && part_die->has_specification == 0
15659           && part_die->is_declaration == 0
15660           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
15661               || part_die->tag == DW_TAG_base_type
15662               || part_die->tag == DW_TAG_subrange_type))
15663         {
15664           if (building_psymtab && part_die->name != NULL)
15665             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15666                                  VAR_DOMAIN, LOC_TYPEDEF,
15667                                  &objfile->static_psymbols,
15668                                  0, cu->language, objfile);
15669           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15670           continue;
15671         }
15672
15673       /* The exception for DW_TAG_typedef with has_children above is
15674          a workaround of GCC PR debug/47510.  In the case of this complaint
15675          type_name_no_tag_or_error will error on such types later.
15676
15677          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15678          it could not find the child DIEs referenced later, this is checked
15679          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15680
15681       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15682         complaint (&symfile_complaints,
15683                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15684                      "- DIE at 0x%x [in module %s]"),
15685                    part_die->offset.sect_off, objfile_name (objfile));
15686
15687       /* If we're at the second level, and we're an enumerator, and
15688          our parent has no specification (meaning possibly lives in a
15689          namespace elsewhere), then we can add the partial symbol now
15690          instead of queueing it.  */
15691       if (part_die->tag == DW_TAG_enumerator
15692           && parent_die != NULL
15693           && parent_die->die_parent == NULL
15694           && parent_die->tag == DW_TAG_enumeration_type
15695           && parent_die->has_specification == 0)
15696         {
15697           if (part_die->name == NULL)
15698             complaint (&symfile_complaints,
15699                        _("malformed enumerator DIE ignored"));
15700           else if (building_psymtab)
15701             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15702                                  VAR_DOMAIN, LOC_CONST,
15703                                  cu->language == language_cplus
15704                                  ? &objfile->global_psymbols
15705                                  : &objfile->static_psymbols,
15706                                  0, cu->language, objfile);
15707
15708           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15709           continue;
15710         }
15711
15712       /* We'll save this DIE so link it in.  */
15713       part_die->die_parent = parent_die;
15714       part_die->die_sibling = NULL;
15715       part_die->die_child = NULL;
15716
15717       if (last_die && last_die == parent_die)
15718         last_die->die_child = part_die;
15719       else if (last_die)
15720         last_die->die_sibling = part_die;
15721
15722       last_die = part_die;
15723
15724       if (first_die == NULL)
15725         first_die = part_die;
15726
15727       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15728          find interesting need to be in the hash table, because we
15729          also have the parent/sibling/child chains; only those that we
15730          might refer to by offset later during partial symbol reading.
15731
15732          For now this means things that might have be the target of a
15733          DW_AT_specification, DW_AT_abstract_origin, or
15734          DW_AT_extension.  DW_AT_extension will refer only to
15735          namespaces; DW_AT_abstract_origin refers to functions (and
15736          many things under the function DIE, but we do not recurse
15737          into function DIEs during partial symbol reading) and
15738          possibly variables as well; DW_AT_specification refers to
15739          declarations.  Declarations ought to have the DW_AT_declaration
15740          flag.  It happens that GCC forgets to put it in sometimes, but
15741          only for functions, not for types.
15742
15743          Adding more things than necessary to the hash table is harmless
15744          except for the performance cost.  Adding too few will result in
15745          wasted time in find_partial_die, when we reread the compilation
15746          unit with load_all_dies set.  */
15747
15748       if (load_all
15749           || abbrev->tag == DW_TAG_constant
15750           || abbrev->tag == DW_TAG_subprogram
15751           || abbrev->tag == DW_TAG_variable
15752           || abbrev->tag == DW_TAG_namespace
15753           || part_die->is_declaration)
15754         {
15755           void **slot;
15756
15757           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
15758                                            part_die->offset.sect_off, INSERT);
15759           *slot = part_die;
15760         }
15761
15762       part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
15763
15764       /* For some DIEs we want to follow their children (if any).  For C
15765          we have no reason to follow the children of structures; for other
15766          languages we have to, so that we can get at method physnames
15767          to infer fully qualified class names, for DW_AT_specification,
15768          and for C++ template arguments.  For C++, we also look one level
15769          inside functions to find template arguments (if the name of the
15770          function does not already contain the template arguments).
15771
15772          For Ada, we need to scan the children of subprograms and lexical
15773          blocks as well because Ada allows the definition of nested
15774          entities that could be interesting for the debugger, such as
15775          nested subprograms for instance.  */
15776       if (last_die->has_children
15777           && (load_all
15778               || last_die->tag == DW_TAG_namespace
15779               || last_die->tag == DW_TAG_module
15780               || last_die->tag == DW_TAG_enumeration_type
15781               || (cu->language == language_cplus
15782                   && last_die->tag == DW_TAG_subprogram
15783                   && (last_die->name == NULL
15784                       || strchr (last_die->name, '<') == NULL))
15785               || (cu->language != language_c
15786                   && (last_die->tag == DW_TAG_class_type
15787                       || last_die->tag == DW_TAG_interface_type
15788                       || last_die->tag == DW_TAG_structure_type
15789                       || last_die->tag == DW_TAG_union_type))
15790               || (cu->language == language_ada
15791                   && (last_die->tag == DW_TAG_subprogram
15792                       || last_die->tag == DW_TAG_lexical_block))))
15793         {
15794           nesting_level++;
15795           parent_die = last_die;
15796           continue;
15797         }
15798
15799       /* Otherwise we skip to the next sibling, if any.  */
15800       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
15801
15802       /* Back to the top, do it again.  */
15803     }
15804 }
15805
15806 /* Read a minimal amount of information into the minimal die structure.  */
15807
15808 static const gdb_byte *
15809 read_partial_die (const struct die_reader_specs *reader,
15810                   struct partial_die_info *part_die,
15811                   struct abbrev_info *abbrev, unsigned int abbrev_len,
15812                   const gdb_byte *info_ptr)
15813 {
15814   struct dwarf2_cu *cu = reader->cu;
15815   struct objfile *objfile = cu->objfile;
15816   const gdb_byte *buffer = reader->buffer;
15817   unsigned int i;
15818   struct attribute attr;
15819   int has_low_pc_attr = 0;
15820   int has_high_pc_attr = 0;
15821   int high_pc_relative = 0;
15822
15823   memset (part_die, 0, sizeof (struct partial_die_info));
15824
15825   part_die->offset.sect_off = info_ptr - buffer;
15826
15827   info_ptr += abbrev_len;
15828
15829   if (abbrev == NULL)
15830     return info_ptr;
15831
15832   part_die->tag = abbrev->tag;
15833   part_die->has_children = abbrev->has_children;
15834
15835   for (i = 0; i < abbrev->num_attrs; ++i)
15836     {
15837       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
15838
15839       /* Store the data if it is of an attribute we want to keep in a
15840          partial symbol table.  */
15841       switch (attr.name)
15842         {
15843         case DW_AT_name:
15844           switch (part_die->tag)
15845             {
15846             case DW_TAG_compile_unit:
15847             case DW_TAG_partial_unit:
15848             case DW_TAG_type_unit:
15849               /* Compilation units have a DW_AT_name that is a filename, not
15850                  a source language identifier.  */
15851             case DW_TAG_enumeration_type:
15852             case DW_TAG_enumerator:
15853               /* These tags always have simple identifiers already; no need
15854                  to canonicalize them.  */
15855               part_die->name = DW_STRING (&attr);
15856               break;
15857             default:
15858               part_die->name
15859                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
15860                                             &objfile->per_bfd->storage_obstack);
15861               break;
15862             }
15863           break;
15864         case DW_AT_linkage_name:
15865         case DW_AT_MIPS_linkage_name:
15866           /* Note that both forms of linkage name might appear.  We
15867              assume they will be the same, and we only store the last
15868              one we see.  */
15869           if (cu->language == language_ada)
15870             part_die->name = DW_STRING (&attr);
15871           part_die->linkage_name = DW_STRING (&attr);
15872           break;
15873         case DW_AT_low_pc:
15874           has_low_pc_attr = 1;
15875           part_die->lowpc = attr_value_as_address (&attr);
15876           break;
15877         case DW_AT_high_pc:
15878           has_high_pc_attr = 1;
15879           part_die->highpc = attr_value_as_address (&attr);
15880           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15881                 high_pc_relative = 1;
15882           break;
15883         case DW_AT_location:
15884           /* Support the .debug_loc offsets.  */
15885           if (attr_form_is_block (&attr))
15886             {
15887                part_die->d.locdesc = DW_BLOCK (&attr);
15888             }
15889           else if (attr_form_is_section_offset (&attr))
15890             {
15891               dwarf2_complex_location_expr_complaint ();
15892             }
15893           else
15894             {
15895               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15896                                                      "partial symbol information");
15897             }
15898           break;
15899         case DW_AT_external:
15900           part_die->is_external = DW_UNSND (&attr);
15901           break;
15902         case DW_AT_declaration:
15903           part_die->is_declaration = DW_UNSND (&attr);
15904           break;
15905         case DW_AT_type:
15906           part_die->has_type = 1;
15907           break;
15908         case DW_AT_abstract_origin:
15909         case DW_AT_specification:
15910         case DW_AT_extension:
15911           part_die->has_specification = 1;
15912           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
15913           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15914                                    || cu->per_cu->is_dwz);
15915           break;
15916         case DW_AT_sibling:
15917           /* Ignore absolute siblings, they might point outside of
15918              the current compile unit.  */
15919           if (attr.form == DW_FORM_ref_addr)
15920             complaint (&symfile_complaints,
15921                        _("ignoring absolute DW_AT_sibling"));
15922           else
15923             {
15924               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15925               const gdb_byte *sibling_ptr = buffer + off;
15926
15927               if (sibling_ptr < info_ptr)
15928                 complaint (&symfile_complaints,
15929                            _("DW_AT_sibling points backwards"));
15930               else if (sibling_ptr > reader->buffer_end)
15931                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
15932               else
15933                 part_die->sibling = sibling_ptr;
15934             }
15935           break;
15936         case DW_AT_byte_size:
15937           part_die->has_byte_size = 1;
15938           break;
15939         case DW_AT_const_value:
15940           part_die->has_const_value = 1;
15941           break;
15942         case DW_AT_calling_convention:
15943           /* DWARF doesn't provide a way to identify a program's source-level
15944              entry point.  DW_AT_calling_convention attributes are only meant
15945              to describe functions' calling conventions.
15946
15947              However, because it's a necessary piece of information in
15948              Fortran, and because DW_CC_program is the only piece of debugging
15949              information whose definition refers to a 'main program' at all,
15950              several compilers have begun marking Fortran main programs with
15951              DW_CC_program --- even when those functions use the standard
15952              calling conventions.
15953
15954              So until DWARF specifies a way to provide this information and
15955              compilers pick up the new representation, we'll support this
15956              practice.  */
15957           if (DW_UNSND (&attr) == DW_CC_program
15958               && cu->language == language_fortran
15959               && part_die->name != NULL)
15960             set_objfile_main_name (objfile, part_die->name, language_fortran);
15961           break;
15962         case DW_AT_inline:
15963           if (DW_UNSND (&attr) == DW_INL_inlined
15964               || DW_UNSND (&attr) == DW_INL_declared_inlined)
15965             part_die->may_be_inlined = 1;
15966           break;
15967
15968         case DW_AT_import:
15969           if (part_die->tag == DW_TAG_imported_unit)
15970             {
15971               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15972               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15973                                   || cu->per_cu->is_dwz);
15974             }
15975           break;
15976
15977         default:
15978           break;
15979         }
15980     }
15981
15982   if (high_pc_relative)
15983     part_die->highpc += part_die->lowpc;
15984
15985   if (has_low_pc_attr && has_high_pc_attr)
15986     {
15987       /* When using the GNU linker, .gnu.linkonce. sections are used to
15988          eliminate duplicate copies of functions and vtables and such.
15989          The linker will arbitrarily choose one and discard the others.
15990          The AT_*_pc values for such functions refer to local labels in
15991          these sections.  If the section from that file was discarded, the
15992          labels are not in the output, so the relocs get a value of 0.
15993          If this is a discarded function, mark the pc bounds as invalid,
15994          so that GDB will ignore it.  */
15995       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15996         {
15997           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15998
15999           complaint (&symfile_complaints,
16000                      _("DW_AT_low_pc %s is zero "
16001                        "for DIE at 0x%x [in module %s]"),
16002                      paddress (gdbarch, part_die->lowpc),
16003                      part_die->offset.sect_off, objfile_name (objfile));
16004         }
16005       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
16006       else if (part_die->lowpc >= part_die->highpc)
16007         {
16008           struct gdbarch *gdbarch = get_objfile_arch (objfile);
16009
16010           complaint (&symfile_complaints,
16011                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
16012                        "for DIE at 0x%x [in module %s]"),
16013                      paddress (gdbarch, part_die->lowpc),
16014                      paddress (gdbarch, part_die->highpc),
16015                      part_die->offset.sect_off, objfile_name (objfile));
16016         }
16017       else
16018         part_die->has_pc_info = 1;
16019     }
16020
16021   return info_ptr;
16022 }
16023
16024 /* Find a cached partial DIE at OFFSET in CU.  */
16025
16026 static struct partial_die_info *
16027 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
16028 {
16029   struct partial_die_info *lookup_die = NULL;
16030   struct partial_die_info part_die;
16031
16032   part_die.offset = offset;
16033   lookup_die = ((struct partial_die_info *)
16034                 htab_find_with_hash (cu->partial_dies, &part_die,
16035                                      offset.sect_off));
16036
16037   return lookup_die;
16038 }
16039
16040 /* Find a partial DIE at OFFSET, which may or may not be in CU,
16041    except in the case of .debug_types DIEs which do not reference
16042    outside their CU (they do however referencing other types via
16043    DW_FORM_ref_sig8).  */
16044
16045 static struct partial_die_info *
16046 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
16047 {
16048   struct objfile *objfile = cu->objfile;
16049   struct dwarf2_per_cu_data *per_cu = NULL;
16050   struct partial_die_info *pd = NULL;
16051
16052   if (offset_in_dwz == cu->per_cu->is_dwz
16053       && offset_in_cu_p (&cu->header, offset))
16054     {
16055       pd = find_partial_die_in_comp_unit (offset, cu);
16056       if (pd != NULL)
16057         return pd;
16058       /* We missed recording what we needed.
16059          Load all dies and try again.  */
16060       per_cu = cu->per_cu;
16061     }
16062   else
16063     {
16064       /* TUs don't reference other CUs/TUs (except via type signatures).  */
16065       if (cu->per_cu->is_debug_types)
16066         {
16067           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16068                    " external reference to offset 0x%lx [in module %s].\n"),
16069                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
16070                  bfd_get_filename (objfile->obfd));
16071         }
16072       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16073                                                  objfile);
16074
16075       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16076         load_partial_comp_unit (per_cu);
16077
16078       per_cu->cu->last_used = 0;
16079       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16080     }
16081
16082   /* If we didn't find it, and not all dies have been loaded,
16083      load them all and try again.  */
16084
16085   if (pd == NULL && per_cu->load_all_dies == 0)
16086     {
16087       per_cu->load_all_dies = 1;
16088
16089       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
16090          THIS_CU->cu may already be in use.  So we can't just free it and
16091          replace its DIEs with the ones we read in.  Instead, we leave those
16092          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16093          and clobber THIS_CU->cu->partial_dies with the hash table for the new
16094          set.  */
16095       load_partial_comp_unit (per_cu);
16096
16097       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16098     }
16099
16100   if (pd == NULL)
16101     internal_error (__FILE__, __LINE__,
16102                     _("could not find partial DIE 0x%x "
16103                       "in cache [from module %s]\n"),
16104                     offset.sect_off, bfd_get_filename (objfile->obfd));
16105   return pd;
16106 }
16107
16108 /* See if we can figure out if the class lives in a namespace.  We do
16109    this by looking for a member function; its demangled name will
16110    contain namespace info, if there is any.  */
16111
16112 static void
16113 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16114                                   struct dwarf2_cu *cu)
16115 {
16116   /* NOTE: carlton/2003-10-07: Getting the info this way changes
16117      what template types look like, because the demangler
16118      frequently doesn't give the same name as the debug info.  We
16119      could fix this by only using the demangled name to get the
16120      prefix (but see comment in read_structure_type).  */
16121
16122   struct partial_die_info *real_pdi;
16123   struct partial_die_info *child_pdi;
16124
16125   /* If this DIE (this DIE's specification, if any) has a parent, then
16126      we should not do this.  We'll prepend the parent's fully qualified
16127      name when we create the partial symbol.  */
16128
16129   real_pdi = struct_pdi;
16130   while (real_pdi->has_specification)
16131     real_pdi = find_partial_die (real_pdi->spec_offset,
16132                                  real_pdi->spec_is_dwz, cu);
16133
16134   if (real_pdi->die_parent != NULL)
16135     return;
16136
16137   for (child_pdi = struct_pdi->die_child;
16138        child_pdi != NULL;
16139        child_pdi = child_pdi->die_sibling)
16140     {
16141       if (child_pdi->tag == DW_TAG_subprogram
16142           && child_pdi->linkage_name != NULL)
16143         {
16144           char *actual_class_name
16145             = language_class_name_from_physname (cu->language_defn,
16146                                                  child_pdi->linkage_name);
16147           if (actual_class_name != NULL)
16148             {
16149               struct_pdi->name
16150                 = ((const char *)
16151                    obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16152                                   actual_class_name,
16153                                   strlen (actual_class_name)));
16154               xfree (actual_class_name);
16155             }
16156           break;
16157         }
16158     }
16159 }
16160
16161 /* Adjust PART_DIE before generating a symbol for it.  This function
16162    may set the is_external flag or change the DIE's name.  */
16163
16164 static void
16165 fixup_partial_die (struct partial_die_info *part_die,
16166                    struct dwarf2_cu *cu)
16167 {
16168   /* Once we've fixed up a die, there's no point in doing so again.
16169      This also avoids a memory leak if we were to call
16170      guess_partial_die_structure_name multiple times.  */
16171   if (part_die->fixup_called)
16172     return;
16173
16174   /* If we found a reference attribute and the DIE has no name, try
16175      to find a name in the referred to DIE.  */
16176
16177   if (part_die->name == NULL && part_die->has_specification)
16178     {
16179       struct partial_die_info *spec_die;
16180
16181       spec_die = find_partial_die (part_die->spec_offset,
16182                                    part_die->spec_is_dwz, cu);
16183
16184       fixup_partial_die (spec_die, cu);
16185
16186       if (spec_die->name)
16187         {
16188           part_die->name = spec_die->name;
16189
16190           /* Copy DW_AT_external attribute if it is set.  */
16191           if (spec_die->is_external)
16192             part_die->is_external = spec_die->is_external;
16193         }
16194     }
16195
16196   /* Set default names for some unnamed DIEs.  */
16197
16198   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
16199     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
16200
16201   /* If there is no parent die to provide a namespace, and there are
16202      children, see if we can determine the namespace from their linkage
16203      name.  */
16204   if (cu->language == language_cplus
16205       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
16206       && part_die->die_parent == NULL
16207       && part_die->has_children
16208       && (part_die->tag == DW_TAG_class_type
16209           || part_die->tag == DW_TAG_structure_type
16210           || part_die->tag == DW_TAG_union_type))
16211     guess_partial_die_structure_name (part_die, cu);
16212
16213   /* GCC might emit a nameless struct or union that has a linkage
16214      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
16215   if (part_die->name == NULL
16216       && (part_die->tag == DW_TAG_class_type
16217           || part_die->tag == DW_TAG_interface_type
16218           || part_die->tag == DW_TAG_structure_type
16219           || part_die->tag == DW_TAG_union_type)
16220       && part_die->linkage_name != NULL)
16221     {
16222       char *demangled;
16223
16224       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
16225       if (demangled)
16226         {
16227           const char *base;
16228
16229           /* Strip any leading namespaces/classes, keep only the base name.
16230              DW_AT_name for named DIEs does not contain the prefixes.  */
16231           base = strrchr (demangled, ':');
16232           if (base && base > demangled && base[-1] == ':')
16233             base++;
16234           else
16235             base = demangled;
16236
16237           part_die->name
16238             = ((const char *)
16239                obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16240                               base, strlen (base)));
16241           xfree (demangled);
16242         }
16243     }
16244
16245   part_die->fixup_called = 1;
16246 }
16247
16248 /* Read an attribute value described by an attribute form.  */
16249
16250 static const gdb_byte *
16251 read_attribute_value (const struct die_reader_specs *reader,
16252                       struct attribute *attr, unsigned form,
16253                       const gdb_byte *info_ptr)
16254 {
16255   struct dwarf2_cu *cu = reader->cu;
16256   struct objfile *objfile = cu->objfile;
16257   struct gdbarch *gdbarch = get_objfile_arch (objfile);
16258   bfd *abfd = reader->abfd;
16259   struct comp_unit_head *cu_header = &cu->header;
16260   unsigned int bytes_read;
16261   struct dwarf_block *blk;
16262
16263   attr->form = (enum dwarf_form) form;
16264   switch (form)
16265     {
16266     case DW_FORM_ref_addr:
16267       if (cu->header.version == 2)
16268         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
16269       else
16270         DW_UNSND (attr) = read_offset (abfd, info_ptr,
16271                                        &cu->header, &bytes_read);
16272       info_ptr += bytes_read;
16273       break;
16274     case DW_FORM_GNU_ref_alt:
16275       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16276       info_ptr += bytes_read;
16277       break;
16278     case DW_FORM_addr:
16279       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
16280       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
16281       info_ptr += bytes_read;
16282       break;
16283     case DW_FORM_block2:
16284       blk = dwarf_alloc_block (cu);
16285       blk->size = read_2_bytes (abfd, info_ptr);
16286       info_ptr += 2;
16287       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16288       info_ptr += blk->size;
16289       DW_BLOCK (attr) = blk;
16290       break;
16291     case DW_FORM_block4:
16292       blk = dwarf_alloc_block (cu);
16293       blk->size = read_4_bytes (abfd, info_ptr);
16294       info_ptr += 4;
16295       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16296       info_ptr += blk->size;
16297       DW_BLOCK (attr) = blk;
16298       break;
16299     case DW_FORM_data2:
16300       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16301       info_ptr += 2;
16302       break;
16303     case DW_FORM_data4:
16304       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16305       info_ptr += 4;
16306       break;
16307     case DW_FORM_data8:
16308       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16309       info_ptr += 8;
16310       break;
16311     case DW_FORM_sec_offset:
16312       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16313       info_ptr += bytes_read;
16314       break;
16315     case DW_FORM_string:
16316       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
16317       DW_STRING_IS_CANONICAL (attr) = 0;
16318       info_ptr += bytes_read;
16319       break;
16320     case DW_FORM_strp:
16321       if (!cu->per_cu->is_dwz)
16322         {
16323           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16324                                                    &bytes_read);
16325           DW_STRING_IS_CANONICAL (attr) = 0;
16326           info_ptr += bytes_read;
16327           break;
16328         }
16329       /* FALLTHROUGH */
16330     case DW_FORM_GNU_strp_alt:
16331       {
16332         struct dwz_file *dwz = dwarf2_get_dwz_file ();
16333         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16334                                           &bytes_read);
16335
16336         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16337         DW_STRING_IS_CANONICAL (attr) = 0;
16338         info_ptr += bytes_read;
16339       }
16340       break;
16341     case DW_FORM_exprloc:
16342     case DW_FORM_block:
16343       blk = dwarf_alloc_block (cu);
16344       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16345       info_ptr += bytes_read;
16346       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16347       info_ptr += blk->size;
16348       DW_BLOCK (attr) = blk;
16349       break;
16350     case DW_FORM_block1:
16351       blk = dwarf_alloc_block (cu);
16352       blk->size = read_1_byte (abfd, info_ptr);
16353       info_ptr += 1;
16354       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16355       info_ptr += blk->size;
16356       DW_BLOCK (attr) = blk;
16357       break;
16358     case DW_FORM_data1:
16359       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16360       info_ptr += 1;
16361       break;
16362     case DW_FORM_flag:
16363       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16364       info_ptr += 1;
16365       break;
16366     case DW_FORM_flag_present:
16367       DW_UNSND (attr) = 1;
16368       break;
16369     case DW_FORM_sdata:
16370       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16371       info_ptr += bytes_read;
16372       break;
16373     case DW_FORM_udata:
16374       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16375       info_ptr += bytes_read;
16376       break;
16377     case DW_FORM_ref1:
16378       DW_UNSND (attr) = (cu->header.offset.sect_off
16379                          + read_1_byte (abfd, info_ptr));
16380       info_ptr += 1;
16381       break;
16382     case DW_FORM_ref2:
16383       DW_UNSND (attr) = (cu->header.offset.sect_off
16384                          + read_2_bytes (abfd, info_ptr));
16385       info_ptr += 2;
16386       break;
16387     case DW_FORM_ref4:
16388       DW_UNSND (attr) = (cu->header.offset.sect_off
16389                          + read_4_bytes (abfd, info_ptr));
16390       info_ptr += 4;
16391       break;
16392     case DW_FORM_ref8:
16393       DW_UNSND (attr) = (cu->header.offset.sect_off
16394                          + read_8_bytes (abfd, info_ptr));
16395       info_ptr += 8;
16396       break;
16397     case DW_FORM_ref_sig8:
16398       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
16399       info_ptr += 8;
16400       break;
16401     case DW_FORM_ref_udata:
16402       DW_UNSND (attr) = (cu->header.offset.sect_off
16403                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
16404       info_ptr += bytes_read;
16405       break;
16406     case DW_FORM_indirect:
16407       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16408       info_ptr += bytes_read;
16409       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
16410       break;
16411     case DW_FORM_GNU_addr_index:
16412       if (reader->dwo_file == NULL)
16413         {
16414           /* For now flag a hard error.
16415              Later we can turn this into a complaint.  */
16416           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16417                  dwarf_form_name (form),
16418                  bfd_get_filename (abfd));
16419         }
16420       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16421       info_ptr += bytes_read;
16422       break;
16423     case DW_FORM_GNU_str_index:
16424       if (reader->dwo_file == NULL)
16425         {
16426           /* For now flag a hard error.
16427              Later we can turn this into a complaint if warranted.  */
16428           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16429                  dwarf_form_name (form),
16430                  bfd_get_filename (abfd));
16431         }
16432       {
16433         ULONGEST str_index =
16434           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16435
16436         DW_STRING (attr) = read_str_index (reader, str_index);
16437         DW_STRING_IS_CANONICAL (attr) = 0;
16438         info_ptr += bytes_read;
16439       }
16440       break;
16441     default:
16442       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
16443              dwarf_form_name (form),
16444              bfd_get_filename (abfd));
16445     }
16446
16447   /* Super hack.  */
16448   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
16449     attr->form = DW_FORM_GNU_ref_alt;
16450
16451   /* We have seen instances where the compiler tried to emit a byte
16452      size attribute of -1 which ended up being encoded as an unsigned
16453      0xffffffff.  Although 0xffffffff is technically a valid size value,
16454      an object of this size seems pretty unlikely so we can relatively
16455      safely treat these cases as if the size attribute was invalid and
16456      treat them as zero by default.  */
16457   if (attr->name == DW_AT_byte_size
16458       && form == DW_FORM_data4
16459       && DW_UNSND (attr) >= 0xffffffff)
16460     {
16461       complaint
16462         (&symfile_complaints,
16463          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16464          hex_string (DW_UNSND (attr)));
16465       DW_UNSND (attr) = 0;
16466     }
16467
16468   return info_ptr;
16469 }
16470
16471 /* Read an attribute described by an abbreviated attribute.  */
16472
16473 static const gdb_byte *
16474 read_attribute (const struct die_reader_specs *reader,
16475                 struct attribute *attr, struct attr_abbrev *abbrev,
16476                 const gdb_byte *info_ptr)
16477 {
16478   attr->name = abbrev->name;
16479   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
16480 }
16481
16482 /* Read dwarf information from a buffer.  */
16483
16484 static unsigned int
16485 read_1_byte (bfd *abfd, const gdb_byte *buf)
16486 {
16487   return bfd_get_8 (abfd, buf);
16488 }
16489
16490 static int
16491 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
16492 {
16493   return bfd_get_signed_8 (abfd, buf);
16494 }
16495
16496 static unsigned int
16497 read_2_bytes (bfd *abfd, const gdb_byte *buf)
16498 {
16499   return bfd_get_16 (abfd, buf);
16500 }
16501
16502 static int
16503 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
16504 {
16505   return bfd_get_signed_16 (abfd, buf);
16506 }
16507
16508 static unsigned int
16509 read_4_bytes (bfd *abfd, const gdb_byte *buf)
16510 {
16511   return bfd_get_32 (abfd, buf);
16512 }
16513
16514 static int
16515 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
16516 {
16517   return bfd_get_signed_32 (abfd, buf);
16518 }
16519
16520 static ULONGEST
16521 read_8_bytes (bfd *abfd, const gdb_byte *buf)
16522 {
16523   return bfd_get_64 (abfd, buf);
16524 }
16525
16526 static CORE_ADDR
16527 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
16528               unsigned int *bytes_read)
16529 {
16530   struct comp_unit_head *cu_header = &cu->header;
16531   CORE_ADDR retval = 0;
16532
16533   if (cu_header->signed_addr_p)
16534     {
16535       switch (cu_header->addr_size)
16536         {
16537         case 2:
16538           retval = bfd_get_signed_16 (abfd, buf);
16539           break;
16540         case 4:
16541           retval = bfd_get_signed_32 (abfd, buf);
16542           break;
16543         case 8:
16544           retval = bfd_get_signed_64 (abfd, buf);
16545           break;
16546         default:
16547           internal_error (__FILE__, __LINE__,
16548                           _("read_address: bad switch, signed [in module %s]"),
16549                           bfd_get_filename (abfd));
16550         }
16551     }
16552   else
16553     {
16554       switch (cu_header->addr_size)
16555         {
16556         case 2:
16557           retval = bfd_get_16 (abfd, buf);
16558           break;
16559         case 4:
16560           retval = bfd_get_32 (abfd, buf);
16561           break;
16562         case 8:
16563           retval = bfd_get_64 (abfd, buf);
16564           break;
16565         default:
16566           internal_error (__FILE__, __LINE__,
16567                           _("read_address: bad switch, "
16568                             "unsigned [in module %s]"),
16569                           bfd_get_filename (abfd));
16570         }
16571     }
16572
16573   *bytes_read = cu_header->addr_size;
16574   return retval;
16575 }
16576
16577 /* Read the initial length from a section.  The (draft) DWARF 3
16578    specification allows the initial length to take up either 4 bytes
16579    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
16580    bytes describe the length and all offsets will be 8 bytes in length
16581    instead of 4.
16582
16583    An older, non-standard 64-bit format is also handled by this
16584    function.  The older format in question stores the initial length
16585    as an 8-byte quantity without an escape value.  Lengths greater
16586    than 2^32 aren't very common which means that the initial 4 bytes
16587    is almost always zero.  Since a length value of zero doesn't make
16588    sense for the 32-bit format, this initial zero can be considered to
16589    be an escape value which indicates the presence of the older 64-bit
16590    format.  As written, the code can't detect (old format) lengths
16591    greater than 4GB.  If it becomes necessary to handle lengths
16592    somewhat larger than 4GB, we could allow other small values (such
16593    as the non-sensical values of 1, 2, and 3) to also be used as
16594    escape values indicating the presence of the old format.
16595
16596    The value returned via bytes_read should be used to increment the
16597    relevant pointer after calling read_initial_length().
16598
16599    [ Note:  read_initial_length() and read_offset() are based on the
16600      document entitled "DWARF Debugging Information Format", revision
16601      3, draft 8, dated November 19, 2001.  This document was obtained
16602      from:
16603
16604         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
16605
16606      This document is only a draft and is subject to change.  (So beware.)
16607
16608      Details regarding the older, non-standard 64-bit format were
16609      determined empirically by examining 64-bit ELF files produced by
16610      the SGI toolchain on an IRIX 6.5 machine.
16611
16612      - Kevin, July 16, 2002
16613    ] */
16614
16615 static LONGEST
16616 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
16617 {
16618   LONGEST length = bfd_get_32 (abfd, buf);
16619
16620   if (length == 0xffffffff)
16621     {
16622       length = bfd_get_64 (abfd, buf + 4);
16623       *bytes_read = 12;
16624     }
16625   else if (length == 0)
16626     {
16627       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
16628       length = bfd_get_64 (abfd, buf);
16629       *bytes_read = 8;
16630     }
16631   else
16632     {
16633       *bytes_read = 4;
16634     }
16635
16636   return length;
16637 }
16638
16639 /* Cover function for read_initial_length.
16640    Returns the length of the object at BUF, and stores the size of the
16641    initial length in *BYTES_READ and stores the size that offsets will be in
16642    *OFFSET_SIZE.
16643    If the initial length size is not equivalent to that specified in
16644    CU_HEADER then issue a complaint.
16645    This is useful when reading non-comp-unit headers.  */
16646
16647 static LONGEST
16648 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
16649                                         const struct comp_unit_head *cu_header,
16650                                         unsigned int *bytes_read,
16651                                         unsigned int *offset_size)
16652 {
16653   LONGEST length = read_initial_length (abfd, buf, bytes_read);
16654
16655   gdb_assert (cu_header->initial_length_size == 4
16656               || cu_header->initial_length_size == 8
16657               || cu_header->initial_length_size == 12);
16658
16659   if (cu_header->initial_length_size != *bytes_read)
16660     complaint (&symfile_complaints,
16661                _("intermixed 32-bit and 64-bit DWARF sections"));
16662
16663   *offset_size = (*bytes_read == 4) ? 4 : 8;
16664   return length;
16665 }
16666
16667 /* Read an offset from the data stream.  The size of the offset is
16668    given by cu_header->offset_size.  */
16669
16670 static LONGEST
16671 read_offset (bfd *abfd, const gdb_byte *buf,
16672              const struct comp_unit_head *cu_header,
16673              unsigned int *bytes_read)
16674 {
16675   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16676
16677   *bytes_read = cu_header->offset_size;
16678   return offset;
16679 }
16680
16681 /* Read an offset from the data stream.  */
16682
16683 static LONGEST
16684 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16685 {
16686   LONGEST retval = 0;
16687
16688   switch (offset_size)
16689     {
16690     case 4:
16691       retval = bfd_get_32 (abfd, buf);
16692       break;
16693     case 8:
16694       retval = bfd_get_64 (abfd, buf);
16695       break;
16696     default:
16697       internal_error (__FILE__, __LINE__,
16698                       _("read_offset_1: bad switch [in module %s]"),
16699                       bfd_get_filename (abfd));
16700     }
16701
16702   return retval;
16703 }
16704
16705 static const gdb_byte *
16706 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16707 {
16708   /* If the size of a host char is 8 bits, we can return a pointer
16709      to the buffer, otherwise we have to copy the data to a buffer
16710      allocated on the temporary obstack.  */
16711   gdb_assert (HOST_CHAR_BIT == 8);
16712   return buf;
16713 }
16714
16715 static const char *
16716 read_direct_string (bfd *abfd, const gdb_byte *buf,
16717                     unsigned int *bytes_read_ptr)
16718 {
16719   /* If the size of a host char is 8 bits, we can return a pointer
16720      to the string, otherwise we have to copy the string to a buffer
16721      allocated on the temporary obstack.  */
16722   gdb_assert (HOST_CHAR_BIT == 8);
16723   if (*buf == '\0')
16724     {
16725       *bytes_read_ptr = 1;
16726       return NULL;
16727     }
16728   *bytes_read_ptr = strlen ((const char *) buf) + 1;
16729   return (const char *) buf;
16730 }
16731
16732 static const char *
16733 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
16734 {
16735   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
16736   if (dwarf2_per_objfile->str.buffer == NULL)
16737     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16738            bfd_get_filename (abfd));
16739   if (str_offset >= dwarf2_per_objfile->str.size)
16740     error (_("DW_FORM_strp pointing outside of "
16741              ".debug_str section [in module %s]"),
16742            bfd_get_filename (abfd));
16743   gdb_assert (HOST_CHAR_BIT == 8);
16744   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
16745     return NULL;
16746   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
16747 }
16748
16749 /* Read a string at offset STR_OFFSET in the .debug_str section from
16750    the .dwz file DWZ.  Throw an error if the offset is too large.  If
16751    the string consists of a single NUL byte, return NULL; otherwise
16752    return a pointer to the string.  */
16753
16754 static const char *
16755 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16756 {
16757   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16758
16759   if (dwz->str.buffer == NULL)
16760     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16761              "section [in module %s]"),
16762            bfd_get_filename (dwz->dwz_bfd));
16763   if (str_offset >= dwz->str.size)
16764     error (_("DW_FORM_GNU_strp_alt pointing outside of "
16765              ".debug_str section [in module %s]"),
16766            bfd_get_filename (dwz->dwz_bfd));
16767   gdb_assert (HOST_CHAR_BIT == 8);
16768   if (dwz->str.buffer[str_offset] == '\0')
16769     return NULL;
16770   return (const char *) (dwz->str.buffer + str_offset);
16771 }
16772
16773 static const char *
16774 read_indirect_string (bfd *abfd, const gdb_byte *buf,
16775                       const struct comp_unit_head *cu_header,
16776                       unsigned int *bytes_read_ptr)
16777 {
16778   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16779
16780   return read_indirect_string_at_offset (abfd, str_offset);
16781 }
16782
16783 static ULONGEST
16784 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16785                       unsigned int *bytes_read_ptr)
16786 {
16787   ULONGEST result;
16788   unsigned int num_read;
16789   int shift;
16790   unsigned char byte;
16791
16792   result = 0;
16793   shift = 0;
16794   num_read = 0;
16795   while (1)
16796     {
16797       byte = bfd_get_8 (abfd, buf);
16798       buf++;
16799       num_read++;
16800       result |= ((ULONGEST) (byte & 127) << shift);
16801       if ((byte & 128) == 0)
16802         {
16803           break;
16804         }
16805       shift += 7;
16806     }
16807   *bytes_read_ptr = num_read;
16808   return result;
16809 }
16810
16811 static LONGEST
16812 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16813                     unsigned int *bytes_read_ptr)
16814 {
16815   LONGEST result;
16816   int shift, num_read;
16817   unsigned char byte;
16818
16819   result = 0;
16820   shift = 0;
16821   num_read = 0;
16822   while (1)
16823     {
16824       byte = bfd_get_8 (abfd, buf);
16825       buf++;
16826       num_read++;
16827       result |= ((LONGEST) (byte & 127) << shift);
16828       shift += 7;
16829       if ((byte & 128) == 0)
16830         {
16831           break;
16832         }
16833     }
16834   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
16835     result |= -(((LONGEST) 1) << shift);
16836   *bytes_read_ptr = num_read;
16837   return result;
16838 }
16839
16840 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
16841    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16842    ADDR_SIZE is the size of addresses from the CU header.  */
16843
16844 static CORE_ADDR
16845 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16846 {
16847   struct objfile *objfile = dwarf2_per_objfile->objfile;
16848   bfd *abfd = objfile->obfd;
16849   const gdb_byte *info_ptr;
16850
16851   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16852   if (dwarf2_per_objfile->addr.buffer == NULL)
16853     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
16854            objfile_name (objfile));
16855   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16856     error (_("DW_FORM_addr_index pointing outside of "
16857              ".debug_addr section [in module %s]"),
16858            objfile_name (objfile));
16859   info_ptr = (dwarf2_per_objfile->addr.buffer
16860               + addr_base + addr_index * addr_size);
16861   if (addr_size == 4)
16862     return bfd_get_32 (abfd, info_ptr);
16863   else
16864     return bfd_get_64 (abfd, info_ptr);
16865 }
16866
16867 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
16868
16869 static CORE_ADDR
16870 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16871 {
16872   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16873 }
16874
16875 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
16876
16877 static CORE_ADDR
16878 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
16879                              unsigned int *bytes_read)
16880 {
16881   bfd *abfd = cu->objfile->obfd;
16882   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16883
16884   return read_addr_index (cu, addr_index);
16885 }
16886
16887 /* Data structure to pass results from dwarf2_read_addr_index_reader
16888    back to dwarf2_read_addr_index.  */
16889
16890 struct dwarf2_read_addr_index_data
16891 {
16892   ULONGEST addr_base;
16893   int addr_size;
16894 };
16895
16896 /* die_reader_func for dwarf2_read_addr_index.  */
16897
16898 static void
16899 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
16900                                const gdb_byte *info_ptr,
16901                                struct die_info *comp_unit_die,
16902                                int has_children,
16903                                void *data)
16904 {
16905   struct dwarf2_cu *cu = reader->cu;
16906   struct dwarf2_read_addr_index_data *aidata =
16907     (struct dwarf2_read_addr_index_data *) data;
16908
16909   aidata->addr_base = cu->addr_base;
16910   aidata->addr_size = cu->header.addr_size;
16911 }
16912
16913 /* Given an index in .debug_addr, fetch the value.
16914    NOTE: This can be called during dwarf expression evaluation,
16915    long after the debug information has been read, and thus per_cu->cu
16916    may no longer exist.  */
16917
16918 CORE_ADDR
16919 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16920                         unsigned int addr_index)
16921 {
16922   struct objfile *objfile = per_cu->objfile;
16923   struct dwarf2_cu *cu = per_cu->cu;
16924   ULONGEST addr_base;
16925   int addr_size;
16926
16927   /* This is intended to be called from outside this file.  */
16928   dw2_setup (objfile);
16929
16930   /* We need addr_base and addr_size.
16931      If we don't have PER_CU->cu, we have to get it.
16932      Nasty, but the alternative is storing the needed info in PER_CU,
16933      which at this point doesn't seem justified: it's not clear how frequently
16934      it would get used and it would increase the size of every PER_CU.
16935      Entry points like dwarf2_per_cu_addr_size do a similar thing
16936      so we're not in uncharted territory here.
16937      Alas we need to be a bit more complicated as addr_base is contained
16938      in the DIE.
16939
16940      We don't need to read the entire CU(/TU).
16941      We just need the header and top level die.
16942
16943      IWBN to use the aging mechanism to let us lazily later discard the CU.
16944      For now we skip this optimization.  */
16945
16946   if (cu != NULL)
16947     {
16948       addr_base = cu->addr_base;
16949       addr_size = cu->header.addr_size;
16950     }
16951   else
16952     {
16953       struct dwarf2_read_addr_index_data aidata;
16954
16955       /* Note: We can't use init_cutu_and_read_dies_simple here,
16956          we need addr_base.  */
16957       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16958                                dwarf2_read_addr_index_reader, &aidata);
16959       addr_base = aidata.addr_base;
16960       addr_size = aidata.addr_size;
16961     }
16962
16963   return read_addr_index_1 (addr_index, addr_base, addr_size);
16964 }
16965
16966 /* Given a DW_FORM_GNU_str_index, fetch the string.
16967    This is only used by the Fission support.  */
16968
16969 static const char *
16970 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
16971 {
16972   struct objfile *objfile = dwarf2_per_objfile->objfile;
16973   const char *objf_name = objfile_name (objfile);
16974   bfd *abfd = objfile->obfd;
16975   struct dwarf2_cu *cu = reader->cu;
16976   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16977   struct dwarf2_section_info *str_offsets_section =
16978     &reader->dwo_file->sections.str_offsets;
16979   const gdb_byte *info_ptr;
16980   ULONGEST str_offset;
16981   static const char form_name[] = "DW_FORM_GNU_str_index";
16982
16983   dwarf2_read_section (objfile, str_section);
16984   dwarf2_read_section (objfile, str_offsets_section);
16985   if (str_section->buffer == NULL)
16986     error (_("%s used without .debug_str.dwo section"
16987              " in CU at offset 0x%lx [in module %s]"),
16988            form_name, (long) cu->header.offset.sect_off, objf_name);
16989   if (str_offsets_section->buffer == NULL)
16990     error (_("%s used without .debug_str_offsets.dwo section"
16991              " in CU at offset 0x%lx [in module %s]"),
16992            form_name, (long) cu->header.offset.sect_off, objf_name);
16993   if (str_index * cu->header.offset_size >= str_offsets_section->size)
16994     error (_("%s pointing outside of .debug_str_offsets.dwo"
16995              " section in CU at offset 0x%lx [in module %s]"),
16996            form_name, (long) cu->header.offset.sect_off, objf_name);
16997   info_ptr = (str_offsets_section->buffer
16998               + str_index * cu->header.offset_size);
16999   if (cu->header.offset_size == 4)
17000     str_offset = bfd_get_32 (abfd, info_ptr);
17001   else
17002     str_offset = bfd_get_64 (abfd, info_ptr);
17003   if (str_offset >= str_section->size)
17004     error (_("Offset from %s pointing outside of"
17005              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
17006            form_name, (long) cu->header.offset.sect_off, objf_name);
17007   return (const char *) (str_section->buffer + str_offset);
17008 }
17009
17010 /* Return the length of an LEB128 number in BUF.  */
17011
17012 static int
17013 leb128_size (const gdb_byte *buf)
17014 {
17015   const gdb_byte *begin = buf;
17016   gdb_byte byte;
17017
17018   while (1)
17019     {
17020       byte = *buf++;
17021       if ((byte & 128) == 0)
17022         return buf - begin;
17023     }
17024 }
17025
17026 static void
17027 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
17028 {
17029   switch (lang)
17030     {
17031     case DW_LANG_C89:
17032     case DW_LANG_C99:
17033     case DW_LANG_C11:
17034     case DW_LANG_C:
17035     case DW_LANG_UPC:
17036       cu->language = language_c;
17037       break;
17038     case DW_LANG_Java:
17039     case DW_LANG_C_plus_plus:
17040     case DW_LANG_C_plus_plus_11:
17041     case DW_LANG_C_plus_plus_14:
17042       cu->language = language_cplus;
17043       break;
17044     case DW_LANG_D:
17045       cu->language = language_d;
17046       break;
17047     case DW_LANG_Fortran77:
17048     case DW_LANG_Fortran90:
17049     case DW_LANG_Fortran95:
17050     case DW_LANG_Fortran03:
17051     case DW_LANG_Fortran08:
17052       cu->language = language_fortran;
17053       break;
17054     case DW_LANG_Go:
17055       cu->language = language_go;
17056       break;
17057     case DW_LANG_Mips_Assembler:
17058       cu->language = language_asm;
17059       break;
17060     case DW_LANG_Ada83:
17061     case DW_LANG_Ada95:
17062       cu->language = language_ada;
17063       break;
17064     case DW_LANG_Modula2:
17065       cu->language = language_m2;
17066       break;
17067     case DW_LANG_Pascal83:
17068       cu->language = language_pascal;
17069       break;
17070     case DW_LANG_ObjC:
17071       cu->language = language_objc;
17072       break;
17073     case DW_LANG_Rust:
17074     case DW_LANG_Rust_old:
17075       cu->language = language_rust;
17076       break;
17077     case DW_LANG_Cobol74:
17078     case DW_LANG_Cobol85:
17079     default:
17080       cu->language = language_minimal;
17081       break;
17082     }
17083   cu->language_defn = language_def (cu->language);
17084 }
17085
17086 /* Return the named attribute or NULL if not there.  */
17087
17088 static struct attribute *
17089 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17090 {
17091   for (;;)
17092     {
17093       unsigned int i;
17094       struct attribute *spec = NULL;
17095
17096       for (i = 0; i < die->num_attrs; ++i)
17097         {
17098           if (die->attrs[i].name == name)
17099             return &die->attrs[i];
17100           if (die->attrs[i].name == DW_AT_specification
17101               || die->attrs[i].name == DW_AT_abstract_origin)
17102             spec = &die->attrs[i];
17103         }
17104
17105       if (!spec)
17106         break;
17107
17108       die = follow_die_ref (die, spec, &cu);
17109     }
17110
17111   return NULL;
17112 }
17113
17114 /* Return the named attribute or NULL if not there,
17115    but do not follow DW_AT_specification, etc.
17116    This is for use in contexts where we're reading .debug_types dies.
17117    Following DW_AT_specification, DW_AT_abstract_origin will take us
17118    back up the chain, and we want to go down.  */
17119
17120 static struct attribute *
17121 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
17122 {
17123   unsigned int i;
17124
17125   for (i = 0; i < die->num_attrs; ++i)
17126     if (die->attrs[i].name == name)
17127       return &die->attrs[i];
17128
17129   return NULL;
17130 }
17131
17132 /* Return the string associated with a string-typed attribute, or NULL if it
17133    is either not found or is of an incorrect type.  */
17134
17135 static const char *
17136 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17137 {
17138   struct attribute *attr;
17139   const char *str = NULL;
17140
17141   attr = dwarf2_attr (die, name, cu);
17142
17143   if (attr != NULL)
17144     {
17145       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_string
17146           || attr->form == DW_FORM_GNU_strp_alt)
17147         str = DW_STRING (attr);
17148       else
17149         complaint (&symfile_complaints,
17150                    _("string type expected for attribute %s for "
17151                      "DIE at 0x%x in module %s"),
17152                    dwarf_attr_name (name), die->offset.sect_off,
17153                    objfile_name (cu->objfile));
17154     }
17155
17156   return str;
17157 }
17158
17159 /* Return non-zero iff the attribute NAME is defined for the given DIE,
17160    and holds a non-zero value.  This function should only be used for
17161    DW_FORM_flag or DW_FORM_flag_present attributes.  */
17162
17163 static int
17164 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17165 {
17166   struct attribute *attr = dwarf2_attr (die, name, cu);
17167
17168   return (attr && DW_UNSND (attr));
17169 }
17170
17171 static int
17172 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
17173 {
17174   /* A DIE is a declaration if it has a DW_AT_declaration attribute
17175      which value is non-zero.  However, we have to be careful with
17176      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17177      (via dwarf2_flag_true_p) follows this attribute.  So we may
17178      end up accidently finding a declaration attribute that belongs
17179      to a different DIE referenced by the specification attribute,
17180      even though the given DIE does not have a declaration attribute.  */
17181   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17182           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
17183 }
17184
17185 /* Return the die giving the specification for DIE, if there is
17186    one.  *SPEC_CU is the CU containing DIE on input, and the CU
17187    containing the return value on output.  If there is no
17188    specification, but there is an abstract origin, that is
17189    returned.  */
17190
17191 static struct die_info *
17192 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
17193 {
17194   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17195                                              *spec_cu);
17196
17197   if (spec_attr == NULL)
17198     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17199
17200   if (spec_attr == NULL)
17201     return NULL;
17202   else
17203     return follow_die_ref (die, spec_attr, spec_cu);
17204 }
17205
17206 /* Free the line_header structure *LH, and any arrays and strings it
17207    refers to.
17208    NOTE: This is also used as a "cleanup" function.  */
17209
17210 static void
17211 free_line_header (struct line_header *lh)
17212 {
17213   if (lh->standard_opcode_lengths)
17214     xfree (lh->standard_opcode_lengths);
17215
17216   /* Remember that all the lh->file_names[i].name pointers are
17217      pointers into debug_line_buffer, and don't need to be freed.  */
17218   if (lh->file_names)
17219     xfree (lh->file_names);
17220
17221   /* Similarly for the include directory names.  */
17222   if (lh->include_dirs)
17223     xfree (lh->include_dirs);
17224
17225   xfree (lh);
17226 }
17227
17228 /* Stub for free_line_header to match void * callback types.  */
17229
17230 static void
17231 free_line_header_voidp (void *arg)
17232 {
17233   struct line_header *lh = (struct line_header *) arg;
17234
17235   free_line_header (lh);
17236 }
17237
17238 /* Add an entry to LH's include directory table.  */
17239
17240 static void
17241 add_include_dir (struct line_header *lh, const char *include_dir)
17242 {
17243   if (dwarf_line_debug >= 2)
17244     fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17245                         lh->num_include_dirs + 1, include_dir);
17246
17247   /* Grow the array if necessary.  */
17248   if (lh->include_dirs_size == 0)
17249     {
17250       lh->include_dirs_size = 1; /* for testing */
17251       lh->include_dirs = XNEWVEC (const char *, lh->include_dirs_size);
17252     }
17253   else if (lh->num_include_dirs >= lh->include_dirs_size)
17254     {
17255       lh->include_dirs_size *= 2;
17256       lh->include_dirs = XRESIZEVEC (const char *, lh->include_dirs,
17257                                      lh->include_dirs_size);
17258     }
17259
17260   lh->include_dirs[lh->num_include_dirs++] = include_dir;
17261 }
17262
17263 /* Add an entry to LH's file name table.  */
17264
17265 static void
17266 add_file_name (struct line_header *lh,
17267                const char *name,
17268                unsigned int dir_index,
17269                unsigned int mod_time,
17270                unsigned int length)
17271 {
17272   struct file_entry *fe;
17273
17274   if (dwarf_line_debug >= 2)
17275     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17276                         lh->num_file_names + 1, name);
17277
17278   /* Grow the array if necessary.  */
17279   if (lh->file_names_size == 0)
17280     {
17281       lh->file_names_size = 1; /* for testing */
17282       lh->file_names = XNEWVEC (struct file_entry, lh->file_names_size);
17283     }
17284   else if (lh->num_file_names >= lh->file_names_size)
17285     {
17286       lh->file_names_size *= 2;
17287       lh->file_names
17288         = XRESIZEVEC (struct file_entry, lh->file_names, lh->file_names_size);
17289     }
17290
17291   fe = &lh->file_names[lh->num_file_names++];
17292   fe->name = name;
17293   fe->dir_index = dir_index;
17294   fe->mod_time = mod_time;
17295   fe->length = length;
17296   fe->included_p = 0;
17297   fe->symtab = NULL;
17298 }
17299
17300 /* A convenience function to find the proper .debug_line section for a CU.  */
17301
17302 static struct dwarf2_section_info *
17303 get_debug_line_section (struct dwarf2_cu *cu)
17304 {
17305   struct dwarf2_section_info *section;
17306
17307   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17308      DWO file.  */
17309   if (cu->dwo_unit && cu->per_cu->is_debug_types)
17310     section = &cu->dwo_unit->dwo_file->sections.line;
17311   else if (cu->per_cu->is_dwz)
17312     {
17313       struct dwz_file *dwz = dwarf2_get_dwz_file ();
17314
17315       section = &dwz->line;
17316     }
17317   else
17318     section = &dwarf2_per_objfile->line;
17319
17320   return section;
17321 }
17322
17323 /* Read the statement program header starting at OFFSET in
17324    .debug_line, or .debug_line.dwo.  Return a pointer
17325    to a struct line_header, allocated using xmalloc.
17326    Returns NULL if there is a problem reading the header, e.g., if it
17327    has a version we don't understand.
17328
17329    NOTE: the strings in the include directory and file name tables of
17330    the returned object point into the dwarf line section buffer,
17331    and must not be freed.  */
17332
17333 static struct line_header *
17334 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
17335 {
17336   struct cleanup *back_to;
17337   struct line_header *lh;
17338   const gdb_byte *line_ptr;
17339   unsigned int bytes_read, offset_size;
17340   int i;
17341   const char *cur_dir, *cur_file;
17342   struct dwarf2_section_info *section;
17343   bfd *abfd;
17344
17345   section = get_debug_line_section (cu);
17346   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17347   if (section->buffer == NULL)
17348     {
17349       if (cu->dwo_unit && cu->per_cu->is_debug_types)
17350         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17351       else
17352         complaint (&symfile_complaints, _("missing .debug_line section"));
17353       return 0;
17354     }
17355
17356   /* We can't do this until we know the section is non-empty.
17357      Only then do we know we have such a section.  */
17358   abfd = get_section_bfd_owner (section);
17359
17360   /* Make sure that at least there's room for the total_length field.
17361      That could be 12 bytes long, but we're just going to fudge that.  */
17362   if (offset + 4 >= section->size)
17363     {
17364       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17365       return 0;
17366     }
17367
17368   lh = XNEW (struct line_header);
17369   memset (lh, 0, sizeof (*lh));
17370   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17371                           (void *) lh);
17372
17373   lh->offset.sect_off = offset;
17374   lh->offset_in_dwz = cu->per_cu->is_dwz;
17375
17376   line_ptr = section->buffer + offset;
17377
17378   /* Read in the header.  */
17379   lh->total_length =
17380     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17381                                             &bytes_read, &offset_size);
17382   line_ptr += bytes_read;
17383   if (line_ptr + lh->total_length > (section->buffer + section->size))
17384     {
17385       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17386       do_cleanups (back_to);
17387       return 0;
17388     }
17389   lh->statement_program_end = line_ptr + lh->total_length;
17390   lh->version = read_2_bytes (abfd, line_ptr);
17391   line_ptr += 2;
17392   if (lh->version > 4)
17393     {
17394       /* This is a version we don't understand.  The format could have
17395          changed in ways we don't handle properly so just punt.  */
17396       complaint (&symfile_complaints,
17397                  _("unsupported version in .debug_line section"));
17398       return NULL;
17399     }
17400   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17401   line_ptr += offset_size;
17402   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17403   line_ptr += 1;
17404   if (lh->version >= 4)
17405     {
17406       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17407       line_ptr += 1;
17408     }
17409   else
17410     lh->maximum_ops_per_instruction = 1;
17411
17412   if (lh->maximum_ops_per_instruction == 0)
17413     {
17414       lh->maximum_ops_per_instruction = 1;
17415       complaint (&symfile_complaints,
17416                  _("invalid maximum_ops_per_instruction "
17417                    "in `.debug_line' section"));
17418     }
17419
17420   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17421   line_ptr += 1;
17422   lh->line_base = read_1_signed_byte (abfd, line_ptr);
17423   line_ptr += 1;
17424   lh->line_range = read_1_byte (abfd, line_ptr);
17425   line_ptr += 1;
17426   lh->opcode_base = read_1_byte (abfd, line_ptr);
17427   line_ptr += 1;
17428   lh->standard_opcode_lengths = XNEWVEC (unsigned char, lh->opcode_base);
17429
17430   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
17431   for (i = 1; i < lh->opcode_base; ++i)
17432     {
17433       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17434       line_ptr += 1;
17435     }
17436
17437   /* Read directory table.  */
17438   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17439     {
17440       line_ptr += bytes_read;
17441       add_include_dir (lh, cur_dir);
17442     }
17443   line_ptr += bytes_read;
17444
17445   /* Read file name table.  */
17446   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17447     {
17448       unsigned int dir_index, mod_time, length;
17449
17450       line_ptr += bytes_read;
17451       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17452       line_ptr += bytes_read;
17453       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17454       line_ptr += bytes_read;
17455       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17456       line_ptr += bytes_read;
17457
17458       add_file_name (lh, cur_file, dir_index, mod_time, length);
17459     }
17460   line_ptr += bytes_read;
17461   lh->statement_program_start = line_ptr;
17462
17463   if (line_ptr > (section->buffer + section->size))
17464     complaint (&symfile_complaints,
17465                _("line number info header doesn't "
17466                  "fit in `.debug_line' section"));
17467
17468   discard_cleanups (back_to);
17469   return lh;
17470 }
17471
17472 /* Subroutine of dwarf_decode_lines to simplify it.
17473    Return the file name of the psymtab for included file FILE_INDEX
17474    in line header LH of PST.
17475    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17476    If space for the result is malloc'd, it will be freed by a cleanup.
17477    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17478
17479    The function creates dangling cleanup registration.  */
17480
17481 static const char *
17482 psymtab_include_file_name (const struct line_header *lh, int file_index,
17483                            const struct partial_symtab *pst,
17484                            const char *comp_dir)
17485 {
17486   const struct file_entry fe = lh->file_names [file_index];
17487   const char *include_name = fe.name;
17488   const char *include_name_to_compare = include_name;
17489   const char *dir_name = NULL;
17490   const char *pst_filename;
17491   char *copied_name = NULL;
17492   int file_is_pst;
17493
17494   if (fe.dir_index && lh->include_dirs != NULL)
17495     dir_name = lh->include_dirs[fe.dir_index - 1];
17496
17497   if (!IS_ABSOLUTE_PATH (include_name)
17498       && (dir_name != NULL || comp_dir != NULL))
17499     {
17500       /* Avoid creating a duplicate psymtab for PST.
17501          We do this by comparing INCLUDE_NAME and PST_FILENAME.
17502          Before we do the comparison, however, we need to account
17503          for DIR_NAME and COMP_DIR.
17504          First prepend dir_name (if non-NULL).  If we still don't
17505          have an absolute path prepend comp_dir (if non-NULL).
17506          However, the directory we record in the include-file's
17507          psymtab does not contain COMP_DIR (to match the
17508          corresponding symtab(s)).
17509
17510          Example:
17511
17512          bash$ cd /tmp
17513          bash$ gcc -g ./hello.c
17514          include_name = "hello.c"
17515          dir_name = "."
17516          DW_AT_comp_dir = comp_dir = "/tmp"
17517          DW_AT_name = "./hello.c"
17518
17519       */
17520
17521       if (dir_name != NULL)
17522         {
17523           char *tem = concat (dir_name, SLASH_STRING,
17524                               include_name, (char *)NULL);
17525
17526           make_cleanup (xfree, tem);
17527           include_name = tem;
17528           include_name_to_compare = include_name;
17529         }
17530       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17531         {
17532           char *tem = concat (comp_dir, SLASH_STRING,
17533                               include_name, (char *)NULL);
17534
17535           make_cleanup (xfree, tem);
17536           include_name_to_compare = tem;
17537         }
17538     }
17539
17540   pst_filename = pst->filename;
17541   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17542     {
17543       copied_name = concat (pst->dirname, SLASH_STRING,
17544                             pst_filename, (char *)NULL);
17545       pst_filename = copied_name;
17546     }
17547
17548   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
17549
17550   if (copied_name != NULL)
17551     xfree (copied_name);
17552
17553   if (file_is_pst)
17554     return NULL;
17555   return include_name;
17556 }
17557
17558 /* State machine to track the state of the line number program.  */
17559
17560 typedef struct
17561 {
17562   /* These are part of the standard DWARF line number state machine.  */
17563
17564   unsigned char op_index;
17565   unsigned int file;
17566   unsigned int line;
17567   CORE_ADDR address;
17568   int is_stmt;
17569   unsigned int discriminator;
17570
17571   /* Additional bits of state we need to track.  */
17572
17573   /* The last file that we called dwarf2_start_subfile for.
17574      This is only used for TLLs.  */
17575   unsigned int last_file;
17576   /* The last file a line number was recorded for.  */
17577   struct subfile *last_subfile;
17578
17579   /* The function to call to record a line.  */
17580   record_line_ftype *record_line;
17581
17582   /* The last line number that was recorded, used to coalesce
17583      consecutive entries for the same line.  This can happen, for
17584      example, when discriminators are present.  PR 17276.  */
17585   unsigned int last_line;
17586   int line_has_non_zero_discriminator;
17587 } lnp_state_machine;
17588
17589 /* There's a lot of static state to pass to dwarf_record_line.
17590    This keeps it all together.  */
17591
17592 typedef struct
17593 {
17594   /* The gdbarch.  */
17595   struct gdbarch *gdbarch;
17596
17597   /* The line number header.  */
17598   struct line_header *line_header;
17599
17600   /* Non-zero if we're recording lines.
17601      Otherwise we're building partial symtabs and are just interested in
17602      finding include files mentioned by the line number program.  */
17603   int record_lines_p;
17604 } lnp_reader_state;
17605
17606 /* Ignore this record_line request.  */
17607
17608 static void
17609 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17610 {
17611   return;
17612 }
17613
17614 /* Return non-zero if we should add LINE to the line number table.
17615    LINE is the line to add, LAST_LINE is the last line that was added,
17616    LAST_SUBFILE is the subfile for LAST_LINE.
17617    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17618    had a non-zero discriminator.
17619
17620    We have to be careful in the presence of discriminators.
17621    E.g., for this line:
17622
17623      for (i = 0; i < 100000; i++);
17624
17625    clang can emit four line number entries for that one line,
17626    each with a different discriminator.
17627    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17628
17629    However, we want gdb to coalesce all four entries into one.
17630    Otherwise the user could stepi into the middle of the line and
17631    gdb would get confused about whether the pc really was in the
17632    middle of the line.
17633
17634    Things are further complicated by the fact that two consecutive
17635    line number entries for the same line is a heuristic used by gcc
17636    to denote the end of the prologue.  So we can't just discard duplicate
17637    entries, we have to be selective about it.  The heuristic we use is
17638    that we only collapse consecutive entries for the same line if at least
17639    one of those entries has a non-zero discriminator.  PR 17276.
17640
17641    Note: Addresses in the line number state machine can never go backwards
17642    within one sequence, thus this coalescing is ok.  */
17643
17644 static int
17645 dwarf_record_line_p (unsigned int line, unsigned int last_line,
17646                      int line_has_non_zero_discriminator,
17647                      struct subfile *last_subfile)
17648 {
17649   if (current_subfile != last_subfile)
17650     return 1;
17651   if (line != last_line)
17652     return 1;
17653   /* Same line for the same file that we've seen already.
17654      As a last check, for pr 17276, only record the line if the line
17655      has never had a non-zero discriminator.  */
17656   if (!line_has_non_zero_discriminator)
17657     return 1;
17658   return 0;
17659 }
17660
17661 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17662    in the line table of subfile SUBFILE.  */
17663
17664 static void
17665 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17666                      unsigned int line, CORE_ADDR address,
17667                      record_line_ftype p_record_line)
17668 {
17669   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17670
17671   if (dwarf_line_debug)
17672     {
17673       fprintf_unfiltered (gdb_stdlog,
17674                           "Recording line %u, file %s, address %s\n",
17675                           line, lbasename (subfile->name),
17676                           paddress (gdbarch, address));
17677     }
17678
17679   (*p_record_line) (subfile, line, addr);
17680 }
17681
17682 /* Subroutine of dwarf_decode_lines_1 to simplify it.
17683    Mark the end of a set of line number records.
17684    The arguments are the same as for dwarf_record_line_1.
17685    If SUBFILE is NULL the request is ignored.  */
17686
17687 static void
17688 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17689                    CORE_ADDR address, record_line_ftype p_record_line)
17690 {
17691   if (subfile == NULL)
17692     return;
17693
17694   if (dwarf_line_debug)
17695     {
17696       fprintf_unfiltered (gdb_stdlog,
17697                           "Finishing current line, file %s, address %s\n",
17698                           lbasename (subfile->name),
17699                           paddress (gdbarch, address));
17700     }
17701
17702   dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17703 }
17704
17705 /* Record the line in STATE.
17706    END_SEQUENCE is non-zero if we're processing the end of a sequence.  */
17707
17708 static void
17709 dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17710                    int end_sequence)
17711 {
17712   const struct line_header *lh = reader->line_header;
17713   unsigned int file, line, discriminator;
17714   int is_stmt;
17715
17716   file = state->file;
17717   line = state->line;
17718   is_stmt = state->is_stmt;
17719   discriminator = state->discriminator;
17720
17721   if (dwarf_line_debug)
17722     {
17723       fprintf_unfiltered (gdb_stdlog,
17724                           "Processing actual line %u: file %u,"
17725                           " address %s, is_stmt %u, discrim %u\n",
17726                           line, file,
17727                           paddress (reader->gdbarch, state->address),
17728                           is_stmt, discriminator);
17729     }
17730
17731   if (file == 0 || file - 1 >= lh->num_file_names)
17732     dwarf2_debug_line_missing_file_complaint ();
17733   /* For now we ignore lines not starting on an instruction boundary.
17734      But not when processing end_sequence for compatibility with the
17735      previous version of the code.  */
17736   else if (state->op_index == 0 || end_sequence)
17737     {
17738       lh->file_names[file - 1].included_p = 1;
17739       if (reader->record_lines_p && is_stmt)
17740         {
17741           if (state->last_subfile != current_subfile || end_sequence)
17742             {
17743               dwarf_finish_line (reader->gdbarch, state->last_subfile,
17744                                  state->address, state->record_line);
17745             }
17746
17747           if (!end_sequence)
17748             {
17749               if (dwarf_record_line_p (line, state->last_line,
17750                                        state->line_has_non_zero_discriminator,
17751                                        state->last_subfile))
17752                 {
17753                   dwarf_record_line_1 (reader->gdbarch, current_subfile,
17754                                        line, state->address,
17755                                        state->record_line);
17756                 }
17757               state->last_subfile = current_subfile;
17758               state->last_line = line;
17759             }
17760         }
17761     }
17762 }
17763
17764 /* Initialize STATE for the start of a line number program.  */
17765
17766 static void
17767 init_lnp_state_machine (lnp_state_machine *state,
17768                         const lnp_reader_state *reader)
17769 {
17770   memset (state, 0, sizeof (*state));
17771
17772   /* Just starting, there is no "last file".  */
17773   state->last_file = 0;
17774   state->last_subfile = NULL;
17775
17776   state->record_line = record_line;
17777
17778   state->last_line = 0;
17779   state->line_has_non_zero_discriminator = 0;
17780
17781   /* Initialize these according to the DWARF spec.  */
17782   state->op_index = 0;
17783   state->file = 1;
17784   state->line = 1;
17785   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17786      was a line entry for it so that the backend has a chance to adjust it
17787      and also record it in case it needs it.  This is currently used by MIPS
17788      code, cf. `mips_adjust_dwarf2_line'.  */
17789   state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17790   state->is_stmt = reader->line_header->default_is_stmt;
17791   state->discriminator = 0;
17792 }
17793
17794 /* Check address and if invalid nop-out the rest of the lines in this
17795    sequence.  */
17796
17797 static void
17798 check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
17799                     const gdb_byte *line_ptr,
17800                     CORE_ADDR lowpc, CORE_ADDR address)
17801 {
17802   /* If address < lowpc then it's not a usable value, it's outside the
17803      pc range of the CU.  However, we restrict the test to only address
17804      values of zero to preserve GDB's previous behaviour which is to
17805      handle the specific case of a function being GC'd by the linker.  */
17806
17807   if (address == 0 && address < lowpc)
17808     {
17809       /* This line table is for a function which has been
17810          GCd by the linker.  Ignore it.  PR gdb/12528 */
17811
17812       struct objfile *objfile = cu->objfile;
17813       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17814
17815       complaint (&symfile_complaints,
17816                  _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17817                  line_offset, objfile_name (objfile));
17818       state->record_line = noop_record_line;
17819       /* Note: sm.record_line is left as noop_record_line
17820          until we see DW_LNE_end_sequence.  */
17821     }
17822 }
17823
17824 /* Subroutine of dwarf_decode_lines to simplify it.
17825    Process the line number information in LH.
17826    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17827    program in order to set included_p for every referenced header.  */
17828
17829 static void
17830 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17831                       const int decode_for_pst_p, CORE_ADDR lowpc)
17832 {
17833   const gdb_byte *line_ptr, *extended_end;
17834   const gdb_byte *line_end;
17835   unsigned int bytes_read, extended_len;
17836   unsigned char op_code, extended_op;
17837   CORE_ADDR baseaddr;
17838   struct objfile *objfile = cu->objfile;
17839   bfd *abfd = objfile->obfd;
17840   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17841   /* Non-zero if we're recording line info (as opposed to building partial
17842      symtabs).  */
17843   int record_lines_p = !decode_for_pst_p;
17844   /* A collection of things we need to pass to dwarf_record_line.  */
17845   lnp_reader_state reader_state;
17846
17847   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17848
17849   line_ptr = lh->statement_program_start;
17850   line_end = lh->statement_program_end;
17851
17852   reader_state.gdbarch = gdbarch;
17853   reader_state.line_header = lh;
17854   reader_state.record_lines_p = record_lines_p;
17855
17856   /* Read the statement sequences until there's nothing left.  */
17857   while (line_ptr < line_end)
17858     {
17859       /* The DWARF line number program state machine.  */
17860       lnp_state_machine state_machine;
17861       int end_sequence = 0;
17862
17863       /* Reset the state machine at the start of each sequence.  */
17864       init_lnp_state_machine (&state_machine, &reader_state);
17865
17866       if (record_lines_p && lh->num_file_names >= state_machine.file)
17867         {
17868           /* Start a subfile for the current file of the state machine.  */
17869           /* lh->include_dirs and lh->file_names are 0-based, but the
17870              directory and file name numbers in the statement program
17871              are 1-based.  */
17872           struct file_entry *fe = &lh->file_names[state_machine.file - 1];
17873           const char *dir = NULL;
17874
17875           if (fe->dir_index && lh->include_dirs != NULL)
17876             dir = lh->include_dirs[fe->dir_index - 1];
17877
17878           dwarf2_start_subfile (fe->name, dir);
17879         }
17880
17881       /* Decode the table.  */
17882       while (line_ptr < line_end && !end_sequence)
17883         {
17884           op_code = read_1_byte (abfd, line_ptr);
17885           line_ptr += 1;
17886
17887           if (op_code >= lh->opcode_base)
17888             {
17889               /* Special opcode.  */
17890               unsigned char adj_opcode;
17891               CORE_ADDR addr_adj;
17892               int line_delta;
17893
17894               adj_opcode = op_code - lh->opcode_base;
17895               addr_adj = (((state_machine.op_index
17896                             + (adj_opcode / lh->line_range))
17897                            / lh->maximum_ops_per_instruction)
17898                           * lh->minimum_instruction_length);
17899               state_machine.address
17900                 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17901               state_machine.op_index = ((state_machine.op_index
17902                                          + (adj_opcode / lh->line_range))
17903                                         % lh->maximum_ops_per_instruction);
17904               line_delta = lh->line_base + (adj_opcode % lh->line_range);
17905               state_machine.line += line_delta;
17906               if (line_delta != 0)
17907                 state_machine.line_has_non_zero_discriminator
17908                   = state_machine.discriminator != 0;
17909
17910               dwarf_record_line (&reader_state, &state_machine, 0);
17911               state_machine.discriminator = 0;
17912             }
17913           else switch (op_code)
17914             {
17915             case DW_LNS_extended_op:
17916               extended_len = read_unsigned_leb128 (abfd, line_ptr,
17917                                                    &bytes_read);
17918               line_ptr += bytes_read;
17919               extended_end = line_ptr + extended_len;
17920               extended_op = read_1_byte (abfd, line_ptr);
17921               line_ptr += 1;
17922               switch (extended_op)
17923                 {
17924                 case DW_LNE_end_sequence:
17925                   state_machine.record_line = record_line;
17926                   end_sequence = 1;
17927                   break;
17928                 case DW_LNE_set_address:
17929                   {
17930                     CORE_ADDR address
17931                       = read_address (abfd, line_ptr, cu, &bytes_read);
17932
17933                     line_ptr += bytes_read;
17934                     check_line_address (cu, &state_machine, line_ptr,
17935                                         lowpc, address);
17936                     state_machine.op_index = 0;
17937                     address += baseaddr;
17938                     state_machine.address
17939                       = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17940                   }
17941                   break;
17942                 case DW_LNE_define_file:
17943                   {
17944                     const char *cur_file;
17945                     unsigned int dir_index, mod_time, length;
17946
17947                     cur_file = read_direct_string (abfd, line_ptr,
17948                                                    &bytes_read);
17949                     line_ptr += bytes_read;
17950                     dir_index =
17951                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17952                     line_ptr += bytes_read;
17953                     mod_time =
17954                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17955                     line_ptr += bytes_read;
17956                     length =
17957                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17958                     line_ptr += bytes_read;
17959                     add_file_name (lh, cur_file, dir_index, mod_time, length);
17960                   }
17961                   break;
17962                 case DW_LNE_set_discriminator:
17963                   /* The discriminator is not interesting to the debugger;
17964                      just ignore it.  We still need to check its value though:
17965                      if there are consecutive entries for the same
17966                      (non-prologue) line we want to coalesce them.
17967                      PR 17276.  */
17968                   state_machine.discriminator
17969                     = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17970                   state_machine.line_has_non_zero_discriminator
17971                     |= state_machine.discriminator != 0;
17972                   line_ptr += bytes_read;
17973                   break;
17974                 default:
17975                   complaint (&symfile_complaints,
17976                              _("mangled .debug_line section"));
17977                   return;
17978                 }
17979               /* Make sure that we parsed the extended op correctly.  If e.g.
17980                  we expected a different address size than the producer used,
17981                  we may have read the wrong number of bytes.  */
17982               if (line_ptr != extended_end)
17983                 {
17984                   complaint (&symfile_complaints,
17985                              _("mangled .debug_line section"));
17986                   return;
17987                 }
17988               break;
17989             case DW_LNS_copy:
17990               dwarf_record_line (&reader_state, &state_machine, 0);
17991               state_machine.discriminator = 0;
17992               break;
17993             case DW_LNS_advance_pc:
17994               {
17995                 CORE_ADDR adjust
17996                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17997                 CORE_ADDR addr_adj;
17998
17999                 addr_adj = (((state_machine.op_index + adjust)
18000                              / lh->maximum_ops_per_instruction)
18001                             * lh->minimum_instruction_length);
18002                 state_machine.address
18003                   += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18004                 state_machine.op_index = ((state_machine.op_index + adjust)
18005                                           % lh->maximum_ops_per_instruction);
18006                 line_ptr += bytes_read;
18007               }
18008               break;
18009             case DW_LNS_advance_line:
18010               {
18011                 int line_delta
18012                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
18013
18014                 state_machine.line += line_delta;
18015                 if (line_delta != 0)
18016                   state_machine.line_has_non_zero_discriminator
18017                     = state_machine.discriminator != 0;
18018                 line_ptr += bytes_read;
18019               }
18020               break;
18021             case DW_LNS_set_file:
18022               {
18023                 /* The arrays lh->include_dirs and lh->file_names are
18024                    0-based, but the directory and file name numbers in
18025                    the statement program are 1-based.  */
18026                 struct file_entry *fe;
18027                 const char *dir = NULL;
18028
18029                 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
18030                                                            &bytes_read);
18031                 line_ptr += bytes_read;
18032                 if (state_machine.file == 0
18033                     || state_machine.file - 1 >= lh->num_file_names)
18034                   dwarf2_debug_line_missing_file_complaint ();
18035                 else
18036                   {
18037                     fe = &lh->file_names[state_machine.file - 1];
18038                     if (fe->dir_index && lh->include_dirs != NULL)
18039                       dir = lh->include_dirs[fe->dir_index - 1];
18040                     if (record_lines_p)
18041                       {
18042                         state_machine.last_subfile = current_subfile;
18043                         state_machine.line_has_non_zero_discriminator
18044                           = state_machine.discriminator != 0;
18045                         dwarf2_start_subfile (fe->name, dir);
18046                       }
18047                   }
18048               }
18049               break;
18050             case DW_LNS_set_column:
18051               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18052               line_ptr += bytes_read;
18053               break;
18054             case DW_LNS_negate_stmt:
18055               state_machine.is_stmt = (!state_machine.is_stmt);
18056               break;
18057             case DW_LNS_set_basic_block:
18058               break;
18059             /* Add to the address register of the state machine the
18060                address increment value corresponding to special opcode
18061                255.  I.e., this value is scaled by the minimum
18062                instruction length since special opcode 255 would have
18063                scaled the increment.  */
18064             case DW_LNS_const_add_pc:
18065               {
18066                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
18067                 CORE_ADDR addr_adj;
18068
18069                 addr_adj = (((state_machine.op_index + adjust)
18070                              / lh->maximum_ops_per_instruction)
18071                             * lh->minimum_instruction_length);
18072                 state_machine.address
18073                   += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18074                 state_machine.op_index = ((state_machine.op_index + adjust)
18075                                           % lh->maximum_ops_per_instruction);
18076               }
18077               break;
18078             case DW_LNS_fixed_advance_pc:
18079               {
18080                 CORE_ADDR addr_adj;
18081
18082                 addr_adj = read_2_bytes (abfd, line_ptr);
18083                 state_machine.address
18084                   += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18085                 state_machine.op_index = 0;
18086                 line_ptr += 2;
18087               }
18088               break;
18089             default:
18090               {
18091                 /* Unknown standard opcode, ignore it.  */
18092                 int i;
18093
18094                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
18095                   {
18096                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18097                     line_ptr += bytes_read;
18098                   }
18099               }
18100             }
18101         }
18102
18103       if (!end_sequence)
18104         dwarf2_debug_line_missing_end_sequence_complaint ();
18105
18106       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18107          in which case we still finish recording the last line).  */
18108       dwarf_record_line (&reader_state, &state_machine, 1);
18109     }
18110 }
18111
18112 /* Decode the Line Number Program (LNP) for the given line_header
18113    structure and CU.  The actual information extracted and the type
18114    of structures created from the LNP depends on the value of PST.
18115
18116    1. If PST is NULL, then this procedure uses the data from the program
18117       to create all necessary symbol tables, and their linetables.
18118
18119    2. If PST is not NULL, this procedure reads the program to determine
18120       the list of files included by the unit represented by PST, and
18121       builds all the associated partial symbol tables.
18122
18123    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18124    It is used for relative paths in the line table.
18125    NOTE: When processing partial symtabs (pst != NULL),
18126    comp_dir == pst->dirname.
18127
18128    NOTE: It is important that psymtabs have the same file name (via strcmp)
18129    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
18130    symtab we don't use it in the name of the psymtabs we create.
18131    E.g. expand_line_sal requires this when finding psymtabs to expand.
18132    A good testcase for this is mb-inline.exp.
18133
18134    LOWPC is the lowest address in CU (or 0 if not known).
18135
18136    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18137    for its PC<->lines mapping information.  Otherwise only the filename
18138    table is read in.  */
18139
18140 static void
18141 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
18142                     struct dwarf2_cu *cu, struct partial_symtab *pst,
18143                     CORE_ADDR lowpc, int decode_mapping)
18144 {
18145   struct objfile *objfile = cu->objfile;
18146   const int decode_for_pst_p = (pst != NULL);
18147
18148   if (decode_mapping)
18149     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
18150
18151   if (decode_for_pst_p)
18152     {
18153       int file_index;
18154
18155       /* Now that we're done scanning the Line Header Program, we can
18156          create the psymtab of each included file.  */
18157       for (file_index = 0; file_index < lh->num_file_names; file_index++)
18158         if (lh->file_names[file_index].included_p == 1)
18159           {
18160             const char *include_name =
18161               psymtab_include_file_name (lh, file_index, pst, comp_dir);
18162             if (include_name != NULL)
18163               dwarf2_create_include_psymtab (include_name, pst, objfile);
18164           }
18165     }
18166   else
18167     {
18168       /* Make sure a symtab is created for every file, even files
18169          which contain only variables (i.e. no code with associated
18170          line numbers).  */
18171       struct compunit_symtab *cust = buildsym_compunit_symtab ();
18172       int i;
18173
18174       for (i = 0; i < lh->num_file_names; i++)
18175         {
18176           const char *dir = NULL;
18177           struct file_entry *fe;
18178
18179           fe = &lh->file_names[i];
18180           if (fe->dir_index && lh->include_dirs != NULL)
18181             dir = lh->include_dirs[fe->dir_index - 1];
18182           dwarf2_start_subfile (fe->name, dir);
18183
18184           if (current_subfile->symtab == NULL)
18185             {
18186               current_subfile->symtab
18187                 = allocate_symtab (cust, current_subfile->name);
18188             }
18189           fe->symtab = current_subfile->symtab;
18190         }
18191     }
18192 }
18193
18194 /* Start a subfile for DWARF.  FILENAME is the name of the file and
18195    DIRNAME the name of the source directory which contains FILENAME
18196    or NULL if not known.
18197    This routine tries to keep line numbers from identical absolute and
18198    relative file names in a common subfile.
18199
18200    Using the `list' example from the GDB testsuite, which resides in
18201    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18202    of /srcdir/list0.c yields the following debugging information for list0.c:
18203
18204    DW_AT_name:          /srcdir/list0.c
18205    DW_AT_comp_dir:      /compdir
18206    files.files[0].name: list0.h
18207    files.files[0].dir:  /srcdir
18208    files.files[1].name: list0.c
18209    files.files[1].dir:  /srcdir
18210
18211    The line number information for list0.c has to end up in a single
18212    subfile, so that `break /srcdir/list0.c:1' works as expected.
18213    start_subfile will ensure that this happens provided that we pass the
18214    concatenation of files.files[1].dir and files.files[1].name as the
18215    subfile's name.  */
18216
18217 static void
18218 dwarf2_start_subfile (const char *filename, const char *dirname)
18219 {
18220   char *copy = NULL;
18221
18222   /* In order not to lose the line information directory,
18223      we concatenate it to the filename when it makes sense.
18224      Note that the Dwarf3 standard says (speaking of filenames in line
18225      information): ``The directory index is ignored for file names
18226      that represent full path names''.  Thus ignoring dirname in the
18227      `else' branch below isn't an issue.  */
18228
18229   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
18230     {
18231       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18232       filename = copy;
18233     }
18234
18235   start_subfile (filename);
18236
18237   if (copy != NULL)
18238     xfree (copy);
18239 }
18240
18241 /* Start a symtab for DWARF.
18242    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
18243
18244 static struct compunit_symtab *
18245 dwarf2_start_symtab (struct dwarf2_cu *cu,
18246                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
18247 {
18248   struct compunit_symtab *cust
18249     = start_symtab (cu->objfile, name, comp_dir, low_pc);
18250
18251   record_debugformat ("DWARF 2");
18252   record_producer (cu->producer);
18253
18254   /* We assume that we're processing GCC output.  */
18255   processing_gcc_compilation = 2;
18256
18257   cu->processing_has_namespace_info = 0;
18258
18259   return cust;
18260 }
18261
18262 static void
18263 var_decode_location (struct attribute *attr, struct symbol *sym,
18264                      struct dwarf2_cu *cu)
18265 {
18266   struct objfile *objfile = cu->objfile;
18267   struct comp_unit_head *cu_header = &cu->header;
18268
18269   /* NOTE drow/2003-01-30: There used to be a comment and some special
18270      code here to turn a symbol with DW_AT_external and a
18271      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
18272      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18273      with some versions of binutils) where shared libraries could have
18274      relocations against symbols in their debug information - the
18275      minimal symbol would have the right address, but the debug info
18276      would not.  It's no longer necessary, because we will explicitly
18277      apply relocations when we read in the debug information now.  */
18278
18279   /* A DW_AT_location attribute with no contents indicates that a
18280      variable has been optimized away.  */
18281   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18282     {
18283       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
18284       return;
18285     }
18286
18287   /* Handle one degenerate form of location expression specially, to
18288      preserve GDB's previous behavior when section offsets are
18289      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18290      then mark this symbol as LOC_STATIC.  */
18291
18292   if (attr_form_is_block (attr)
18293       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18294            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18295           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18296               && (DW_BLOCK (attr)->size
18297                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
18298     {
18299       unsigned int dummy;
18300
18301       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18302         SYMBOL_VALUE_ADDRESS (sym) =
18303           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18304       else
18305         SYMBOL_VALUE_ADDRESS (sym) =
18306           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
18307       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
18308       fixup_symbol_section (sym, objfile);
18309       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18310                                               SYMBOL_SECTION (sym));
18311       return;
18312     }
18313
18314   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18315      expression evaluator, and use LOC_COMPUTED only when necessary
18316      (i.e. when the value of a register or memory location is
18317      referenced, or a thread-local block, etc.).  Then again, it might
18318      not be worthwhile.  I'm assuming that it isn't unless performance
18319      or memory numbers show me otherwise.  */
18320
18321   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
18322
18323   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
18324     cu->has_loclist = 1;
18325 }
18326
18327 /* Given a pointer to a DWARF information entry, figure out if we need
18328    to make a symbol table entry for it, and if so, create a new entry
18329    and return a pointer to it.
18330    If TYPE is NULL, determine symbol type from the die, otherwise
18331    used the passed type.
18332    If SPACE is not NULL, use it to hold the new symbol.  If it is
18333    NULL, allocate a new symbol on the objfile's obstack.  */
18334
18335 static struct symbol *
18336 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18337                  struct symbol *space)
18338 {
18339   struct objfile *objfile = cu->objfile;
18340   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18341   struct symbol *sym = NULL;
18342   const char *name;
18343   struct attribute *attr = NULL;
18344   struct attribute *attr2 = NULL;
18345   CORE_ADDR baseaddr;
18346   struct pending **list_to_add = NULL;
18347
18348   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
18349
18350   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
18351
18352   name = dwarf2_name (die, cu);
18353   if (name)
18354     {
18355       const char *linkagename;
18356       int suppress_add = 0;
18357
18358       if (space)
18359         sym = space;
18360       else
18361         sym = allocate_symbol (objfile);
18362       OBJSTAT (objfile, n_syms++);
18363
18364       /* Cache this symbol's name and the name's demangled form (if any).  */
18365       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
18366       linkagename = dwarf2_physname (name, die, cu);
18367       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
18368
18369       /* Fortran does not have mangling standard and the mangling does differ
18370          between gfortran, iFort etc.  */
18371       if (cu->language == language_fortran
18372           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
18373         symbol_set_demangled_name (&(sym->ginfo),
18374                                    dwarf2_full_name (name, die, cu),
18375                                    NULL);
18376
18377       /* Default assumptions.
18378          Use the passed type or decode it from the die.  */
18379       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18380       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
18381       if (type != NULL)
18382         SYMBOL_TYPE (sym) = type;
18383       else
18384         SYMBOL_TYPE (sym) = die_type (die, cu);
18385       attr = dwarf2_attr (die,
18386                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18387                           cu);
18388       if (attr)
18389         {
18390           SYMBOL_LINE (sym) = DW_UNSND (attr);
18391         }
18392
18393       attr = dwarf2_attr (die,
18394                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18395                           cu);
18396       if (attr)
18397         {
18398           int file_index = DW_UNSND (attr);
18399
18400           if (cu->line_header == NULL
18401               || file_index > cu->line_header->num_file_names)
18402             complaint (&symfile_complaints,
18403                        _("file index out of range"));
18404           else if (file_index > 0)
18405             {
18406               struct file_entry *fe;
18407
18408               fe = &cu->line_header->file_names[file_index - 1];
18409               symbol_set_symtab (sym, fe->symtab);
18410             }
18411         }
18412
18413       switch (die->tag)
18414         {
18415         case DW_TAG_label:
18416           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
18417           if (attr)
18418             {
18419               CORE_ADDR addr;
18420
18421               addr = attr_value_as_address (attr);
18422               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18423               SYMBOL_VALUE_ADDRESS (sym) = addr;
18424             }
18425           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18426           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
18427           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
18428           add_symbol_to_list (sym, cu->list_in_scope);
18429           break;
18430         case DW_TAG_subprogram:
18431           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18432              finish_block.  */
18433           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
18434           attr2 = dwarf2_attr (die, DW_AT_external, cu);
18435           if ((attr2 && (DW_UNSND (attr2) != 0))
18436               || cu->language == language_ada)
18437             {
18438               /* Subprograms marked external are stored as a global symbol.
18439                  Ada subprograms, whether marked external or not, are always
18440                  stored as a global symbol, because we want to be able to
18441                  access them globally.  For instance, we want to be able
18442                  to break on a nested subprogram without having to
18443                  specify the context.  */
18444               list_to_add = &global_symbols;
18445             }
18446           else
18447             {
18448               list_to_add = cu->list_in_scope;
18449             }
18450           break;
18451         case DW_TAG_inlined_subroutine:
18452           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18453              finish_block.  */
18454           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
18455           SYMBOL_INLINED (sym) = 1;
18456           list_to_add = cu->list_in_scope;
18457           break;
18458         case DW_TAG_template_value_param:
18459           suppress_add = 1;
18460           /* Fall through.  */
18461         case DW_TAG_constant:
18462         case DW_TAG_variable:
18463         case DW_TAG_member:
18464           /* Compilation with minimal debug info may result in
18465              variables with missing type entries.  Change the
18466              misleading `void' type to something sensible.  */
18467           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
18468             SYMBOL_TYPE (sym)
18469               = objfile_type (objfile)->nodebug_data_symbol;
18470
18471           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18472           /* In the case of DW_TAG_member, we should only be called for
18473              static const members.  */
18474           if (die->tag == DW_TAG_member)
18475             {
18476               /* dwarf2_add_field uses die_is_declaration,
18477                  so we do the same.  */
18478               gdb_assert (die_is_declaration (die, cu));
18479               gdb_assert (attr);
18480             }
18481           if (attr)
18482             {
18483               dwarf2_const_value (attr, sym, cu);
18484               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18485               if (!suppress_add)
18486                 {
18487                   if (attr2 && (DW_UNSND (attr2) != 0))
18488                     list_to_add = &global_symbols;
18489                   else
18490                     list_to_add = cu->list_in_scope;
18491                 }
18492               break;
18493             }
18494           attr = dwarf2_attr (die, DW_AT_location, cu);
18495           if (attr)
18496             {
18497               var_decode_location (attr, sym, cu);
18498               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18499
18500               /* Fortran explicitly imports any global symbols to the local
18501                  scope by DW_TAG_common_block.  */
18502               if (cu->language == language_fortran && die->parent
18503                   && die->parent->tag == DW_TAG_common_block)
18504                 attr2 = NULL;
18505
18506               if (SYMBOL_CLASS (sym) == LOC_STATIC
18507                   && SYMBOL_VALUE_ADDRESS (sym) == 0
18508                   && !dwarf2_per_objfile->has_section_at_zero)
18509                 {
18510                   /* When a static variable is eliminated by the linker,
18511                      the corresponding debug information is not stripped
18512                      out, but the variable address is set to null;
18513                      do not add such variables into symbol table.  */
18514                 }
18515               else if (attr2 && (DW_UNSND (attr2) != 0))
18516                 {
18517                   /* Workaround gfortran PR debug/40040 - it uses
18518                      DW_AT_location for variables in -fPIC libraries which may
18519                      get overriden by other libraries/executable and get
18520                      a different address.  Resolve it by the minimal symbol
18521                      which may come from inferior's executable using copy
18522                      relocation.  Make this workaround only for gfortran as for
18523                      other compilers GDB cannot guess the minimal symbol
18524                      Fortran mangling kind.  */
18525                   if (cu->language == language_fortran && die->parent
18526                       && die->parent->tag == DW_TAG_module
18527                       && cu->producer
18528                       && startswith (cu->producer, "GNU Fortran"))
18529                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
18530
18531                   /* A variable with DW_AT_external is never static,
18532                      but it may be block-scoped.  */
18533                   list_to_add = (cu->list_in_scope == &file_symbols
18534                                  ? &global_symbols : cu->list_in_scope);
18535                 }
18536               else
18537                 list_to_add = cu->list_in_scope;
18538             }
18539           else
18540             {
18541               /* We do not know the address of this symbol.
18542                  If it is an external symbol and we have type information
18543                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
18544                  The address of the variable will then be determined from
18545                  the minimal symbol table whenever the variable is
18546                  referenced.  */
18547               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18548
18549               /* Fortran explicitly imports any global symbols to the local
18550                  scope by DW_TAG_common_block.  */
18551               if (cu->language == language_fortran && die->parent
18552                   && die->parent->tag == DW_TAG_common_block)
18553                 {
18554                   /* SYMBOL_CLASS doesn't matter here because
18555                      read_common_block is going to reset it.  */
18556                   if (!suppress_add)
18557                     list_to_add = cu->list_in_scope;
18558                 }
18559               else if (attr2 && (DW_UNSND (attr2) != 0)
18560                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
18561                 {
18562                   /* A variable with DW_AT_external is never static, but it
18563                      may be block-scoped.  */
18564                   list_to_add = (cu->list_in_scope == &file_symbols
18565                                  ? &global_symbols : cu->list_in_scope);
18566
18567                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
18568                 }
18569               else if (!die_is_declaration (die, cu))
18570                 {
18571                   /* Use the default LOC_OPTIMIZED_OUT class.  */
18572                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
18573                   if (!suppress_add)
18574                     list_to_add = cu->list_in_scope;
18575                 }
18576             }
18577           break;
18578         case DW_TAG_formal_parameter:
18579           /* If we are inside a function, mark this as an argument.  If
18580              not, we might be looking at an argument to an inlined function
18581              when we do not have enough information to show inlined frames;
18582              pretend it's a local variable in that case so that the user can
18583              still see it.  */
18584           if (context_stack_depth > 0
18585               && context_stack[context_stack_depth - 1].name != NULL)
18586             SYMBOL_IS_ARGUMENT (sym) = 1;
18587           attr = dwarf2_attr (die, DW_AT_location, cu);
18588           if (attr)
18589             {
18590               var_decode_location (attr, sym, cu);
18591             }
18592           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18593           if (attr)
18594             {
18595               dwarf2_const_value (attr, sym, cu);
18596             }
18597
18598           list_to_add = cu->list_in_scope;
18599           break;
18600         case DW_TAG_unspecified_parameters:
18601           /* From varargs functions; gdb doesn't seem to have any
18602              interest in this information, so just ignore it for now.
18603              (FIXME?) */
18604           break;
18605         case DW_TAG_template_type_param:
18606           suppress_add = 1;
18607           /* Fall through.  */
18608         case DW_TAG_class_type:
18609         case DW_TAG_interface_type:
18610         case DW_TAG_structure_type:
18611         case DW_TAG_union_type:
18612         case DW_TAG_set_type:
18613         case DW_TAG_enumeration_type:
18614           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18615           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
18616
18617           {
18618             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
18619                really ever be static objects: otherwise, if you try
18620                to, say, break of a class's method and you're in a file
18621                which doesn't mention that class, it won't work unless
18622                the check for all static symbols in lookup_symbol_aux
18623                saves you.  See the OtherFileClass tests in
18624                gdb.c++/namespace.exp.  */
18625
18626             if (!suppress_add)
18627               {
18628                 list_to_add = (cu->list_in_scope == &file_symbols
18629                                && cu->language == language_cplus
18630                                ? &global_symbols : cu->list_in_scope);
18631
18632                 /* The semantics of C++ state that "struct foo {
18633                    ... }" also defines a typedef for "foo".  */
18634                 if (cu->language == language_cplus
18635                     || cu->language == language_ada
18636                     || cu->language == language_d
18637                     || cu->language == language_rust)
18638                   {
18639                     /* The symbol's name is already allocated along
18640                        with this objfile, so we don't need to
18641                        duplicate it for the type.  */
18642                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18643                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18644                   }
18645               }
18646           }
18647           break;
18648         case DW_TAG_typedef:
18649           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18650           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18651           list_to_add = cu->list_in_scope;
18652           break;
18653         case DW_TAG_base_type:
18654         case DW_TAG_subrange_type:
18655           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18656           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18657           list_to_add = cu->list_in_scope;
18658           break;
18659         case DW_TAG_enumerator:
18660           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18661           if (attr)
18662             {
18663               dwarf2_const_value (attr, sym, cu);
18664             }
18665           {
18666             /* NOTE: carlton/2003-11-10: See comment above in the
18667                DW_TAG_class_type, etc. block.  */
18668
18669             list_to_add = (cu->list_in_scope == &file_symbols
18670                            && cu->language == language_cplus
18671                            ? &global_symbols : cu->list_in_scope);
18672           }
18673           break;
18674         case DW_TAG_imported_declaration:
18675         case DW_TAG_namespace:
18676           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18677           list_to_add = &global_symbols;
18678           break;
18679         case DW_TAG_module:
18680           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18681           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18682           list_to_add = &global_symbols;
18683           break;
18684         case DW_TAG_common_block:
18685           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
18686           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18687           add_symbol_to_list (sym, cu->list_in_scope);
18688           break;
18689         default:
18690           /* Not a tag we recognize.  Hopefully we aren't processing
18691              trash data, but since we must specifically ignore things
18692              we don't recognize, there is nothing else we should do at
18693              this point.  */
18694           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
18695                      dwarf_tag_name (die->tag));
18696           break;
18697         }
18698
18699       if (suppress_add)
18700         {
18701           sym->hash_next = objfile->template_symbols;
18702           objfile->template_symbols = sym;
18703           list_to_add = NULL;
18704         }
18705
18706       if (list_to_add != NULL)
18707         add_symbol_to_list (sym, list_to_add);
18708
18709       /* For the benefit of old versions of GCC, check for anonymous
18710          namespaces based on the demangled name.  */
18711       if (!cu->processing_has_namespace_info
18712           && cu->language == language_cplus)
18713         cp_scan_for_anonymous_namespaces (sym, objfile);
18714     }
18715   return (sym);
18716 }
18717
18718 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
18719
18720 static struct symbol *
18721 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18722 {
18723   return new_symbol_full (die, type, cu, NULL);
18724 }
18725
18726 /* Given an attr with a DW_FORM_dataN value in host byte order,
18727    zero-extend it as appropriate for the symbol's type.  The DWARF
18728    standard (v4) is not entirely clear about the meaning of using
18729    DW_FORM_dataN for a constant with a signed type, where the type is
18730    wider than the data.  The conclusion of a discussion on the DWARF
18731    list was that this is unspecified.  We choose to always zero-extend
18732    because that is the interpretation long in use by GCC.  */
18733
18734 static gdb_byte *
18735 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
18736                          struct dwarf2_cu *cu, LONGEST *value, int bits)
18737 {
18738   struct objfile *objfile = cu->objfile;
18739   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18740                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
18741   LONGEST l = DW_UNSND (attr);
18742
18743   if (bits < sizeof (*value) * 8)
18744     {
18745       l &= ((LONGEST) 1 << bits) - 1;
18746       *value = l;
18747     }
18748   else if (bits == sizeof (*value) * 8)
18749     *value = l;
18750   else
18751     {
18752       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
18753       store_unsigned_integer (bytes, bits / 8, byte_order, l);
18754       return bytes;
18755     }
18756
18757   return NULL;
18758 }
18759
18760 /* Read a constant value from an attribute.  Either set *VALUE, or if
18761    the value does not fit in *VALUE, set *BYTES - either already
18762    allocated on the objfile obstack, or newly allocated on OBSTACK,
18763    or, set *BATON, if we translated the constant to a location
18764    expression.  */
18765
18766 static void
18767 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
18768                          const char *name, struct obstack *obstack,
18769                          struct dwarf2_cu *cu,
18770                          LONGEST *value, const gdb_byte **bytes,
18771                          struct dwarf2_locexpr_baton **baton)
18772 {
18773   struct objfile *objfile = cu->objfile;
18774   struct comp_unit_head *cu_header = &cu->header;
18775   struct dwarf_block *blk;
18776   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18777                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18778
18779   *value = 0;
18780   *bytes = NULL;
18781   *baton = NULL;
18782
18783   switch (attr->form)
18784     {
18785     case DW_FORM_addr:
18786     case DW_FORM_GNU_addr_index:
18787       {
18788         gdb_byte *data;
18789
18790         if (TYPE_LENGTH (type) != cu_header->addr_size)
18791           dwarf2_const_value_length_mismatch_complaint (name,
18792                                                         cu_header->addr_size,
18793                                                         TYPE_LENGTH (type));
18794         /* Symbols of this form are reasonably rare, so we just
18795            piggyback on the existing location code rather than writing
18796            a new implementation of symbol_computed_ops.  */
18797         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
18798         (*baton)->per_cu = cu->per_cu;
18799         gdb_assert ((*baton)->per_cu);
18800
18801         (*baton)->size = 2 + cu_header->addr_size;
18802         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
18803         (*baton)->data = data;
18804
18805         data[0] = DW_OP_addr;
18806         store_unsigned_integer (&data[1], cu_header->addr_size,
18807                                 byte_order, DW_ADDR (attr));
18808         data[cu_header->addr_size + 1] = DW_OP_stack_value;
18809       }
18810       break;
18811     case DW_FORM_string:
18812     case DW_FORM_strp:
18813     case DW_FORM_GNU_str_index:
18814     case DW_FORM_GNU_strp_alt:
18815       /* DW_STRING is already allocated on the objfile obstack, point
18816          directly to it.  */
18817       *bytes = (const gdb_byte *) DW_STRING (attr);
18818       break;
18819     case DW_FORM_block1:
18820     case DW_FORM_block2:
18821     case DW_FORM_block4:
18822     case DW_FORM_block:
18823     case DW_FORM_exprloc:
18824       blk = DW_BLOCK (attr);
18825       if (TYPE_LENGTH (type) != blk->size)
18826         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18827                                                       TYPE_LENGTH (type));
18828       *bytes = blk->data;
18829       break;
18830
18831       /* The DW_AT_const_value attributes are supposed to carry the
18832          symbol's value "represented as it would be on the target
18833          architecture."  By the time we get here, it's already been
18834          converted to host endianness, so we just need to sign- or
18835          zero-extend it as appropriate.  */
18836     case DW_FORM_data1:
18837       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
18838       break;
18839     case DW_FORM_data2:
18840       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
18841       break;
18842     case DW_FORM_data4:
18843       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
18844       break;
18845     case DW_FORM_data8:
18846       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
18847       break;
18848
18849     case DW_FORM_sdata:
18850       *value = DW_SND (attr);
18851       break;
18852
18853     case DW_FORM_udata:
18854       *value = DW_UNSND (attr);
18855       break;
18856
18857     default:
18858       complaint (&symfile_complaints,
18859                  _("unsupported const value attribute form: '%s'"),
18860                  dwarf_form_name (attr->form));
18861       *value = 0;
18862       break;
18863     }
18864 }
18865
18866
18867 /* Copy constant value from an attribute to a symbol.  */
18868
18869 static void
18870 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
18871                     struct dwarf2_cu *cu)
18872 {
18873   struct objfile *objfile = cu->objfile;
18874   LONGEST value;
18875   const gdb_byte *bytes;
18876   struct dwarf2_locexpr_baton *baton;
18877
18878   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18879                            SYMBOL_PRINT_NAME (sym),
18880                            &objfile->objfile_obstack, cu,
18881                            &value, &bytes, &baton);
18882
18883   if (baton != NULL)
18884     {
18885       SYMBOL_LOCATION_BATON (sym) = baton;
18886       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
18887     }
18888   else if (bytes != NULL)
18889      {
18890       SYMBOL_VALUE_BYTES (sym) = bytes;
18891       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
18892     }
18893   else
18894     {
18895       SYMBOL_VALUE (sym) = value;
18896       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
18897     }
18898 }
18899
18900 /* Return the type of the die in question using its DW_AT_type attribute.  */
18901
18902 static struct type *
18903 die_type (struct die_info *die, struct dwarf2_cu *cu)
18904 {
18905   struct attribute *type_attr;
18906
18907   type_attr = dwarf2_attr (die, DW_AT_type, cu);
18908   if (!type_attr)
18909     {
18910       /* A missing DW_AT_type represents a void type.  */
18911       return objfile_type (cu->objfile)->builtin_void;
18912     }
18913
18914   return lookup_die_type (die, type_attr, cu);
18915 }
18916
18917 /* True iff CU's producer generates GNAT Ada auxiliary information
18918    that allows to find parallel types through that information instead
18919    of having to do expensive parallel lookups by type name.  */
18920
18921 static int
18922 need_gnat_info (struct dwarf2_cu *cu)
18923 {
18924   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18925      of GNAT produces this auxiliary information, without any indication
18926      that it is produced.  Part of enhancing the FSF version of GNAT
18927      to produce that information will be to put in place an indicator
18928      that we can use in order to determine whether the descriptive type
18929      info is available or not.  One suggestion that has been made is
18930      to use a new attribute, attached to the CU die.  For now, assume
18931      that the descriptive type info is not available.  */
18932   return 0;
18933 }
18934
18935 /* Return the auxiliary type of the die in question using its
18936    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
18937    attribute is not present.  */
18938
18939 static struct type *
18940 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18941 {
18942   struct attribute *type_attr;
18943
18944   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18945   if (!type_attr)
18946     return NULL;
18947
18948   return lookup_die_type (die, type_attr, cu);
18949 }
18950
18951 /* If DIE has a descriptive_type attribute, then set the TYPE's
18952    descriptive type accordingly.  */
18953
18954 static void
18955 set_descriptive_type (struct type *type, struct die_info *die,
18956                       struct dwarf2_cu *cu)
18957 {
18958   struct type *descriptive_type = die_descriptive_type (die, cu);
18959
18960   if (descriptive_type)
18961     {
18962       ALLOCATE_GNAT_AUX_TYPE (type);
18963       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18964     }
18965 }
18966
18967 /* Return the containing type of the die in question using its
18968    DW_AT_containing_type attribute.  */
18969
18970 static struct type *
18971 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
18972 {
18973   struct attribute *type_attr;
18974
18975   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
18976   if (!type_attr)
18977     error (_("Dwarf Error: Problem turning containing type into gdb type "
18978              "[in module %s]"), objfile_name (cu->objfile));
18979
18980   return lookup_die_type (die, type_attr, cu);
18981 }
18982
18983 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
18984
18985 static struct type *
18986 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18987 {
18988   struct objfile *objfile = dwarf2_per_objfile->objfile;
18989   char *message, *saved;
18990
18991   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
18992                         objfile_name (objfile),
18993                         cu->header.offset.sect_off,
18994                         die->offset.sect_off);
18995   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
18996                                   message, strlen (message));
18997   xfree (message);
18998
18999   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
19000 }
19001
19002 /* Look up the type of DIE in CU using its type attribute ATTR.
19003    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
19004    DW_AT_containing_type.
19005    If there is no type substitute an error marker.  */
19006
19007 static struct type *
19008 lookup_die_type (struct die_info *die, const struct attribute *attr,
19009                  struct dwarf2_cu *cu)
19010 {
19011   struct objfile *objfile = cu->objfile;
19012   struct type *this_type;
19013
19014   gdb_assert (attr->name == DW_AT_type
19015               || attr->name == DW_AT_GNAT_descriptive_type
19016               || attr->name == DW_AT_containing_type);
19017
19018   /* First see if we have it cached.  */
19019
19020   if (attr->form == DW_FORM_GNU_ref_alt)
19021     {
19022       struct dwarf2_per_cu_data *per_cu;
19023       sect_offset offset = dwarf2_get_ref_die_offset (attr);
19024
19025       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
19026       this_type = get_die_type_at_offset (offset, per_cu);
19027     }
19028   else if (attr_form_is_ref (attr))
19029     {
19030       sect_offset offset = dwarf2_get_ref_die_offset (attr);
19031
19032       this_type = get_die_type_at_offset (offset, cu->per_cu);
19033     }
19034   else if (attr->form == DW_FORM_ref_sig8)
19035     {
19036       ULONGEST signature = DW_SIGNATURE (attr);
19037
19038       return get_signatured_type (die, signature, cu);
19039     }
19040   else
19041     {
19042       complaint (&symfile_complaints,
19043                  _("Dwarf Error: Bad type attribute %s in DIE"
19044                    " at 0x%x [in module %s]"),
19045                  dwarf_attr_name (attr->name), die->offset.sect_off,
19046                  objfile_name (objfile));
19047       return build_error_marker_type (cu, die);
19048     }
19049
19050   /* If not cached we need to read it in.  */
19051
19052   if (this_type == NULL)
19053     {
19054       struct die_info *type_die = NULL;
19055       struct dwarf2_cu *type_cu = cu;
19056
19057       if (attr_form_is_ref (attr))
19058         type_die = follow_die_ref (die, attr, &type_cu);
19059       if (type_die == NULL)
19060         return build_error_marker_type (cu, die);
19061       /* If we find the type now, it's probably because the type came
19062          from an inter-CU reference and the type's CU got expanded before
19063          ours.  */
19064       this_type = read_type_die (type_die, type_cu);
19065     }
19066
19067   /* If we still don't have a type use an error marker.  */
19068
19069   if (this_type == NULL)
19070     return build_error_marker_type (cu, die);
19071
19072   return this_type;
19073 }
19074
19075 /* Return the type in DIE, CU.
19076    Returns NULL for invalid types.
19077
19078    This first does a lookup in die_type_hash,
19079    and only reads the die in if necessary.
19080
19081    NOTE: This can be called when reading in partial or full symbols.  */
19082
19083 static struct type *
19084 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
19085 {
19086   struct type *this_type;
19087
19088   this_type = get_die_type (die, cu);
19089   if (this_type)
19090     return this_type;
19091
19092   return read_type_die_1 (die, cu);
19093 }
19094
19095 /* Read the type in DIE, CU.
19096    Returns NULL for invalid types.  */
19097
19098 static struct type *
19099 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19100 {
19101   struct type *this_type = NULL;
19102
19103   switch (die->tag)
19104     {
19105     case DW_TAG_class_type:
19106     case DW_TAG_interface_type:
19107     case DW_TAG_structure_type:
19108     case DW_TAG_union_type:
19109       this_type = read_structure_type (die, cu);
19110       break;
19111     case DW_TAG_enumeration_type:
19112       this_type = read_enumeration_type (die, cu);
19113       break;
19114     case DW_TAG_subprogram:
19115     case DW_TAG_subroutine_type:
19116     case DW_TAG_inlined_subroutine:
19117       this_type = read_subroutine_type (die, cu);
19118       break;
19119     case DW_TAG_array_type:
19120       this_type = read_array_type (die, cu);
19121       break;
19122     case DW_TAG_set_type:
19123       this_type = read_set_type (die, cu);
19124       break;
19125     case DW_TAG_pointer_type:
19126       this_type = read_tag_pointer_type (die, cu);
19127       break;
19128     case DW_TAG_ptr_to_member_type:
19129       this_type = read_tag_ptr_to_member_type (die, cu);
19130       break;
19131     case DW_TAG_reference_type:
19132       this_type = read_tag_reference_type (die, cu);
19133       break;
19134     case DW_TAG_const_type:
19135       this_type = read_tag_const_type (die, cu);
19136       break;
19137     case DW_TAG_volatile_type:
19138       this_type = read_tag_volatile_type (die, cu);
19139       break;
19140     case DW_TAG_restrict_type:
19141       this_type = read_tag_restrict_type (die, cu);
19142       break;
19143     case DW_TAG_string_type:
19144       this_type = read_tag_string_type (die, cu);
19145       break;
19146     case DW_TAG_typedef:
19147       this_type = read_typedef (die, cu);
19148       break;
19149     case DW_TAG_subrange_type:
19150       this_type = read_subrange_type (die, cu);
19151       break;
19152     case DW_TAG_base_type:
19153       this_type = read_base_type (die, cu);
19154       break;
19155     case DW_TAG_unspecified_type:
19156       this_type = read_unspecified_type (die, cu);
19157       break;
19158     case DW_TAG_namespace:
19159       this_type = read_namespace_type (die, cu);
19160       break;
19161     case DW_TAG_module:
19162       this_type = read_module_type (die, cu);
19163       break;
19164     case DW_TAG_atomic_type:
19165       this_type = read_tag_atomic_type (die, cu);
19166       break;
19167     default:
19168       complaint (&symfile_complaints,
19169                  _("unexpected tag in read_type_die: '%s'"),
19170                  dwarf_tag_name (die->tag));
19171       break;
19172     }
19173
19174   return this_type;
19175 }
19176
19177 /* See if we can figure out if the class lives in a namespace.  We do
19178    this by looking for a member function; its demangled name will
19179    contain namespace info, if there is any.
19180    Return the computed name or NULL.
19181    Space for the result is allocated on the objfile's obstack.
19182    This is the full-die version of guess_partial_die_structure_name.
19183    In this case we know DIE has no useful parent.  */
19184
19185 static char *
19186 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19187 {
19188   struct die_info *spec_die;
19189   struct dwarf2_cu *spec_cu;
19190   struct die_info *child;
19191
19192   spec_cu = cu;
19193   spec_die = die_specification (die, &spec_cu);
19194   if (spec_die != NULL)
19195     {
19196       die = spec_die;
19197       cu = spec_cu;
19198     }
19199
19200   for (child = die->child;
19201        child != NULL;
19202        child = child->sibling)
19203     {
19204       if (child->tag == DW_TAG_subprogram)
19205         {
19206           const char *linkage_name;
19207
19208           linkage_name = dwarf2_string_attr (child, DW_AT_linkage_name, cu);
19209           if (linkage_name == NULL)
19210             linkage_name = dwarf2_string_attr (child, DW_AT_MIPS_linkage_name,
19211                                                cu);
19212           if (linkage_name != NULL)
19213             {
19214               char *actual_name
19215                 = language_class_name_from_physname (cu->language_defn,
19216                                                      linkage_name);
19217               char *name = NULL;
19218
19219               if (actual_name != NULL)
19220                 {
19221                   const char *die_name = dwarf2_name (die, cu);
19222
19223                   if (die_name != NULL
19224                       && strcmp (die_name, actual_name) != 0)
19225                     {
19226                       /* Strip off the class name from the full name.
19227                          We want the prefix.  */
19228                       int die_name_len = strlen (die_name);
19229                       int actual_name_len = strlen (actual_name);
19230
19231                       /* Test for '::' as a sanity check.  */
19232                       if (actual_name_len > die_name_len + 2
19233                           && actual_name[actual_name_len
19234                                          - die_name_len - 1] == ':')
19235                         name = (char *) obstack_copy0 (
19236                           &cu->objfile->per_bfd->storage_obstack,
19237                           actual_name, actual_name_len - die_name_len - 2);
19238                     }
19239                 }
19240               xfree (actual_name);
19241               return name;
19242             }
19243         }
19244     }
19245
19246   return NULL;
19247 }
19248
19249 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
19250    prefix part in such case.  See
19251    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19252
19253 static char *
19254 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19255 {
19256   struct attribute *attr;
19257   const char *base;
19258
19259   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19260       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19261     return NULL;
19262
19263   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
19264     return NULL;
19265
19266   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19267   if (attr == NULL)
19268     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19269   if (attr == NULL || DW_STRING (attr) == NULL)
19270     return NULL;
19271
19272   /* dwarf2_name had to be already called.  */
19273   gdb_assert (DW_STRING_IS_CANONICAL (attr));
19274
19275   /* Strip the base name, keep any leading namespaces/classes.  */
19276   base = strrchr (DW_STRING (attr), ':');
19277   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19278     return "";
19279
19280   return (char *) obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19281                                  DW_STRING (attr),
19282                                  &base[-1] - DW_STRING (attr));
19283 }
19284
19285 /* Return the name of the namespace/class that DIE is defined within,
19286    or "" if we can't tell.  The caller should not xfree the result.
19287
19288    For example, if we're within the method foo() in the following
19289    code:
19290
19291    namespace N {
19292      class C {
19293        void foo () {
19294        }
19295      };
19296    }
19297
19298    then determine_prefix on foo's die will return "N::C".  */
19299
19300 static const char *
19301 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
19302 {
19303   struct die_info *parent, *spec_die;
19304   struct dwarf2_cu *spec_cu;
19305   struct type *parent_type;
19306   char *retval;
19307
19308   if (cu->language != language_cplus
19309       && cu->language != language_fortran && cu->language != language_d
19310       && cu->language != language_rust)
19311     return "";
19312
19313   retval = anonymous_struct_prefix (die, cu);
19314   if (retval)
19315     return retval;
19316
19317   /* We have to be careful in the presence of DW_AT_specification.
19318      For example, with GCC 3.4, given the code
19319
19320      namespace N {
19321        void foo() {
19322          // Definition of N::foo.
19323        }
19324      }
19325
19326      then we'll have a tree of DIEs like this:
19327
19328      1: DW_TAG_compile_unit
19329        2: DW_TAG_namespace        // N
19330          3: DW_TAG_subprogram     // declaration of N::foo
19331        4: DW_TAG_subprogram       // definition of N::foo
19332             DW_AT_specification   // refers to die #3
19333
19334      Thus, when processing die #4, we have to pretend that we're in
19335      the context of its DW_AT_specification, namely the contex of die
19336      #3.  */
19337   spec_cu = cu;
19338   spec_die = die_specification (die, &spec_cu);
19339   if (spec_die == NULL)
19340     parent = die->parent;
19341   else
19342     {
19343       parent = spec_die->parent;
19344       cu = spec_cu;
19345     }
19346
19347   if (parent == NULL)
19348     return "";
19349   else if (parent->building_fullname)
19350     {
19351       const char *name;
19352       const char *parent_name;
19353
19354       /* It has been seen on RealView 2.2 built binaries,
19355          DW_TAG_template_type_param types actually _defined_ as
19356          children of the parent class:
19357
19358          enum E {};
19359          template class <class Enum> Class{};
19360          Class<enum E> class_e;
19361
19362          1: DW_TAG_class_type (Class)
19363            2: DW_TAG_enumeration_type (E)
19364              3: DW_TAG_enumerator (enum1:0)
19365              3: DW_TAG_enumerator (enum2:1)
19366              ...
19367            2: DW_TAG_template_type_param
19368               DW_AT_type  DW_FORM_ref_udata (E)
19369
19370          Besides being broken debug info, it can put GDB into an
19371          infinite loop.  Consider:
19372
19373          When we're building the full name for Class<E>, we'll start
19374          at Class, and go look over its template type parameters,
19375          finding E.  We'll then try to build the full name of E, and
19376          reach here.  We're now trying to build the full name of E,
19377          and look over the parent DIE for containing scope.  In the
19378          broken case, if we followed the parent DIE of E, we'd again
19379          find Class, and once again go look at its template type
19380          arguments, etc., etc.  Simply don't consider such parent die
19381          as source-level parent of this die (it can't be, the language
19382          doesn't allow it), and break the loop here.  */
19383       name = dwarf2_name (die, cu);
19384       parent_name = dwarf2_name (parent, cu);
19385       complaint (&symfile_complaints,
19386                  _("template param type '%s' defined within parent '%s'"),
19387                  name ? name : "<unknown>",
19388                  parent_name ? parent_name : "<unknown>");
19389       return "";
19390     }
19391   else
19392     switch (parent->tag)
19393       {
19394       case DW_TAG_namespace:
19395         parent_type = read_type_die (parent, cu);
19396         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19397            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19398            Work around this problem here.  */
19399         if (cu->language == language_cplus
19400             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19401           return "";
19402         /* We give a name to even anonymous namespaces.  */
19403         return TYPE_TAG_NAME (parent_type);
19404       case DW_TAG_class_type:
19405       case DW_TAG_interface_type:
19406       case DW_TAG_structure_type:
19407       case DW_TAG_union_type:
19408       case DW_TAG_module:
19409         parent_type = read_type_die (parent, cu);
19410         if (TYPE_TAG_NAME (parent_type) != NULL)
19411           return TYPE_TAG_NAME (parent_type);
19412         else
19413           /* An anonymous structure is only allowed non-static data
19414              members; no typedefs, no member functions, et cetera.
19415              So it does not need a prefix.  */
19416           return "";
19417       case DW_TAG_compile_unit:
19418       case DW_TAG_partial_unit:
19419         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
19420         if (cu->language == language_cplus
19421             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
19422             && die->child != NULL
19423             && (die->tag == DW_TAG_class_type
19424                 || die->tag == DW_TAG_structure_type
19425                 || die->tag == DW_TAG_union_type))
19426           {
19427             char *name = guess_full_die_structure_name (die, cu);
19428             if (name != NULL)
19429               return name;
19430           }
19431         return "";
19432       case DW_TAG_enumeration_type:
19433         parent_type = read_type_die (parent, cu);
19434         if (TYPE_DECLARED_CLASS (parent_type))
19435           {
19436             if (TYPE_TAG_NAME (parent_type) != NULL)
19437               return TYPE_TAG_NAME (parent_type);
19438             return "";
19439           }
19440         /* Fall through.  */
19441       default:
19442         return determine_prefix (parent, cu);
19443       }
19444 }
19445
19446 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19447    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
19448    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
19449    an obconcat, otherwise allocate storage for the result.  The CU argument is
19450    used to determine the language and hence, the appropriate separator.  */
19451
19452 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
19453
19454 static char *
19455 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19456                  int physname, struct dwarf2_cu *cu)
19457 {
19458   const char *lead = "";
19459   const char *sep;
19460
19461   if (suffix == NULL || suffix[0] == '\0'
19462       || prefix == NULL || prefix[0] == '\0')
19463     sep = "";
19464   else if (cu->language == language_d)
19465     {
19466       /* For D, the 'main' function could be defined in any module, but it
19467          should never be prefixed.  */
19468       if (strcmp (suffix, "D main") == 0)
19469         {
19470           prefix = "";
19471           sep = "";
19472         }
19473       else
19474         sep = ".";
19475     }
19476   else if (cu->language == language_fortran && physname)
19477     {
19478       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
19479          DW_AT_MIPS_linkage_name is preferred and used instead.  */
19480
19481       lead = "__";
19482       sep = "_MOD_";
19483     }
19484   else
19485     sep = "::";
19486
19487   if (prefix == NULL)
19488     prefix = "";
19489   if (suffix == NULL)
19490     suffix = "";
19491
19492   if (obs == NULL)
19493     {
19494       char *retval
19495         = ((char *)
19496            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
19497
19498       strcpy (retval, lead);
19499       strcat (retval, prefix);
19500       strcat (retval, sep);
19501       strcat (retval, suffix);
19502       return retval;
19503     }
19504   else
19505     {
19506       /* We have an obstack.  */
19507       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
19508     }
19509 }
19510
19511 /* Return sibling of die, NULL if no sibling.  */
19512
19513 static struct die_info *
19514 sibling_die (struct die_info *die)
19515 {
19516   return die->sibling;
19517 }
19518
19519 /* Get name of a die, return NULL if not found.  */
19520
19521 static const char *
19522 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
19523                           struct obstack *obstack)
19524 {
19525   if (name && cu->language == language_cplus)
19526     {
19527       char *canon_name = cp_canonicalize_string (name);
19528
19529       if (canon_name != NULL)
19530         {
19531           if (strcmp (canon_name, name) != 0)
19532             name = (const char *) obstack_copy0 (obstack, canon_name,
19533                                                  strlen (canon_name));
19534           xfree (canon_name);
19535         }
19536     }
19537
19538   return name;
19539 }
19540
19541 /* Get name of a die, return NULL if not found.
19542    Anonymous namespaces are converted to their magic string.  */
19543
19544 static const char *
19545 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
19546 {
19547   struct attribute *attr;
19548
19549   attr = dwarf2_attr (die, DW_AT_name, cu);
19550   if ((!attr || !DW_STRING (attr))
19551       && die->tag != DW_TAG_namespace
19552       && die->tag != DW_TAG_class_type
19553       && die->tag != DW_TAG_interface_type
19554       && die->tag != DW_TAG_structure_type
19555       && die->tag != DW_TAG_union_type)
19556     return NULL;
19557
19558   switch (die->tag)
19559     {
19560     case DW_TAG_compile_unit:
19561     case DW_TAG_partial_unit:
19562       /* Compilation units have a DW_AT_name that is a filename, not
19563          a source language identifier.  */
19564     case DW_TAG_enumeration_type:
19565     case DW_TAG_enumerator:
19566       /* These tags always have simple identifiers already; no need
19567          to canonicalize them.  */
19568       return DW_STRING (attr);
19569
19570     case DW_TAG_namespace:
19571       if (attr != NULL && DW_STRING (attr) != NULL)
19572         return DW_STRING (attr);
19573       return CP_ANONYMOUS_NAMESPACE_STR;
19574
19575     case DW_TAG_class_type:
19576     case DW_TAG_interface_type:
19577     case DW_TAG_structure_type:
19578     case DW_TAG_union_type:
19579       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19580          structures or unions.  These were of the form "._%d" in GCC 4.1,
19581          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19582          and GCC 4.4.  We work around this problem by ignoring these.  */
19583       if (attr && DW_STRING (attr)
19584           && (startswith (DW_STRING (attr), "._")
19585               || startswith (DW_STRING (attr), "<anonymous")))
19586         return NULL;
19587
19588       /* GCC might emit a nameless typedef that has a linkage name.  See
19589          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19590       if (!attr || DW_STRING (attr) == NULL)
19591         {
19592           char *demangled = NULL;
19593
19594           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19595           if (attr == NULL)
19596             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19597
19598           if (attr == NULL || DW_STRING (attr) == NULL)
19599             return NULL;
19600
19601           /* Avoid demangling DW_STRING (attr) the second time on a second
19602              call for the same DIE.  */
19603           if (!DW_STRING_IS_CANONICAL (attr))
19604             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
19605
19606           if (demangled)
19607             {
19608               const char *base;
19609
19610               /* FIXME: we already did this for the partial symbol... */
19611               DW_STRING (attr)
19612                 = ((const char *)
19613                    obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19614                                   demangled, strlen (demangled)));
19615               DW_STRING_IS_CANONICAL (attr) = 1;
19616               xfree (demangled);
19617
19618               /* Strip any leading namespaces/classes, keep only the base name.
19619                  DW_AT_name for named DIEs does not contain the prefixes.  */
19620               base = strrchr (DW_STRING (attr), ':');
19621               if (base && base > DW_STRING (attr) && base[-1] == ':')
19622                 return &base[1];
19623               else
19624                 return DW_STRING (attr);
19625             }
19626         }
19627       break;
19628
19629     default:
19630       break;
19631     }
19632
19633   if (!DW_STRING_IS_CANONICAL (attr))
19634     {
19635       DW_STRING (attr)
19636         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
19637                                     &cu->objfile->per_bfd->storage_obstack);
19638       DW_STRING_IS_CANONICAL (attr) = 1;
19639     }
19640   return DW_STRING (attr);
19641 }
19642
19643 /* Return the die that this die in an extension of, or NULL if there
19644    is none.  *EXT_CU is the CU containing DIE on input, and the CU
19645    containing the return value on output.  */
19646
19647 static struct die_info *
19648 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
19649 {
19650   struct attribute *attr;
19651
19652   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
19653   if (attr == NULL)
19654     return NULL;
19655
19656   return follow_die_ref (die, attr, ext_cu);
19657 }
19658
19659 /* Convert a DIE tag into its string name.  */
19660
19661 static const char *
19662 dwarf_tag_name (unsigned tag)
19663 {
19664   const char *name = get_DW_TAG_name (tag);
19665
19666   if (name == NULL)
19667     return "DW_TAG_<unknown>";
19668
19669   return name;
19670 }
19671
19672 /* Convert a DWARF attribute code into its string name.  */
19673
19674 static const char *
19675 dwarf_attr_name (unsigned attr)
19676 {
19677   const char *name;
19678
19679 #ifdef MIPS /* collides with DW_AT_HP_block_index */
19680   if (attr == DW_AT_MIPS_fde)
19681     return "DW_AT_MIPS_fde";
19682 #else
19683   if (attr == DW_AT_HP_block_index)
19684     return "DW_AT_HP_block_index";
19685 #endif
19686
19687   name = get_DW_AT_name (attr);
19688
19689   if (name == NULL)
19690     return "DW_AT_<unknown>";
19691
19692   return name;
19693 }
19694
19695 /* Convert a DWARF value form code into its string name.  */
19696
19697 static const char *
19698 dwarf_form_name (unsigned form)
19699 {
19700   const char *name = get_DW_FORM_name (form);
19701
19702   if (name == NULL)
19703     return "DW_FORM_<unknown>";
19704
19705   return name;
19706 }
19707
19708 static char *
19709 dwarf_bool_name (unsigned mybool)
19710 {
19711   if (mybool)
19712     return "TRUE";
19713   else
19714     return "FALSE";
19715 }
19716
19717 /* Convert a DWARF type code into its string name.  */
19718
19719 static const char *
19720 dwarf_type_encoding_name (unsigned enc)
19721 {
19722   const char *name = get_DW_ATE_name (enc);
19723
19724   if (name == NULL)
19725     return "DW_ATE_<unknown>";
19726
19727   return name;
19728 }
19729
19730 static void
19731 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
19732 {
19733   unsigned int i;
19734
19735   print_spaces (indent, f);
19736   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
19737            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
19738
19739   if (die->parent != NULL)
19740     {
19741       print_spaces (indent, f);
19742       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
19743                           die->parent->offset.sect_off);
19744     }
19745
19746   print_spaces (indent, f);
19747   fprintf_unfiltered (f, "  has children: %s\n",
19748            dwarf_bool_name (die->child != NULL));
19749
19750   print_spaces (indent, f);
19751   fprintf_unfiltered (f, "  attributes:\n");
19752
19753   for (i = 0; i < die->num_attrs; ++i)
19754     {
19755       print_spaces (indent, f);
19756       fprintf_unfiltered (f, "    %s (%s) ",
19757                dwarf_attr_name (die->attrs[i].name),
19758                dwarf_form_name (die->attrs[i].form));
19759
19760       switch (die->attrs[i].form)
19761         {
19762         case DW_FORM_addr:
19763         case DW_FORM_GNU_addr_index:
19764           fprintf_unfiltered (f, "address: ");
19765           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
19766           break;
19767         case DW_FORM_block2:
19768         case DW_FORM_block4:
19769         case DW_FORM_block:
19770         case DW_FORM_block1:
19771           fprintf_unfiltered (f, "block: size %s",
19772                               pulongest (DW_BLOCK (&die->attrs[i])->size));
19773           break;
19774         case DW_FORM_exprloc:
19775           fprintf_unfiltered (f, "expression: size %s",
19776                               pulongest (DW_BLOCK (&die->attrs[i])->size));
19777           break;
19778         case DW_FORM_ref_addr:
19779           fprintf_unfiltered (f, "ref address: ");
19780           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19781           break;
19782         case DW_FORM_GNU_ref_alt:
19783           fprintf_unfiltered (f, "alt ref address: ");
19784           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19785           break;
19786         case DW_FORM_ref1:
19787         case DW_FORM_ref2:
19788         case DW_FORM_ref4:
19789         case DW_FORM_ref8:
19790         case DW_FORM_ref_udata:
19791           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
19792                               (long) (DW_UNSND (&die->attrs[i])));
19793           break;
19794         case DW_FORM_data1:
19795         case DW_FORM_data2:
19796         case DW_FORM_data4:
19797         case DW_FORM_data8:
19798         case DW_FORM_udata:
19799         case DW_FORM_sdata:
19800           fprintf_unfiltered (f, "constant: %s",
19801                               pulongest (DW_UNSND (&die->attrs[i])));
19802           break;
19803         case DW_FORM_sec_offset:
19804           fprintf_unfiltered (f, "section offset: %s",
19805                               pulongest (DW_UNSND (&die->attrs[i])));
19806           break;
19807         case DW_FORM_ref_sig8:
19808           fprintf_unfiltered (f, "signature: %s",
19809                               hex_string (DW_SIGNATURE (&die->attrs[i])));
19810           break;
19811         case DW_FORM_string:
19812         case DW_FORM_strp:
19813         case DW_FORM_GNU_str_index:
19814         case DW_FORM_GNU_strp_alt:
19815           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
19816                    DW_STRING (&die->attrs[i])
19817                    ? DW_STRING (&die->attrs[i]) : "",
19818                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
19819           break;
19820         case DW_FORM_flag:
19821           if (DW_UNSND (&die->attrs[i]))
19822             fprintf_unfiltered (f, "flag: TRUE");
19823           else
19824             fprintf_unfiltered (f, "flag: FALSE");
19825           break;
19826         case DW_FORM_flag_present:
19827           fprintf_unfiltered (f, "flag: TRUE");
19828           break;
19829         case DW_FORM_indirect:
19830           /* The reader will have reduced the indirect form to
19831              the "base form" so this form should not occur.  */
19832           fprintf_unfiltered (f, 
19833                               "unexpected attribute form: DW_FORM_indirect");
19834           break;
19835         default:
19836           fprintf_unfiltered (f, "unsupported attribute form: %d.",
19837                    die->attrs[i].form);
19838           break;
19839         }
19840       fprintf_unfiltered (f, "\n");
19841     }
19842 }
19843
19844 static void
19845 dump_die_for_error (struct die_info *die)
19846 {
19847   dump_die_shallow (gdb_stderr, 0, die);
19848 }
19849
19850 static void
19851 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19852 {
19853   int indent = level * 4;
19854
19855   gdb_assert (die != NULL);
19856
19857   if (level >= max_level)
19858     return;
19859
19860   dump_die_shallow (f, indent, die);
19861
19862   if (die->child != NULL)
19863     {
19864       print_spaces (indent, f);
19865       fprintf_unfiltered (f, "  Children:");
19866       if (level + 1 < max_level)
19867         {
19868           fprintf_unfiltered (f, "\n");
19869           dump_die_1 (f, level + 1, max_level, die->child);
19870         }
19871       else
19872         {
19873           fprintf_unfiltered (f,
19874                               " [not printed, max nesting level reached]\n");
19875         }
19876     }
19877
19878   if (die->sibling != NULL && level > 0)
19879     {
19880       dump_die_1 (f, level, max_level, die->sibling);
19881     }
19882 }
19883
19884 /* This is called from the pdie macro in gdbinit.in.
19885    It's not static so gcc will keep a copy callable from gdb.  */
19886
19887 void
19888 dump_die (struct die_info *die, int max_level)
19889 {
19890   dump_die_1 (gdb_stdlog, 0, max_level, die);
19891 }
19892
19893 static void
19894 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
19895 {
19896   void **slot;
19897
19898   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19899                                    INSERT);
19900
19901   *slot = die;
19902 }
19903
19904 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
19905    required kind.  */
19906
19907 static sect_offset
19908 dwarf2_get_ref_die_offset (const struct attribute *attr)
19909 {
19910   sect_offset retval = { DW_UNSND (attr) };
19911
19912   if (attr_form_is_ref (attr))
19913     return retval;
19914
19915   retval.sect_off = 0;
19916   complaint (&symfile_complaints,
19917              _("unsupported die ref attribute form: '%s'"),
19918              dwarf_form_name (attr->form));
19919   return retval;
19920 }
19921
19922 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
19923  * the value held by the attribute is not constant.  */
19924
19925 static LONGEST
19926 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
19927 {
19928   if (attr->form == DW_FORM_sdata)
19929     return DW_SND (attr);
19930   else if (attr->form == DW_FORM_udata
19931            || attr->form == DW_FORM_data1
19932            || attr->form == DW_FORM_data2
19933            || attr->form == DW_FORM_data4
19934            || attr->form == DW_FORM_data8)
19935     return DW_UNSND (attr);
19936   else
19937     {
19938       complaint (&symfile_complaints,
19939                  _("Attribute value is not a constant (%s)"),
19940                  dwarf_form_name (attr->form));
19941       return default_value;
19942     }
19943 }
19944
19945 /* Follow reference or signature attribute ATTR of SRC_DIE.
19946    On entry *REF_CU is the CU of SRC_DIE.
19947    On exit *REF_CU is the CU of the result.  */
19948
19949 static struct die_info *
19950 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
19951                        struct dwarf2_cu **ref_cu)
19952 {
19953   struct die_info *die;
19954
19955   if (attr_form_is_ref (attr))
19956     die = follow_die_ref (src_die, attr, ref_cu);
19957   else if (attr->form == DW_FORM_ref_sig8)
19958     die = follow_die_sig (src_die, attr, ref_cu);
19959   else
19960     {
19961       dump_die_for_error (src_die);
19962       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
19963              objfile_name ((*ref_cu)->objfile));
19964     }
19965
19966   return die;
19967 }
19968
19969 /* Follow reference OFFSET.
19970    On entry *REF_CU is the CU of the source die referencing OFFSET.
19971    On exit *REF_CU is the CU of the result.
19972    Returns NULL if OFFSET is invalid.  */
19973
19974 static struct die_info *
19975 follow_die_offset (sect_offset offset, int offset_in_dwz,
19976                    struct dwarf2_cu **ref_cu)
19977 {
19978   struct die_info temp_die;
19979   struct dwarf2_cu *target_cu, *cu = *ref_cu;
19980
19981   gdb_assert (cu->per_cu != NULL);
19982
19983   target_cu = cu;
19984
19985   if (cu->per_cu->is_debug_types)
19986     {
19987       /* .debug_types CUs cannot reference anything outside their CU.
19988          If they need to, they have to reference a signatured type via
19989          DW_FORM_ref_sig8.  */
19990       if (! offset_in_cu_p (&cu->header, offset))
19991         return NULL;
19992     }
19993   else if (offset_in_dwz != cu->per_cu->is_dwz
19994            || ! offset_in_cu_p (&cu->header, offset))
19995     {
19996       struct dwarf2_per_cu_data *per_cu;
19997
19998       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19999                                                  cu->objfile);
20000
20001       /* If necessary, add it to the queue and load its DIEs.  */
20002       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
20003         load_full_comp_unit (per_cu, cu->language);
20004
20005       target_cu = per_cu->cu;
20006     }
20007   else if (cu->dies == NULL)
20008     {
20009       /* We're loading full DIEs during partial symbol reading.  */
20010       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
20011       load_full_comp_unit (cu->per_cu, language_minimal);
20012     }
20013
20014   *ref_cu = target_cu;
20015   temp_die.offset = offset;
20016   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
20017                                                   &temp_die, offset.sect_off);
20018 }
20019
20020 /* Follow reference attribute ATTR of SRC_DIE.
20021    On entry *REF_CU is the CU of SRC_DIE.
20022    On exit *REF_CU is the CU of the result.  */
20023
20024 static struct die_info *
20025 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
20026                 struct dwarf2_cu **ref_cu)
20027 {
20028   sect_offset offset = dwarf2_get_ref_die_offset (attr);
20029   struct dwarf2_cu *cu = *ref_cu;
20030   struct die_info *die;
20031
20032   die = follow_die_offset (offset,
20033                            (attr->form == DW_FORM_GNU_ref_alt
20034                             || cu->per_cu->is_dwz),
20035                            ref_cu);
20036   if (!die)
20037     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
20038            "at 0x%x [in module %s]"),
20039            offset.sect_off, src_die->offset.sect_off,
20040            objfile_name (cu->objfile));
20041
20042   return die;
20043 }
20044
20045 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20046    Returned value is intended for DW_OP_call*.  Returned
20047    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
20048
20049 struct dwarf2_locexpr_baton
20050 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20051                                struct dwarf2_per_cu_data *per_cu,
20052                                CORE_ADDR (*get_frame_pc) (void *baton),
20053                                void *baton)
20054 {
20055   struct dwarf2_cu *cu;
20056   struct die_info *die;
20057   struct attribute *attr;
20058   struct dwarf2_locexpr_baton retval;
20059
20060   dw2_setup (per_cu->objfile);
20061
20062   if (per_cu->cu == NULL)
20063     load_cu (per_cu);
20064   cu = per_cu->cu;
20065   if (cu == NULL)
20066     {
20067       /* We shouldn't get here for a dummy CU, but don't crash on the user.
20068          Instead just throw an error, not much else we can do.  */
20069       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20070              offset.sect_off, objfile_name (per_cu->objfile));
20071     }
20072
20073   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20074   if (!die)
20075     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
20076            offset.sect_off, objfile_name (per_cu->objfile));
20077
20078   attr = dwarf2_attr (die, DW_AT_location, cu);
20079   if (!attr)
20080     {
20081       /* DWARF: "If there is no such attribute, then there is no effect.".
20082          DATA is ignored if SIZE is 0.  */
20083
20084       retval.data = NULL;
20085       retval.size = 0;
20086     }
20087   else if (attr_form_is_section_offset (attr))
20088     {
20089       struct dwarf2_loclist_baton loclist_baton;
20090       CORE_ADDR pc = (*get_frame_pc) (baton);
20091       size_t size;
20092
20093       fill_in_loclist_baton (cu, &loclist_baton, attr);
20094
20095       retval.data = dwarf2_find_location_expression (&loclist_baton,
20096                                                      &size, pc);
20097       retval.size = size;
20098     }
20099   else
20100     {
20101       if (!attr_form_is_block (attr))
20102         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20103                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
20104                offset.sect_off, objfile_name (per_cu->objfile));
20105
20106       retval.data = DW_BLOCK (attr)->data;
20107       retval.size = DW_BLOCK (attr)->size;
20108     }
20109   retval.per_cu = cu->per_cu;
20110
20111   age_cached_comp_units ();
20112
20113   return retval;
20114 }
20115
20116 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20117    offset.  */
20118
20119 struct dwarf2_locexpr_baton
20120 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20121                              struct dwarf2_per_cu_data *per_cu,
20122                              CORE_ADDR (*get_frame_pc) (void *baton),
20123                              void *baton)
20124 {
20125   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20126
20127   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20128 }
20129
20130 /* Write a constant of a given type as target-ordered bytes into
20131    OBSTACK.  */
20132
20133 static const gdb_byte *
20134 write_constant_as_bytes (struct obstack *obstack,
20135                          enum bfd_endian byte_order,
20136                          struct type *type,
20137                          ULONGEST value,
20138                          LONGEST *len)
20139 {
20140   gdb_byte *result;
20141
20142   *len = TYPE_LENGTH (type);
20143   result = (gdb_byte *) obstack_alloc (obstack, *len);
20144   store_unsigned_integer (result, *len, byte_order, value);
20145
20146   return result;
20147 }
20148
20149 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20150    pointer to the constant bytes and set LEN to the length of the
20151    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
20152    does not have a DW_AT_const_value, return NULL.  */
20153
20154 const gdb_byte *
20155 dwarf2_fetch_constant_bytes (sect_offset offset,
20156                              struct dwarf2_per_cu_data *per_cu,
20157                              struct obstack *obstack,
20158                              LONGEST *len)
20159 {
20160   struct dwarf2_cu *cu;
20161   struct die_info *die;
20162   struct attribute *attr;
20163   const gdb_byte *result = NULL;
20164   struct type *type;
20165   LONGEST value;
20166   enum bfd_endian byte_order;
20167
20168   dw2_setup (per_cu->objfile);
20169
20170   if (per_cu->cu == NULL)
20171     load_cu (per_cu);
20172   cu = per_cu->cu;
20173   if (cu == NULL)
20174     {
20175       /* We shouldn't get here for a dummy CU, but don't crash on the user.
20176          Instead just throw an error, not much else we can do.  */
20177       error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20178              offset.sect_off, objfile_name (per_cu->objfile));
20179     }
20180
20181   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20182   if (!die)
20183     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
20184            offset.sect_off, objfile_name (per_cu->objfile));
20185
20186
20187   attr = dwarf2_attr (die, DW_AT_const_value, cu);
20188   if (attr == NULL)
20189     return NULL;
20190
20191   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20192                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20193
20194   switch (attr->form)
20195     {
20196     case DW_FORM_addr:
20197     case DW_FORM_GNU_addr_index:
20198       {
20199         gdb_byte *tem;
20200
20201         *len = cu->header.addr_size;
20202         tem = (gdb_byte *) obstack_alloc (obstack, *len);
20203         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20204         result = tem;
20205       }
20206       break;
20207     case DW_FORM_string:
20208     case DW_FORM_strp:
20209     case DW_FORM_GNU_str_index:
20210     case DW_FORM_GNU_strp_alt:
20211       /* DW_STRING is already allocated on the objfile obstack, point
20212          directly to it.  */
20213       result = (const gdb_byte *) DW_STRING (attr);
20214       *len = strlen (DW_STRING (attr));
20215       break;
20216     case DW_FORM_block1:
20217     case DW_FORM_block2:
20218     case DW_FORM_block4:
20219     case DW_FORM_block:
20220     case DW_FORM_exprloc:
20221       result = DW_BLOCK (attr)->data;
20222       *len = DW_BLOCK (attr)->size;
20223       break;
20224
20225       /* The DW_AT_const_value attributes are supposed to carry the
20226          symbol's value "represented as it would be on the target
20227          architecture."  By the time we get here, it's already been
20228          converted to host endianness, so we just need to sign- or
20229          zero-extend it as appropriate.  */
20230     case DW_FORM_data1:
20231       type = die_type (die, cu);
20232       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20233       if (result == NULL)
20234         result = write_constant_as_bytes (obstack, byte_order,
20235                                           type, value, len);
20236       break;
20237     case DW_FORM_data2:
20238       type = die_type (die, cu);
20239       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20240       if (result == NULL)
20241         result = write_constant_as_bytes (obstack, byte_order,
20242                                           type, value, len);
20243       break;
20244     case DW_FORM_data4:
20245       type = die_type (die, cu);
20246       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20247       if (result == NULL)
20248         result = write_constant_as_bytes (obstack, byte_order,
20249                                           type, value, len);
20250       break;
20251     case DW_FORM_data8:
20252       type = die_type (die, cu);
20253       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20254       if (result == NULL)
20255         result = write_constant_as_bytes (obstack, byte_order,
20256                                           type, value, len);
20257       break;
20258
20259     case DW_FORM_sdata:
20260       type = die_type (die, cu);
20261       result = write_constant_as_bytes (obstack, byte_order,
20262                                         type, DW_SND (attr), len);
20263       break;
20264
20265     case DW_FORM_udata:
20266       type = die_type (die, cu);
20267       result = write_constant_as_bytes (obstack, byte_order,
20268                                         type, DW_UNSND (attr), len);
20269       break;
20270
20271     default:
20272       complaint (&symfile_complaints,
20273                  _("unsupported const value attribute form: '%s'"),
20274                  dwarf_form_name (attr->form));
20275       break;
20276     }
20277
20278   return result;
20279 }
20280
20281 /* Return the type of the DIE at DIE_OFFSET in the CU named by
20282    PER_CU.  */
20283
20284 struct type *
20285 dwarf2_get_die_type (cu_offset die_offset,
20286                      struct dwarf2_per_cu_data *per_cu)
20287 {
20288   sect_offset die_offset_sect;
20289
20290   dw2_setup (per_cu->objfile);
20291
20292   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20293   return get_die_type_at_offset (die_offset_sect, per_cu);
20294 }
20295
20296 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
20297    On entry *REF_CU is the CU of SRC_DIE.
20298    On exit *REF_CU is the CU of the result.
20299    Returns NULL if the referenced DIE isn't found.  */
20300
20301 static struct die_info *
20302 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20303                   struct dwarf2_cu **ref_cu)
20304 {
20305   struct die_info temp_die;
20306   struct dwarf2_cu *sig_cu;
20307   struct die_info *die;
20308
20309   /* While it might be nice to assert sig_type->type == NULL here,
20310      we can get here for DW_AT_imported_declaration where we need
20311      the DIE not the type.  */
20312
20313   /* If necessary, add it to the queue and load its DIEs.  */
20314
20315   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
20316     read_signatured_type (sig_type);
20317
20318   sig_cu = sig_type->per_cu.cu;
20319   gdb_assert (sig_cu != NULL);
20320   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20321   temp_die.offset = sig_type->type_offset_in_section;
20322   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
20323                                                  temp_die.offset.sect_off);
20324   if (die)
20325     {
20326       /* For .gdb_index version 7 keep track of included TUs.
20327          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
20328       if (dwarf2_per_objfile->index_table != NULL
20329           && dwarf2_per_objfile->index_table->version <= 7)
20330         {
20331           VEC_safe_push (dwarf2_per_cu_ptr,
20332                          (*ref_cu)->per_cu->imported_symtabs,
20333                          sig_cu->per_cu);
20334         }
20335
20336       *ref_cu = sig_cu;
20337       return die;
20338     }
20339
20340   return NULL;
20341 }
20342
20343 /* Follow signatured type referenced by ATTR in SRC_DIE.
20344    On entry *REF_CU is the CU of SRC_DIE.
20345    On exit *REF_CU is the CU of the result.
20346    The result is the DIE of the type.
20347    If the referenced type cannot be found an error is thrown.  */
20348
20349 static struct die_info *
20350 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
20351                 struct dwarf2_cu **ref_cu)
20352 {
20353   ULONGEST signature = DW_SIGNATURE (attr);
20354   struct signatured_type *sig_type;
20355   struct die_info *die;
20356
20357   gdb_assert (attr->form == DW_FORM_ref_sig8);
20358
20359   sig_type = lookup_signatured_type (*ref_cu, signature);
20360   /* sig_type will be NULL if the signatured type is missing from
20361      the debug info.  */
20362   if (sig_type == NULL)
20363     {
20364       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20365                " from DIE at 0x%x [in module %s]"),
20366              hex_string (signature), src_die->offset.sect_off,
20367              objfile_name ((*ref_cu)->objfile));
20368     }
20369
20370   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20371   if (die == NULL)
20372     {
20373       dump_die_for_error (src_die);
20374       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20375                " from DIE at 0x%x [in module %s]"),
20376              hex_string (signature), src_die->offset.sect_off,
20377              objfile_name ((*ref_cu)->objfile));
20378     }
20379
20380   return die;
20381 }
20382
20383 /* Get the type specified by SIGNATURE referenced in DIE/CU,
20384    reading in and processing the type unit if necessary.  */
20385
20386 static struct type *
20387 get_signatured_type (struct die_info *die, ULONGEST signature,
20388                      struct dwarf2_cu *cu)
20389 {
20390   struct signatured_type *sig_type;
20391   struct dwarf2_cu *type_cu;
20392   struct die_info *type_die;
20393   struct type *type;
20394
20395   sig_type = lookup_signatured_type (cu, signature);
20396   /* sig_type will be NULL if the signatured type is missing from
20397      the debug info.  */
20398   if (sig_type == NULL)
20399     {
20400       complaint (&symfile_complaints,
20401                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
20402                    " from DIE at 0x%x [in module %s]"),
20403                  hex_string (signature), die->offset.sect_off,
20404                  objfile_name (dwarf2_per_objfile->objfile));
20405       return build_error_marker_type (cu, die);
20406     }
20407
20408   /* If we already know the type we're done.  */
20409   if (sig_type->type != NULL)
20410     return sig_type->type;
20411
20412   type_cu = cu;
20413   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20414   if (type_die != NULL)
20415     {
20416       /* N.B. We need to call get_die_type to ensure only one type for this DIE
20417          is created.  This is important, for example, because for c++ classes
20418          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
20419       type = read_type_die (type_die, type_cu);
20420       if (type == NULL)
20421         {
20422           complaint (&symfile_complaints,
20423                      _("Dwarf Error: Cannot build signatured type %s"
20424                        " referenced from DIE at 0x%x [in module %s]"),
20425                      hex_string (signature), die->offset.sect_off,
20426                      objfile_name (dwarf2_per_objfile->objfile));
20427           type = build_error_marker_type (cu, die);
20428         }
20429     }
20430   else
20431     {
20432       complaint (&symfile_complaints,
20433                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
20434                    " from DIE at 0x%x [in module %s]"),
20435                  hex_string (signature), die->offset.sect_off,
20436                  objfile_name (dwarf2_per_objfile->objfile));
20437       type = build_error_marker_type (cu, die);
20438     }
20439   sig_type->type = type;
20440
20441   return type;
20442 }
20443
20444 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20445    reading in and processing the type unit if necessary.  */
20446
20447 static struct type *
20448 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
20449                           struct dwarf2_cu *cu) /* ARI: editCase function */
20450 {
20451   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
20452   if (attr_form_is_ref (attr))
20453     {
20454       struct dwarf2_cu *type_cu = cu;
20455       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20456
20457       return read_type_die (type_die, type_cu);
20458     }
20459   else if (attr->form == DW_FORM_ref_sig8)
20460     {
20461       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20462     }
20463   else
20464     {
20465       complaint (&symfile_complaints,
20466                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20467                    " at 0x%x [in module %s]"),
20468                  dwarf_form_name (attr->form), die->offset.sect_off,
20469                  objfile_name (dwarf2_per_objfile->objfile));
20470       return build_error_marker_type (cu, die);
20471     }
20472 }
20473
20474 /* Load the DIEs associated with type unit PER_CU into memory.  */
20475
20476 static void
20477 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
20478 {
20479   struct signatured_type *sig_type;
20480
20481   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
20482   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20483
20484   /* We have the per_cu, but we need the signatured_type.
20485      Fortunately this is an easy translation.  */
20486   gdb_assert (per_cu->is_debug_types);
20487   sig_type = (struct signatured_type *) per_cu;
20488
20489   gdb_assert (per_cu->cu == NULL);
20490
20491   read_signatured_type (sig_type);
20492
20493   gdb_assert (per_cu->cu != NULL);
20494 }
20495
20496 /* die_reader_func for read_signatured_type.
20497    This is identical to load_full_comp_unit_reader,
20498    but is kept separate for now.  */
20499
20500 static void
20501 read_signatured_type_reader (const struct die_reader_specs *reader,
20502                              const gdb_byte *info_ptr,
20503                              struct die_info *comp_unit_die,
20504                              int has_children,
20505                              void *data)
20506 {
20507   struct dwarf2_cu *cu = reader->cu;
20508
20509   gdb_assert (cu->die_hash == NULL);
20510   cu->die_hash =
20511     htab_create_alloc_ex (cu->header.length / 12,
20512                           die_hash,
20513                           die_eq,
20514                           NULL,
20515                           &cu->comp_unit_obstack,
20516                           hashtab_obstack_allocate,
20517                           dummy_obstack_deallocate);
20518
20519   if (has_children)
20520     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20521                                                   &info_ptr, comp_unit_die);
20522   cu->dies = comp_unit_die;
20523   /* comp_unit_die is not stored in die_hash, no need.  */
20524
20525   /* We try not to read any attributes in this function, because not
20526      all CUs needed for references have been loaded yet, and symbol
20527      table processing isn't initialized.  But we have to set the CU language,
20528      or we won't be able to build types correctly.
20529      Similarly, if we do not read the producer, we can not apply
20530      producer-specific interpretation.  */
20531   prepare_one_comp_unit (cu, cu->dies, language_minimal);
20532 }
20533
20534 /* Read in a signatured type and build its CU and DIEs.
20535    If the type is a stub for the real type in a DWO file,
20536    read in the real type from the DWO file as well.  */
20537
20538 static void
20539 read_signatured_type (struct signatured_type *sig_type)
20540 {
20541   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
20542
20543   gdb_assert (per_cu->is_debug_types);
20544   gdb_assert (per_cu->cu == NULL);
20545
20546   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20547                            read_signatured_type_reader, NULL);
20548   sig_type->per_cu.tu_read = 1;
20549 }
20550
20551 /* Decode simple location descriptions.
20552    Given a pointer to a dwarf block that defines a location, compute
20553    the location and return the value.
20554
20555    NOTE drow/2003-11-18: This function is called in two situations
20556    now: for the address of static or global variables (partial symbols
20557    only) and for offsets into structures which are expected to be
20558    (more or less) constant.  The partial symbol case should go away,
20559    and only the constant case should remain.  That will let this
20560    function complain more accurately.  A few special modes are allowed
20561    without complaint for global variables (for instance, global
20562    register values and thread-local values).
20563
20564    A location description containing no operations indicates that the
20565    object is optimized out.  The return value is 0 for that case.
20566    FIXME drow/2003-11-16: No callers check for this case any more; soon all
20567    callers will only want a very basic result and this can become a
20568    complaint.
20569
20570    Note that stack[0] is unused except as a default error return.  */
20571
20572 static CORE_ADDR
20573 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
20574 {
20575   struct objfile *objfile = cu->objfile;
20576   size_t i;
20577   size_t size = blk->size;
20578   const gdb_byte *data = blk->data;
20579   CORE_ADDR stack[64];
20580   int stacki;
20581   unsigned int bytes_read, unsnd;
20582   gdb_byte op;
20583
20584   i = 0;
20585   stacki = 0;
20586   stack[stacki] = 0;
20587   stack[++stacki] = 0;
20588
20589   while (i < size)
20590     {
20591       op = data[i++];
20592       switch (op)
20593         {
20594         case DW_OP_lit0:
20595         case DW_OP_lit1:
20596         case DW_OP_lit2:
20597         case DW_OP_lit3:
20598         case DW_OP_lit4:
20599         case DW_OP_lit5:
20600         case DW_OP_lit6:
20601         case DW_OP_lit7:
20602         case DW_OP_lit8:
20603         case DW_OP_lit9:
20604         case DW_OP_lit10:
20605         case DW_OP_lit11:
20606         case DW_OP_lit12:
20607         case DW_OP_lit13:
20608         case DW_OP_lit14:
20609         case DW_OP_lit15:
20610         case DW_OP_lit16:
20611         case DW_OP_lit17:
20612         case DW_OP_lit18:
20613         case DW_OP_lit19:
20614         case DW_OP_lit20:
20615         case DW_OP_lit21:
20616         case DW_OP_lit22:
20617         case DW_OP_lit23:
20618         case DW_OP_lit24:
20619         case DW_OP_lit25:
20620         case DW_OP_lit26:
20621         case DW_OP_lit27:
20622         case DW_OP_lit28:
20623         case DW_OP_lit29:
20624         case DW_OP_lit30:
20625         case DW_OP_lit31:
20626           stack[++stacki] = op - DW_OP_lit0;
20627           break;
20628
20629         case DW_OP_reg0:
20630         case DW_OP_reg1:
20631         case DW_OP_reg2:
20632         case DW_OP_reg3:
20633         case DW_OP_reg4:
20634         case DW_OP_reg5:
20635         case DW_OP_reg6:
20636         case DW_OP_reg7:
20637         case DW_OP_reg8:
20638         case DW_OP_reg9:
20639         case DW_OP_reg10:
20640         case DW_OP_reg11:
20641         case DW_OP_reg12:
20642         case DW_OP_reg13:
20643         case DW_OP_reg14:
20644         case DW_OP_reg15:
20645         case DW_OP_reg16:
20646         case DW_OP_reg17:
20647         case DW_OP_reg18:
20648         case DW_OP_reg19:
20649         case DW_OP_reg20:
20650         case DW_OP_reg21:
20651         case DW_OP_reg22:
20652         case DW_OP_reg23:
20653         case DW_OP_reg24:
20654         case DW_OP_reg25:
20655         case DW_OP_reg26:
20656         case DW_OP_reg27:
20657         case DW_OP_reg28:
20658         case DW_OP_reg29:
20659         case DW_OP_reg30:
20660         case DW_OP_reg31:
20661           stack[++stacki] = op - DW_OP_reg0;
20662           if (i < size)
20663             dwarf2_complex_location_expr_complaint ();
20664           break;
20665
20666         case DW_OP_regx:
20667           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20668           i += bytes_read;
20669           stack[++stacki] = unsnd;
20670           if (i < size)
20671             dwarf2_complex_location_expr_complaint ();
20672           break;
20673
20674         case DW_OP_addr:
20675           stack[++stacki] = read_address (objfile->obfd, &data[i],
20676                                           cu, &bytes_read);
20677           i += bytes_read;
20678           break;
20679
20680         case DW_OP_const1u:
20681           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20682           i += 1;
20683           break;
20684
20685         case DW_OP_const1s:
20686           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20687           i += 1;
20688           break;
20689
20690         case DW_OP_const2u:
20691           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20692           i += 2;
20693           break;
20694
20695         case DW_OP_const2s:
20696           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20697           i += 2;
20698           break;
20699
20700         case DW_OP_const4u:
20701           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20702           i += 4;
20703           break;
20704
20705         case DW_OP_const4s:
20706           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20707           i += 4;
20708           break;
20709
20710         case DW_OP_const8u:
20711           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20712           i += 8;
20713           break;
20714
20715         case DW_OP_constu:
20716           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20717                                                   &bytes_read);
20718           i += bytes_read;
20719           break;
20720
20721         case DW_OP_consts:
20722           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20723           i += bytes_read;
20724           break;
20725
20726         case DW_OP_dup:
20727           stack[stacki + 1] = stack[stacki];
20728           stacki++;
20729           break;
20730
20731         case DW_OP_plus:
20732           stack[stacki - 1] += stack[stacki];
20733           stacki--;
20734           break;
20735
20736         case DW_OP_plus_uconst:
20737           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20738                                                  &bytes_read);
20739           i += bytes_read;
20740           break;
20741
20742         case DW_OP_minus:
20743           stack[stacki - 1] -= stack[stacki];
20744           stacki--;
20745           break;
20746
20747         case DW_OP_deref:
20748           /* If we're not the last op, then we definitely can't encode
20749              this using GDB's address_class enum.  This is valid for partial
20750              global symbols, although the variable's address will be bogus
20751              in the psymtab.  */
20752           if (i < size)
20753             dwarf2_complex_location_expr_complaint ();
20754           break;
20755
20756         case DW_OP_GNU_push_tls_address:
20757         case DW_OP_form_tls_address:
20758           /* The top of the stack has the offset from the beginning
20759              of the thread control block at which the variable is located.  */
20760           /* Nothing should follow this operator, so the top of stack would
20761              be returned.  */
20762           /* This is valid for partial global symbols, but the variable's
20763              address will be bogus in the psymtab.  Make it always at least
20764              non-zero to not look as a variable garbage collected by linker
20765              which have DW_OP_addr 0.  */
20766           if (i < size)
20767             dwarf2_complex_location_expr_complaint ();
20768           stack[stacki]++;
20769           break;
20770
20771         case DW_OP_GNU_uninit:
20772           break;
20773
20774         case DW_OP_GNU_addr_index:
20775         case DW_OP_GNU_const_index:
20776           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20777                                                          &bytes_read);
20778           i += bytes_read;
20779           break;
20780
20781         default:
20782           {
20783             const char *name = get_DW_OP_name (op);
20784
20785             if (name)
20786               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20787                          name);
20788             else
20789               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20790                          op);
20791           }
20792
20793           return (stack[stacki]);
20794         }
20795
20796       /* Enforce maximum stack depth of SIZE-1 to avoid writing
20797          outside of the allocated space.  Also enforce minimum>0.  */
20798       if (stacki >= ARRAY_SIZE (stack) - 1)
20799         {
20800           complaint (&symfile_complaints,
20801                      _("location description stack overflow"));
20802           return 0;
20803         }
20804
20805       if (stacki <= 0)
20806         {
20807           complaint (&symfile_complaints,
20808                      _("location description stack underflow"));
20809           return 0;
20810         }
20811     }
20812   return (stack[stacki]);
20813 }
20814
20815 /* memory allocation interface */
20816
20817 static struct dwarf_block *
20818 dwarf_alloc_block (struct dwarf2_cu *cu)
20819 {
20820   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
20821 }
20822
20823 static struct die_info *
20824 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
20825 {
20826   struct die_info *die;
20827   size_t size = sizeof (struct die_info);
20828
20829   if (num_attrs > 1)
20830     size += (num_attrs - 1) * sizeof (struct attribute);
20831
20832   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
20833   memset (die, 0, sizeof (struct die_info));
20834   return (die);
20835 }
20836
20837 \f
20838 /* Macro support.  */
20839
20840 /* Return file name relative to the compilation directory of file number I in
20841    *LH's file name table.  The result is allocated using xmalloc; the caller is
20842    responsible for freeing it.  */
20843
20844 static char *
20845 file_file_name (int file, struct line_header *lh)
20846 {
20847   /* Is the file number a valid index into the line header's file name
20848      table?  Remember that file numbers start with one, not zero.  */
20849   if (1 <= file && file <= lh->num_file_names)
20850     {
20851       struct file_entry *fe = &lh->file_names[file - 1];
20852
20853       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20854           || lh->include_dirs == NULL)
20855         return xstrdup (fe->name);
20856       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20857                      fe->name, (char *) NULL);
20858     }
20859   else
20860     {
20861       /* The compiler produced a bogus file number.  We can at least
20862          record the macro definitions made in the file, even if we
20863          won't be able to find the file by name.  */
20864       char fake_name[80];
20865
20866       xsnprintf (fake_name, sizeof (fake_name),
20867                  "<bad macro file number %d>", file);
20868
20869       complaint (&symfile_complaints,
20870                  _("bad file number in macro information (%d)"),
20871                  file);
20872
20873       return xstrdup (fake_name);
20874     }
20875 }
20876
20877 /* Return the full name of file number I in *LH's file name table.
20878    Use COMP_DIR as the name of the current directory of the
20879    compilation.  The result is allocated using xmalloc; the caller is
20880    responsible for freeing it.  */
20881 static char *
20882 file_full_name (int file, struct line_header *lh, const char *comp_dir)
20883 {
20884   /* Is the file number a valid index into the line header's file name
20885      table?  Remember that file numbers start with one, not zero.  */
20886   if (1 <= file && file <= lh->num_file_names)
20887     {
20888       char *relative = file_file_name (file, lh);
20889
20890       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20891         return relative;
20892       return reconcat (relative, comp_dir, SLASH_STRING,
20893                        relative, (char *) NULL);
20894     }
20895   else
20896     return file_file_name (file, lh);
20897 }
20898
20899
20900 static struct macro_source_file *
20901 macro_start_file (int file, int line,
20902                   struct macro_source_file *current_file,
20903                   struct line_header *lh)
20904 {
20905   /* File name relative to the compilation directory of this source file.  */
20906   char *file_name = file_file_name (file, lh);
20907
20908   if (! current_file)
20909     {
20910       /* Note: We don't create a macro table for this compilation unit
20911          at all until we actually get a filename.  */
20912       struct macro_table *macro_table = get_macro_table ();
20913
20914       /* If we have no current file, then this must be the start_file
20915          directive for the compilation unit's main source file.  */
20916       current_file = macro_set_main (macro_table, file_name);
20917       macro_define_special (macro_table);
20918     }
20919   else
20920     current_file = macro_include (current_file, line, file_name);
20921
20922   xfree (file_name);
20923
20924   return current_file;
20925 }
20926
20927
20928 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20929    followed by a null byte.  */
20930 static char *
20931 copy_string (const char *buf, int len)
20932 {
20933   char *s = (char *) xmalloc (len + 1);
20934
20935   memcpy (s, buf, len);
20936   s[len] = '\0';
20937   return s;
20938 }
20939
20940
20941 static const char *
20942 consume_improper_spaces (const char *p, const char *body)
20943 {
20944   if (*p == ' ')
20945     {
20946       complaint (&symfile_complaints,
20947                  _("macro definition contains spaces "
20948                    "in formal argument list:\n`%s'"),
20949                  body);
20950
20951       while (*p == ' ')
20952         p++;
20953     }
20954
20955   return p;
20956 }
20957
20958
20959 static void
20960 parse_macro_definition (struct macro_source_file *file, int line,
20961                         const char *body)
20962 {
20963   const char *p;
20964
20965   /* The body string takes one of two forms.  For object-like macro
20966      definitions, it should be:
20967
20968         <macro name> " " <definition>
20969
20970      For function-like macro definitions, it should be:
20971
20972         <macro name> "() " <definition>
20973      or
20974         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20975
20976      Spaces may appear only where explicitly indicated, and in the
20977      <definition>.
20978
20979      The Dwarf 2 spec says that an object-like macro's name is always
20980      followed by a space, but versions of GCC around March 2002 omit
20981      the space when the macro's definition is the empty string.
20982
20983      The Dwarf 2 spec says that there should be no spaces between the
20984      formal arguments in a function-like macro's formal argument list,
20985      but versions of GCC around March 2002 include spaces after the
20986      commas.  */
20987
20988
20989   /* Find the extent of the macro name.  The macro name is terminated
20990      by either a space or null character (for an object-like macro) or
20991      an opening paren (for a function-like macro).  */
20992   for (p = body; *p; p++)
20993     if (*p == ' ' || *p == '(')
20994       break;
20995
20996   if (*p == ' ' || *p == '\0')
20997     {
20998       /* It's an object-like macro.  */
20999       int name_len = p - body;
21000       char *name = copy_string (body, name_len);
21001       const char *replacement;
21002
21003       if (*p == ' ')
21004         replacement = body + name_len + 1;
21005       else
21006         {
21007           dwarf2_macro_malformed_definition_complaint (body);
21008           replacement = body + name_len;
21009         }
21010
21011       macro_define_object (file, line, name, replacement);
21012
21013       xfree (name);
21014     }
21015   else if (*p == '(')
21016     {
21017       /* It's a function-like macro.  */
21018       char *name = copy_string (body, p - body);
21019       int argc = 0;
21020       int argv_size = 1;
21021       char **argv = XNEWVEC (char *, argv_size);
21022
21023       p++;
21024
21025       p = consume_improper_spaces (p, body);
21026
21027       /* Parse the formal argument list.  */
21028       while (*p && *p != ')')
21029         {
21030           /* Find the extent of the current argument name.  */
21031           const char *arg_start = p;
21032
21033           while (*p && *p != ',' && *p != ')' && *p != ' ')
21034             p++;
21035
21036           if (! *p || p == arg_start)
21037             dwarf2_macro_malformed_definition_complaint (body);
21038           else
21039             {
21040               /* Make sure argv has room for the new argument.  */
21041               if (argc >= argv_size)
21042                 {
21043                   argv_size *= 2;
21044                   argv = XRESIZEVEC (char *, argv, argv_size);
21045                 }
21046
21047               argv[argc++] = copy_string (arg_start, p - arg_start);
21048             }
21049
21050           p = consume_improper_spaces (p, body);
21051
21052           /* Consume the comma, if present.  */
21053           if (*p == ',')
21054             {
21055               p++;
21056
21057               p = consume_improper_spaces (p, body);
21058             }
21059         }
21060
21061       if (*p == ')')
21062         {
21063           p++;
21064
21065           if (*p == ' ')
21066             /* Perfectly formed definition, no complaints.  */
21067             macro_define_function (file, line, name,
21068                                    argc, (const char **) argv,
21069                                    p + 1);
21070           else if (*p == '\0')
21071             {
21072               /* Complain, but do define it.  */
21073               dwarf2_macro_malformed_definition_complaint (body);
21074               macro_define_function (file, line, name,
21075                                      argc, (const char **) argv,
21076                                      p);
21077             }
21078           else
21079             /* Just complain.  */
21080             dwarf2_macro_malformed_definition_complaint (body);
21081         }
21082       else
21083         /* Just complain.  */
21084         dwarf2_macro_malformed_definition_complaint (body);
21085
21086       xfree (name);
21087       {
21088         int i;
21089
21090         for (i = 0; i < argc; i++)
21091           xfree (argv[i]);
21092       }
21093       xfree (argv);
21094     }
21095   else
21096     dwarf2_macro_malformed_definition_complaint (body);
21097 }
21098
21099 /* Skip some bytes from BYTES according to the form given in FORM.
21100    Returns the new pointer.  */
21101
21102 static const gdb_byte *
21103 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
21104                  enum dwarf_form form,
21105                  unsigned int offset_size,
21106                  struct dwarf2_section_info *section)
21107 {
21108   unsigned int bytes_read;
21109
21110   switch (form)
21111     {
21112     case DW_FORM_data1:
21113     case DW_FORM_flag:
21114       ++bytes;
21115       break;
21116
21117     case DW_FORM_data2:
21118       bytes += 2;
21119       break;
21120
21121     case DW_FORM_data4:
21122       bytes += 4;
21123       break;
21124
21125     case DW_FORM_data8:
21126       bytes += 8;
21127       break;
21128
21129     case DW_FORM_string:
21130       read_direct_string (abfd, bytes, &bytes_read);
21131       bytes += bytes_read;
21132       break;
21133
21134     case DW_FORM_sec_offset:
21135     case DW_FORM_strp:
21136     case DW_FORM_GNU_strp_alt:
21137       bytes += offset_size;
21138       break;
21139
21140     case DW_FORM_block:
21141       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21142       bytes += bytes_read;
21143       break;
21144
21145     case DW_FORM_block1:
21146       bytes += 1 + read_1_byte (abfd, bytes);
21147       break;
21148     case DW_FORM_block2:
21149       bytes += 2 + read_2_bytes (abfd, bytes);
21150       break;
21151     case DW_FORM_block4:
21152       bytes += 4 + read_4_bytes (abfd, bytes);
21153       break;
21154
21155     case DW_FORM_sdata:
21156     case DW_FORM_udata:
21157     case DW_FORM_GNU_addr_index:
21158     case DW_FORM_GNU_str_index:
21159       bytes = gdb_skip_leb128 (bytes, buffer_end);
21160       if (bytes == NULL)
21161         {
21162           dwarf2_section_buffer_overflow_complaint (section);
21163           return NULL;
21164         }
21165       break;
21166
21167     default:
21168       {
21169       complain:
21170         complaint (&symfile_complaints,
21171                    _("invalid form 0x%x in `%s'"),
21172                    form, get_section_name (section));
21173         return NULL;
21174       }
21175     }
21176
21177   return bytes;
21178 }
21179
21180 /* A helper for dwarf_decode_macros that handles skipping an unknown
21181    opcode.  Returns an updated pointer to the macro data buffer; or,
21182    on error, issues a complaint and returns NULL.  */
21183
21184 static const gdb_byte *
21185 skip_unknown_opcode (unsigned int opcode,
21186                      const gdb_byte **opcode_definitions,
21187                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
21188                      bfd *abfd,
21189                      unsigned int offset_size,
21190                      struct dwarf2_section_info *section)
21191 {
21192   unsigned int bytes_read, i;
21193   unsigned long arg;
21194   const gdb_byte *defn;
21195
21196   if (opcode_definitions[opcode] == NULL)
21197     {
21198       complaint (&symfile_complaints,
21199                  _("unrecognized DW_MACFINO opcode 0x%x"),
21200                  opcode);
21201       return NULL;
21202     }
21203
21204   defn = opcode_definitions[opcode];
21205   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21206   defn += bytes_read;
21207
21208   for (i = 0; i < arg; ++i)
21209     {
21210       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
21211                                  (enum dwarf_form) defn[i], offset_size,
21212                                  section);
21213       if (mac_ptr == NULL)
21214         {
21215           /* skip_form_bytes already issued the complaint.  */
21216           return NULL;
21217         }
21218     }
21219
21220   return mac_ptr;
21221 }
21222
21223 /* A helper function which parses the header of a macro section.
21224    If the macro section is the extended (for now called "GNU") type,
21225    then this updates *OFFSET_SIZE.  Returns a pointer to just after
21226    the header, or issues a complaint and returns NULL on error.  */
21227
21228 static const gdb_byte *
21229 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
21230                           bfd *abfd,
21231                           const gdb_byte *mac_ptr,
21232                           unsigned int *offset_size,
21233                           int section_is_gnu)
21234 {
21235   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
21236
21237   if (section_is_gnu)
21238     {
21239       unsigned int version, flags;
21240
21241       version = read_2_bytes (abfd, mac_ptr);
21242       if (version != 4)
21243         {
21244           complaint (&symfile_complaints,
21245                      _("unrecognized version `%d' in .debug_macro section"),
21246                      version);
21247           return NULL;
21248         }
21249       mac_ptr += 2;
21250
21251       flags = read_1_byte (abfd, mac_ptr);
21252       ++mac_ptr;
21253       *offset_size = (flags & 1) ? 8 : 4;
21254
21255       if ((flags & 2) != 0)
21256         /* We don't need the line table offset.  */
21257         mac_ptr += *offset_size;
21258
21259       /* Vendor opcode descriptions.  */
21260       if ((flags & 4) != 0)
21261         {
21262           unsigned int i, count;
21263
21264           count = read_1_byte (abfd, mac_ptr);
21265           ++mac_ptr;
21266           for (i = 0; i < count; ++i)
21267             {
21268               unsigned int opcode, bytes_read;
21269               unsigned long arg;
21270
21271               opcode = read_1_byte (abfd, mac_ptr);
21272               ++mac_ptr;
21273               opcode_definitions[opcode] = mac_ptr;
21274               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21275               mac_ptr += bytes_read;
21276               mac_ptr += arg;
21277             }
21278         }
21279     }
21280
21281   return mac_ptr;
21282 }
21283
21284 /* A helper for dwarf_decode_macros that handles the GNU extensions,
21285    including DW_MACRO_GNU_transparent_include.  */
21286
21287 static void
21288 dwarf_decode_macro_bytes (bfd *abfd,
21289                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
21290                           struct macro_source_file *current_file,
21291                           struct line_header *lh,
21292                           struct dwarf2_section_info *section,
21293                           int section_is_gnu, int section_is_dwz,
21294                           unsigned int offset_size,
21295                           htab_t include_hash)
21296 {
21297   struct objfile *objfile = dwarf2_per_objfile->objfile;
21298   enum dwarf_macro_record_type macinfo_type;
21299   int at_commandline;
21300   const gdb_byte *opcode_definitions[256];
21301
21302   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21303                                       &offset_size, section_is_gnu);
21304   if (mac_ptr == NULL)
21305     {
21306       /* We already issued a complaint.  */
21307       return;
21308     }
21309
21310   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
21311      GDB is still reading the definitions from command line.  First
21312      DW_MACINFO_start_file will need to be ignored as it was already executed
21313      to create CURRENT_FILE for the main source holding also the command line
21314      definitions.  On first met DW_MACINFO_start_file this flag is reset to
21315      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
21316
21317   at_commandline = 1;
21318
21319   do
21320     {
21321       /* Do we at least have room for a macinfo type byte?  */
21322       if (mac_ptr >= mac_end)
21323         {
21324           dwarf2_section_buffer_overflow_complaint (section);
21325           break;
21326         }
21327
21328       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
21329       mac_ptr++;
21330
21331       /* Note that we rely on the fact that the corresponding GNU and
21332          DWARF constants are the same.  */
21333       switch (macinfo_type)
21334         {
21335           /* A zero macinfo type indicates the end of the macro
21336              information.  */
21337         case 0:
21338           break;
21339
21340         case DW_MACRO_GNU_define:
21341         case DW_MACRO_GNU_undef:
21342         case DW_MACRO_GNU_define_indirect:
21343         case DW_MACRO_GNU_undef_indirect:
21344         case DW_MACRO_GNU_define_indirect_alt:
21345         case DW_MACRO_GNU_undef_indirect_alt:
21346           {
21347             unsigned int bytes_read;
21348             int line;
21349             const char *body;
21350             int is_define;
21351
21352             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21353             mac_ptr += bytes_read;
21354
21355             if (macinfo_type == DW_MACRO_GNU_define
21356                 || macinfo_type == DW_MACRO_GNU_undef)
21357               {
21358                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21359                 mac_ptr += bytes_read;
21360               }
21361             else
21362               {
21363                 LONGEST str_offset;
21364
21365                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21366                 mac_ptr += offset_size;
21367
21368                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
21369                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21370                     || section_is_dwz)
21371                   {
21372                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
21373
21374                     body = read_indirect_string_from_dwz (dwz, str_offset);
21375                   }
21376                 else
21377                   body = read_indirect_string_at_offset (abfd, str_offset);
21378               }
21379
21380             is_define = (macinfo_type == DW_MACRO_GNU_define
21381                          || macinfo_type == DW_MACRO_GNU_define_indirect
21382                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
21383             if (! current_file)
21384               {
21385                 /* DWARF violation as no main source is present.  */
21386                 complaint (&symfile_complaints,
21387                            _("debug info with no main source gives macro %s "
21388                              "on line %d: %s"),
21389                            is_define ? _("definition") : _("undefinition"),
21390                            line, body);
21391                 break;
21392               }
21393             if ((line == 0 && !at_commandline)
21394                 || (line != 0 && at_commandline))
21395               complaint (&symfile_complaints,
21396                          _("debug info gives %s macro %s with %s line %d: %s"),
21397                          at_commandline ? _("command-line") : _("in-file"),
21398                          is_define ? _("definition") : _("undefinition"),
21399                          line == 0 ? _("zero") : _("non-zero"), line, body);
21400
21401             if (is_define)
21402               parse_macro_definition (current_file, line, body);
21403             else
21404               {
21405                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
21406                             || macinfo_type == DW_MACRO_GNU_undef_indirect
21407                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
21408                 macro_undef (current_file, line, body);
21409               }
21410           }
21411           break;
21412
21413         case DW_MACRO_GNU_start_file:
21414           {
21415             unsigned int bytes_read;
21416             int line, file;
21417
21418             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21419             mac_ptr += bytes_read;
21420             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21421             mac_ptr += bytes_read;
21422
21423             if ((line == 0 && !at_commandline)
21424                 || (line != 0 && at_commandline))
21425               complaint (&symfile_complaints,
21426                          _("debug info gives source %d included "
21427                            "from %s at %s line %d"),
21428                          file, at_commandline ? _("command-line") : _("file"),
21429                          line == 0 ? _("zero") : _("non-zero"), line);
21430
21431             if (at_commandline)
21432               {
21433                 /* This DW_MACRO_GNU_start_file was executed in the
21434                    pass one.  */
21435                 at_commandline = 0;
21436               }
21437             else
21438               current_file = macro_start_file (file, line, current_file, lh);
21439           }
21440           break;
21441
21442         case DW_MACRO_GNU_end_file:
21443           if (! current_file)
21444             complaint (&symfile_complaints,
21445                        _("macro debug info has an unmatched "
21446                          "`close_file' directive"));
21447           else
21448             {
21449               current_file = current_file->included_by;
21450               if (! current_file)
21451                 {
21452                   enum dwarf_macro_record_type next_type;
21453
21454                   /* GCC circa March 2002 doesn't produce the zero
21455                      type byte marking the end of the compilation
21456                      unit.  Complain if it's not there, but exit no
21457                      matter what.  */
21458
21459                   /* Do we at least have room for a macinfo type byte?  */
21460                   if (mac_ptr >= mac_end)
21461                     {
21462                       dwarf2_section_buffer_overflow_complaint (section);
21463                       return;
21464                     }
21465
21466                   /* We don't increment mac_ptr here, so this is just
21467                      a look-ahead.  */
21468                   next_type
21469                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
21470                                                                   mac_ptr);
21471                   if (next_type != 0)
21472                     complaint (&symfile_complaints,
21473                                _("no terminating 0-type entry for "
21474                                  "macros in `.debug_macinfo' section"));
21475
21476                   return;
21477                 }
21478             }
21479           break;
21480
21481         case DW_MACRO_GNU_transparent_include:
21482         case DW_MACRO_GNU_transparent_include_alt:
21483           {
21484             LONGEST offset;
21485             void **slot;
21486             bfd *include_bfd = abfd;
21487             struct dwarf2_section_info *include_section = section;
21488             const gdb_byte *include_mac_end = mac_end;
21489             int is_dwz = section_is_dwz;
21490             const gdb_byte *new_mac_ptr;
21491
21492             offset = read_offset_1 (abfd, mac_ptr, offset_size);
21493             mac_ptr += offset_size;
21494
21495             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21496               {
21497                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21498
21499                 dwarf2_read_section (objfile, &dwz->macro);
21500
21501                 include_section = &dwz->macro;
21502                 include_bfd = get_section_bfd_owner (include_section);
21503                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21504                 is_dwz = 1;
21505               }
21506
21507             new_mac_ptr = include_section->buffer + offset;
21508             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21509
21510             if (*slot != NULL)
21511               {
21512                 /* This has actually happened; see
21513                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
21514                 complaint (&symfile_complaints,
21515                            _("recursive DW_MACRO_GNU_transparent_include in "
21516                              ".debug_macro section"));
21517               }
21518             else
21519               {
21520                 *slot = (void *) new_mac_ptr;
21521
21522                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
21523                                           include_mac_end, current_file, lh,
21524                                           section, section_is_gnu, is_dwz,
21525                                           offset_size, include_hash);
21526
21527                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
21528               }
21529           }
21530           break;
21531
21532         case DW_MACINFO_vendor_ext:
21533           if (!section_is_gnu)
21534             {
21535               unsigned int bytes_read;
21536
21537               /* This reads the constant, but since we don't recognize
21538                  any vendor extensions, we ignore it.  */
21539               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21540               mac_ptr += bytes_read;
21541               read_direct_string (abfd, mac_ptr, &bytes_read);
21542               mac_ptr += bytes_read;
21543
21544               /* We don't recognize any vendor extensions.  */
21545               break;
21546             }
21547           /* FALLTHROUGH */
21548
21549         default:
21550           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
21551                                          mac_ptr, mac_end, abfd, offset_size,
21552                                          section);
21553           if (mac_ptr == NULL)
21554             return;
21555           break;
21556         }
21557     } while (macinfo_type != 0);
21558 }
21559
21560 static void
21561 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
21562                      int section_is_gnu)
21563 {
21564   struct objfile *objfile = dwarf2_per_objfile->objfile;
21565   struct line_header *lh = cu->line_header;
21566   bfd *abfd;
21567   const gdb_byte *mac_ptr, *mac_end;
21568   struct macro_source_file *current_file = 0;
21569   enum dwarf_macro_record_type macinfo_type;
21570   unsigned int offset_size = cu->header.offset_size;
21571   const gdb_byte *opcode_definitions[256];
21572   struct cleanup *cleanup;
21573   htab_t include_hash;
21574   void **slot;
21575   struct dwarf2_section_info *section;
21576   const char *section_name;
21577
21578   if (cu->dwo_unit != NULL)
21579     {
21580       if (section_is_gnu)
21581         {
21582           section = &cu->dwo_unit->dwo_file->sections.macro;
21583           section_name = ".debug_macro.dwo";
21584         }
21585       else
21586         {
21587           section = &cu->dwo_unit->dwo_file->sections.macinfo;
21588           section_name = ".debug_macinfo.dwo";
21589         }
21590     }
21591   else
21592     {
21593       if (section_is_gnu)
21594         {
21595           section = &dwarf2_per_objfile->macro;
21596           section_name = ".debug_macro";
21597         }
21598       else
21599         {
21600           section = &dwarf2_per_objfile->macinfo;
21601           section_name = ".debug_macinfo";
21602         }
21603     }
21604
21605   dwarf2_read_section (objfile, section);
21606   if (section->buffer == NULL)
21607     {
21608       complaint (&symfile_complaints, _("missing %s section"), section_name);
21609       return;
21610     }
21611   abfd = get_section_bfd_owner (section);
21612
21613   /* First pass: Find the name of the base filename.
21614      This filename is needed in order to process all macros whose definition
21615      (or undefinition) comes from the command line.  These macros are defined
21616      before the first DW_MACINFO_start_file entry, and yet still need to be
21617      associated to the base file.
21618
21619      To determine the base file name, we scan the macro definitions until we
21620      reach the first DW_MACINFO_start_file entry.  We then initialize
21621      CURRENT_FILE accordingly so that any macro definition found before the
21622      first DW_MACINFO_start_file can still be associated to the base file.  */
21623
21624   mac_ptr = section->buffer + offset;
21625   mac_end = section->buffer + section->size;
21626
21627   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21628                                       &offset_size, section_is_gnu);
21629   if (mac_ptr == NULL)
21630     {
21631       /* We already issued a complaint.  */
21632       return;
21633     }
21634
21635   do
21636     {
21637       /* Do we at least have room for a macinfo type byte?  */
21638       if (mac_ptr >= mac_end)
21639         {
21640           /* Complaint is printed during the second pass as GDB will probably
21641              stop the first pass earlier upon finding
21642              DW_MACINFO_start_file.  */
21643           break;
21644         }
21645
21646       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
21647       mac_ptr++;
21648
21649       /* Note that we rely on the fact that the corresponding GNU and
21650          DWARF constants are the same.  */
21651       switch (macinfo_type)
21652         {
21653           /* A zero macinfo type indicates the end of the macro
21654              information.  */
21655         case 0:
21656           break;
21657
21658         case DW_MACRO_GNU_define:
21659         case DW_MACRO_GNU_undef:
21660           /* Only skip the data by MAC_PTR.  */
21661           {
21662             unsigned int bytes_read;
21663
21664             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21665             mac_ptr += bytes_read;
21666             read_direct_string (abfd, mac_ptr, &bytes_read);
21667             mac_ptr += bytes_read;
21668           }
21669           break;
21670
21671         case DW_MACRO_GNU_start_file:
21672           {
21673             unsigned int bytes_read;
21674             int line, file;
21675
21676             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21677             mac_ptr += bytes_read;
21678             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21679             mac_ptr += bytes_read;
21680
21681             current_file = macro_start_file (file, line, current_file, lh);
21682           }
21683           break;
21684
21685         case DW_MACRO_GNU_end_file:
21686           /* No data to skip by MAC_PTR.  */
21687           break;
21688
21689         case DW_MACRO_GNU_define_indirect:
21690         case DW_MACRO_GNU_undef_indirect:
21691         case DW_MACRO_GNU_define_indirect_alt:
21692         case DW_MACRO_GNU_undef_indirect_alt:
21693           {
21694             unsigned int bytes_read;
21695
21696             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21697             mac_ptr += bytes_read;
21698             mac_ptr += offset_size;
21699           }
21700           break;
21701
21702         case DW_MACRO_GNU_transparent_include:
21703         case DW_MACRO_GNU_transparent_include_alt:
21704           /* Note that, according to the spec, a transparent include
21705              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
21706              skip this opcode.  */
21707           mac_ptr += offset_size;
21708           break;
21709
21710         case DW_MACINFO_vendor_ext:
21711           /* Only skip the data by MAC_PTR.  */
21712           if (!section_is_gnu)
21713             {
21714               unsigned int bytes_read;
21715
21716               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21717               mac_ptr += bytes_read;
21718               read_direct_string (abfd, mac_ptr, &bytes_read);
21719               mac_ptr += bytes_read;
21720             }
21721           /* FALLTHROUGH */
21722
21723         default:
21724           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
21725                                          mac_ptr, mac_end, abfd, offset_size,
21726                                          section);
21727           if (mac_ptr == NULL)
21728             return;
21729           break;
21730         }
21731     } while (macinfo_type != 0 && current_file == NULL);
21732
21733   /* Second pass: Process all entries.
21734
21735      Use the AT_COMMAND_LINE flag to determine whether we are still processing
21736      command-line macro definitions/undefinitions.  This flag is unset when we
21737      reach the first DW_MACINFO_start_file entry.  */
21738
21739   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21740                                     NULL, xcalloc, xfree);
21741   cleanup = make_cleanup_htab_delete (include_hash);
21742   mac_ptr = section->buffer + offset;
21743   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
21744   *slot = (void *) mac_ptr;
21745   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
21746                             current_file, lh, section,
21747                             section_is_gnu, 0, offset_size, include_hash);
21748   do_cleanups (cleanup);
21749 }
21750
21751 /* Check if the attribute's form is a DW_FORM_block*
21752    if so return true else false.  */
21753
21754 static int
21755 attr_form_is_block (const struct attribute *attr)
21756 {
21757   return (attr == NULL ? 0 :
21758       attr->form == DW_FORM_block1
21759       || attr->form == DW_FORM_block2
21760       || attr->form == DW_FORM_block4
21761       || attr->form == DW_FORM_block
21762       || attr->form == DW_FORM_exprloc);
21763 }
21764
21765 /* Return non-zero if ATTR's value is a section offset --- classes
21766    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21767    You may use DW_UNSND (attr) to retrieve such offsets.
21768
21769    Section 7.5.4, "Attribute Encodings", explains that no attribute
21770    may have a value that belongs to more than one of these classes; it
21771    would be ambiguous if we did, because we use the same forms for all
21772    of them.  */
21773
21774 static int
21775 attr_form_is_section_offset (const struct attribute *attr)
21776 {
21777   return (attr->form == DW_FORM_data4
21778           || attr->form == DW_FORM_data8
21779           || attr->form == DW_FORM_sec_offset);
21780 }
21781
21782 /* Return non-zero if ATTR's value falls in the 'constant' class, or
21783    zero otherwise.  When this function returns true, you can apply
21784    dwarf2_get_attr_constant_value to it.
21785
21786    However, note that for some attributes you must check
21787    attr_form_is_section_offset before using this test.  DW_FORM_data4
21788    and DW_FORM_data8 are members of both the constant class, and of
21789    the classes that contain offsets into other debug sections
21790    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
21791    that, if an attribute's can be either a constant or one of the
21792    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21793    taken as section offsets, not constants.  */
21794
21795 static int
21796 attr_form_is_constant (const struct attribute *attr)
21797 {
21798   switch (attr->form)
21799     {
21800     case DW_FORM_sdata:
21801     case DW_FORM_udata:
21802     case DW_FORM_data1:
21803     case DW_FORM_data2:
21804     case DW_FORM_data4:
21805     case DW_FORM_data8:
21806       return 1;
21807     default:
21808       return 0;
21809     }
21810 }
21811
21812
21813 /* DW_ADDR is always stored already as sect_offset; despite for the forms
21814    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
21815
21816 static int
21817 attr_form_is_ref (const struct attribute *attr)
21818 {
21819   switch (attr->form)
21820     {
21821     case DW_FORM_ref_addr:
21822     case DW_FORM_ref1:
21823     case DW_FORM_ref2:
21824     case DW_FORM_ref4:
21825     case DW_FORM_ref8:
21826     case DW_FORM_ref_udata:
21827     case DW_FORM_GNU_ref_alt:
21828       return 1;
21829     default:
21830       return 0;
21831     }
21832 }
21833
21834 /* Return the .debug_loc section to use for CU.
21835    For DWO files use .debug_loc.dwo.  */
21836
21837 static struct dwarf2_section_info *
21838 cu_debug_loc_section (struct dwarf2_cu *cu)
21839 {
21840   if (cu->dwo_unit)
21841     return &cu->dwo_unit->dwo_file->sections.loc;
21842   return &dwarf2_per_objfile->loc;
21843 }
21844
21845 /* A helper function that fills in a dwarf2_loclist_baton.  */
21846
21847 static void
21848 fill_in_loclist_baton (struct dwarf2_cu *cu,
21849                        struct dwarf2_loclist_baton *baton,
21850                        const struct attribute *attr)
21851 {
21852   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21853
21854   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
21855
21856   baton->per_cu = cu->per_cu;
21857   gdb_assert (baton->per_cu);
21858   /* We don't know how long the location list is, but make sure we
21859      don't run off the edge of the section.  */
21860   baton->size = section->size - DW_UNSND (attr);
21861   baton->data = section->buffer + DW_UNSND (attr);
21862   baton->base_address = cu->base_address;
21863   baton->from_dwo = cu->dwo_unit != NULL;
21864 }
21865
21866 static void
21867 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
21868                              struct dwarf2_cu *cu, int is_block)
21869 {
21870   struct objfile *objfile = dwarf2_per_objfile->objfile;
21871   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21872
21873   if (attr_form_is_section_offset (attr)
21874       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
21875          the section.  If so, fall through to the complaint in the
21876          other branch.  */
21877       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
21878     {
21879       struct dwarf2_loclist_baton *baton;
21880
21881       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
21882
21883       fill_in_loclist_baton (cu, baton, attr);
21884
21885       if (cu->base_known == 0)
21886         complaint (&symfile_complaints,
21887                    _("Location list used without "
21888                      "specifying the CU base address."));
21889
21890       SYMBOL_ACLASS_INDEX (sym) = (is_block
21891                                    ? dwarf2_loclist_block_index
21892                                    : dwarf2_loclist_index);
21893       SYMBOL_LOCATION_BATON (sym) = baton;
21894     }
21895   else
21896     {
21897       struct dwarf2_locexpr_baton *baton;
21898
21899       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
21900       baton->per_cu = cu->per_cu;
21901       gdb_assert (baton->per_cu);
21902
21903       if (attr_form_is_block (attr))
21904         {
21905           /* Note that we're just copying the block's data pointer
21906              here, not the actual data.  We're still pointing into the
21907              info_buffer for SYM's objfile; right now we never release
21908              that buffer, but when we do clean up properly this may
21909              need to change.  */
21910           baton->size = DW_BLOCK (attr)->size;
21911           baton->data = DW_BLOCK (attr)->data;
21912         }
21913       else
21914         {
21915           dwarf2_invalid_attrib_class_complaint ("location description",
21916                                                  SYMBOL_NATURAL_NAME (sym));
21917           baton->size = 0;
21918         }
21919
21920       SYMBOL_ACLASS_INDEX (sym) = (is_block
21921                                    ? dwarf2_locexpr_block_index
21922                                    : dwarf2_locexpr_index);
21923       SYMBOL_LOCATION_BATON (sym) = baton;
21924     }
21925 }
21926
21927 /* Return the OBJFILE associated with the compilation unit CU.  If CU
21928    came from a separate debuginfo file, then the master objfile is
21929    returned.  */
21930
21931 struct objfile *
21932 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21933 {
21934   struct objfile *objfile = per_cu->objfile;
21935
21936   /* Return the master objfile, so that we can report and look up the
21937      correct file containing this variable.  */
21938   if (objfile->separate_debug_objfile_backlink)
21939     objfile = objfile->separate_debug_objfile_backlink;
21940
21941   return objfile;
21942 }
21943
21944 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21945    (CU_HEADERP is unused in such case) or prepare a temporary copy at
21946    CU_HEADERP first.  */
21947
21948 static const struct comp_unit_head *
21949 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21950                        struct dwarf2_per_cu_data *per_cu)
21951 {
21952   const gdb_byte *info_ptr;
21953
21954   if (per_cu->cu)
21955     return &per_cu->cu->header;
21956
21957   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
21958
21959   memset (cu_headerp, 0, sizeof (*cu_headerp));
21960   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
21961
21962   return cu_headerp;
21963 }
21964
21965 /* Return the address size given in the compilation unit header for CU.  */
21966
21967 int
21968 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21969 {
21970   struct comp_unit_head cu_header_local;
21971   const struct comp_unit_head *cu_headerp;
21972
21973   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21974
21975   return cu_headerp->addr_size;
21976 }
21977
21978 /* Return the offset size given in the compilation unit header for CU.  */
21979
21980 int
21981 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21982 {
21983   struct comp_unit_head cu_header_local;
21984   const struct comp_unit_head *cu_headerp;
21985
21986   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21987
21988   return cu_headerp->offset_size;
21989 }
21990
21991 /* See its dwarf2loc.h declaration.  */
21992
21993 int
21994 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21995 {
21996   struct comp_unit_head cu_header_local;
21997   const struct comp_unit_head *cu_headerp;
21998
21999   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
22000
22001   if (cu_headerp->version == 2)
22002     return cu_headerp->addr_size;
22003   else
22004     return cu_headerp->offset_size;
22005 }
22006
22007 /* Return the text offset of the CU.  The returned offset comes from
22008    this CU's objfile.  If this objfile came from a separate debuginfo
22009    file, then the offset may be different from the corresponding
22010    offset in the parent objfile.  */
22011
22012 CORE_ADDR
22013 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
22014 {
22015   struct objfile *objfile = per_cu->objfile;
22016
22017   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22018 }
22019
22020 /* Locate the .debug_info compilation unit from CU's objfile which contains
22021    the DIE at OFFSET.  Raises an error on failure.  */
22022
22023 static struct dwarf2_per_cu_data *
22024 dwarf2_find_containing_comp_unit (sect_offset offset,
22025                                   unsigned int offset_in_dwz,
22026                                   struct objfile *objfile)
22027 {
22028   struct dwarf2_per_cu_data *this_cu;
22029   int low, high;
22030   const sect_offset *cu_off;
22031
22032   low = 0;
22033   high = dwarf2_per_objfile->n_comp_units - 1;
22034   while (high > low)
22035     {
22036       struct dwarf2_per_cu_data *mid_cu;
22037       int mid = low + (high - low) / 2;
22038
22039       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
22040       cu_off = &mid_cu->offset;
22041       if (mid_cu->is_dwz > offset_in_dwz
22042           || (mid_cu->is_dwz == offset_in_dwz
22043               && cu_off->sect_off >= offset.sect_off))
22044         high = mid;
22045       else
22046         low = mid + 1;
22047     }
22048   gdb_assert (low == high);
22049   this_cu = dwarf2_per_objfile->all_comp_units[low];
22050   cu_off = &this_cu->offset;
22051   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
22052     {
22053       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
22054         error (_("Dwarf Error: could not find partial DIE containing "
22055                "offset 0x%lx [in module %s]"),
22056                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
22057
22058       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22059                   <= offset.sect_off);
22060       return dwarf2_per_objfile->all_comp_units[low-1];
22061     }
22062   else
22063     {
22064       this_cu = dwarf2_per_objfile->all_comp_units[low];
22065       if (low == dwarf2_per_objfile->n_comp_units - 1
22066           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22067         error (_("invalid dwarf2 offset %u"), offset.sect_off);
22068       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
22069       return this_cu;
22070     }
22071 }
22072
22073 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
22074
22075 static void
22076 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
22077 {
22078   memset (cu, 0, sizeof (*cu));
22079   per_cu->cu = cu;
22080   cu->per_cu = per_cu;
22081   cu->objfile = per_cu->objfile;
22082   obstack_init (&cu->comp_unit_obstack);
22083 }
22084
22085 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
22086
22087 static void
22088 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22089                        enum language pretend_language)
22090 {
22091   struct attribute *attr;
22092
22093   /* Set the language we're debugging.  */
22094   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22095   if (attr)
22096     set_cu_language (DW_UNSND (attr), cu);
22097   else
22098     {
22099       cu->language = pretend_language;
22100       cu->language_defn = language_def (cu->language);
22101     }
22102
22103   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
22104 }
22105
22106 /* Release one cached compilation unit, CU.  We unlink it from the tree
22107    of compilation units, but we don't remove it from the read_in_chain;
22108    the caller is responsible for that.
22109    NOTE: DATA is a void * because this function is also used as a
22110    cleanup routine.  */
22111
22112 static void
22113 free_heap_comp_unit (void *data)
22114 {
22115   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
22116
22117   gdb_assert (cu->per_cu != NULL);
22118   cu->per_cu->cu = NULL;
22119   cu->per_cu = NULL;
22120
22121   obstack_free (&cu->comp_unit_obstack, NULL);
22122
22123   xfree (cu);
22124 }
22125
22126 /* This cleanup function is passed the address of a dwarf2_cu on the stack
22127    when we're finished with it.  We can't free the pointer itself, but be
22128    sure to unlink it from the cache.  Also release any associated storage.  */
22129
22130 static void
22131 free_stack_comp_unit (void *data)
22132 {
22133   struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
22134
22135   gdb_assert (cu->per_cu != NULL);
22136   cu->per_cu->cu = NULL;
22137   cu->per_cu = NULL;
22138
22139   obstack_free (&cu->comp_unit_obstack, NULL);
22140   cu->partial_dies = NULL;
22141 }
22142
22143 /* Free all cached compilation units.  */
22144
22145 static void
22146 free_cached_comp_units (void *data)
22147 {
22148   struct dwarf2_per_cu_data *per_cu, **last_chain;
22149
22150   per_cu = dwarf2_per_objfile->read_in_chain;
22151   last_chain = &dwarf2_per_objfile->read_in_chain;
22152   while (per_cu != NULL)
22153     {
22154       struct dwarf2_per_cu_data *next_cu;
22155
22156       next_cu = per_cu->cu->read_in_chain;
22157
22158       free_heap_comp_unit (per_cu->cu);
22159       *last_chain = next_cu;
22160
22161       per_cu = next_cu;
22162     }
22163 }
22164
22165 /* Increase the age counter on each cached compilation unit, and free
22166    any that are too old.  */
22167
22168 static void
22169 age_cached_comp_units (void)
22170 {
22171   struct dwarf2_per_cu_data *per_cu, **last_chain;
22172
22173   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22174   per_cu = dwarf2_per_objfile->read_in_chain;
22175   while (per_cu != NULL)
22176     {
22177       per_cu->cu->last_used ++;
22178       if (per_cu->cu->last_used <= dwarf_max_cache_age)
22179         dwarf2_mark (per_cu->cu);
22180       per_cu = per_cu->cu->read_in_chain;
22181     }
22182
22183   per_cu = dwarf2_per_objfile->read_in_chain;
22184   last_chain = &dwarf2_per_objfile->read_in_chain;
22185   while (per_cu != NULL)
22186     {
22187       struct dwarf2_per_cu_data *next_cu;
22188
22189       next_cu = per_cu->cu->read_in_chain;
22190
22191       if (!per_cu->cu->mark)
22192         {
22193           free_heap_comp_unit (per_cu->cu);
22194           *last_chain = next_cu;
22195         }
22196       else
22197         last_chain = &per_cu->cu->read_in_chain;
22198
22199       per_cu = next_cu;
22200     }
22201 }
22202
22203 /* Remove a single compilation unit from the cache.  */
22204
22205 static void
22206 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
22207 {
22208   struct dwarf2_per_cu_data *per_cu, **last_chain;
22209
22210   per_cu = dwarf2_per_objfile->read_in_chain;
22211   last_chain = &dwarf2_per_objfile->read_in_chain;
22212   while (per_cu != NULL)
22213     {
22214       struct dwarf2_per_cu_data *next_cu;
22215
22216       next_cu = per_cu->cu->read_in_chain;
22217
22218       if (per_cu == target_per_cu)
22219         {
22220           free_heap_comp_unit (per_cu->cu);
22221           per_cu->cu = NULL;
22222           *last_chain = next_cu;
22223           break;
22224         }
22225       else
22226         last_chain = &per_cu->cu->read_in_chain;
22227
22228       per_cu = next_cu;
22229     }
22230 }
22231
22232 /* Release all extra memory associated with OBJFILE.  */
22233
22234 void
22235 dwarf2_free_objfile (struct objfile *objfile)
22236 {
22237   dwarf2_per_objfile
22238     = (struct dwarf2_per_objfile *) objfile_data (objfile,
22239                                                   dwarf2_objfile_data_key);
22240
22241   if (dwarf2_per_objfile == NULL)
22242     return;
22243
22244   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
22245   free_cached_comp_units (NULL);
22246
22247   if (dwarf2_per_objfile->quick_file_names_table)
22248     htab_delete (dwarf2_per_objfile->quick_file_names_table);
22249
22250   if (dwarf2_per_objfile->line_header_hash)
22251     htab_delete (dwarf2_per_objfile->line_header_hash);
22252
22253   /* Everything else should be on the objfile obstack.  */
22254 }
22255
22256 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22257    We store these in a hash table separate from the DIEs, and preserve them
22258    when the DIEs are flushed out of cache.
22259
22260    The CU "per_cu" pointer is needed because offset alone is not enough to
22261    uniquely identify the type.  A file may have multiple .debug_types sections,
22262    or the type may come from a DWO file.  Furthermore, while it's more logical
22263    to use per_cu->section+offset, with Fission the section with the data is in
22264    the DWO file but we don't know that section at the point we need it.
22265    We have to use something in dwarf2_per_cu_data (or the pointer to it)
22266    because we can enter the lookup routine, get_die_type_at_offset, from
22267    outside this file, and thus won't necessarily have PER_CU->cu.
22268    Fortunately, PER_CU is stable for the life of the objfile.  */
22269
22270 struct dwarf2_per_cu_offset_and_type
22271 {
22272   const struct dwarf2_per_cu_data *per_cu;
22273   sect_offset offset;
22274   struct type *type;
22275 };
22276
22277 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
22278
22279 static hashval_t
22280 per_cu_offset_and_type_hash (const void *item)
22281 {
22282   const struct dwarf2_per_cu_offset_and_type *ofs
22283     = (const struct dwarf2_per_cu_offset_and_type *) item;
22284
22285   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
22286 }
22287
22288 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
22289
22290 static int
22291 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
22292 {
22293   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
22294     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
22295   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
22296     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
22297
22298   return (ofs_lhs->per_cu == ofs_rhs->per_cu
22299           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
22300 }
22301
22302 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
22303    table if necessary.  For convenience, return TYPE.
22304
22305    The DIEs reading must have careful ordering to:
22306     * Not cause infite loops trying to read in DIEs as a prerequisite for
22307       reading current DIE.
22308     * Not trying to dereference contents of still incompletely read in types
22309       while reading in other DIEs.
22310     * Enable referencing still incompletely read in types just by a pointer to
22311       the type without accessing its fields.
22312
22313    Therefore caller should follow these rules:
22314      * Try to fetch any prerequisite types we may need to build this DIE type
22315        before building the type and calling set_die_type.
22316      * After building type call set_die_type for current DIE as soon as
22317        possible before fetching more types to complete the current type.
22318      * Make the type as complete as possible before fetching more types.  */
22319
22320 static struct type *
22321 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22322 {
22323   struct dwarf2_per_cu_offset_and_type **slot, ofs;
22324   struct objfile *objfile = cu->objfile;
22325   struct attribute *attr;
22326   struct dynamic_prop prop;
22327
22328   /* For Ada types, make sure that the gnat-specific data is always
22329      initialized (if not already set).  There are a few types where
22330      we should not be doing so, because the type-specific area is
22331      already used to hold some other piece of info (eg: TYPE_CODE_FLT
22332      where the type-specific area is used to store the floatformat).
22333      But this is not a problem, because the gnat-specific information
22334      is actually not needed for these types.  */
22335   if (need_gnat_info (cu)
22336       && TYPE_CODE (type) != TYPE_CODE_FUNC
22337       && TYPE_CODE (type) != TYPE_CODE_FLT
22338       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22339       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22340       && TYPE_CODE (type) != TYPE_CODE_METHOD
22341       && !HAVE_GNAT_AUX_INFO (type))
22342     INIT_GNAT_SPECIFIC (type);
22343
22344   /* Read DW_AT_allocated and set in type.  */
22345   attr = dwarf2_attr (die, DW_AT_allocated, cu);
22346   if (attr_form_is_block (attr))
22347     {
22348       if (attr_to_dynamic_prop (attr, die, cu, &prop))
22349         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
22350     }
22351   else if (attr != NULL)
22352     {
22353       complaint (&symfile_complaints,
22354                 _("DW_AT_allocated has the wrong form (%s) at DIE 0x%x"),
22355                 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
22356                 die->offset.sect_off);
22357     }
22358
22359   /* Read DW_AT_associated and set in type.  */
22360   attr = dwarf2_attr (die, DW_AT_associated, cu);
22361   if (attr_form_is_block (attr))
22362     {
22363       if (attr_to_dynamic_prop (attr, die, cu, &prop))
22364         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
22365     }
22366   else if (attr != NULL)
22367     {
22368       complaint (&symfile_complaints,
22369                 _("DW_AT_associated has the wrong form (%s) at DIE 0x%x"),
22370                 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
22371                 die->offset.sect_off);
22372     }
22373
22374   /* Read DW_AT_data_location and set in type.  */
22375   attr = dwarf2_attr (die, DW_AT_data_location, cu);
22376   if (attr_to_dynamic_prop (attr, die, cu, &prop))
22377     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
22378
22379   if (dwarf2_per_objfile->die_type_hash == NULL)
22380     {
22381       dwarf2_per_objfile->die_type_hash =
22382         htab_create_alloc_ex (127,
22383                               per_cu_offset_and_type_hash,
22384                               per_cu_offset_and_type_eq,
22385                               NULL,
22386                               &objfile->objfile_obstack,
22387                               hashtab_obstack_allocate,
22388                               dummy_obstack_deallocate);
22389     }
22390
22391   ofs.per_cu = cu->per_cu;
22392   ofs.offset = die->offset;
22393   ofs.type = type;
22394   slot = (struct dwarf2_per_cu_offset_and_type **)
22395     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
22396   if (*slot)
22397     complaint (&symfile_complaints,
22398                _("A problem internal to GDB: DIE 0x%x has type already set"),
22399                die->offset.sect_off);
22400   *slot = XOBNEW (&objfile->objfile_obstack,
22401                   struct dwarf2_per_cu_offset_and_type);
22402   **slot = ofs;
22403   return type;
22404 }
22405
22406 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22407    or return NULL if the die does not have a saved type.  */
22408
22409 static struct type *
22410 get_die_type_at_offset (sect_offset offset,
22411                         struct dwarf2_per_cu_data *per_cu)
22412 {
22413   struct dwarf2_per_cu_offset_and_type *slot, ofs;
22414
22415   if (dwarf2_per_objfile->die_type_hash == NULL)
22416     return NULL;
22417
22418   ofs.per_cu = per_cu;
22419   ofs.offset = offset;
22420   slot = ((struct dwarf2_per_cu_offset_and_type *)
22421           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
22422   if (slot)
22423     return slot->type;
22424   else
22425     return NULL;
22426 }
22427
22428 /* Look up the type for DIE in CU in die_type_hash,
22429    or return NULL if DIE does not have a saved type.  */
22430
22431 static struct type *
22432 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22433 {
22434   return get_die_type_at_offset (die->offset, cu->per_cu);
22435 }
22436
22437 /* Add a dependence relationship from CU to REF_PER_CU.  */
22438
22439 static void
22440 dwarf2_add_dependence (struct dwarf2_cu *cu,
22441                        struct dwarf2_per_cu_data *ref_per_cu)
22442 {
22443   void **slot;
22444
22445   if (cu->dependencies == NULL)
22446     cu->dependencies
22447       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22448                               NULL, &cu->comp_unit_obstack,
22449                               hashtab_obstack_allocate,
22450                               dummy_obstack_deallocate);
22451
22452   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22453   if (*slot == NULL)
22454     *slot = ref_per_cu;
22455 }
22456
22457 /* Subroutine of dwarf2_mark to pass to htab_traverse.
22458    Set the mark field in every compilation unit in the
22459    cache that we must keep because we are keeping CU.  */
22460
22461 static int
22462 dwarf2_mark_helper (void **slot, void *data)
22463 {
22464   struct dwarf2_per_cu_data *per_cu;
22465
22466   per_cu = (struct dwarf2_per_cu_data *) *slot;
22467
22468   /* cu->dependencies references may not yet have been ever read if QUIT aborts
22469      reading of the chain.  As such dependencies remain valid it is not much
22470      useful to track and undo them during QUIT cleanups.  */
22471   if (per_cu->cu == NULL)
22472     return 1;
22473
22474   if (per_cu->cu->mark)
22475     return 1;
22476   per_cu->cu->mark = 1;
22477
22478   if (per_cu->cu->dependencies != NULL)
22479     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22480
22481   return 1;
22482 }
22483
22484 /* Set the mark field in CU and in every other compilation unit in the
22485    cache that we must keep because we are keeping CU.  */
22486
22487 static void
22488 dwarf2_mark (struct dwarf2_cu *cu)
22489 {
22490   if (cu->mark)
22491     return;
22492   cu->mark = 1;
22493   if (cu->dependencies != NULL)
22494     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
22495 }
22496
22497 static void
22498 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22499 {
22500   while (per_cu)
22501     {
22502       per_cu->cu->mark = 0;
22503       per_cu = per_cu->cu->read_in_chain;
22504     }
22505 }
22506
22507 /* Trivial hash function for partial_die_info: the hash value of a DIE
22508    is its offset in .debug_info for this objfile.  */
22509
22510 static hashval_t
22511 partial_die_hash (const void *item)
22512 {
22513   const struct partial_die_info *part_die
22514     = (const struct partial_die_info *) item;
22515
22516   return part_die->offset.sect_off;
22517 }
22518
22519 /* Trivial comparison function for partial_die_info structures: two DIEs
22520    are equal if they have the same offset.  */
22521
22522 static int
22523 partial_die_eq (const void *item_lhs, const void *item_rhs)
22524 {
22525   const struct partial_die_info *part_die_lhs
22526     = (const struct partial_die_info *) item_lhs;
22527   const struct partial_die_info *part_die_rhs
22528     = (const struct partial_die_info *) item_rhs;
22529
22530   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
22531 }
22532
22533 static struct cmd_list_element *set_dwarf_cmdlist;
22534 static struct cmd_list_element *show_dwarf_cmdlist;
22535
22536 static void
22537 set_dwarf_cmd (char *args, int from_tty)
22538 {
22539   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
22540              gdb_stdout);
22541 }
22542
22543 static void
22544 show_dwarf_cmd (char *args, int from_tty)
22545 {
22546   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
22547 }
22548
22549 /* Free data associated with OBJFILE, if necessary.  */
22550
22551 static void
22552 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
22553 {
22554   struct dwarf2_per_objfile *data = (struct dwarf2_per_objfile *) d;
22555   int ix;
22556
22557   /* Make sure we don't accidentally use dwarf2_per_objfile while
22558      cleaning up.  */
22559   dwarf2_per_objfile = NULL;
22560
22561   for (ix = 0; ix < data->n_comp_units; ++ix)
22562    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
22563
22564   for (ix = 0; ix < data->n_type_units; ++ix)
22565     VEC_free (dwarf2_per_cu_ptr,
22566               data->all_type_units[ix]->per_cu.imported_symtabs);
22567   xfree (data->all_type_units);
22568
22569   VEC_free (dwarf2_section_info_def, data->types);
22570
22571   if (data->dwo_files)
22572     free_dwo_files (data->dwo_files, objfile);
22573   if (data->dwp_file)
22574     gdb_bfd_unref (data->dwp_file->dbfd);
22575
22576   if (data->dwz_file && data->dwz_file->dwz_bfd)
22577     gdb_bfd_unref (data->dwz_file->dwz_bfd);
22578 }
22579
22580 \f
22581 /* The "save gdb-index" command.  */
22582
22583 /* The contents of the hash table we create when building the string
22584    table.  */
22585 struct strtab_entry
22586 {
22587   offset_type offset;
22588   const char *str;
22589 };
22590
22591 /* Hash function for a strtab_entry.
22592
22593    Function is used only during write_hash_table so no index format backward
22594    compatibility is needed.  */
22595
22596 static hashval_t
22597 hash_strtab_entry (const void *e)
22598 {
22599   const struct strtab_entry *entry = (const struct strtab_entry *) e;
22600   return mapped_index_string_hash (INT_MAX, entry->str);
22601 }
22602
22603 /* Equality function for a strtab_entry.  */
22604
22605 static int
22606 eq_strtab_entry (const void *a, const void *b)
22607 {
22608   const struct strtab_entry *ea = (const struct strtab_entry *) a;
22609   const struct strtab_entry *eb = (const struct strtab_entry *) b;
22610   return !strcmp (ea->str, eb->str);
22611 }
22612
22613 /* Create a strtab_entry hash table.  */
22614
22615 static htab_t
22616 create_strtab (void)
22617 {
22618   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22619                             xfree, xcalloc, xfree);
22620 }
22621
22622 /* Add a string to the constant pool.  Return the string's offset in
22623    host order.  */
22624
22625 static offset_type
22626 add_string (htab_t table, struct obstack *cpool, const char *str)
22627 {
22628   void **slot;
22629   struct strtab_entry entry;
22630   struct strtab_entry *result;
22631
22632   entry.str = str;
22633   slot = htab_find_slot (table, &entry, INSERT);
22634   if (*slot)
22635     result = (struct strtab_entry *) *slot;
22636   else
22637     {
22638       result = XNEW (struct strtab_entry);
22639       result->offset = obstack_object_size (cpool);
22640       result->str = str;
22641       obstack_grow_str0 (cpool, str);
22642       *slot = result;
22643     }
22644   return result->offset;
22645 }
22646
22647 /* An entry in the symbol table.  */
22648 struct symtab_index_entry
22649 {
22650   /* The name of the symbol.  */
22651   const char *name;
22652   /* The offset of the name in the constant pool.  */
22653   offset_type index_offset;
22654   /* A sorted vector of the indices of all the CUs that hold an object
22655      of this name.  */
22656   VEC (offset_type) *cu_indices;
22657 };
22658
22659 /* The symbol table.  This is a power-of-2-sized hash table.  */
22660 struct mapped_symtab
22661 {
22662   offset_type n_elements;
22663   offset_type size;
22664   struct symtab_index_entry **data;
22665 };
22666
22667 /* Hash function for a symtab_index_entry.  */
22668
22669 static hashval_t
22670 hash_symtab_entry (const void *e)
22671 {
22672   const struct symtab_index_entry *entry
22673     = (const struct symtab_index_entry *) e;
22674   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22675                          sizeof (offset_type) * VEC_length (offset_type,
22676                                                             entry->cu_indices),
22677                          0);
22678 }
22679
22680 /* Equality function for a symtab_index_entry.  */
22681
22682 static int
22683 eq_symtab_entry (const void *a, const void *b)
22684 {
22685   const struct symtab_index_entry *ea = (const struct symtab_index_entry *) a;
22686   const struct symtab_index_entry *eb = (const struct symtab_index_entry *) b;
22687   int len = VEC_length (offset_type, ea->cu_indices);
22688   if (len != VEC_length (offset_type, eb->cu_indices))
22689     return 0;
22690   return !memcmp (VEC_address (offset_type, ea->cu_indices),
22691                   VEC_address (offset_type, eb->cu_indices),
22692                   sizeof (offset_type) * len);
22693 }
22694
22695 /* Destroy a symtab_index_entry.  */
22696
22697 static void
22698 delete_symtab_entry (void *p)
22699 {
22700   struct symtab_index_entry *entry = (struct symtab_index_entry *) p;
22701   VEC_free (offset_type, entry->cu_indices);
22702   xfree (entry);
22703 }
22704
22705 /* Create a hash table holding symtab_index_entry objects.  */
22706
22707 static htab_t
22708 create_symbol_hash_table (void)
22709 {
22710   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22711                             delete_symtab_entry, xcalloc, xfree);
22712 }
22713
22714 /* Create a new mapped symtab object.  */
22715
22716 static struct mapped_symtab *
22717 create_mapped_symtab (void)
22718 {
22719   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22720   symtab->n_elements = 0;
22721   symtab->size = 1024;
22722   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22723   return symtab;
22724 }
22725
22726 /* Destroy a mapped_symtab.  */
22727
22728 static void
22729 cleanup_mapped_symtab (void *p)
22730 {
22731   struct mapped_symtab *symtab = (struct mapped_symtab *) p;
22732   /* The contents of the array are freed when the other hash table is
22733      destroyed.  */
22734   xfree (symtab->data);
22735   xfree (symtab);
22736 }
22737
22738 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
22739    the slot.
22740    
22741    Function is used only during write_hash_table so no index format backward
22742    compatibility is needed.  */
22743
22744 static struct symtab_index_entry **
22745 find_slot (struct mapped_symtab *symtab, const char *name)
22746 {
22747   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
22748
22749   index = hash & (symtab->size - 1);
22750   step = ((hash * 17) & (symtab->size - 1)) | 1;
22751
22752   for (;;)
22753     {
22754       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22755         return &symtab->data[index];
22756       index = (index + step) & (symtab->size - 1);
22757     }
22758 }
22759
22760 /* Expand SYMTAB's hash table.  */
22761
22762 static void
22763 hash_expand (struct mapped_symtab *symtab)
22764 {
22765   offset_type old_size = symtab->size;
22766   offset_type i;
22767   struct symtab_index_entry **old_entries = symtab->data;
22768
22769   symtab->size *= 2;
22770   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22771
22772   for (i = 0; i < old_size; ++i)
22773     {
22774       if (old_entries[i])
22775         {
22776           struct symtab_index_entry **slot = find_slot (symtab,
22777                                                         old_entries[i]->name);
22778           *slot = old_entries[i];
22779         }
22780     }
22781
22782   xfree (old_entries);
22783 }
22784
22785 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
22786    CU_INDEX is the index of the CU in which the symbol appears.
22787    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
22788
22789 static void
22790 add_index_entry (struct mapped_symtab *symtab, const char *name,
22791                  int is_static, gdb_index_symbol_kind kind,
22792                  offset_type cu_index)
22793 {
22794   struct symtab_index_entry **slot;
22795   offset_type cu_index_and_attrs;
22796
22797   ++symtab->n_elements;
22798   if (4 * symtab->n_elements / 3 >= symtab->size)
22799     hash_expand (symtab);
22800
22801   slot = find_slot (symtab, name);
22802   if (!*slot)
22803     {
22804       *slot = XNEW (struct symtab_index_entry);
22805       (*slot)->name = name;
22806       /* index_offset is set later.  */
22807       (*slot)->cu_indices = NULL;
22808     }
22809
22810   cu_index_and_attrs = 0;
22811   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22812   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22813   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22814
22815   /* We don't want to record an index value twice as we want to avoid the
22816      duplication.
22817      We process all global symbols and then all static symbols
22818      (which would allow us to avoid the duplication by only having to check
22819      the last entry pushed), but a symbol could have multiple kinds in one CU.
22820      To keep things simple we don't worry about the duplication here and
22821      sort and uniqufy the list after we've processed all symbols.  */
22822   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22823 }
22824
22825 /* qsort helper routine for uniquify_cu_indices.  */
22826
22827 static int
22828 offset_type_compare (const void *ap, const void *bp)
22829 {
22830   offset_type a = *(offset_type *) ap;
22831   offset_type b = *(offset_type *) bp;
22832
22833   return (a > b) - (b > a);
22834 }
22835
22836 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
22837
22838 static void
22839 uniquify_cu_indices (struct mapped_symtab *symtab)
22840 {
22841   int i;
22842
22843   for (i = 0; i < symtab->size; ++i)
22844     {
22845       struct symtab_index_entry *entry = symtab->data[i];
22846
22847       if (entry
22848           && entry->cu_indices != NULL)
22849         {
22850           unsigned int next_to_insert, next_to_check;
22851           offset_type last_value;
22852
22853           qsort (VEC_address (offset_type, entry->cu_indices),
22854                  VEC_length (offset_type, entry->cu_indices),
22855                  sizeof (offset_type), offset_type_compare);
22856
22857           last_value = VEC_index (offset_type, entry->cu_indices, 0);
22858           next_to_insert = 1;
22859           for (next_to_check = 1;
22860                next_to_check < VEC_length (offset_type, entry->cu_indices);
22861                ++next_to_check)
22862             {
22863               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22864                   != last_value)
22865                 {
22866                   last_value = VEC_index (offset_type, entry->cu_indices,
22867                                           next_to_check);
22868                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22869                                last_value);
22870                   ++next_to_insert;
22871                 }
22872             }
22873           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22874         }
22875     }
22876 }
22877
22878 /* Add a vector of indices to the constant pool.  */
22879
22880 static offset_type
22881 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
22882                       struct symtab_index_entry *entry)
22883 {
22884   void **slot;
22885
22886   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
22887   if (!*slot)
22888     {
22889       offset_type len = VEC_length (offset_type, entry->cu_indices);
22890       offset_type val = MAYBE_SWAP (len);
22891       offset_type iter;
22892       int i;
22893
22894       *slot = entry;
22895       entry->index_offset = obstack_object_size (cpool);
22896
22897       obstack_grow (cpool, &val, sizeof (val));
22898       for (i = 0;
22899            VEC_iterate (offset_type, entry->cu_indices, i, iter);
22900            ++i)
22901         {
22902           val = MAYBE_SWAP (iter);
22903           obstack_grow (cpool, &val, sizeof (val));
22904         }
22905     }
22906   else
22907     {
22908       struct symtab_index_entry *old_entry
22909         = (struct symtab_index_entry *) *slot;
22910       entry->index_offset = old_entry->index_offset;
22911       entry = old_entry;
22912     }
22913   return entry->index_offset;
22914 }
22915
22916 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22917    constant pool entries going into the obstack CPOOL.  */
22918
22919 static void
22920 write_hash_table (struct mapped_symtab *symtab,
22921                   struct obstack *output, struct obstack *cpool)
22922 {
22923   offset_type i;
22924   htab_t symbol_hash_table;
22925   htab_t str_table;
22926
22927   symbol_hash_table = create_symbol_hash_table ();
22928   str_table = create_strtab ();
22929
22930   /* We add all the index vectors to the constant pool first, to
22931      ensure alignment is ok.  */
22932   for (i = 0; i < symtab->size; ++i)
22933     {
22934       if (symtab->data[i])
22935         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
22936     }
22937
22938   /* Now write out the hash table.  */
22939   for (i = 0; i < symtab->size; ++i)
22940     {
22941       offset_type str_off, vec_off;
22942
22943       if (symtab->data[i])
22944         {
22945           str_off = add_string (str_table, cpool, symtab->data[i]->name);
22946           vec_off = symtab->data[i]->index_offset;
22947         }
22948       else
22949         {
22950           /* While 0 is a valid constant pool index, it is not valid
22951              to have 0 for both offsets.  */
22952           str_off = 0;
22953           vec_off = 0;
22954         }
22955
22956       str_off = MAYBE_SWAP (str_off);
22957       vec_off = MAYBE_SWAP (vec_off);
22958
22959       obstack_grow (output, &str_off, sizeof (str_off));
22960       obstack_grow (output, &vec_off, sizeof (vec_off));
22961     }
22962
22963   htab_delete (str_table);
22964   htab_delete (symbol_hash_table);
22965 }
22966
22967 /* Struct to map psymtab to CU index in the index file.  */
22968 struct psymtab_cu_index_map
22969 {
22970   struct partial_symtab *psymtab;
22971   unsigned int cu_index;
22972 };
22973
22974 static hashval_t
22975 hash_psymtab_cu_index (const void *item)
22976 {
22977   const struct psymtab_cu_index_map *map
22978     = (const struct psymtab_cu_index_map *) item;
22979
22980   return htab_hash_pointer (map->psymtab);
22981 }
22982
22983 static int
22984 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22985 {
22986   const struct psymtab_cu_index_map *lhs
22987     = (const struct psymtab_cu_index_map *) item_lhs;
22988   const struct psymtab_cu_index_map *rhs
22989     = (const struct psymtab_cu_index_map *) item_rhs;
22990
22991   return lhs->psymtab == rhs->psymtab;
22992 }
22993
22994 /* Helper struct for building the address table.  */
22995 struct addrmap_index_data
22996 {
22997   struct objfile *objfile;
22998   struct obstack *addr_obstack;
22999   htab_t cu_index_htab;
23000
23001   /* Non-zero if the previous_* fields are valid.
23002      We can't write an entry until we see the next entry (since it is only then
23003      that we know the end of the entry).  */
23004   int previous_valid;
23005   /* Index of the CU in the table of all CUs in the index file.  */
23006   unsigned int previous_cu_index;
23007   /* Start address of the CU.  */
23008   CORE_ADDR previous_cu_start;
23009 };
23010
23011 /* Write an address entry to OBSTACK.  */
23012
23013 static void
23014 add_address_entry (struct objfile *objfile, struct obstack *obstack,
23015                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
23016 {
23017   offset_type cu_index_to_write;
23018   gdb_byte addr[8];
23019   CORE_ADDR baseaddr;
23020
23021   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
23022
23023   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
23024   obstack_grow (obstack, addr, 8);
23025   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
23026   obstack_grow (obstack, addr, 8);
23027   cu_index_to_write = MAYBE_SWAP (cu_index);
23028   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
23029 }
23030
23031 /* Worker function for traversing an addrmap to build the address table.  */
23032
23033 static int
23034 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
23035 {
23036   struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
23037   struct partial_symtab *pst = (struct partial_symtab *) obj;
23038
23039   if (data->previous_valid)
23040     add_address_entry (data->objfile, data->addr_obstack,
23041                        data->previous_cu_start, start_addr,
23042                        data->previous_cu_index);
23043
23044   data->previous_cu_start = start_addr;
23045   if (pst != NULL)
23046     {
23047       struct psymtab_cu_index_map find_map, *map;
23048       find_map.psymtab = pst;
23049       map = ((struct psymtab_cu_index_map *)
23050              htab_find (data->cu_index_htab, &find_map));
23051       gdb_assert (map != NULL);
23052       data->previous_cu_index = map->cu_index;
23053       data->previous_valid = 1;
23054     }
23055   else
23056       data->previous_valid = 0;
23057
23058   return 0;
23059 }
23060
23061 /* Write OBJFILE's address map to OBSTACK.
23062    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
23063    in the index file.  */
23064
23065 static void
23066 write_address_map (struct objfile *objfile, struct obstack *obstack,
23067                    htab_t cu_index_htab)
23068 {
23069   struct addrmap_index_data addrmap_index_data;
23070
23071   /* When writing the address table, we have to cope with the fact that
23072      the addrmap iterator only provides the start of a region; we have to
23073      wait until the next invocation to get the start of the next region.  */
23074
23075   addrmap_index_data.objfile = objfile;
23076   addrmap_index_data.addr_obstack = obstack;
23077   addrmap_index_data.cu_index_htab = cu_index_htab;
23078   addrmap_index_data.previous_valid = 0;
23079
23080   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
23081                    &addrmap_index_data);
23082
23083   /* It's highly unlikely the last entry (end address = 0xff...ff)
23084      is valid, but we should still handle it.
23085      The end address is recorded as the start of the next region, but that
23086      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
23087      anyway.  */
23088   if (addrmap_index_data.previous_valid)
23089     add_address_entry (objfile, obstack,
23090                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
23091                        addrmap_index_data.previous_cu_index);
23092 }
23093
23094 /* Return the symbol kind of PSYM.  */
23095
23096 static gdb_index_symbol_kind
23097 symbol_kind (struct partial_symbol *psym)
23098 {
23099   domain_enum domain = PSYMBOL_DOMAIN (psym);
23100   enum address_class aclass = PSYMBOL_CLASS (psym);
23101
23102   switch (domain)
23103     {
23104     case VAR_DOMAIN:
23105       switch (aclass)
23106         {
23107         case LOC_BLOCK:
23108           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23109         case LOC_TYPEDEF:
23110           return GDB_INDEX_SYMBOL_KIND_TYPE;
23111         case LOC_COMPUTED:
23112         case LOC_CONST_BYTES:
23113         case LOC_OPTIMIZED_OUT:
23114         case LOC_STATIC:
23115           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23116         case LOC_CONST:
23117           /* Note: It's currently impossible to recognize psyms as enum values
23118              short of reading the type info.  For now punt.  */
23119           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23120         default:
23121           /* There are other LOC_FOO values that one might want to classify
23122              as variables, but dwarf2read.c doesn't currently use them.  */
23123           return GDB_INDEX_SYMBOL_KIND_OTHER;
23124         }
23125     case STRUCT_DOMAIN:
23126       return GDB_INDEX_SYMBOL_KIND_TYPE;
23127     default:
23128       return GDB_INDEX_SYMBOL_KIND_OTHER;
23129     }
23130 }
23131
23132 /* Add a list of partial symbols to SYMTAB.  */
23133
23134 static void
23135 write_psymbols (struct mapped_symtab *symtab,
23136                 htab_t psyms_seen,
23137                 struct partial_symbol **psymp,
23138                 int count,
23139                 offset_type cu_index,
23140                 int is_static)
23141 {
23142   for (; count-- > 0; ++psymp)
23143     {
23144       struct partial_symbol *psym = *psymp;
23145       void **slot;
23146
23147       if (SYMBOL_LANGUAGE (psym) == language_ada)
23148         error (_("Ada is not currently supported by the index"));
23149
23150       /* Only add a given psymbol once.  */
23151       slot = htab_find_slot (psyms_seen, psym, INSERT);
23152       if (!*slot)
23153         {
23154           gdb_index_symbol_kind kind = symbol_kind (psym);
23155
23156           *slot = psym;
23157           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23158                            is_static, kind, cu_index);
23159         }
23160     }
23161 }
23162
23163 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
23164    exception if there is an error.  */
23165
23166 static void
23167 write_obstack (FILE *file, struct obstack *obstack)
23168 {
23169   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23170               file)
23171       != obstack_object_size (obstack))
23172     error (_("couldn't data write to file"));
23173 }
23174
23175 /* Unlink a file if the argument is not NULL.  */
23176
23177 static void
23178 unlink_if_set (void *p)
23179 {
23180   char **filename = (char **) p;
23181   if (*filename)
23182     unlink (*filename);
23183 }
23184
23185 /* A helper struct used when iterating over debug_types.  */
23186 struct signatured_type_index_data
23187 {
23188   struct objfile *objfile;
23189   struct mapped_symtab *symtab;
23190   struct obstack *types_list;
23191   htab_t psyms_seen;
23192   int cu_index;
23193 };
23194
23195 /* A helper function that writes a single signatured_type to an
23196    obstack.  */
23197
23198 static int
23199 write_one_signatured_type (void **slot, void *d)
23200 {
23201   struct signatured_type_index_data *info
23202     = (struct signatured_type_index_data *) d;
23203   struct signatured_type *entry = (struct signatured_type *) *slot;
23204   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
23205   gdb_byte val[8];
23206
23207   write_psymbols (info->symtab,
23208                   info->psyms_seen,
23209                   info->objfile->global_psymbols.list
23210                   + psymtab->globals_offset,
23211                   psymtab->n_global_syms, info->cu_index,
23212                   0);
23213   write_psymbols (info->symtab,
23214                   info->psyms_seen,
23215                   info->objfile->static_psymbols.list
23216                   + psymtab->statics_offset,
23217                   psymtab->n_static_syms, info->cu_index,
23218                   1);
23219
23220   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23221                           entry->per_cu.offset.sect_off);
23222   obstack_grow (info->types_list, val, 8);
23223   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23224                           entry->type_offset_in_tu.cu_off);
23225   obstack_grow (info->types_list, val, 8);
23226   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23227   obstack_grow (info->types_list, val, 8);
23228
23229   ++info->cu_index;
23230
23231   return 1;
23232 }
23233
23234 /* Recurse into all "included" dependencies and write their symbols as
23235    if they appeared in this psymtab.  */
23236
23237 static void
23238 recursively_write_psymbols (struct objfile *objfile,
23239                             struct partial_symtab *psymtab,
23240                             struct mapped_symtab *symtab,
23241                             htab_t psyms_seen,
23242                             offset_type cu_index)
23243 {
23244   int i;
23245
23246   for (i = 0; i < psymtab->number_of_dependencies; ++i)
23247     if (psymtab->dependencies[i]->user != NULL)
23248       recursively_write_psymbols (objfile, psymtab->dependencies[i],
23249                                   symtab, psyms_seen, cu_index);
23250
23251   write_psymbols (symtab,
23252                   psyms_seen,
23253                   objfile->global_psymbols.list + psymtab->globals_offset,
23254                   psymtab->n_global_syms, cu_index,
23255                   0);
23256   write_psymbols (symtab,
23257                   psyms_seen,
23258                   objfile->static_psymbols.list + psymtab->statics_offset,
23259                   psymtab->n_static_syms, cu_index,
23260                   1);
23261 }
23262
23263 /* Create an index file for OBJFILE in the directory DIR.  */
23264
23265 static void
23266 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23267 {
23268   struct cleanup *cleanup;
23269   char *filename, *cleanup_filename;
23270   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23271   struct obstack cu_list, types_cu_list;
23272   int i;
23273   FILE *out_file;
23274   struct mapped_symtab *symtab;
23275   offset_type val, size_of_contents, total_len;
23276   struct stat st;
23277   htab_t psyms_seen;
23278   htab_t cu_index_htab;
23279   struct psymtab_cu_index_map *psymtab_cu_index_map;
23280
23281   if (dwarf2_per_objfile->using_index)
23282     error (_("Cannot use an index to create the index"));
23283
23284   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23285     error (_("Cannot make an index when the file has multiple .debug_types sections"));
23286
23287   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23288     return;
23289
23290   if (stat (objfile_name (objfile), &st) < 0)
23291     perror_with_name (objfile_name (objfile));
23292
23293   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
23294                      INDEX_SUFFIX, (char *) NULL);
23295   cleanup = make_cleanup (xfree, filename);
23296
23297   out_file = gdb_fopen_cloexec (filename, "wb");
23298   if (!out_file)
23299     error (_("Can't open `%s' for writing"), filename);
23300
23301   cleanup_filename = filename;
23302   make_cleanup (unlink_if_set, &cleanup_filename);
23303
23304   symtab = create_mapped_symtab ();
23305   make_cleanup (cleanup_mapped_symtab, symtab);
23306
23307   obstack_init (&addr_obstack);
23308   make_cleanup_obstack_free (&addr_obstack);
23309
23310   obstack_init (&cu_list);
23311   make_cleanup_obstack_free (&cu_list);
23312
23313   obstack_init (&types_cu_list);
23314   make_cleanup_obstack_free (&types_cu_list);
23315
23316   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23317                                   NULL, xcalloc, xfree);
23318   make_cleanup_htab_delete (psyms_seen);
23319
23320   /* While we're scanning CU's create a table that maps a psymtab pointer
23321      (which is what addrmap records) to its index (which is what is recorded
23322      in the index file).  This will later be needed to write the address
23323      table.  */
23324   cu_index_htab = htab_create_alloc (100,
23325                                      hash_psymtab_cu_index,
23326                                      eq_psymtab_cu_index,
23327                                      NULL, xcalloc, xfree);
23328   make_cleanup_htab_delete (cu_index_htab);
23329   psymtab_cu_index_map = XNEWVEC (struct psymtab_cu_index_map,
23330                                   dwarf2_per_objfile->n_comp_units);
23331   make_cleanup (xfree, psymtab_cu_index_map);
23332
23333   /* The CU list is already sorted, so we don't need to do additional
23334      work here.  Also, the debug_types entries do not appear in
23335      all_comp_units, but only in their own hash table.  */
23336   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23337     {
23338       struct dwarf2_per_cu_data *per_cu
23339         = dwarf2_per_objfile->all_comp_units[i];
23340       struct partial_symtab *psymtab = per_cu->v.psymtab;
23341       gdb_byte val[8];
23342       struct psymtab_cu_index_map *map;
23343       void **slot;
23344
23345       /* CU of a shared file from 'dwz -m' may be unused by this main file.
23346          It may be referenced from a local scope but in such case it does not
23347          need to be present in .gdb_index.  */
23348       if (psymtab == NULL)
23349         continue;
23350
23351       if (psymtab->user == NULL)
23352         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
23353
23354       map = &psymtab_cu_index_map[i];
23355       map->psymtab = psymtab;
23356       map->cu_index = i;
23357       slot = htab_find_slot (cu_index_htab, map, INSERT);
23358       gdb_assert (slot != NULL);
23359       gdb_assert (*slot == NULL);
23360       *slot = map;
23361
23362       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23363                               per_cu->offset.sect_off);
23364       obstack_grow (&cu_list, val, 8);
23365       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
23366       obstack_grow (&cu_list, val, 8);
23367     }
23368
23369   /* Dump the address map.  */
23370   write_address_map (objfile, &addr_obstack, cu_index_htab);
23371
23372   /* Write out the .debug_type entries, if any.  */
23373   if (dwarf2_per_objfile->signatured_types)
23374     {
23375       struct signatured_type_index_data sig_data;
23376
23377       sig_data.objfile = objfile;
23378       sig_data.symtab = symtab;
23379       sig_data.types_list = &types_cu_list;
23380       sig_data.psyms_seen = psyms_seen;
23381       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23382       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23383                               write_one_signatured_type, &sig_data);
23384     }
23385
23386   /* Now that we've processed all symbols we can shrink their cu_indices
23387      lists.  */
23388   uniquify_cu_indices (symtab);
23389
23390   obstack_init (&constant_pool);
23391   make_cleanup_obstack_free (&constant_pool);
23392   obstack_init (&symtab_obstack);
23393   make_cleanup_obstack_free (&symtab_obstack);
23394   write_hash_table (symtab, &symtab_obstack, &constant_pool);
23395
23396   obstack_init (&contents);
23397   make_cleanup_obstack_free (&contents);
23398   size_of_contents = 6 * sizeof (offset_type);
23399   total_len = size_of_contents;
23400
23401   /* The version number.  */
23402   val = MAYBE_SWAP (8);
23403   obstack_grow (&contents, &val, sizeof (val));
23404
23405   /* The offset of the CU list from the start of the file.  */
23406   val = MAYBE_SWAP (total_len);
23407   obstack_grow (&contents, &val, sizeof (val));
23408   total_len += obstack_object_size (&cu_list);
23409
23410   /* The offset of the types CU list from the start of the file.  */
23411   val = MAYBE_SWAP (total_len);
23412   obstack_grow (&contents, &val, sizeof (val));
23413   total_len += obstack_object_size (&types_cu_list);
23414
23415   /* The offset of the address table from the start of the file.  */
23416   val = MAYBE_SWAP (total_len);
23417   obstack_grow (&contents, &val, sizeof (val));
23418   total_len += obstack_object_size (&addr_obstack);
23419
23420   /* The offset of the symbol table from the start of the file.  */
23421   val = MAYBE_SWAP (total_len);
23422   obstack_grow (&contents, &val, sizeof (val));
23423   total_len += obstack_object_size (&symtab_obstack);
23424
23425   /* The offset of the constant pool from the start of the file.  */
23426   val = MAYBE_SWAP (total_len);
23427   obstack_grow (&contents, &val, sizeof (val));
23428   total_len += obstack_object_size (&constant_pool);
23429
23430   gdb_assert (obstack_object_size (&contents) == size_of_contents);
23431
23432   write_obstack (out_file, &contents);
23433   write_obstack (out_file, &cu_list);
23434   write_obstack (out_file, &types_cu_list);
23435   write_obstack (out_file, &addr_obstack);
23436   write_obstack (out_file, &symtab_obstack);
23437   write_obstack (out_file, &constant_pool);
23438
23439   fclose (out_file);
23440
23441   /* We want to keep the file, so we set cleanup_filename to NULL
23442      here.  See unlink_if_set.  */
23443   cleanup_filename = NULL;
23444
23445   do_cleanups (cleanup);
23446 }
23447
23448 /* Implementation of the `save gdb-index' command.
23449    
23450    Note that the file format used by this command is documented in the
23451    GDB manual.  Any changes here must be documented there.  */
23452
23453 static void
23454 save_gdb_index_command (char *arg, int from_tty)
23455 {
23456   struct objfile *objfile;
23457
23458   if (!arg || !*arg)
23459     error (_("usage: save gdb-index DIRECTORY"));
23460
23461   ALL_OBJFILES (objfile)
23462   {
23463     struct stat st;
23464
23465     /* If the objfile does not correspond to an actual file, skip it.  */
23466     if (stat (objfile_name (objfile), &st) < 0)
23467       continue;
23468
23469     dwarf2_per_objfile
23470       = (struct dwarf2_per_objfile *) objfile_data (objfile,
23471                                                     dwarf2_objfile_data_key);
23472     if (dwarf2_per_objfile)
23473       {
23474
23475         TRY
23476           {
23477             write_psymtabs_to_index (objfile, arg);
23478           }
23479         CATCH (except, RETURN_MASK_ERROR)
23480           {
23481             exception_fprintf (gdb_stderr, except,
23482                                _("Error while writing index for `%s': "),
23483                                objfile_name (objfile));
23484           }
23485         END_CATCH
23486       }
23487   }
23488 }
23489
23490 \f
23491
23492 int dwarf_always_disassemble;
23493
23494 static void
23495 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23496                                struct cmd_list_element *c, const char *value)
23497 {
23498   fprintf_filtered (file,
23499                     _("Whether to always disassemble "
23500                       "DWARF expressions is %s.\n"),
23501                     value);
23502 }
23503
23504 static void
23505 show_check_physname (struct ui_file *file, int from_tty,
23506                      struct cmd_list_element *c, const char *value)
23507 {
23508   fprintf_filtered (file,
23509                     _("Whether to check \"physname\" is %s.\n"),
23510                     value);
23511 }
23512
23513 void _initialize_dwarf2_read (void);
23514
23515 void
23516 _initialize_dwarf2_read (void)
23517 {
23518   struct cmd_list_element *c;
23519
23520   dwarf2_objfile_data_key
23521     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
23522
23523   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23524 Set DWARF specific variables.\n\
23525 Configure DWARF variables such as the cache size"),
23526                   &set_dwarf_cmdlist, "maintenance set dwarf ",
23527                   0/*allow-unknown*/, &maintenance_set_cmdlist);
23528
23529   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23530 Show DWARF specific variables\n\
23531 Show DWARF variables such as the cache size"),
23532                   &show_dwarf_cmdlist, "maintenance show dwarf ",
23533                   0/*allow-unknown*/, &maintenance_show_cmdlist);
23534
23535   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
23536                             &dwarf_max_cache_age, _("\
23537 Set the upper bound on the age of cached DWARF compilation units."), _("\
23538 Show the upper bound on the age of cached DWARF compilation units."), _("\
23539 A higher limit means that cached compilation units will be stored\n\
23540 in memory longer, and more total memory will be used.  Zero disables\n\
23541 caching, which can slow down startup."),
23542                             NULL,
23543                             show_dwarf_max_cache_age,
23544                             &set_dwarf_cmdlist,
23545                             &show_dwarf_cmdlist);
23546
23547   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
23548                            &dwarf_always_disassemble, _("\
23549 Set whether `info address' always disassembles DWARF expressions."), _("\
23550 Show whether `info address' always disassembles DWARF expressions."), _("\
23551 When enabled, DWARF expressions are always printed in an assembly-like\n\
23552 syntax.  When disabled, expressions will be printed in a more\n\
23553 conversational style, when possible."),
23554                            NULL,
23555                            show_dwarf_always_disassemble,
23556                            &set_dwarf_cmdlist,
23557                            &show_dwarf_cmdlist);
23558
23559   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23560 Set debugging of the DWARF reader."), _("\
23561 Show debugging of the DWARF reader."), _("\
23562 When enabled (non-zero), debugging messages are printed during DWARF\n\
23563 reading and symtab expansion.  A value of 1 (one) provides basic\n\
23564 information.  A value greater than 1 provides more verbose information."),
23565                             NULL,
23566                             NULL,
23567                             &setdebuglist, &showdebuglist);
23568
23569   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23570 Set debugging of the DWARF DIE reader."), _("\
23571 Show debugging of the DWARF DIE reader."), _("\
23572 When enabled (non-zero), DIEs are dumped after they are read in.\n\
23573 The value is the maximum depth to print."),
23574                              NULL,
23575                              NULL,
23576                              &setdebuglist, &showdebuglist);
23577
23578   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23579 Set debugging of the dwarf line reader."), _("\
23580 Show debugging of the dwarf line reader."), _("\
23581 When enabled (non-zero), line number entries are dumped as they are read in.\n\
23582 A value of 1 (one) provides basic information.\n\
23583 A value greater than 1 provides more verbose information."),
23584                              NULL,
23585                              NULL,
23586                              &setdebuglist, &showdebuglist);
23587
23588   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23589 Set cross-checking of \"physname\" code against demangler."), _("\
23590 Show cross-checking of \"physname\" code against demangler."), _("\
23591 When enabled, GDB's internal \"physname\" code is checked against\n\
23592 the demangler."),
23593                            NULL, show_check_physname,
23594                            &setdebuglist, &showdebuglist);
23595
23596   add_setshow_boolean_cmd ("use-deprecated-index-sections",
23597                            no_class, &use_deprecated_index_sections, _("\
23598 Set whether to use deprecated gdb_index sections."), _("\
23599 Show whether to use deprecated gdb_index sections."), _("\
23600 When enabled, deprecated .gdb_index sections are used anyway.\n\
23601 Normally they are ignored either because of a missing feature or\n\
23602 performance issue.\n\
23603 Warning: This option must be enabled before gdb reads the file."),
23604                            NULL,
23605                            NULL,
23606                            &setlist, &showlist);
23607
23608   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
23609                _("\
23610 Save a gdb-index file.\n\
23611 Usage: save gdb-index DIRECTORY"),
23612                &save_cmdlist);
23613   set_cmd_completer (c, filename_completer);
23614
23615   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23616                                                         &dwarf2_locexpr_funcs);
23617   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23618                                                         &dwarf2_loclist_funcs);
23619
23620   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23621                                         &dwarf2_block_frame_base_locexpr_funcs);
23622   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23623                                         &dwarf2_block_frame_base_loclist_funcs);
23624 }