PR symtab/17591
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2014 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 "jv-lang.h"
57 #include "psympriv.h"
58 #include <sys/stat.h>
59 #include "completer.h"
60 #include "vec.h"
61 #include "c-lang.h"
62 #include "go-lang.h"
63 #include "valprint.h"
64 #include "gdbcore.h" /* for gnutarget */
65 #include "gdb/gdb-index.h"
66 #include <ctype.h>
67 #include "gdb_bfd.h"
68 #include "f-lang.h"
69 #include "source.h"
70 #include "filestuff.h"
71 #include "build-id.h"
72
73 #include <fcntl.h>
74 #include <sys/types.h>
75
76 typedef struct symbol *symbolp;
77 DEF_VEC_P (symbolp);
78
79 /* When == 1, print basic high level tracing messages.
80    When > 1, be more verbose.
81    This is in contrast to the low level DIE reading of dwarf2_die_debug.  */
82 static unsigned int dwarf2_read_debug = 0;
83
84 /* When non-zero, dump DIEs after they are read in.  */
85 static unsigned int dwarf2_die_debug = 0;
86
87 /* When non-zero, cross-check physname against demangler.  */
88 static int check_physname = 0;
89
90 /* When non-zero, do not reject deprecated .gdb_index sections.  */
91 static int use_deprecated_index_sections = 0;
92
93 static const struct objfile_data *dwarf2_objfile_data_key;
94
95 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
96
97 static int dwarf2_locexpr_index;
98 static int dwarf2_loclist_index;
99 static int dwarf2_locexpr_block_index;
100 static int dwarf2_loclist_block_index;
101
102 /* A descriptor for dwarf sections.
103
104    S.ASECTION, SIZE are typically initialized when the objfile is first
105    scanned.  BUFFER, READIN are filled in later when the section is read.
106    If the section contained compressed data then SIZE is updated to record
107    the uncompressed size of the section.
108
109    DWP file format V2 introduces a wrinkle that is easiest to handle by
110    creating the concept of virtual sections contained within a real section.
111    In DWP V2 the sections of the input DWO files are concatenated together
112    into one section, but section offsets are kept relative to the original
113    input section.
114    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
115    the real section this "virtual" section is contained in, and BUFFER,SIZE
116    describe the virtual section.  */
117
118 struct dwarf2_section_info
119 {
120   union
121   {
122     /* If this is a real section, the bfd section.  */
123     asection *asection;
124     /* If this is a virtual section, pointer to the containing ("real")
125        section.  */
126     struct dwarf2_section_info *containing_section;
127   } s;
128   /* Pointer to section data, only valid if readin.  */
129   const gdb_byte *buffer;
130   /* The size of the section, real or virtual.  */
131   bfd_size_type size;
132   /* If this is a virtual section, the offset in the real section.
133      Only valid if is_virtual.  */
134   bfd_size_type virtual_offset;
135   /* True if we have tried to read this section.  */
136   char readin;
137   /* True if this is a virtual section, False otherwise.
138      This specifies which of s.asection and s.containing_section to use.  */
139   char is_virtual;
140 };
141
142 typedef struct dwarf2_section_info dwarf2_section_info_def;
143 DEF_VEC_O (dwarf2_section_info_def);
144
145 /* All offsets in the index are of this type.  It must be
146    architecture-independent.  */
147 typedef uint32_t offset_type;
148
149 DEF_VEC_I (offset_type);
150
151 /* Ensure only legit values are used.  */
152 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
153   do { \
154     gdb_assert ((unsigned int) (value) <= 1); \
155     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
156   } while (0)
157
158 /* Ensure only legit values are used.  */
159 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
160   do { \
161     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
162                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
163     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
164   } while (0)
165
166 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
167 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
168   do { \
169     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
170     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
171   } while (0)
172
173 /* A description of the mapped index.  The file format is described in
174    a comment by the code that writes the index.  */
175 struct mapped_index
176 {
177   /* Index data format version.  */
178   int version;
179
180   /* The total length of the buffer.  */
181   off_t total_size;
182
183   /* A pointer to the address table data.  */
184   const gdb_byte *address_table;
185
186   /* Size of the address table data in bytes.  */
187   offset_type address_table_size;
188
189   /* The symbol table, implemented as a hash table.  */
190   const offset_type *symbol_table;
191
192   /* Size in slots, each slot is 2 offset_types.  */
193   offset_type symbol_table_slots;
194
195   /* A pointer to the constant pool.  */
196   const char *constant_pool;
197 };
198
199 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
200 DEF_VEC_P (dwarf2_per_cu_ptr);
201
202 /* Collection of data recorded per objfile.
203    This hangs off of dwarf2_objfile_data_key.  */
204
205 struct dwarf2_per_objfile
206 {
207   struct dwarf2_section_info info;
208   struct dwarf2_section_info abbrev;
209   struct dwarf2_section_info line;
210   struct dwarf2_section_info loc;
211   struct dwarf2_section_info macinfo;
212   struct dwarf2_section_info macro;
213   struct dwarf2_section_info str;
214   struct dwarf2_section_info ranges;
215   struct dwarf2_section_info addr;
216   struct dwarf2_section_info frame;
217   struct dwarf2_section_info eh_frame;
218   struct dwarf2_section_info gdb_index;
219
220   VEC (dwarf2_section_info_def) *types;
221
222   /* Back link.  */
223   struct objfile *objfile;
224
225   /* Table of all the compilation units.  This is used to locate
226      the target compilation unit of a particular reference.  */
227   struct dwarf2_per_cu_data **all_comp_units;
228
229   /* The number of compilation units in ALL_COMP_UNITS.  */
230   int n_comp_units;
231
232   /* The number of .debug_types-related CUs.  */
233   int n_type_units;
234
235   /* The number of elements allocated in all_type_units.
236      If there are skeleton-less TUs, we add them to all_type_units lazily.  */
237   int n_allocated_type_units;
238
239   /* The .debug_types-related CUs (TUs).
240      This is stored in malloc space because we may realloc it.  */
241   struct signatured_type **all_type_units;
242
243   /* Table of struct type_unit_group objects.
244      The hash key is the DW_AT_stmt_list value.  */
245   htab_t type_unit_groups;
246
247   /* A table mapping .debug_types signatures to its signatured_type entry.
248      This is NULL if the .debug_types section hasn't been read in yet.  */
249   htab_t signatured_types;
250
251   /* Type unit statistics, to see how well the scaling improvements
252      are doing.  */
253   struct tu_stats
254   {
255     int nr_uniq_abbrev_tables;
256     int nr_symtabs;
257     int nr_symtab_sharers;
258     int nr_stmt_less_type_units;
259     int nr_all_type_units_reallocs;
260   } tu_stats;
261
262   /* A chain of compilation units that are currently read in, so that
263      they can be freed later.  */
264   struct dwarf2_per_cu_data *read_in_chain;
265
266   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
267      This is NULL if the table hasn't been allocated yet.  */
268   htab_t dwo_files;
269
270   /* Non-zero if we've check for whether there is a DWP file.  */
271   int dwp_checked;
272
273   /* The DWP file if there is one, or NULL.  */
274   struct dwp_file *dwp_file;
275
276   /* The shared '.dwz' file, if one exists.  This is used when the
277      original data was compressed using 'dwz -m'.  */
278   struct dwz_file *dwz_file;
279
280   /* A flag indicating wether this objfile has a section loaded at a
281      VMA of 0.  */
282   int has_section_at_zero;
283
284   /* True if we are using the mapped index,
285      or we are faking it for OBJF_READNOW's sake.  */
286   unsigned char using_index;
287
288   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
289   struct mapped_index *index_table;
290
291   /* When using index_table, this keeps track of all quick_file_names entries.
292      TUs typically share line table entries with a CU, so we maintain a
293      separate table of all line table entries to support the sharing.
294      Note that while there can be way more TUs than CUs, we've already
295      sorted all the TUs into "type unit groups", grouped by their
296      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
297      CU and its associated TU group if there is one.  */
298   htab_t quick_file_names_table;
299
300   /* Set during partial symbol reading, to prevent queueing of full
301      symbols.  */
302   int reading_partial_symbols;
303
304   /* Table mapping type DIEs to their struct type *.
305      This is NULL if not allocated yet.
306      The mapping is done via (CU/TU + DIE offset) -> type.  */
307   htab_t die_type_hash;
308
309   /* The CUs we recently read.  */
310   VEC (dwarf2_per_cu_ptr) *just_read_cus;
311 };
312
313 static struct dwarf2_per_objfile *dwarf2_per_objfile;
314
315 /* Default names of the debugging sections.  */
316
317 /* Note that if the debugging section has been compressed, it might
318    have a name like .zdebug_info.  */
319
320 static const struct dwarf2_debug_sections dwarf2_elf_names =
321 {
322   { ".debug_info", ".zdebug_info" },
323   { ".debug_abbrev", ".zdebug_abbrev" },
324   { ".debug_line", ".zdebug_line" },
325   { ".debug_loc", ".zdebug_loc" },
326   { ".debug_macinfo", ".zdebug_macinfo" },
327   { ".debug_macro", ".zdebug_macro" },
328   { ".debug_str", ".zdebug_str" },
329   { ".debug_ranges", ".zdebug_ranges" },
330   { ".debug_types", ".zdebug_types" },
331   { ".debug_addr", ".zdebug_addr" },
332   { ".debug_frame", ".zdebug_frame" },
333   { ".eh_frame", NULL },
334   { ".gdb_index", ".zgdb_index" },
335   23
336 };
337
338 /* List of DWO/DWP sections.  */
339
340 static const struct dwop_section_names
341 {
342   struct dwarf2_section_names abbrev_dwo;
343   struct dwarf2_section_names info_dwo;
344   struct dwarf2_section_names line_dwo;
345   struct dwarf2_section_names loc_dwo;
346   struct dwarf2_section_names macinfo_dwo;
347   struct dwarf2_section_names macro_dwo;
348   struct dwarf2_section_names str_dwo;
349   struct dwarf2_section_names str_offsets_dwo;
350   struct dwarf2_section_names types_dwo;
351   struct dwarf2_section_names cu_index;
352   struct dwarf2_section_names tu_index;
353 }
354 dwop_section_names =
355 {
356   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
357   { ".debug_info.dwo", ".zdebug_info.dwo" },
358   { ".debug_line.dwo", ".zdebug_line.dwo" },
359   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
360   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
361   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
362   { ".debug_str.dwo", ".zdebug_str.dwo" },
363   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
364   { ".debug_types.dwo", ".zdebug_types.dwo" },
365   { ".debug_cu_index", ".zdebug_cu_index" },
366   { ".debug_tu_index", ".zdebug_tu_index" },
367 };
368
369 /* local data types */
370
371 /* The data in a compilation unit header, after target2host
372    translation, looks like this.  */
373 struct comp_unit_head
374 {
375   unsigned int length;
376   short version;
377   unsigned char addr_size;
378   unsigned char signed_addr_p;
379   sect_offset abbrev_offset;
380
381   /* Size of file offsets; either 4 or 8.  */
382   unsigned int offset_size;
383
384   /* Size of the length field; either 4 or 12.  */
385   unsigned int initial_length_size;
386
387   /* Offset to the first byte of this compilation unit header in the
388      .debug_info section, for resolving relative reference dies.  */
389   sect_offset offset;
390
391   /* Offset to first die in this cu from the start of the cu.
392      This will be the first byte following the compilation unit header.  */
393   cu_offset first_die_offset;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 typedef struct delayed_method_info delayed_method_info;
417 DEF_VEC_O (delayed_method_info);
418
419 /* Internal state when decoding a particular compilation unit.  */
420 struct dwarf2_cu
421 {
422   /* The objfile containing this compilation unit.  */
423   struct objfile *objfile;
424
425   /* The header of the compilation unit.  */
426   struct comp_unit_head header;
427
428   /* Base address of this compilation unit.  */
429   CORE_ADDR base_address;
430
431   /* Non-zero if base_address has been set.  */
432   int base_known;
433
434   /* The language we are debugging.  */
435   enum language language;
436   const struct language_defn *language_defn;
437
438   const char *producer;
439
440   /* The generic symbol table building routines have separate lists for
441      file scope symbols and all all other scopes (local scopes).  So
442      we need to select the right one to pass to add_symbol_to_list().
443      We do it by keeping a pointer to the correct list in list_in_scope.
444
445      FIXME: The original dwarf code just treated the file scope as the
446      first local scope, and all other local scopes as nested local
447      scopes, and worked fine.  Check to see if we really need to
448      distinguish these in buildsym.c.  */
449   struct pending **list_in_scope;
450
451   /* The abbrev table for this CU.
452      Normally this points to the abbrev table in the objfile.
453      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
454   struct abbrev_table *abbrev_table;
455
456   /* Hash table holding all the loaded partial DIEs
457      with partial_die->offset.SECT_OFF as hash.  */
458   htab_t partial_dies;
459
460   /* Storage for things with the same lifetime as this read-in compilation
461      unit, including partial DIEs.  */
462   struct obstack comp_unit_obstack;
463
464   /* When multiple dwarf2_cu structures are living in memory, this field
465      chains them all together, so that they can be released efficiently.
466      We will probably also want a generation counter so that most-recently-used
467      compilation units are cached...  */
468   struct dwarf2_per_cu_data *read_in_chain;
469
470   /* Backlink to our per_cu entry.  */
471   struct dwarf2_per_cu_data *per_cu;
472
473   /* How many compilation units ago was this CU last referenced?  */
474   int last_used;
475
476   /* A hash table of DIE cu_offset for following references with
477      die_info->offset.sect_off as hash.  */
478   htab_t die_hash;
479
480   /* Full DIEs if read in.  */
481   struct die_info *dies;
482
483   /* A set of pointers to dwarf2_per_cu_data objects for compilation
484      units referenced by this one.  Only set during full symbol processing;
485      partial symbol tables do not have dependencies.  */
486   htab_t dependencies;
487
488   /* Header data from the line table, during full symbol processing.  */
489   struct line_header *line_header;
490
491   /* A list of methods which need to have physnames computed
492      after all type information has been read.  */
493   VEC (delayed_method_info) *method_list;
494
495   /* To be copied to symtab->call_site_htab.  */
496   htab_t call_site_htab;
497
498   /* Non-NULL if this CU came from a DWO file.
499      There is an invariant here that is important to remember:
500      Except for attributes copied from the top level DIE in the "main"
501      (or "stub") file in preparation for reading the DWO file
502      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
503      Either there isn't a DWO file (in which case this is NULL and the point
504      is moot), or there is and either we're not going to read it (in which
505      case this is NULL) or there is and we are reading it (in which case this
506      is non-NULL).  */
507   struct dwo_unit *dwo_unit;
508
509   /* The DW_AT_addr_base attribute if present, zero otherwise
510      (zero is a valid value though).
511      Note this value comes from the Fission stub CU/TU's DIE.  */
512   ULONGEST addr_base;
513
514   /* The DW_AT_ranges_base attribute if present, zero otherwise
515      (zero is a valid value though).
516      Note this value comes from the Fission stub CU/TU's DIE.
517      Also note that the value is zero in the non-DWO case so this value can
518      be used without needing to know whether DWO files are in use or not.
519      N.B. This does not apply to DW_AT_ranges appearing in
520      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
521      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
522      DW_AT_ranges_base *would* have to be applied, and we'd have to care
523      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
524   ULONGEST ranges_base;
525
526   /* Mark used when releasing cached dies.  */
527   unsigned int mark : 1;
528
529   /* This CU references .debug_loc.  See the symtab->locations_valid field.
530      This test is imperfect as there may exist optimized debug code not using
531      any location list and still facing inlining issues if handled as
532      unoptimized code.  For a future better test see GCC PR other/32998.  */
533   unsigned int has_loclist : 1;
534
535   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
536      if all the producer_is_* fields are valid.  This information is cached
537      because profiling CU expansion showed excessive time spent in
538      producer_is_gxx_lt_4_6.  */
539   unsigned int checked_producer : 1;
540   unsigned int producer_is_gxx_lt_4_6 : 1;
541   unsigned int producer_is_gcc_lt_4_3 : 1;
542   unsigned int producer_is_icc : 1;
543
544   /* When set, the file that we're processing is known to have
545      debugging info for C++ namespaces.  GCC 3.3.x did not produce
546      this information, but later versions do.  */
547
548   unsigned int processing_has_namespace_info : 1;
549 };
550
551 /* Persistent data held for a compilation unit, even when not
552    processing it.  We put a pointer to this structure in the
553    read_symtab_private field of the psymtab.  */
554
555 struct dwarf2_per_cu_data
556 {
557   /* The start offset and length of this compilation unit.
558      NOTE: Unlike comp_unit_head.length, this length includes
559      initial_length_size.
560      If the DIE refers to a DWO file, this is always of the original die,
561      not the DWO file.  */
562   sect_offset offset;
563   unsigned int length;
564
565   /* Flag indicating this compilation unit will be read in before
566      any of the current compilation units are processed.  */
567   unsigned int queued : 1;
568
569   /* This flag will be set when reading partial DIEs if we need to load
570      absolutely all DIEs for this compilation unit, instead of just the ones
571      we think are interesting.  It gets set if we look for a DIE in the
572      hash table and don't find it.  */
573   unsigned int load_all_dies : 1;
574
575   /* Non-zero if this CU is from .debug_types.
576      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
577      this is non-zero.  */
578   unsigned int is_debug_types : 1;
579
580   /* Non-zero if this CU is from the .dwz file.  */
581   unsigned int is_dwz : 1;
582
583   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
584      This flag is only valid if is_debug_types is true.
585      We can't read a CU directly from a DWO file: There are required
586      attributes in the stub.  */
587   unsigned int reading_dwo_directly : 1;
588
589   /* Non-zero if the TU has been read.
590      This is used to assist the "Stay in DWO Optimization" for Fission:
591      When reading a DWO, it's faster to read TUs from the DWO instead of
592      fetching them from random other DWOs (due to comdat folding).
593      If the TU has already been read, the optimization is unnecessary
594      (and unwise - we don't want to change where gdb thinks the TU lives
595      "midflight").
596      This flag is only valid if is_debug_types is true.  */
597   unsigned int tu_read : 1;
598
599   /* The section this CU/TU lives in.
600      If the DIE refers to a DWO file, this is always the original die,
601      not the DWO file.  */
602   struct dwarf2_section_info *section;
603
604   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
605      of the CU cache it gets reset to NULL again.  */
606   struct dwarf2_cu *cu;
607
608   /* The corresponding objfile.
609      Normally we can get the objfile from dwarf2_per_objfile.
610      However we can enter this file with just a "per_cu" handle.  */
611   struct objfile *objfile;
612
613   /* When dwarf2_per_objfile->using_index is true, the 'quick' field
614      is active.  Otherwise, the 'psymtab' field is active.  */
615   union
616   {
617     /* The partial symbol table associated with this compilation unit,
618        or NULL for unread partial units.  */
619     struct partial_symtab *psymtab;
620
621     /* Data needed by the "quick" functions.  */
622     struct dwarf2_per_cu_quick_data *quick;
623   } v;
624
625   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
626      while reading psymtabs, used to compute the psymtab dependencies,
627      and then cleared.  Then it is filled in again while reading full
628      symbols, and only deleted when the objfile is destroyed.
629
630      This is also used to work around a difference between the way gold
631      generates .gdb_index version <=7 and the way gdb does.  Arguably this
632      is a gold bug.  For symbols coming from TUs, gold records in the index
633      the CU that includes the TU instead of the TU itself.  This breaks
634      dw2_lookup_symbol: It assumes that if the index says symbol X lives
635      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
636      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
637      we need to look in TU Z to find X.  Fortunately, this is akin to
638      DW_TAG_imported_unit, so we just use the same mechanism: For
639      .gdb_index version <=7 this also records the TUs that the CU referred
640      to.  Concurrently with this change gdb was modified to emit version 8
641      indices so we only pay a price for gold generated indices.
642      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
643   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
644 };
645
646 /* Entry in the signatured_types hash table.  */
647
648 struct signatured_type
649 {
650   /* The "per_cu" object of this type.
651      This struct is used iff per_cu.is_debug_types.
652      N.B.: This is the first member so that it's easy to convert pointers
653      between them.  */
654   struct dwarf2_per_cu_data per_cu;
655
656   /* The type's signature.  */
657   ULONGEST signature;
658
659   /* Offset in the TU of the type's DIE, as read from the TU header.
660      If this TU is a DWO stub and the definition lives in a DWO file
661      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
662   cu_offset type_offset_in_tu;
663
664   /* Offset in the section of the type's DIE.
665      If the definition lives in a DWO file, this is the offset in the
666      .debug_types.dwo section.
667      The value is zero until the actual value is known.
668      Zero is otherwise not a valid section offset.  */
669   sect_offset type_offset_in_section;
670
671   /* Type units are grouped by their DW_AT_stmt_list entry so that they
672      can share them.  This points to the containing symtab.  */
673   struct type_unit_group *type_unit_group;
674
675   /* The type.
676      The first time we encounter this type we fully read it in and install it
677      in the symbol tables.  Subsequent times we only need the type.  */
678   struct type *type;
679
680   /* Containing DWO unit.
681      This field is valid iff per_cu.reading_dwo_directly.  */
682   struct dwo_unit *dwo_unit;
683 };
684
685 typedef struct signatured_type *sig_type_ptr;
686 DEF_VEC_P (sig_type_ptr);
687
688 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
689    This includes type_unit_group and quick_file_names.  */
690
691 struct stmt_list_hash
692 {
693   /* The DWO unit this table is from or NULL if there is none.  */
694   struct dwo_unit *dwo_unit;
695
696   /* Offset in .debug_line or .debug_line.dwo.  */
697   sect_offset line_offset;
698 };
699
700 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
701    an object of this type.  */
702
703 struct type_unit_group
704 {
705   /* dwarf2read.c's main "handle" on a TU symtab.
706      To simplify things we create an artificial CU that "includes" all the
707      type units using this stmt_list so that the rest of the code still has
708      a "per_cu" handle on the symtab.
709      This PER_CU is recognized by having no section.  */
710 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
711   struct dwarf2_per_cu_data per_cu;
712
713   /* The TUs that share this DW_AT_stmt_list entry.
714      This is added to while parsing type units to build partial symtabs,
715      and is deleted afterwards and not used again.  */
716   VEC (sig_type_ptr) *tus;
717
718   /* The primary symtab.
719      Type units in a group needn't all be defined in the same source file,
720      so we create an essentially anonymous symtab as the primary symtab.  */
721   struct symtab *primary_symtab;
722
723   /* The data used to construct the hash key.  */
724   struct stmt_list_hash hash;
725
726   /* The number of symtabs from the line header.
727      The value here must match line_header.num_file_names.  */
728   unsigned int num_symtabs;
729
730   /* The symbol tables for this TU (obtained from the files listed in
731      DW_AT_stmt_list).
732      WARNING: The order of entries here must match the order of entries
733      in the line header.  After the first TU using this type_unit_group, the
734      line header for the subsequent TUs is recreated from this.  This is done
735      because we need to use the same symtabs for each TU using the same
736      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
737      there's no guarantee the line header doesn't have duplicate entries.  */
738   struct symtab **symtabs;
739 };
740
741 /* These sections are what may appear in a (real or virtual) DWO file.  */
742
743 struct dwo_sections
744 {
745   struct dwarf2_section_info abbrev;
746   struct dwarf2_section_info line;
747   struct dwarf2_section_info loc;
748   struct dwarf2_section_info macinfo;
749   struct dwarf2_section_info macro;
750   struct dwarf2_section_info str;
751   struct dwarf2_section_info str_offsets;
752   /* In the case of a virtual DWO file, these two are unused.  */
753   struct dwarf2_section_info info;
754   VEC (dwarf2_section_info_def) *types;
755 };
756
757 /* CUs/TUs in DWP/DWO files.  */
758
759 struct dwo_unit
760 {
761   /* Backlink to the containing struct dwo_file.  */
762   struct dwo_file *dwo_file;
763
764   /* The "id" that distinguishes this CU/TU.
765      .debug_info calls this "dwo_id", .debug_types calls this "signature".
766      Since signatures came first, we stick with it for consistency.  */
767   ULONGEST signature;
768
769   /* The section this CU/TU lives in, in the DWO file.  */
770   struct dwarf2_section_info *section;
771
772   /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section.  */
773   sect_offset offset;
774   unsigned int length;
775
776   /* For types, offset in the type's DIE of the type defined by this TU.  */
777   cu_offset type_offset_in_tu;
778 };
779
780 /* include/dwarf2.h defines the DWP section codes.
781    It defines a max value but it doesn't define a min value, which we
782    use for error checking, so provide one.  */
783
784 enum dwp_v2_section_ids
785 {
786   DW_SECT_MIN = 1
787 };
788
789 /* Data for one DWO file.
790
791    This includes virtual DWO files (a virtual DWO file is a DWO file as it
792    appears in a DWP file).  DWP files don't really have DWO files per se -
793    comdat folding of types "loses" the DWO file they came from, and from
794    a high level view DWP files appear to contain a mass of random types.
795    However, to maintain consistency with the non-DWP case we pretend DWP
796    files contain virtual DWO files, and we assign each TU with one virtual
797    DWO file (generally based on the line and abbrev section offsets -
798    a heuristic that seems to work in practice).  */
799
800 struct dwo_file
801 {
802   /* The DW_AT_GNU_dwo_name attribute.
803      For virtual DWO files the name is constructed from the section offsets
804      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
805      from related CU+TUs.  */
806   const char *dwo_name;
807
808   /* The DW_AT_comp_dir attribute.  */
809   const char *comp_dir;
810
811   /* The bfd, when the file is open.  Otherwise this is NULL.
812      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
813   bfd *dbfd;
814
815   /* The sections that make up this DWO file.
816      Remember that for virtual DWO files in DWP V2, these are virtual
817      sections (for lack of a better name).  */
818   struct dwo_sections sections;
819
820   /* The CU in the file.
821      We only support one because having more than one requires hacking the
822      dwo_name of each to match, which is highly unlikely to happen.
823      Doing this means all TUs can share comp_dir: We also assume that
824      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
825   struct dwo_unit *cu;
826
827   /* Table of TUs in the file.
828      Each element is a struct dwo_unit.  */
829   htab_t tus;
830 };
831
832 /* These sections are what may appear in a DWP file.  */
833
834 struct dwp_sections
835 {
836   /* These are used by both DWP version 1 and 2.  */
837   struct dwarf2_section_info str;
838   struct dwarf2_section_info cu_index;
839   struct dwarf2_section_info tu_index;
840
841   /* These are only used by DWP version 2 files.
842      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
843      sections are referenced by section number, and are not recorded here.
844      In DWP version 2 there is at most one copy of all these sections, each
845      section being (effectively) comprised of the concatenation of all of the
846      individual sections that exist in the version 1 format.
847      To keep the code simple we treat each of these concatenated pieces as a
848      section itself (a virtual section?).  */
849   struct dwarf2_section_info abbrev;
850   struct dwarf2_section_info info;
851   struct dwarf2_section_info line;
852   struct dwarf2_section_info loc;
853   struct dwarf2_section_info macinfo;
854   struct dwarf2_section_info macro;
855   struct dwarf2_section_info str_offsets;
856   struct dwarf2_section_info types;
857 };
858
859 /* These sections are what may appear in a virtual DWO file in DWP version 1.
860    A virtual DWO file is a DWO file as it appears in a DWP file.  */
861
862 struct virtual_v1_dwo_sections
863 {
864   struct dwarf2_section_info abbrev;
865   struct dwarf2_section_info line;
866   struct dwarf2_section_info loc;
867   struct dwarf2_section_info macinfo;
868   struct dwarf2_section_info macro;
869   struct dwarf2_section_info str_offsets;
870   /* Each DWP hash table entry records one CU or one TU.
871      That is recorded here, and copied to dwo_unit.section.  */
872   struct dwarf2_section_info info_or_types;
873 };
874
875 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
876    In version 2, the sections of the DWO files are concatenated together
877    and stored in one section of that name.  Thus each ELF section contains
878    several "virtual" sections.  */
879
880 struct virtual_v2_dwo_sections
881 {
882   bfd_size_type abbrev_offset;
883   bfd_size_type abbrev_size;
884
885   bfd_size_type line_offset;
886   bfd_size_type line_size;
887
888   bfd_size_type loc_offset;
889   bfd_size_type loc_size;
890
891   bfd_size_type macinfo_offset;
892   bfd_size_type macinfo_size;
893
894   bfd_size_type macro_offset;
895   bfd_size_type macro_size;
896
897   bfd_size_type str_offsets_offset;
898   bfd_size_type str_offsets_size;
899
900   /* Each DWP hash table entry records one CU or one TU.
901      That is recorded here, and copied to dwo_unit.section.  */
902   bfd_size_type info_or_types_offset;
903   bfd_size_type info_or_types_size;
904 };
905
906 /* Contents of DWP hash tables.  */
907
908 struct dwp_hash_table
909 {
910   uint32_t version, nr_columns;
911   uint32_t nr_units, nr_slots;
912   const gdb_byte *hash_table, *unit_table;
913   union
914   {
915     struct
916     {
917       const gdb_byte *indices;
918     } v1;
919     struct
920     {
921       /* This is indexed by column number and gives the id of the section
922          in that column.  */
923 #define MAX_NR_V2_DWO_SECTIONS \
924   (1 /* .debug_info or .debug_types */ \
925    + 1 /* .debug_abbrev */ \
926    + 1 /* .debug_line */ \
927    + 1 /* .debug_loc */ \
928    + 1 /* .debug_str_offsets */ \
929    + 1 /* .debug_macro or .debug_macinfo */)
930       int section_ids[MAX_NR_V2_DWO_SECTIONS];
931       const gdb_byte *offsets;
932       const gdb_byte *sizes;
933     } v2;
934   } section_pool;
935 };
936
937 /* Data for one DWP file.  */
938
939 struct dwp_file
940 {
941   /* Name of the file.  */
942   const char *name;
943
944   /* File format version.  */
945   int version;
946
947   /* The bfd.  */
948   bfd *dbfd;
949
950   /* Section info for this file.  */
951   struct dwp_sections sections;
952
953   /* Table of CUs in the file.  */
954   const struct dwp_hash_table *cus;
955
956   /* Table of TUs in the file.  */
957   const struct dwp_hash_table *tus;
958
959   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
960   htab_t loaded_cus;
961   htab_t loaded_tus;
962
963   /* Table to map ELF section numbers to their sections.
964      This is only needed for the DWP V1 file format.  */
965   unsigned int num_sections;
966   asection **elf_sections;
967 };
968
969 /* This represents a '.dwz' file.  */
970
971 struct dwz_file
972 {
973   /* A dwz file can only contain a few sections.  */
974   struct dwarf2_section_info abbrev;
975   struct dwarf2_section_info info;
976   struct dwarf2_section_info str;
977   struct dwarf2_section_info line;
978   struct dwarf2_section_info macro;
979   struct dwarf2_section_info gdb_index;
980
981   /* The dwz's BFD.  */
982   bfd *dwz_bfd;
983 };
984
985 /* Struct used to pass misc. parameters to read_die_and_children, et
986    al.  which are used for both .debug_info and .debug_types dies.
987    All parameters here are unchanging for the life of the call.  This
988    struct exists to abstract away the constant parameters of die reading.  */
989
990 struct die_reader_specs
991 {
992   /* The bfd of die_section.  */
993   bfd* abfd;
994
995   /* The CU of the DIE we are parsing.  */
996   struct dwarf2_cu *cu;
997
998   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
999   struct dwo_file *dwo_file;
1000
1001   /* The section the die comes from.
1002      This is either .debug_info or .debug_types, or the .dwo variants.  */
1003   struct dwarf2_section_info *die_section;
1004
1005   /* die_section->buffer.  */
1006   const gdb_byte *buffer;
1007
1008   /* The end of the buffer.  */
1009   const gdb_byte *buffer_end;
1010
1011   /* The value of the DW_AT_comp_dir attribute.  */
1012   const char *comp_dir;
1013 };
1014
1015 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1016 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1017                                       const gdb_byte *info_ptr,
1018                                       struct die_info *comp_unit_die,
1019                                       int has_children,
1020                                       void *data);
1021
1022 /* The line number information for a compilation unit (found in the
1023    .debug_line section) begins with a "statement program header",
1024    which contains the following information.  */
1025 struct line_header
1026 {
1027   unsigned int total_length;
1028   unsigned short version;
1029   unsigned int header_length;
1030   unsigned char minimum_instruction_length;
1031   unsigned char maximum_ops_per_instruction;
1032   unsigned char default_is_stmt;
1033   int line_base;
1034   unsigned char line_range;
1035   unsigned char opcode_base;
1036
1037   /* standard_opcode_lengths[i] is the number of operands for the
1038      standard opcode whose value is i.  This means that
1039      standard_opcode_lengths[0] is unused, and the last meaningful
1040      element is standard_opcode_lengths[opcode_base - 1].  */
1041   unsigned char *standard_opcode_lengths;
1042
1043   /* The include_directories table.  NOTE!  These strings are not
1044      allocated with xmalloc; instead, they are pointers into
1045      debug_line_buffer.  If you try to free them, `free' will get
1046      indigestion.  */
1047   unsigned int num_include_dirs, include_dirs_size;
1048   const char **include_dirs;
1049
1050   /* The file_names table.  NOTE!  These strings are not allocated
1051      with xmalloc; instead, they are pointers into debug_line_buffer.
1052      Don't try to free them directly.  */
1053   unsigned int num_file_names, file_names_size;
1054   struct file_entry
1055   {
1056     const char *name;
1057     unsigned int dir_index;
1058     unsigned int mod_time;
1059     unsigned int length;
1060     int included_p; /* Non-zero if referenced by the Line Number Program.  */
1061     struct symtab *symtab; /* The associated symbol table, if any.  */
1062   } *file_names;
1063
1064   /* The start and end of the statement program following this
1065      header.  These point into dwarf2_per_objfile->line_buffer.  */
1066   const gdb_byte *statement_program_start, *statement_program_end;
1067 };
1068
1069 /* When we construct a partial symbol table entry we only
1070    need this much information.  */
1071 struct partial_die_info
1072   {
1073     /* Offset of this DIE.  */
1074     sect_offset offset;
1075
1076     /* DWARF-2 tag for this DIE.  */
1077     ENUM_BITFIELD(dwarf_tag) tag : 16;
1078
1079     /* Assorted flags describing the data found in this DIE.  */
1080     unsigned int has_children : 1;
1081     unsigned int is_external : 1;
1082     unsigned int is_declaration : 1;
1083     unsigned int has_type : 1;
1084     unsigned int has_specification : 1;
1085     unsigned int has_pc_info : 1;
1086     unsigned int may_be_inlined : 1;
1087
1088     /* Flag set if the SCOPE field of this structure has been
1089        computed.  */
1090     unsigned int scope_set : 1;
1091
1092     /* Flag set if the DIE has a byte_size attribute.  */
1093     unsigned int has_byte_size : 1;
1094
1095     /* Flag set if any of the DIE's children are template arguments.  */
1096     unsigned int has_template_arguments : 1;
1097
1098     /* Flag set if fixup_partial_die has been called on this die.  */
1099     unsigned int fixup_called : 1;
1100
1101     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1102     unsigned int is_dwz : 1;
1103
1104     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1105     unsigned int spec_is_dwz : 1;
1106
1107     /* The name of this DIE.  Normally the value of DW_AT_name, but
1108        sometimes a default name for unnamed DIEs.  */
1109     const char *name;
1110
1111     /* The linkage name, if present.  */
1112     const char *linkage_name;
1113
1114     /* The scope to prepend to our children.  This is generally
1115        allocated on the comp_unit_obstack, so will disappear
1116        when this compilation unit leaves the cache.  */
1117     const char *scope;
1118
1119     /* Some data associated with the partial DIE.  The tag determines
1120        which field is live.  */
1121     union
1122     {
1123       /* The location description associated with this DIE, if any.  */
1124       struct dwarf_block *locdesc;
1125       /* The offset of an import, for DW_TAG_imported_unit.  */
1126       sect_offset offset;
1127     } d;
1128
1129     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1130     CORE_ADDR lowpc;
1131     CORE_ADDR highpc;
1132
1133     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1134        DW_AT_sibling, if any.  */
1135     /* NOTE: This member isn't strictly necessary, read_partial_die could
1136        return DW_AT_sibling values to its caller load_partial_dies.  */
1137     const gdb_byte *sibling;
1138
1139     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1140        DW_AT_specification (or DW_AT_abstract_origin or
1141        DW_AT_extension).  */
1142     sect_offset spec_offset;
1143
1144     /* Pointers to this DIE's parent, first child, and next sibling,
1145        if any.  */
1146     struct partial_die_info *die_parent, *die_child, *die_sibling;
1147   };
1148
1149 /* This data structure holds the information of an abbrev.  */
1150 struct abbrev_info
1151   {
1152     unsigned int number;        /* number identifying abbrev */
1153     enum dwarf_tag tag;         /* dwarf tag */
1154     unsigned short has_children;                /* boolean */
1155     unsigned short num_attrs;   /* number of attributes */
1156     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1157     struct abbrev_info *next;   /* next in chain */
1158   };
1159
1160 struct attr_abbrev
1161   {
1162     ENUM_BITFIELD(dwarf_attribute) name : 16;
1163     ENUM_BITFIELD(dwarf_form) form : 16;
1164   };
1165
1166 /* Size of abbrev_table.abbrev_hash_table.  */
1167 #define ABBREV_HASH_SIZE 121
1168
1169 /* Top level data structure to contain an abbreviation table.  */
1170
1171 struct abbrev_table
1172 {
1173   /* Where the abbrev table came from.
1174      This is used as a sanity check when the table is used.  */
1175   sect_offset offset;
1176
1177   /* Storage for the abbrev table.  */
1178   struct obstack abbrev_obstack;
1179
1180   /* Hash table of abbrevs.
1181      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1182      It could be statically allocated, but the previous code didn't so we
1183      don't either.  */
1184   struct abbrev_info **abbrevs;
1185 };
1186
1187 /* Attributes have a name and a value.  */
1188 struct attribute
1189   {
1190     ENUM_BITFIELD(dwarf_attribute) name : 16;
1191     ENUM_BITFIELD(dwarf_form) form : 15;
1192
1193     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1194        field should be in u.str (existing only for DW_STRING) but it is kept
1195        here for better struct attribute alignment.  */
1196     unsigned int string_is_canonical : 1;
1197
1198     union
1199       {
1200         const char *str;
1201         struct dwarf_block *blk;
1202         ULONGEST unsnd;
1203         LONGEST snd;
1204         CORE_ADDR addr;
1205         ULONGEST signature;
1206       }
1207     u;
1208   };
1209
1210 /* This data structure holds a complete die structure.  */
1211 struct die_info
1212   {
1213     /* DWARF-2 tag for this DIE.  */
1214     ENUM_BITFIELD(dwarf_tag) tag : 16;
1215
1216     /* Number of attributes */
1217     unsigned char num_attrs;
1218
1219     /* True if we're presently building the full type name for the
1220        type derived from this DIE.  */
1221     unsigned char building_fullname : 1;
1222
1223     /* True if this die is in process.  PR 16581.  */
1224     unsigned char in_process : 1;
1225
1226     /* Abbrev number */
1227     unsigned int abbrev;
1228
1229     /* Offset in .debug_info or .debug_types section.  */
1230     sect_offset offset;
1231
1232     /* The dies in a compilation unit form an n-ary tree.  PARENT
1233        points to this die's parent; CHILD points to the first child of
1234        this node; and all the children of a given node are chained
1235        together via their SIBLING fields.  */
1236     struct die_info *child;     /* Its first child, if any.  */
1237     struct die_info *sibling;   /* Its next sibling, if any.  */
1238     struct die_info *parent;    /* Its parent, if any.  */
1239
1240     /* An array of attributes, with NUM_ATTRS elements.  There may be
1241        zero, but it's not common and zero-sized arrays are not
1242        sufficiently portable C.  */
1243     struct attribute attrs[1];
1244   };
1245
1246 /* Get at parts of an attribute structure.  */
1247
1248 #define DW_STRING(attr)    ((attr)->u.str)
1249 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1250 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1251 #define DW_BLOCK(attr)     ((attr)->u.blk)
1252 #define DW_SND(attr)       ((attr)->u.snd)
1253 #define DW_ADDR(attr)      ((attr)->u.addr)
1254 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1255
1256 /* Blocks are a bunch of untyped bytes.  */
1257 struct dwarf_block
1258   {
1259     size_t size;
1260
1261     /* Valid only if SIZE is not zero.  */
1262     const gdb_byte *data;
1263   };
1264
1265 #ifndef ATTR_ALLOC_CHUNK
1266 #define ATTR_ALLOC_CHUNK 4
1267 #endif
1268
1269 /* Allocate fields for structs, unions and enums in this size.  */
1270 #ifndef DW_FIELD_ALLOC_CHUNK
1271 #define DW_FIELD_ALLOC_CHUNK 4
1272 #endif
1273
1274 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1275    but this would require a corresponding change in unpack_field_as_long
1276    and friends.  */
1277 static int bits_per_byte = 8;
1278
1279 /* The routines that read and process dies for a C struct or C++ class
1280    pass lists of data member fields and lists of member function fields
1281    in an instance of a field_info structure, as defined below.  */
1282 struct field_info
1283   {
1284     /* List of data member and baseclasses fields.  */
1285     struct nextfield
1286       {
1287         struct nextfield *next;
1288         int accessibility;
1289         int virtuality;
1290         struct field field;
1291       }
1292      *fields, *baseclasses;
1293
1294     /* Number of fields (including baseclasses).  */
1295     int nfields;
1296
1297     /* Number of baseclasses.  */
1298     int nbaseclasses;
1299
1300     /* Set if the accesibility of one of the fields is not public.  */
1301     int non_public_fields;
1302
1303     /* Member function fields array, entries are allocated in the order they
1304        are encountered in the object file.  */
1305     struct nextfnfield
1306       {
1307         struct nextfnfield *next;
1308         struct fn_field fnfield;
1309       }
1310      *fnfields;
1311
1312     /* Member function fieldlist array, contains name of possibly overloaded
1313        member function, number of overloaded member functions and a pointer
1314        to the head of the member function field chain.  */
1315     struct fnfieldlist
1316       {
1317         const char *name;
1318         int length;
1319         struct nextfnfield *head;
1320       }
1321      *fnfieldlists;
1322
1323     /* Number of entries in the fnfieldlists array.  */
1324     int nfnfields;
1325
1326     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1327        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1328     struct typedef_field_list
1329       {
1330         struct typedef_field field;
1331         struct typedef_field_list *next;
1332       }
1333     *typedef_field_list;
1334     unsigned typedef_field_list_count;
1335   };
1336
1337 /* One item on the queue of compilation units to read in full symbols
1338    for.  */
1339 struct dwarf2_queue_item
1340 {
1341   struct dwarf2_per_cu_data *per_cu;
1342   enum language pretend_language;
1343   struct dwarf2_queue_item *next;
1344 };
1345
1346 /* The current queue.  */
1347 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1348
1349 /* Loaded secondary compilation units are kept in memory until they
1350    have not been referenced for the processing of this many
1351    compilation units.  Set this to zero to disable caching.  Cache
1352    sizes of up to at least twenty will improve startup time for
1353    typical inter-CU-reference binaries, at an obvious memory cost.  */
1354 static int dwarf2_max_cache_age = 5;
1355 static void
1356 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1357                            struct cmd_list_element *c, const char *value)
1358 {
1359   fprintf_filtered (file, _("The upper bound on the age of cached "
1360                             "dwarf2 compilation units is %s.\n"),
1361                     value);
1362 }
1363 \f
1364 /* local function prototypes */
1365
1366 static const char *get_section_name (const struct dwarf2_section_info *);
1367
1368 static const char *get_section_file_name (const struct dwarf2_section_info *);
1369
1370 static void dwarf2_locate_sections (bfd *, asection *, void *);
1371
1372 static void dwarf2_find_base_address (struct die_info *die,
1373                                       struct dwarf2_cu *cu);
1374
1375 static struct partial_symtab *create_partial_symtab
1376   (struct dwarf2_per_cu_data *per_cu, const char *name);
1377
1378 static void dwarf2_build_psymtabs_hard (struct objfile *);
1379
1380 static void scan_partial_symbols (struct partial_die_info *,
1381                                   CORE_ADDR *, CORE_ADDR *,
1382                                   int, struct dwarf2_cu *);
1383
1384 static void add_partial_symbol (struct partial_die_info *,
1385                                 struct dwarf2_cu *);
1386
1387 static void add_partial_namespace (struct partial_die_info *pdi,
1388                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1389                                    int set_addrmap, struct dwarf2_cu *cu);
1390
1391 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1392                                 CORE_ADDR *highpc, int set_addrmap,
1393                                 struct dwarf2_cu *cu);
1394
1395 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1396                                      struct dwarf2_cu *cu);
1397
1398 static void add_partial_subprogram (struct partial_die_info *pdi,
1399                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1400                                     int need_pc, struct dwarf2_cu *cu);
1401
1402 static void dwarf2_read_symtab (struct partial_symtab *,
1403                                 struct objfile *);
1404
1405 static void psymtab_to_symtab_1 (struct partial_symtab *);
1406
1407 static struct abbrev_info *abbrev_table_lookup_abbrev
1408   (const struct abbrev_table *, unsigned int);
1409
1410 static struct abbrev_table *abbrev_table_read_table
1411   (struct dwarf2_section_info *, sect_offset);
1412
1413 static void abbrev_table_free (struct abbrev_table *);
1414
1415 static void abbrev_table_free_cleanup (void *);
1416
1417 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1418                                  struct dwarf2_section_info *);
1419
1420 static void dwarf2_free_abbrev_table (void *);
1421
1422 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1423
1424 static struct partial_die_info *load_partial_dies
1425   (const struct die_reader_specs *, const gdb_byte *, int);
1426
1427 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1428                                          struct partial_die_info *,
1429                                          struct abbrev_info *,
1430                                          unsigned int,
1431                                          const gdb_byte *);
1432
1433 static struct partial_die_info *find_partial_die (sect_offset, int,
1434                                                   struct dwarf2_cu *);
1435
1436 static void fixup_partial_die (struct partial_die_info *,
1437                                struct dwarf2_cu *);
1438
1439 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1440                                        struct attribute *, struct attr_abbrev *,
1441                                        const gdb_byte *);
1442
1443 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1444
1445 static int read_1_signed_byte (bfd *, const gdb_byte *);
1446
1447 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1448
1449 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1450
1451 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1452
1453 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1454                                unsigned int *);
1455
1456 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1457
1458 static LONGEST read_checked_initial_length_and_offset
1459   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1460    unsigned int *, unsigned int *);
1461
1462 static LONGEST read_offset (bfd *, const gdb_byte *,
1463                             const struct comp_unit_head *,
1464                             unsigned int *);
1465
1466 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1467
1468 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1469                                        sect_offset);
1470
1471 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1472
1473 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1474
1475 static const char *read_indirect_string (bfd *, const gdb_byte *,
1476                                          const struct comp_unit_head *,
1477                                          unsigned int *);
1478
1479 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1480
1481 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1482
1483 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1484
1485 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1486                                               const gdb_byte *,
1487                                               unsigned int *);
1488
1489 static const char *read_str_index (const struct die_reader_specs *reader,
1490                                    ULONGEST str_index);
1491
1492 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1493
1494 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1495                                       struct dwarf2_cu *);
1496
1497 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1498                                                 unsigned int);
1499
1500 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1501                                struct dwarf2_cu *cu);
1502
1503 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1504
1505 static struct die_info *die_specification (struct die_info *die,
1506                                            struct dwarf2_cu **);
1507
1508 static void free_line_header (struct line_header *lh);
1509
1510 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1511                                                      struct dwarf2_cu *cu);
1512
1513 static void dwarf_decode_lines (struct line_header *, const char *,
1514                                 struct dwarf2_cu *, struct partial_symtab *,
1515                                 CORE_ADDR);
1516
1517 static void dwarf2_start_subfile (const char *, const char *, const char *);
1518
1519 static void dwarf2_start_symtab (struct dwarf2_cu *,
1520                                  const char *, const char *, CORE_ADDR);
1521
1522 static struct symbol *new_symbol (struct die_info *, struct type *,
1523                                   struct dwarf2_cu *);
1524
1525 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1526                                        struct dwarf2_cu *, struct symbol *);
1527
1528 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1529                                 struct dwarf2_cu *);
1530
1531 static void dwarf2_const_value_attr (const struct attribute *attr,
1532                                      struct type *type,
1533                                      const char *name,
1534                                      struct obstack *obstack,
1535                                      struct dwarf2_cu *cu, LONGEST *value,
1536                                      const gdb_byte **bytes,
1537                                      struct dwarf2_locexpr_baton **baton);
1538
1539 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1540
1541 static int need_gnat_info (struct dwarf2_cu *);
1542
1543 static struct type *die_descriptive_type (struct die_info *,
1544                                           struct dwarf2_cu *);
1545
1546 static void set_descriptive_type (struct type *, struct die_info *,
1547                                   struct dwarf2_cu *);
1548
1549 static struct type *die_containing_type (struct die_info *,
1550                                          struct dwarf2_cu *);
1551
1552 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1553                                      struct dwarf2_cu *);
1554
1555 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1556
1557 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1558
1559 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1560
1561 static char *typename_concat (struct obstack *obs, const char *prefix,
1562                               const char *suffix, int physname,
1563                               struct dwarf2_cu *cu);
1564
1565 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1566
1567 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1568
1569 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1570
1571 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1572
1573 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1574
1575 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1576                                struct dwarf2_cu *, struct partial_symtab *);
1577
1578 static int dwarf2_get_pc_bounds (struct die_info *,
1579                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1580                                  struct partial_symtab *);
1581
1582 static void get_scope_pc_bounds (struct die_info *,
1583                                  CORE_ADDR *, CORE_ADDR *,
1584                                  struct dwarf2_cu *);
1585
1586 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1587                                         CORE_ADDR, struct dwarf2_cu *);
1588
1589 static void dwarf2_add_field (struct field_info *, struct die_info *,
1590                               struct dwarf2_cu *);
1591
1592 static void dwarf2_attach_fields_to_type (struct field_info *,
1593                                           struct type *, struct dwarf2_cu *);
1594
1595 static void dwarf2_add_member_fn (struct field_info *,
1596                                   struct die_info *, struct type *,
1597                                   struct dwarf2_cu *);
1598
1599 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1600                                              struct type *,
1601                                              struct dwarf2_cu *);
1602
1603 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1604
1605 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1606
1607 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1608
1609 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1610
1611 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1612
1613 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1614
1615 static struct type *read_module_type (struct die_info *die,
1616                                       struct dwarf2_cu *cu);
1617
1618 static const char *namespace_name (struct die_info *die,
1619                                    int *is_anonymous, struct dwarf2_cu *);
1620
1621 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1622
1623 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1624
1625 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1626                                                        struct dwarf2_cu *);
1627
1628 static struct die_info *read_die_and_siblings_1
1629   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1630    struct die_info *);
1631
1632 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1633                                                const gdb_byte *info_ptr,
1634                                                const gdb_byte **new_info_ptr,
1635                                                struct die_info *parent);
1636
1637 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1638                                         struct die_info **, const gdb_byte *,
1639                                         int *, int);
1640
1641 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1642                                       struct die_info **, const gdb_byte *,
1643                                       int *);
1644
1645 static void process_die (struct die_info *, struct dwarf2_cu *);
1646
1647 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1648                                              struct obstack *);
1649
1650 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1651
1652 static const char *dwarf2_full_name (const char *name,
1653                                      struct die_info *die,
1654                                      struct dwarf2_cu *cu);
1655
1656 static const char *dwarf2_physname (const char *name, struct die_info *die,
1657                                     struct dwarf2_cu *cu);
1658
1659 static struct die_info *dwarf2_extension (struct die_info *die,
1660                                           struct dwarf2_cu **);
1661
1662 static const char *dwarf_tag_name (unsigned int);
1663
1664 static const char *dwarf_attr_name (unsigned int);
1665
1666 static const char *dwarf_form_name (unsigned int);
1667
1668 static char *dwarf_bool_name (unsigned int);
1669
1670 static const char *dwarf_type_encoding_name (unsigned int);
1671
1672 static struct die_info *sibling_die (struct die_info *);
1673
1674 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1675
1676 static void dump_die_for_error (struct die_info *);
1677
1678 static void dump_die_1 (struct ui_file *, int level, int max_level,
1679                         struct die_info *);
1680
1681 /*static*/ void dump_die (struct die_info *, int max_level);
1682
1683 static void store_in_ref_table (struct die_info *,
1684                                 struct dwarf2_cu *);
1685
1686 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1687
1688 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1689
1690 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1691                                                const struct attribute *,
1692                                                struct dwarf2_cu **);
1693
1694 static struct die_info *follow_die_ref (struct die_info *,
1695                                         const struct attribute *,
1696                                         struct dwarf2_cu **);
1697
1698 static struct die_info *follow_die_sig (struct die_info *,
1699                                         const struct attribute *,
1700                                         struct dwarf2_cu **);
1701
1702 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1703                                          struct dwarf2_cu *);
1704
1705 static struct type *get_DW_AT_signature_type (struct die_info *,
1706                                               const struct attribute *,
1707                                               struct dwarf2_cu *);
1708
1709 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1710
1711 static void read_signatured_type (struct signatured_type *);
1712
1713 /* memory allocation interface */
1714
1715 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1716
1717 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1718
1719 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int,
1720                                  const char *, int);
1721
1722 static int attr_form_is_block (const struct attribute *);
1723
1724 static int attr_form_is_section_offset (const struct attribute *);
1725
1726 static int attr_form_is_constant (const struct attribute *);
1727
1728 static int attr_form_is_ref (const struct attribute *);
1729
1730 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1731                                    struct dwarf2_loclist_baton *baton,
1732                                    const struct attribute *attr);
1733
1734 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1735                                          struct symbol *sym,
1736                                          struct dwarf2_cu *cu,
1737                                          int is_block);
1738
1739 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1740                                      const gdb_byte *info_ptr,
1741                                      struct abbrev_info *abbrev);
1742
1743 static void free_stack_comp_unit (void *);
1744
1745 static hashval_t partial_die_hash (const void *item);
1746
1747 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1748
1749 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1750   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1751
1752 static void init_one_comp_unit (struct dwarf2_cu *cu,
1753                                 struct dwarf2_per_cu_data *per_cu);
1754
1755 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1756                                    struct die_info *comp_unit_die,
1757                                    enum language pretend_language);
1758
1759 static void free_heap_comp_unit (void *);
1760
1761 static void free_cached_comp_units (void *);
1762
1763 static void age_cached_comp_units (void);
1764
1765 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1766
1767 static struct type *set_die_type (struct die_info *, struct type *,
1768                                   struct dwarf2_cu *);
1769
1770 static void create_all_comp_units (struct objfile *);
1771
1772 static int create_all_type_units (struct objfile *);
1773
1774 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1775                                  enum language);
1776
1777 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1778                                     enum language);
1779
1780 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1781                                     enum language);
1782
1783 static void dwarf2_add_dependence (struct dwarf2_cu *,
1784                                    struct dwarf2_per_cu_data *);
1785
1786 static void dwarf2_mark (struct dwarf2_cu *);
1787
1788 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1789
1790 static struct type *get_die_type_at_offset (sect_offset,
1791                                             struct dwarf2_per_cu_data *);
1792
1793 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1794
1795 static void dwarf2_release_queue (void *dummy);
1796
1797 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1798                              enum language pretend_language);
1799
1800 static void process_queue (void);
1801
1802 static void find_file_and_directory (struct die_info *die,
1803                                      struct dwarf2_cu *cu,
1804                                      const char **name, const char **comp_dir);
1805
1806 static char *file_full_name (int file, struct line_header *lh,
1807                              const char *comp_dir);
1808
1809 static const gdb_byte *read_and_check_comp_unit_head
1810   (struct comp_unit_head *header,
1811    struct dwarf2_section_info *section,
1812    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1813    int is_debug_types_section);
1814
1815 static void init_cutu_and_read_dies
1816   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1817    int use_existing_cu, int keep,
1818    die_reader_func_ftype *die_reader_func, void *data);
1819
1820 static void init_cutu_and_read_dies_simple
1821   (struct dwarf2_per_cu_data *this_cu,
1822    die_reader_func_ftype *die_reader_func, void *data);
1823
1824 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1825
1826 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1827
1828 static struct dwo_unit *lookup_dwo_unit_in_dwp
1829   (struct dwp_file *dwp_file, const char *comp_dir,
1830    ULONGEST signature, int is_debug_types);
1831
1832 static struct dwp_file *get_dwp_file (void);
1833
1834 static struct dwo_unit *lookup_dwo_comp_unit
1835   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1836
1837 static struct dwo_unit *lookup_dwo_type_unit
1838   (struct signatured_type *, const char *, const char *);
1839
1840 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1841
1842 static void free_dwo_file_cleanup (void *);
1843
1844 static void process_cu_includes (void);
1845
1846 static void check_producer (struct dwarf2_cu *cu);
1847 \f
1848 /* Various complaints about symbol reading that don't abort the process.  */
1849
1850 static void
1851 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1852 {
1853   complaint (&symfile_complaints,
1854              _("statement list doesn't fit in .debug_line section"));
1855 }
1856
1857 static void
1858 dwarf2_debug_line_missing_file_complaint (void)
1859 {
1860   complaint (&symfile_complaints,
1861              _(".debug_line section has line data without a file"));
1862 }
1863
1864 static void
1865 dwarf2_debug_line_missing_end_sequence_complaint (void)
1866 {
1867   complaint (&symfile_complaints,
1868              _(".debug_line section has line "
1869                "program sequence without an end"));
1870 }
1871
1872 static void
1873 dwarf2_complex_location_expr_complaint (void)
1874 {
1875   complaint (&symfile_complaints, _("location expression too complex"));
1876 }
1877
1878 static void
1879 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1880                                               int arg3)
1881 {
1882   complaint (&symfile_complaints,
1883              _("const value length mismatch for '%s', got %d, expected %d"),
1884              arg1, arg2, arg3);
1885 }
1886
1887 static void
1888 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1889 {
1890   complaint (&symfile_complaints,
1891              _("debug info runs off end of %s section"
1892                " [in module %s]"),
1893              get_section_name (section),
1894              get_section_file_name (section));
1895 }
1896
1897 static void
1898 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1899 {
1900   complaint (&symfile_complaints,
1901              _("macro debug info contains a "
1902                "malformed macro definition:\n`%s'"),
1903              arg1);
1904 }
1905
1906 static void
1907 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1908 {
1909   complaint (&symfile_complaints,
1910              _("invalid attribute class or form for '%s' in '%s'"),
1911              arg1, arg2);
1912 }
1913 \f
1914 #if WORDS_BIGENDIAN
1915
1916 /* Convert VALUE between big- and little-endian.  */
1917 static offset_type
1918 byte_swap (offset_type value)
1919 {
1920   offset_type result;
1921
1922   result = (value & 0xff) << 24;
1923   result |= (value & 0xff00) << 8;
1924   result |= (value & 0xff0000) >> 8;
1925   result |= (value & 0xff000000) >> 24;
1926   return result;
1927 }
1928
1929 #define MAYBE_SWAP(V)  byte_swap (V)
1930
1931 #else
1932 #define MAYBE_SWAP(V) (V)
1933 #endif /* WORDS_BIGENDIAN */
1934
1935 /* Read the given attribute value as an address, taking the attribute's
1936    form into account.  */
1937
1938 static CORE_ADDR
1939 attr_value_as_address (struct attribute *attr)
1940 {
1941   CORE_ADDR addr;
1942
1943   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
1944     {
1945       /* Aside from a few clearly defined exceptions, attributes that
1946          contain an address must always be in DW_FORM_addr form.
1947          Unfortunately, some compilers happen to be violating this
1948          requirement by encoding addresses using other forms, such
1949          as DW_FORM_data4 for example.  For those broken compilers,
1950          we try to do our best, without any guarantee of success,
1951          to interpret the address correctly.  It would also be nice
1952          to generate a complaint, but that would require us to maintain
1953          a list of legitimate cases where a non-address form is allowed,
1954          as well as update callers to pass in at least the CU's DWARF
1955          version.  This is more overhead than what we're willing to
1956          expand for a pretty rare case.  */
1957       addr = DW_UNSND (attr);
1958     }
1959   else
1960     addr = DW_ADDR (attr);
1961
1962   return addr;
1963 }
1964
1965 /* The suffix for an index file.  */
1966 #define INDEX_SUFFIX ".gdb-index"
1967
1968 /* Try to locate the sections we need for DWARF 2 debugging
1969    information and return true if we have enough to do something.
1970    NAMES points to the dwarf2 section names, or is NULL if the standard
1971    ELF names are used.  */
1972
1973 int
1974 dwarf2_has_info (struct objfile *objfile,
1975                  const struct dwarf2_debug_sections *names)
1976 {
1977   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1978   if (!dwarf2_per_objfile)
1979     {
1980       /* Initialize per-objfile state.  */
1981       struct dwarf2_per_objfile *data
1982         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1983
1984       memset (data, 0, sizeof (*data));
1985       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1986       dwarf2_per_objfile = data;
1987
1988       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
1989                              (void *) names);
1990       dwarf2_per_objfile->objfile = objfile;
1991     }
1992   return (!dwarf2_per_objfile->info.is_virtual
1993           && dwarf2_per_objfile->info.s.asection != NULL
1994           && !dwarf2_per_objfile->abbrev.is_virtual
1995           && dwarf2_per_objfile->abbrev.s.asection != NULL);
1996 }
1997
1998 /* Return the containing section of virtual section SECTION.  */
1999
2000 static struct dwarf2_section_info *
2001 get_containing_section (const struct dwarf2_section_info *section)
2002 {
2003   gdb_assert (section->is_virtual);
2004   return section->s.containing_section;
2005 }
2006
2007 /* Return the bfd owner of SECTION.  */
2008
2009 static struct bfd *
2010 get_section_bfd_owner (const struct dwarf2_section_info *section)
2011 {
2012   if (section->is_virtual)
2013     {
2014       section = get_containing_section (section);
2015       gdb_assert (!section->is_virtual);
2016     }
2017   return section->s.asection->owner;
2018 }
2019
2020 /* Return the bfd section of SECTION.
2021    Returns NULL if the section is not present.  */
2022
2023 static asection *
2024 get_section_bfd_section (const struct dwarf2_section_info *section)
2025 {
2026   if (section->is_virtual)
2027     {
2028       section = get_containing_section (section);
2029       gdb_assert (!section->is_virtual);
2030     }
2031   return section->s.asection;
2032 }
2033
2034 /* Return the name of SECTION.  */
2035
2036 static const char *
2037 get_section_name (const struct dwarf2_section_info *section)
2038 {
2039   asection *sectp = get_section_bfd_section (section);
2040
2041   gdb_assert (sectp != NULL);
2042   return bfd_section_name (get_section_bfd_owner (section), sectp);
2043 }
2044
2045 /* Return the name of the file SECTION is in.  */
2046
2047 static const char *
2048 get_section_file_name (const struct dwarf2_section_info *section)
2049 {
2050   bfd *abfd = get_section_bfd_owner (section);
2051
2052   return bfd_get_filename (abfd);
2053 }
2054
2055 /* Return the id of SECTION.
2056    Returns 0 if SECTION doesn't exist.  */
2057
2058 static int
2059 get_section_id (const struct dwarf2_section_info *section)
2060 {
2061   asection *sectp = get_section_bfd_section (section);
2062
2063   if (sectp == NULL)
2064     return 0;
2065   return sectp->id;
2066 }
2067
2068 /* Return the flags of SECTION.
2069    SECTION (or containing section if this is a virtual section) must exist.  */
2070
2071 static int
2072 get_section_flags (const struct dwarf2_section_info *section)
2073 {
2074   asection *sectp = get_section_bfd_section (section);
2075
2076   gdb_assert (sectp != NULL);
2077   return bfd_get_section_flags (sectp->owner, sectp);
2078 }
2079
2080 /* When loading sections, we look either for uncompressed section or for
2081    compressed section names.  */
2082
2083 static int
2084 section_is_p (const char *section_name,
2085               const struct dwarf2_section_names *names)
2086 {
2087   if (names->normal != NULL
2088       && strcmp (section_name, names->normal) == 0)
2089     return 1;
2090   if (names->compressed != NULL
2091       && strcmp (section_name, names->compressed) == 0)
2092     return 1;
2093   return 0;
2094 }
2095
2096 /* This function is mapped across the sections and remembers the
2097    offset and size of each of the debugging sections we are interested
2098    in.  */
2099
2100 static void
2101 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2102 {
2103   const struct dwarf2_debug_sections *names;
2104   flagword aflag = bfd_get_section_flags (abfd, sectp);
2105
2106   if (vnames == NULL)
2107     names = &dwarf2_elf_names;
2108   else
2109     names = (const struct dwarf2_debug_sections *) vnames;
2110
2111   if ((aflag & SEC_HAS_CONTENTS) == 0)
2112     {
2113     }
2114   else if (section_is_p (sectp->name, &names->info))
2115     {
2116       dwarf2_per_objfile->info.s.asection = sectp;
2117       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2118     }
2119   else if (section_is_p (sectp->name, &names->abbrev))
2120     {
2121       dwarf2_per_objfile->abbrev.s.asection = sectp;
2122       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2123     }
2124   else if (section_is_p (sectp->name, &names->line))
2125     {
2126       dwarf2_per_objfile->line.s.asection = sectp;
2127       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2128     }
2129   else if (section_is_p (sectp->name, &names->loc))
2130     {
2131       dwarf2_per_objfile->loc.s.asection = sectp;
2132       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2133     }
2134   else if (section_is_p (sectp->name, &names->macinfo))
2135     {
2136       dwarf2_per_objfile->macinfo.s.asection = sectp;
2137       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2138     }
2139   else if (section_is_p (sectp->name, &names->macro))
2140     {
2141       dwarf2_per_objfile->macro.s.asection = sectp;
2142       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2143     }
2144   else if (section_is_p (sectp->name, &names->str))
2145     {
2146       dwarf2_per_objfile->str.s.asection = sectp;
2147       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2148     }
2149   else if (section_is_p (sectp->name, &names->addr))
2150     {
2151       dwarf2_per_objfile->addr.s.asection = sectp;
2152       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2153     }
2154   else if (section_is_p (sectp->name, &names->frame))
2155     {
2156       dwarf2_per_objfile->frame.s.asection = sectp;
2157       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2158     }
2159   else if (section_is_p (sectp->name, &names->eh_frame))
2160     {
2161       dwarf2_per_objfile->eh_frame.s.asection = sectp;
2162       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2163     }
2164   else if (section_is_p (sectp->name, &names->ranges))
2165     {
2166       dwarf2_per_objfile->ranges.s.asection = sectp;
2167       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2168     }
2169   else if (section_is_p (sectp->name, &names->types))
2170     {
2171       struct dwarf2_section_info type_section;
2172
2173       memset (&type_section, 0, sizeof (type_section));
2174       type_section.s.asection = sectp;
2175       type_section.size = bfd_get_section_size (sectp);
2176
2177       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2178                      &type_section);
2179     }
2180   else if (section_is_p (sectp->name, &names->gdb_index))
2181     {
2182       dwarf2_per_objfile->gdb_index.s.asection = sectp;
2183       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2184     }
2185
2186   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2187       && bfd_section_vma (abfd, sectp) == 0)
2188     dwarf2_per_objfile->has_section_at_zero = 1;
2189 }
2190
2191 /* A helper function that decides whether a section is empty,
2192    or not present.  */
2193
2194 static int
2195 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2196 {
2197   if (section->is_virtual)
2198     return section->size == 0;
2199   return section->s.asection == NULL || section->size == 0;
2200 }
2201
2202 /* Read the contents of the section INFO.
2203    OBJFILE is the main object file, but not necessarily the file where
2204    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2205    of the DWO file.
2206    If the section is compressed, uncompress it before returning.  */
2207
2208 static void
2209 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2210 {
2211   asection *sectp;
2212   bfd *abfd;
2213   gdb_byte *buf, *retbuf;
2214
2215   if (info->readin)
2216     return;
2217   info->buffer = NULL;
2218   info->readin = 1;
2219
2220   if (dwarf2_section_empty_p (info))
2221     return;
2222
2223   sectp = get_section_bfd_section (info);
2224
2225   /* If this is a virtual section we need to read in the real one first.  */
2226   if (info->is_virtual)
2227     {
2228       struct dwarf2_section_info *containing_section =
2229         get_containing_section (info);
2230
2231       gdb_assert (sectp != NULL);
2232       if ((sectp->flags & SEC_RELOC) != 0)
2233         {
2234           error (_("Dwarf Error: DWP format V2 with relocations is not"
2235                    " supported in section %s [in module %s]"),
2236                  get_section_name (info), get_section_file_name (info));
2237         }
2238       dwarf2_read_section (objfile, containing_section);
2239       /* Other code should have already caught virtual sections that don't
2240          fit.  */
2241       gdb_assert (info->virtual_offset + info->size
2242                   <= containing_section->size);
2243       /* If the real section is empty or there was a problem reading the
2244          section we shouldn't get here.  */
2245       gdb_assert (containing_section->buffer != NULL);
2246       info->buffer = containing_section->buffer + info->virtual_offset;
2247       return;
2248     }
2249
2250   /* If the section has relocations, we must read it ourselves.
2251      Otherwise we attach it to the BFD.  */
2252   if ((sectp->flags & SEC_RELOC) == 0)
2253     {
2254       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2255       return;
2256     }
2257
2258   buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2259   info->buffer = buf;
2260
2261   /* When debugging .o files, we may need to apply relocations; see
2262      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2263      We never compress sections in .o files, so we only need to
2264      try this when the section is not compressed.  */
2265   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2266   if (retbuf != NULL)
2267     {
2268       info->buffer = retbuf;
2269       return;
2270     }
2271
2272   abfd = get_section_bfd_owner (info);
2273   gdb_assert (abfd != NULL);
2274
2275   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2276       || bfd_bread (buf, info->size, abfd) != info->size)
2277     {
2278       error (_("Dwarf Error: Can't read DWARF data"
2279                " in section %s [in module %s]"),
2280              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2281     }
2282 }
2283
2284 /* A helper function that returns the size of a section in a safe way.
2285    If you are positive that the section has been read before using the
2286    size, then it is safe to refer to the dwarf2_section_info object's
2287    "size" field directly.  In other cases, you must call this
2288    function, because for compressed sections the size field is not set
2289    correctly until the section has been read.  */
2290
2291 static bfd_size_type
2292 dwarf2_section_size (struct objfile *objfile,
2293                      struct dwarf2_section_info *info)
2294 {
2295   if (!info->readin)
2296     dwarf2_read_section (objfile, info);
2297   return info->size;
2298 }
2299
2300 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2301    SECTION_NAME.  */
2302
2303 void
2304 dwarf2_get_section_info (struct objfile *objfile,
2305                          enum dwarf2_section_enum sect,
2306                          asection **sectp, const gdb_byte **bufp,
2307                          bfd_size_type *sizep)
2308 {
2309   struct dwarf2_per_objfile *data
2310     = objfile_data (objfile, dwarf2_objfile_data_key);
2311   struct dwarf2_section_info *info;
2312
2313   /* We may see an objfile without any DWARF, in which case we just
2314      return nothing.  */
2315   if (data == NULL)
2316     {
2317       *sectp = NULL;
2318       *bufp = NULL;
2319       *sizep = 0;
2320       return;
2321     }
2322   switch (sect)
2323     {
2324     case DWARF2_DEBUG_FRAME:
2325       info = &data->frame;
2326       break;
2327     case DWARF2_EH_FRAME:
2328       info = &data->eh_frame;
2329       break;
2330     default:
2331       gdb_assert_not_reached ("unexpected section");
2332     }
2333
2334   dwarf2_read_section (objfile, info);
2335
2336   *sectp = get_section_bfd_section (info);
2337   *bufp = info->buffer;
2338   *sizep = info->size;
2339 }
2340
2341 /* A helper function to find the sections for a .dwz file.  */
2342
2343 static void
2344 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2345 {
2346   struct dwz_file *dwz_file = arg;
2347
2348   /* Note that we only support the standard ELF names, because .dwz
2349      is ELF-only (at the time of writing).  */
2350   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2351     {
2352       dwz_file->abbrev.s.asection = sectp;
2353       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2354     }
2355   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2356     {
2357       dwz_file->info.s.asection = sectp;
2358       dwz_file->info.size = bfd_get_section_size (sectp);
2359     }
2360   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2361     {
2362       dwz_file->str.s.asection = sectp;
2363       dwz_file->str.size = bfd_get_section_size (sectp);
2364     }
2365   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2366     {
2367       dwz_file->line.s.asection = sectp;
2368       dwz_file->line.size = bfd_get_section_size (sectp);
2369     }
2370   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2371     {
2372       dwz_file->macro.s.asection = sectp;
2373       dwz_file->macro.size = bfd_get_section_size (sectp);
2374     }
2375   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2376     {
2377       dwz_file->gdb_index.s.asection = sectp;
2378       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2379     }
2380 }
2381
2382 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2383    there is no .gnu_debugaltlink section in the file.  Error if there
2384    is such a section but the file cannot be found.  */
2385
2386 static struct dwz_file *
2387 dwarf2_get_dwz_file (void)
2388 {
2389   bfd *dwz_bfd;
2390   char *data;
2391   struct cleanup *cleanup;
2392   const char *filename;
2393   struct dwz_file *result;
2394   bfd_size_type buildid_len_arg;
2395   size_t buildid_len;
2396   bfd_byte *buildid;
2397
2398   if (dwarf2_per_objfile->dwz_file != NULL)
2399     return dwarf2_per_objfile->dwz_file;
2400
2401   bfd_set_error (bfd_error_no_error);
2402   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2403                                       &buildid_len_arg, &buildid);
2404   if (data == NULL)
2405     {
2406       if (bfd_get_error () == bfd_error_no_error)
2407         return NULL;
2408       error (_("could not read '.gnu_debugaltlink' section: %s"),
2409              bfd_errmsg (bfd_get_error ()));
2410     }
2411   cleanup = make_cleanup (xfree, data);
2412   make_cleanup (xfree, buildid);
2413
2414   buildid_len = (size_t) buildid_len_arg;
2415
2416   filename = (const char *) data;
2417   if (!IS_ABSOLUTE_PATH (filename))
2418     {
2419       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2420       char *rel;
2421
2422       make_cleanup (xfree, abs);
2423       abs = ldirname (abs);
2424       make_cleanup (xfree, abs);
2425
2426       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2427       make_cleanup (xfree, rel);
2428       filename = rel;
2429     }
2430
2431   /* First try the file name given in the section.  If that doesn't
2432      work, try to use the build-id instead.  */
2433   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2434   if (dwz_bfd != NULL)
2435     {
2436       if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2437         {
2438           gdb_bfd_unref (dwz_bfd);
2439           dwz_bfd = NULL;
2440         }
2441     }
2442
2443   if (dwz_bfd == NULL)
2444     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2445
2446   if (dwz_bfd == NULL)
2447     error (_("could not find '.gnu_debugaltlink' file for %s"),
2448            objfile_name (dwarf2_per_objfile->objfile));
2449
2450   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2451                            struct dwz_file);
2452   result->dwz_bfd = dwz_bfd;
2453
2454   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2455
2456   do_cleanups (cleanup);
2457
2458   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
2459   dwarf2_per_objfile->dwz_file = result;
2460   return result;
2461 }
2462 \f
2463 /* DWARF quick_symbols_functions support.  */
2464
2465 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2466    unique line tables, so we maintain a separate table of all .debug_line
2467    derived entries to support the sharing.
2468    All the quick functions need is the list of file names.  We discard the
2469    line_header when we're done and don't need to record it here.  */
2470 struct quick_file_names
2471 {
2472   /* The data used to construct the hash key.  */
2473   struct stmt_list_hash hash;
2474
2475   /* The number of entries in file_names, real_names.  */
2476   unsigned int num_file_names;
2477
2478   /* The file names from the line table, after being run through
2479      file_full_name.  */
2480   const char **file_names;
2481
2482   /* The file names from the line table after being run through
2483      gdb_realpath.  These are computed lazily.  */
2484   const char **real_names;
2485 };
2486
2487 /* When using the index (and thus not using psymtabs), each CU has an
2488    object of this type.  This is used to hold information needed by
2489    the various "quick" methods.  */
2490 struct dwarf2_per_cu_quick_data
2491 {
2492   /* The file table.  This can be NULL if there was no file table
2493      or it's currently not read in.
2494      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2495   struct quick_file_names *file_names;
2496
2497   /* The corresponding symbol table.  This is NULL if symbols for this
2498      CU have not yet been read.  */
2499   struct symtab *symtab;
2500
2501   /* A temporary mark bit used when iterating over all CUs in
2502      expand_symtabs_matching.  */
2503   unsigned int mark : 1;
2504
2505   /* True if we've tried to read the file table and found there isn't one.
2506      There will be no point in trying to read it again next time.  */
2507   unsigned int no_file_data : 1;
2508 };
2509
2510 /* Utility hash function for a stmt_list_hash.  */
2511
2512 static hashval_t
2513 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2514 {
2515   hashval_t v = 0;
2516
2517   if (stmt_list_hash->dwo_unit != NULL)
2518     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2519   v += stmt_list_hash->line_offset.sect_off;
2520   return v;
2521 }
2522
2523 /* Utility equality function for a stmt_list_hash.  */
2524
2525 static int
2526 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2527                     const struct stmt_list_hash *rhs)
2528 {
2529   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2530     return 0;
2531   if (lhs->dwo_unit != NULL
2532       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2533     return 0;
2534
2535   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2536 }
2537
2538 /* Hash function for a quick_file_names.  */
2539
2540 static hashval_t
2541 hash_file_name_entry (const void *e)
2542 {
2543   const struct quick_file_names *file_data = e;
2544
2545   return hash_stmt_list_entry (&file_data->hash);
2546 }
2547
2548 /* Equality function for a quick_file_names.  */
2549
2550 static int
2551 eq_file_name_entry (const void *a, const void *b)
2552 {
2553   const struct quick_file_names *ea = a;
2554   const struct quick_file_names *eb = b;
2555
2556   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2557 }
2558
2559 /* Delete function for a quick_file_names.  */
2560
2561 static void
2562 delete_file_name_entry (void *e)
2563 {
2564   struct quick_file_names *file_data = e;
2565   int i;
2566
2567   for (i = 0; i < file_data->num_file_names; ++i)
2568     {
2569       xfree ((void*) file_data->file_names[i]);
2570       if (file_data->real_names)
2571         xfree ((void*) file_data->real_names[i]);
2572     }
2573
2574   /* The space for the struct itself lives on objfile_obstack,
2575      so we don't free it here.  */
2576 }
2577
2578 /* Create a quick_file_names hash table.  */
2579
2580 static htab_t
2581 create_quick_file_names_table (unsigned int nr_initial_entries)
2582 {
2583   return htab_create_alloc (nr_initial_entries,
2584                             hash_file_name_entry, eq_file_name_entry,
2585                             delete_file_name_entry, xcalloc, xfree);
2586 }
2587
2588 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2589    have to be created afterwards.  You should call age_cached_comp_units after
2590    processing PER_CU->CU.  dw2_setup must have been already called.  */
2591
2592 static void
2593 load_cu (struct dwarf2_per_cu_data *per_cu)
2594 {
2595   if (per_cu->is_debug_types)
2596     load_full_type_unit (per_cu);
2597   else
2598     load_full_comp_unit (per_cu, language_minimal);
2599
2600   gdb_assert (per_cu->cu != NULL);
2601
2602   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2603 }
2604
2605 /* Read in the symbols for PER_CU.  */
2606
2607 static void
2608 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2609 {
2610   struct cleanup *back_to;
2611
2612   /* Skip type_unit_groups, reading the type units they contain
2613      is handled elsewhere.  */
2614   if (IS_TYPE_UNIT_GROUP (per_cu))
2615     return;
2616
2617   back_to = make_cleanup (dwarf2_release_queue, NULL);
2618
2619   if (dwarf2_per_objfile->using_index
2620       ? per_cu->v.quick->symtab == NULL
2621       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2622     {
2623       queue_comp_unit (per_cu, language_minimal);
2624       load_cu (per_cu);
2625
2626       /* If we just loaded a CU from a DWO, and we're working with an index
2627          that may badly handle TUs, load all the TUs in that DWO as well.
2628          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2629       if (!per_cu->is_debug_types
2630           && per_cu->cu->dwo_unit != NULL
2631           && dwarf2_per_objfile->index_table != NULL
2632           && dwarf2_per_objfile->index_table->version <= 7
2633           /* DWP files aren't supported yet.  */
2634           && get_dwp_file () == NULL)
2635         queue_and_load_all_dwo_tus (per_cu);
2636     }
2637
2638   process_queue ();
2639
2640   /* Age the cache, releasing compilation units that have not
2641      been used recently.  */
2642   age_cached_comp_units ();
2643
2644   do_cleanups (back_to);
2645 }
2646
2647 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2648    the objfile from which this CU came.  Returns the resulting symbol
2649    table.  */
2650
2651 static struct symtab *
2652 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2653 {
2654   gdb_assert (dwarf2_per_objfile->using_index);
2655   if (!per_cu->v.quick->symtab)
2656     {
2657       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2658       increment_reading_symtab ();
2659       dw2_do_instantiate_symtab (per_cu);
2660       process_cu_includes ();
2661       do_cleanups (back_to);
2662     }
2663   return per_cu->v.quick->symtab;
2664 }
2665
2666 /* Return the CU/TU given its index.
2667
2668    This is intended for loops like:
2669
2670    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2671                     + dwarf2_per_objfile->n_type_units); ++i)
2672      {
2673        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
2674
2675        ...;
2676      }
2677 */
2678
2679 static struct dwarf2_per_cu_data *
2680 dw2_get_cutu (int index)
2681 {
2682   if (index >= dwarf2_per_objfile->n_comp_units)
2683     {
2684       index -= dwarf2_per_objfile->n_comp_units;
2685       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2686       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2687     }
2688
2689   return dwarf2_per_objfile->all_comp_units[index];
2690 }
2691
2692 /* Return the CU given its index.
2693    This differs from dw2_get_cutu in that it's for when you know INDEX
2694    refers to a CU.  */
2695
2696 static struct dwarf2_per_cu_data *
2697 dw2_get_cu (int index)
2698 {
2699   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
2700
2701   return dwarf2_per_objfile->all_comp_units[index];
2702 }
2703
2704 /* A helper for create_cus_from_index that handles a given list of
2705    CUs.  */
2706
2707 static void
2708 create_cus_from_index_list (struct objfile *objfile,
2709                             const gdb_byte *cu_list, offset_type n_elements,
2710                             struct dwarf2_section_info *section,
2711                             int is_dwz,
2712                             int base_offset)
2713 {
2714   offset_type i;
2715
2716   for (i = 0; i < n_elements; i += 2)
2717     {
2718       struct dwarf2_per_cu_data *the_cu;
2719       ULONGEST offset, length;
2720
2721       gdb_static_assert (sizeof (ULONGEST) >= 8);
2722       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2723       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2724       cu_list += 2 * 8;
2725
2726       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2727                                struct dwarf2_per_cu_data);
2728       the_cu->offset.sect_off = offset;
2729       the_cu->length = length;
2730       the_cu->objfile = objfile;
2731       the_cu->section = section;
2732       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2733                                         struct dwarf2_per_cu_quick_data);
2734       the_cu->is_dwz = is_dwz;
2735       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2736     }
2737 }
2738
2739 /* Read the CU list from the mapped index, and use it to create all
2740    the CU objects for this objfile.  */
2741
2742 static void
2743 create_cus_from_index (struct objfile *objfile,
2744                        const gdb_byte *cu_list, offset_type cu_list_elements,
2745                        const gdb_byte *dwz_list, offset_type dwz_elements)
2746 {
2747   struct dwz_file *dwz;
2748
2749   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2750   dwarf2_per_objfile->all_comp_units
2751     = obstack_alloc (&objfile->objfile_obstack,
2752                      dwarf2_per_objfile->n_comp_units
2753                      * sizeof (struct dwarf2_per_cu_data *));
2754
2755   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2756                               &dwarf2_per_objfile->info, 0, 0);
2757
2758   if (dwz_elements == 0)
2759     return;
2760
2761   dwz = dwarf2_get_dwz_file ();
2762   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2763                               cu_list_elements / 2);
2764 }
2765
2766 /* Create the signatured type hash table from the index.  */
2767
2768 static void
2769 create_signatured_type_table_from_index (struct objfile *objfile,
2770                                          struct dwarf2_section_info *section,
2771                                          const gdb_byte *bytes,
2772                                          offset_type elements)
2773 {
2774   offset_type i;
2775   htab_t sig_types_hash;
2776
2777   dwarf2_per_objfile->n_type_units
2778     = dwarf2_per_objfile->n_allocated_type_units
2779     = elements / 3;
2780   dwarf2_per_objfile->all_type_units
2781     = xmalloc (dwarf2_per_objfile->n_type_units
2782                * sizeof (struct signatured_type *));
2783
2784   sig_types_hash = allocate_signatured_type_table (objfile);
2785
2786   for (i = 0; i < elements; i += 3)
2787     {
2788       struct signatured_type *sig_type;
2789       ULONGEST offset, type_offset_in_tu, signature;
2790       void **slot;
2791
2792       gdb_static_assert (sizeof (ULONGEST) >= 8);
2793       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2794       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2795                                                     BFD_ENDIAN_LITTLE);
2796       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2797       bytes += 3 * 8;
2798
2799       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2800                                  struct signatured_type);
2801       sig_type->signature = signature;
2802       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2803       sig_type->per_cu.is_debug_types = 1;
2804       sig_type->per_cu.section = section;
2805       sig_type->per_cu.offset.sect_off = offset;
2806       sig_type->per_cu.objfile = objfile;
2807       sig_type->per_cu.v.quick
2808         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2809                           struct dwarf2_per_cu_quick_data);
2810
2811       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2812       *slot = sig_type;
2813
2814       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2815     }
2816
2817   dwarf2_per_objfile->signatured_types = sig_types_hash;
2818 }
2819
2820 /* Read the address map data from the mapped index, and use it to
2821    populate the objfile's psymtabs_addrmap.  */
2822
2823 static void
2824 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2825 {
2826   const gdb_byte *iter, *end;
2827   struct obstack temp_obstack;
2828   struct addrmap *mutable_map;
2829   struct cleanup *cleanup;
2830   CORE_ADDR baseaddr;
2831
2832   obstack_init (&temp_obstack);
2833   cleanup = make_cleanup_obstack_free (&temp_obstack);
2834   mutable_map = addrmap_create_mutable (&temp_obstack);
2835
2836   iter = index->address_table;
2837   end = iter + index->address_table_size;
2838
2839   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2840
2841   while (iter < end)
2842     {
2843       ULONGEST hi, lo, cu_index;
2844       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2845       iter += 8;
2846       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2847       iter += 8;
2848       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2849       iter += 4;
2850
2851       if (lo > hi)
2852         {
2853           complaint (&symfile_complaints,
2854                      _(".gdb_index address table has invalid range (%s - %s)"),
2855                      hex_string (lo), hex_string (hi));
2856           continue;
2857         }
2858
2859       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2860         {
2861           complaint (&symfile_complaints,
2862                      _(".gdb_index address table has invalid CU number %u"),
2863                      (unsigned) cu_index);
2864           continue;
2865         }
2866
2867       addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
2868                          dw2_get_cutu (cu_index));
2869     }
2870
2871   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2872                                                     &objfile->objfile_obstack);
2873   do_cleanups (cleanup);
2874 }
2875
2876 /* The hash function for strings in the mapped index.  This is the same as
2877    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2878    implementation.  This is necessary because the hash function is tied to the
2879    format of the mapped index file.  The hash values do not have to match with
2880    SYMBOL_HASH_NEXT.
2881    
2882    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2883
2884 static hashval_t
2885 mapped_index_string_hash (int index_version, const void *p)
2886 {
2887   const unsigned char *str = (const unsigned char *) p;
2888   hashval_t r = 0;
2889   unsigned char c;
2890
2891   while ((c = *str++) != 0)
2892     {
2893       if (index_version >= 5)
2894         c = tolower (c);
2895       r = r * 67 + c - 113;
2896     }
2897
2898   return r;
2899 }
2900
2901 /* Find a slot in the mapped index INDEX for the object named NAME.
2902    If NAME is found, set *VEC_OUT to point to the CU vector in the
2903    constant pool and return 1.  If NAME cannot be found, return 0.  */
2904
2905 static int
2906 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2907                           offset_type **vec_out)
2908 {
2909   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2910   offset_type hash;
2911   offset_type slot, step;
2912   int (*cmp) (const char *, const char *);
2913
2914   if (current_language->la_language == language_cplus
2915       || current_language->la_language == language_java
2916       || current_language->la_language == language_fortran)
2917     {
2918       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2919          not contain any.  */
2920       const char *paren = NULL;
2921
2922       /* Need to handle "(anonymous namespace)".  */
2923       if (*name != '(')
2924         paren = strchr (name, '(');
2925
2926       if (paren)
2927         {
2928           char *dup;
2929
2930           dup = xmalloc (paren - name + 1);
2931           memcpy (dup, name, paren - name);
2932           dup[paren - name] = 0;
2933
2934           make_cleanup (xfree, dup);
2935           name = dup;
2936         }
2937     }
2938
2939   /* Index version 4 did not support case insensitive searches.  But the
2940      indices for case insensitive languages are built in lowercase, therefore
2941      simulate our NAME being searched is also lowercased.  */
2942   hash = mapped_index_string_hash ((index->version == 4
2943                                     && case_sensitivity == case_sensitive_off
2944                                     ? 5 : index->version),
2945                                    name);
2946
2947   slot = hash & (index->symbol_table_slots - 1);
2948   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2949   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2950
2951   for (;;)
2952     {
2953       /* Convert a slot number to an offset into the table.  */
2954       offset_type i = 2 * slot;
2955       const char *str;
2956       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2957         {
2958           do_cleanups (back_to);
2959           return 0;
2960         }
2961
2962       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2963       if (!cmp (name, str))
2964         {
2965           *vec_out = (offset_type *) (index->constant_pool
2966                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2967           do_cleanups (back_to);
2968           return 1;
2969         }
2970
2971       slot = (slot + step) & (index->symbol_table_slots - 1);
2972     }
2973 }
2974
2975 /* A helper function that reads the .gdb_index from SECTION and fills
2976    in MAP.  FILENAME is the name of the file containing the section;
2977    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
2978    ok to use deprecated sections.
2979
2980    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
2981    out parameters that are filled in with information about the CU and
2982    TU lists in the section.
2983
2984    Returns 1 if all went well, 0 otherwise.  */
2985
2986 static int
2987 read_index_from_section (struct objfile *objfile,
2988                          const char *filename,
2989                          int deprecated_ok,
2990                          struct dwarf2_section_info *section,
2991                          struct mapped_index *map,
2992                          const gdb_byte **cu_list,
2993                          offset_type *cu_list_elements,
2994                          const gdb_byte **types_list,
2995                          offset_type *types_list_elements)
2996 {
2997   const gdb_byte *addr;
2998   offset_type version;
2999   offset_type *metadata;
3000   int i;
3001
3002   if (dwarf2_section_empty_p (section))
3003     return 0;
3004
3005   /* Older elfutils strip versions could keep the section in the main
3006      executable while splitting it for the separate debug info file.  */
3007   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3008     return 0;
3009
3010   dwarf2_read_section (objfile, section);
3011
3012   addr = section->buffer;
3013   /* Version check.  */
3014   version = MAYBE_SWAP (*(offset_type *) addr);
3015   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3016      causes the index to behave very poorly for certain requests.  Version 3
3017      contained incomplete addrmap.  So, it seems better to just ignore such
3018      indices.  */
3019   if (version < 4)
3020     {
3021       static int warning_printed = 0;
3022       if (!warning_printed)
3023         {
3024           warning (_("Skipping obsolete .gdb_index section in %s."),
3025                    filename);
3026           warning_printed = 1;
3027         }
3028       return 0;
3029     }
3030   /* Index version 4 uses a different hash function than index version
3031      5 and later.
3032
3033      Versions earlier than 6 did not emit psymbols for inlined
3034      functions.  Using these files will cause GDB not to be able to
3035      set breakpoints on inlined functions by name, so we ignore these
3036      indices unless the user has done
3037      "set use-deprecated-index-sections on".  */
3038   if (version < 6 && !deprecated_ok)
3039     {
3040       static int warning_printed = 0;
3041       if (!warning_printed)
3042         {
3043           warning (_("\
3044 Skipping deprecated .gdb_index section in %s.\n\
3045 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3046 to use the section anyway."),
3047                    filename);
3048           warning_printed = 1;
3049         }
3050       return 0;
3051     }
3052   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3053      of the TU (for symbols coming from TUs),
3054      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3055      Plus gold-generated indices can have duplicate entries for global symbols,
3056      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3057      These are just performance bugs, and we can't distinguish gdb-generated
3058      indices from gold-generated ones, so issue no warning here.  */
3059
3060   /* Indexes with higher version than the one supported by GDB may be no
3061      longer backward compatible.  */
3062   if (version > 8)
3063     return 0;
3064
3065   map->version = version;
3066   map->total_size = section->size;
3067
3068   metadata = (offset_type *) (addr + sizeof (offset_type));
3069
3070   i = 0;
3071   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3072   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3073                        / 8);
3074   ++i;
3075
3076   *types_list = addr + MAYBE_SWAP (metadata[i]);
3077   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3078                            - MAYBE_SWAP (metadata[i]))
3079                           / 8);
3080   ++i;
3081
3082   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3083   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3084                              - MAYBE_SWAP (metadata[i]));
3085   ++i;
3086
3087   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3088   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3089                               - MAYBE_SWAP (metadata[i]))
3090                              / (2 * sizeof (offset_type)));
3091   ++i;
3092
3093   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3094
3095   return 1;
3096 }
3097
3098
3099 /* Read the index file.  If everything went ok, initialize the "quick"
3100    elements of all the CUs and return 1.  Otherwise, return 0.  */
3101
3102 static int
3103 dwarf2_read_index (struct objfile *objfile)
3104 {
3105   struct mapped_index local_map, *map;
3106   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3107   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3108   struct dwz_file *dwz;
3109
3110   if (!read_index_from_section (objfile, objfile_name (objfile),
3111                                 use_deprecated_index_sections,
3112                                 &dwarf2_per_objfile->gdb_index, &local_map,
3113                                 &cu_list, &cu_list_elements,
3114                                 &types_list, &types_list_elements))
3115     return 0;
3116
3117   /* Don't use the index if it's empty.  */
3118   if (local_map.symbol_table_slots == 0)
3119     return 0;
3120
3121   /* If there is a .dwz file, read it so we can get its CU list as
3122      well.  */
3123   dwz = dwarf2_get_dwz_file ();
3124   if (dwz != NULL)
3125     {
3126       struct mapped_index dwz_map;
3127       const gdb_byte *dwz_types_ignore;
3128       offset_type dwz_types_elements_ignore;
3129
3130       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3131                                     1,
3132                                     &dwz->gdb_index, &dwz_map,
3133                                     &dwz_list, &dwz_list_elements,
3134                                     &dwz_types_ignore,
3135                                     &dwz_types_elements_ignore))
3136         {
3137           warning (_("could not read '.gdb_index' section from %s; skipping"),
3138                    bfd_get_filename (dwz->dwz_bfd));
3139           return 0;
3140         }
3141     }
3142
3143   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3144                          dwz_list_elements);
3145
3146   if (types_list_elements)
3147     {
3148       struct dwarf2_section_info *section;
3149
3150       /* We can only handle a single .debug_types when we have an
3151          index.  */
3152       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3153         return 0;
3154
3155       section = VEC_index (dwarf2_section_info_def,
3156                            dwarf2_per_objfile->types, 0);
3157
3158       create_signatured_type_table_from_index (objfile, section, types_list,
3159                                                types_list_elements);
3160     }
3161
3162   create_addrmap_from_index (objfile, &local_map);
3163
3164   map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3165   *map = local_map;
3166
3167   dwarf2_per_objfile->index_table = map;
3168   dwarf2_per_objfile->using_index = 1;
3169   dwarf2_per_objfile->quick_file_names_table =
3170     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3171
3172   return 1;
3173 }
3174
3175 /* A helper for the "quick" functions which sets the global
3176    dwarf2_per_objfile according to OBJFILE.  */
3177
3178 static void
3179 dw2_setup (struct objfile *objfile)
3180 {
3181   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3182   gdb_assert (dwarf2_per_objfile);
3183 }
3184
3185 /* die_reader_func for dw2_get_file_names.  */
3186
3187 static void
3188 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3189                            const gdb_byte *info_ptr,
3190                            struct die_info *comp_unit_die,
3191                            int has_children,
3192                            void *data)
3193 {
3194   struct dwarf2_cu *cu = reader->cu;
3195   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3196   struct objfile *objfile = dwarf2_per_objfile->objfile;
3197   struct dwarf2_per_cu_data *lh_cu;
3198   struct line_header *lh;
3199   struct attribute *attr;
3200   int i;
3201   const char *name, *comp_dir;
3202   void **slot;
3203   struct quick_file_names *qfn;
3204   unsigned int line_offset;
3205
3206   gdb_assert (! this_cu->is_debug_types);
3207
3208   /* Our callers never want to match partial units -- instead they
3209      will match the enclosing full CU.  */
3210   if (comp_unit_die->tag == DW_TAG_partial_unit)
3211     {
3212       this_cu->v.quick->no_file_data = 1;
3213       return;
3214     }
3215
3216   lh_cu = this_cu;
3217   lh = NULL;
3218   slot = NULL;
3219   line_offset = 0;
3220
3221   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3222   if (attr)
3223     {
3224       struct quick_file_names find_entry;
3225
3226       line_offset = DW_UNSND (attr);
3227
3228       /* We may have already read in this line header (TU line header sharing).
3229          If we have we're done.  */
3230       find_entry.hash.dwo_unit = cu->dwo_unit;
3231       find_entry.hash.line_offset.sect_off = line_offset;
3232       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3233                              &find_entry, INSERT);
3234       if (*slot != NULL)
3235         {
3236           lh_cu->v.quick->file_names = *slot;
3237           return;
3238         }
3239
3240       lh = dwarf_decode_line_header (line_offset, cu);
3241     }
3242   if (lh == NULL)
3243     {
3244       lh_cu->v.quick->no_file_data = 1;
3245       return;
3246     }
3247
3248   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
3249   qfn->hash.dwo_unit = cu->dwo_unit;
3250   qfn->hash.line_offset.sect_off = line_offset;
3251   gdb_assert (slot != NULL);
3252   *slot = qfn;
3253
3254   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3255
3256   qfn->num_file_names = lh->num_file_names;
3257   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3258                                    lh->num_file_names * sizeof (char *));
3259   for (i = 0; i < lh->num_file_names; ++i)
3260     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3261   qfn->real_names = NULL;
3262
3263   free_line_header (lh);
3264
3265   lh_cu->v.quick->file_names = qfn;
3266 }
3267
3268 /* A helper for the "quick" functions which attempts to read the line
3269    table for THIS_CU.  */
3270
3271 static struct quick_file_names *
3272 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3273 {
3274   /* This should never be called for TUs.  */
3275   gdb_assert (! this_cu->is_debug_types);
3276   /* Nor type unit groups.  */
3277   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3278
3279   if (this_cu->v.quick->file_names != NULL)
3280     return this_cu->v.quick->file_names;
3281   /* If we know there is no line data, no point in looking again.  */
3282   if (this_cu->v.quick->no_file_data)
3283     return NULL;
3284
3285   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3286
3287   if (this_cu->v.quick->no_file_data)
3288     return NULL;
3289   return this_cu->v.quick->file_names;
3290 }
3291
3292 /* A helper for the "quick" functions which computes and caches the
3293    real path for a given file name from the line table.  */
3294
3295 static const char *
3296 dw2_get_real_path (struct objfile *objfile,
3297                    struct quick_file_names *qfn, int index)
3298 {
3299   if (qfn->real_names == NULL)
3300     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3301                                       qfn->num_file_names, const char *);
3302
3303   if (qfn->real_names[index] == NULL)
3304     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3305
3306   return qfn->real_names[index];
3307 }
3308
3309 static struct symtab *
3310 dw2_find_last_source_symtab (struct objfile *objfile)
3311 {
3312   int index;
3313
3314   dw2_setup (objfile);
3315   index = dwarf2_per_objfile->n_comp_units - 1;
3316   return dw2_instantiate_symtab (dw2_get_cutu (index));
3317 }
3318
3319 /* Traversal function for dw2_forget_cached_source_info.  */
3320
3321 static int
3322 dw2_free_cached_file_names (void **slot, void *info)
3323 {
3324   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3325
3326   if (file_data->real_names)
3327     {
3328       int i;
3329
3330       for (i = 0; i < file_data->num_file_names; ++i)
3331         {
3332           xfree ((void*) file_data->real_names[i]);
3333           file_data->real_names[i] = NULL;
3334         }
3335     }
3336
3337   return 1;
3338 }
3339
3340 static void
3341 dw2_forget_cached_source_info (struct objfile *objfile)
3342 {
3343   dw2_setup (objfile);
3344
3345   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3346                           dw2_free_cached_file_names, NULL);
3347 }
3348
3349 /* Helper function for dw2_map_symtabs_matching_filename that expands
3350    the symtabs and calls the iterator.  */
3351
3352 static int
3353 dw2_map_expand_apply (struct objfile *objfile,
3354                       struct dwarf2_per_cu_data *per_cu,
3355                       const char *name, const char *real_path,
3356                       int (*callback) (struct symtab *, void *),
3357                       void *data)
3358 {
3359   struct symtab *last_made = objfile->symtabs;
3360
3361   /* Don't visit already-expanded CUs.  */
3362   if (per_cu->v.quick->symtab)
3363     return 0;
3364
3365   /* This may expand more than one symtab, and we want to iterate over
3366      all of them.  */
3367   dw2_instantiate_symtab (per_cu);
3368
3369   return iterate_over_some_symtabs (name, real_path, callback, data,
3370                                     objfile->symtabs, last_made);
3371 }
3372
3373 /* Implementation of the map_symtabs_matching_filename method.  */
3374
3375 static int
3376 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3377                                    const char *real_path,
3378                                    int (*callback) (struct symtab *, void *),
3379                                    void *data)
3380 {
3381   int i;
3382   const char *name_basename = lbasename (name);
3383
3384   dw2_setup (objfile);
3385
3386   /* The rule is CUs specify all the files, including those used by
3387      any TU, so there's no need to scan TUs here.  */
3388
3389   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3390     {
3391       int j;
3392       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3393       struct quick_file_names *file_data;
3394
3395       /* We only need to look at symtabs not already expanded.  */
3396       if (per_cu->v.quick->symtab)
3397         continue;
3398
3399       file_data = dw2_get_file_names (per_cu);
3400       if (file_data == NULL)
3401         continue;
3402
3403       for (j = 0; j < file_data->num_file_names; ++j)
3404         {
3405           const char *this_name = file_data->file_names[j];
3406           const char *this_real_name;
3407
3408           if (compare_filenames_for_search (this_name, name))
3409             {
3410               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3411                                         callback, data))
3412                 return 1;
3413               continue;
3414             }
3415
3416           /* Before we invoke realpath, which can get expensive when many
3417              files are involved, do a quick comparison of the basenames.  */
3418           if (! basenames_may_differ
3419               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3420             continue;
3421
3422           this_real_name = dw2_get_real_path (objfile, file_data, j);
3423           if (compare_filenames_for_search (this_real_name, name))
3424             {
3425               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3426                                         callback, data))
3427                 return 1;
3428               continue;
3429             }
3430
3431           if (real_path != NULL)
3432             {
3433               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3434               gdb_assert (IS_ABSOLUTE_PATH (name));
3435               if (this_real_name != NULL
3436                   && FILENAME_CMP (real_path, this_real_name) == 0)
3437                 {
3438                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3439                                             callback, data))
3440                     return 1;
3441                   continue;
3442                 }
3443             }
3444         }
3445     }
3446
3447   return 0;
3448 }
3449
3450 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3451
3452 struct dw2_symtab_iterator
3453 {
3454   /* The internalized form of .gdb_index.  */
3455   struct mapped_index *index;
3456   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3457   int want_specific_block;
3458   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3459      Unused if !WANT_SPECIFIC_BLOCK.  */
3460   int block_index;
3461   /* The kind of symbol we're looking for.  */
3462   domain_enum domain;
3463   /* The list of CUs from the index entry of the symbol,
3464      or NULL if not found.  */
3465   offset_type *vec;
3466   /* The next element in VEC to look at.  */
3467   int next;
3468   /* The number of elements in VEC, or zero if there is no match.  */
3469   int length;
3470   /* Have we seen a global version of the symbol?
3471      If so we can ignore all further global instances.
3472      This is to work around gold/15646, inefficient gold-generated
3473      indices.  */
3474   int global_seen;
3475 };
3476
3477 /* Initialize the index symtab iterator ITER.
3478    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3479    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3480
3481 static void
3482 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3483                       struct mapped_index *index,
3484                       int want_specific_block,
3485                       int block_index,
3486                       domain_enum domain,
3487                       const char *name)
3488 {
3489   iter->index = index;
3490   iter->want_specific_block = want_specific_block;
3491   iter->block_index = block_index;
3492   iter->domain = domain;
3493   iter->next = 0;
3494   iter->global_seen = 0;
3495
3496   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3497     iter->length = MAYBE_SWAP (*iter->vec);
3498   else
3499     {
3500       iter->vec = NULL;
3501       iter->length = 0;
3502     }
3503 }
3504
3505 /* Return the next matching CU or NULL if there are no more.  */
3506
3507 static struct dwarf2_per_cu_data *
3508 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3509 {
3510   for ( ; iter->next < iter->length; ++iter->next)
3511     {
3512       offset_type cu_index_and_attrs =
3513         MAYBE_SWAP (iter->vec[iter->next + 1]);
3514       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3515       struct dwarf2_per_cu_data *per_cu;
3516       int want_static = iter->block_index != GLOBAL_BLOCK;
3517       /* This value is only valid for index versions >= 7.  */
3518       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3519       gdb_index_symbol_kind symbol_kind =
3520         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3521       /* Only check the symbol attributes if they're present.
3522          Indices prior to version 7 don't record them,
3523          and indices >= 7 may elide them for certain symbols
3524          (gold does this).  */
3525       int attrs_valid =
3526         (iter->index->version >= 7
3527          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3528
3529       /* Don't crash on bad data.  */
3530       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3531                        + dwarf2_per_objfile->n_type_units))
3532         {
3533           complaint (&symfile_complaints,
3534                      _(".gdb_index entry has bad CU index"
3535                        " [in module %s]"),
3536                      objfile_name (dwarf2_per_objfile->objfile));
3537           continue;
3538         }
3539
3540       per_cu = dw2_get_cutu (cu_index);
3541
3542       /* Skip if already read in.  */
3543       if (per_cu->v.quick->symtab)
3544         continue;
3545
3546       /* Check static vs global.  */
3547       if (attrs_valid)
3548         {
3549           if (iter->want_specific_block
3550               && want_static != is_static)
3551             continue;
3552           /* Work around gold/15646.  */
3553           if (!is_static && iter->global_seen)
3554             continue;
3555           if (!is_static)
3556             iter->global_seen = 1;
3557         }
3558
3559       /* Only check the symbol's kind if it has one.  */
3560       if (attrs_valid)
3561         {
3562           switch (iter->domain)
3563             {
3564             case VAR_DOMAIN:
3565               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3566                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3567                   /* Some types are also in VAR_DOMAIN.  */
3568                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3569                 continue;
3570               break;
3571             case STRUCT_DOMAIN:
3572               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3573                 continue;
3574               break;
3575             case LABEL_DOMAIN:
3576               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3577                 continue;
3578               break;
3579             default:
3580               break;
3581             }
3582         }
3583
3584       ++iter->next;
3585       return per_cu;
3586     }
3587
3588   return NULL;
3589 }
3590
3591 static struct symtab *
3592 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3593                    const char *name, domain_enum domain)
3594 {
3595   struct symtab *stab_best = NULL;
3596   struct mapped_index *index;
3597
3598   dw2_setup (objfile);
3599
3600   index = dwarf2_per_objfile->index_table;
3601
3602   /* index is NULL if OBJF_READNOW.  */
3603   if (index)
3604     {
3605       struct dw2_symtab_iterator iter;
3606       struct dwarf2_per_cu_data *per_cu;
3607
3608       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3609
3610       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3611         {
3612           struct symbol *sym = NULL;
3613           struct symtab *stab = dw2_instantiate_symtab (per_cu);
3614
3615           /* Some caution must be observed with overloaded functions
3616              and methods, since the index will not contain any overload
3617              information (but NAME might contain it).  */
3618           if (stab->primary)
3619             {
3620               const struct blockvector *bv = BLOCKVECTOR (stab);
3621               struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3622
3623               sym = block_lookup_symbol (block, name, domain);
3624             }
3625
3626           if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3627             {
3628               if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3629                 return stab;
3630
3631               stab_best = stab;
3632             }
3633
3634           /* Keep looking through other CUs.  */
3635         }
3636     }
3637
3638   return stab_best;
3639 }
3640
3641 static void
3642 dw2_print_stats (struct objfile *objfile)
3643 {
3644   int i, total, count;
3645
3646   dw2_setup (objfile);
3647   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3648   count = 0;
3649   for (i = 0; i < total; ++i)
3650     {
3651       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3652
3653       if (!per_cu->v.quick->symtab)
3654         ++count;
3655     }
3656   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3657   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3658 }
3659
3660 /* This dumps minimal information about the index.
3661    It is called via "mt print objfiles".
3662    One use is to verify .gdb_index has been loaded by the
3663    gdb.dwarf2/gdb-index.exp testcase.  */
3664
3665 static void
3666 dw2_dump (struct objfile *objfile)
3667 {
3668   dw2_setup (objfile);
3669   gdb_assert (dwarf2_per_objfile->using_index);
3670   printf_filtered (".gdb_index:");
3671   if (dwarf2_per_objfile->index_table != NULL)
3672     {
3673       printf_filtered (" version %d\n",
3674                        dwarf2_per_objfile->index_table->version);
3675     }
3676   else
3677     printf_filtered (" faked for \"readnow\"\n");
3678   printf_filtered ("\n");
3679 }
3680
3681 static void
3682 dw2_relocate (struct objfile *objfile,
3683               const struct section_offsets *new_offsets,
3684               const struct section_offsets *delta)
3685 {
3686   /* There's nothing to relocate here.  */
3687 }
3688
3689 static void
3690 dw2_expand_symtabs_for_function (struct objfile *objfile,
3691                                  const char *func_name)
3692 {
3693   struct mapped_index *index;
3694
3695   dw2_setup (objfile);
3696
3697   index = dwarf2_per_objfile->index_table;
3698
3699   /* index is NULL if OBJF_READNOW.  */
3700   if (index)
3701     {
3702       struct dw2_symtab_iterator iter;
3703       struct dwarf2_per_cu_data *per_cu;
3704
3705       /* Note: It doesn't matter what we pass for block_index here.  */
3706       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3707                             func_name);
3708
3709       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3710         dw2_instantiate_symtab (per_cu);
3711     }
3712 }
3713
3714 static void
3715 dw2_expand_all_symtabs (struct objfile *objfile)
3716 {
3717   int i;
3718
3719   dw2_setup (objfile);
3720
3721   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3722                    + dwarf2_per_objfile->n_type_units); ++i)
3723     {
3724       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3725
3726       dw2_instantiate_symtab (per_cu);
3727     }
3728 }
3729
3730 static void
3731 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3732                                   const char *fullname)
3733 {
3734   int i;
3735
3736   dw2_setup (objfile);
3737
3738   /* We don't need to consider type units here.
3739      This is only called for examining code, e.g. expand_line_sal.
3740      There can be an order of magnitude (or more) more type units
3741      than comp units, and we avoid them if we can.  */
3742
3743   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3744     {
3745       int j;
3746       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3747       struct quick_file_names *file_data;
3748
3749       /* We only need to look at symtabs not already expanded.  */
3750       if (per_cu->v.quick->symtab)
3751         continue;
3752
3753       file_data = dw2_get_file_names (per_cu);
3754       if (file_data == NULL)
3755         continue;
3756
3757       for (j = 0; j < file_data->num_file_names; ++j)
3758         {
3759           const char *this_fullname = file_data->file_names[j];
3760
3761           if (filename_cmp (this_fullname, fullname) == 0)
3762             {
3763               dw2_instantiate_symtab (per_cu);
3764               break;
3765             }
3766         }
3767     }
3768 }
3769
3770 static void
3771 dw2_map_matching_symbols (struct objfile *objfile,
3772                           const char * name, domain_enum namespace,
3773                           int global,
3774                           int (*callback) (struct block *,
3775                                            struct symbol *, void *),
3776                           void *data, symbol_compare_ftype *match,
3777                           symbol_compare_ftype *ordered_compare)
3778 {
3779   /* Currently unimplemented; used for Ada.  The function can be called if the
3780      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3781      does not look for non-Ada symbols this function should just return.  */
3782 }
3783
3784 static void
3785 dw2_expand_symtabs_matching
3786   (struct objfile *objfile,
3787    expand_symtabs_file_matcher_ftype *file_matcher,
3788    expand_symtabs_symbol_matcher_ftype *symbol_matcher,
3789    enum search_domain kind,
3790    void *data)
3791 {
3792   int i;
3793   offset_type iter;
3794   struct mapped_index *index;
3795
3796   dw2_setup (objfile);
3797
3798   /* index_table is NULL if OBJF_READNOW.  */
3799   if (!dwarf2_per_objfile->index_table)
3800     return;
3801   index = dwarf2_per_objfile->index_table;
3802
3803   if (file_matcher != NULL)
3804     {
3805       struct cleanup *cleanup;
3806       htab_t visited_found, visited_not_found;
3807
3808       visited_found = htab_create_alloc (10,
3809                                          htab_hash_pointer, htab_eq_pointer,
3810                                          NULL, xcalloc, xfree);
3811       cleanup = make_cleanup_htab_delete (visited_found);
3812       visited_not_found = htab_create_alloc (10,
3813                                              htab_hash_pointer, htab_eq_pointer,
3814                                              NULL, xcalloc, xfree);
3815       make_cleanup_htab_delete (visited_not_found);
3816
3817       /* The rule is CUs specify all the files, including those used by
3818          any TU, so there's no need to scan TUs here.  */
3819
3820       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3821         {
3822           int j;
3823           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3824           struct quick_file_names *file_data;
3825           void **slot;
3826
3827           per_cu->v.quick->mark = 0;
3828
3829           /* We only need to look at symtabs not already expanded.  */
3830           if (per_cu->v.quick->symtab)
3831             continue;
3832
3833           file_data = dw2_get_file_names (per_cu);
3834           if (file_data == NULL)
3835             continue;
3836
3837           if (htab_find (visited_not_found, file_data) != NULL)
3838             continue;
3839           else if (htab_find (visited_found, file_data) != NULL)
3840             {
3841               per_cu->v.quick->mark = 1;
3842               continue;
3843             }
3844
3845           for (j = 0; j < file_data->num_file_names; ++j)
3846             {
3847               const char *this_real_name;
3848
3849               if (file_matcher (file_data->file_names[j], data, 0))
3850                 {
3851                   per_cu->v.quick->mark = 1;
3852                   break;
3853                 }
3854
3855               /* Before we invoke realpath, which can get expensive when many
3856                  files are involved, do a quick comparison of the basenames.  */
3857               if (!basenames_may_differ
3858                   && !file_matcher (lbasename (file_data->file_names[j]),
3859                                     data, 1))
3860                 continue;
3861
3862               this_real_name = dw2_get_real_path (objfile, file_data, j);
3863               if (file_matcher (this_real_name, data, 0))
3864                 {
3865                   per_cu->v.quick->mark = 1;
3866                   break;
3867                 }
3868             }
3869
3870           slot = htab_find_slot (per_cu->v.quick->mark
3871                                  ? visited_found
3872                                  : visited_not_found,
3873                                  file_data, INSERT);
3874           *slot = file_data;
3875         }
3876
3877       do_cleanups (cleanup);
3878     }
3879
3880   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3881     {
3882       offset_type idx = 2 * iter;
3883       const char *name;
3884       offset_type *vec, vec_len, vec_idx;
3885       int global_seen = 0;
3886
3887       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3888         continue;
3889
3890       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3891
3892       if (! (*symbol_matcher) (name, data))
3893         continue;
3894
3895       /* The name was matched, now expand corresponding CUs that were
3896          marked.  */
3897       vec = (offset_type *) (index->constant_pool
3898                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3899       vec_len = MAYBE_SWAP (vec[0]);
3900       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3901         {
3902           struct dwarf2_per_cu_data *per_cu;
3903           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
3904           /* This value is only valid for index versions >= 7.  */
3905           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3906           gdb_index_symbol_kind symbol_kind =
3907             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3908           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3909           /* Only check the symbol attributes if they're present.
3910              Indices prior to version 7 don't record them,
3911              and indices >= 7 may elide them for certain symbols
3912              (gold does this).  */
3913           int attrs_valid =
3914             (index->version >= 7
3915              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3916
3917           /* Work around gold/15646.  */
3918           if (attrs_valid)
3919             {
3920               if (!is_static && global_seen)
3921                 continue;
3922               if (!is_static)
3923                 global_seen = 1;
3924             }
3925
3926           /* Only check the symbol's kind if it has one.  */
3927           if (attrs_valid)
3928             {
3929               switch (kind)
3930                 {
3931                 case VARIABLES_DOMAIN:
3932                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3933                     continue;
3934                   break;
3935                 case FUNCTIONS_DOMAIN:
3936                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3937                     continue;
3938                   break;
3939                 case TYPES_DOMAIN:
3940                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3941                     continue;
3942                   break;
3943                 default:
3944                   break;
3945                 }
3946             }
3947
3948           /* Don't crash on bad data.  */
3949           if (cu_index >= (dwarf2_per_objfile->n_comp_units
3950                            + dwarf2_per_objfile->n_type_units))
3951             {
3952               complaint (&symfile_complaints,
3953                          _(".gdb_index entry has bad CU index"
3954                            " [in module %s]"), objfile_name (objfile));
3955               continue;
3956             }
3957
3958           per_cu = dw2_get_cutu (cu_index);
3959           if (file_matcher == NULL || per_cu->v.quick->mark)
3960             dw2_instantiate_symtab (per_cu);
3961         }
3962     }
3963 }
3964
3965 /* A helper for dw2_find_pc_sect_symtab which finds the most specific
3966    symtab.  */
3967
3968 static struct symtab *
3969 recursively_find_pc_sect_symtab (struct symtab *symtab, CORE_ADDR pc)
3970 {
3971   int i;
3972
3973   if (BLOCKVECTOR (symtab) != NULL
3974       && blockvector_contains_pc (BLOCKVECTOR (symtab), pc))
3975     return symtab;
3976
3977   if (symtab->includes == NULL)
3978     return NULL;
3979
3980   for (i = 0; symtab->includes[i]; ++i)
3981     {
3982       struct symtab *s = symtab->includes[i];
3983
3984       s = recursively_find_pc_sect_symtab (s, pc);
3985       if (s != NULL)
3986         return s;
3987     }
3988
3989   return NULL;
3990 }
3991
3992 static struct symtab *
3993 dw2_find_pc_sect_symtab (struct objfile *objfile,
3994                          struct bound_minimal_symbol msymbol,
3995                          CORE_ADDR pc,
3996                          struct obj_section *section,
3997                          int warn_if_readin)
3998 {
3999   struct dwarf2_per_cu_data *data;
4000   struct symtab *result;
4001
4002   dw2_setup (objfile);
4003
4004   if (!objfile->psymtabs_addrmap)
4005     return NULL;
4006
4007   data = addrmap_find (objfile->psymtabs_addrmap, pc);
4008   if (!data)
4009     return NULL;
4010
4011   if (warn_if_readin && data->v.quick->symtab)
4012     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4013              paddress (get_objfile_arch (objfile), pc));
4014
4015   result = recursively_find_pc_sect_symtab (dw2_instantiate_symtab (data), pc);
4016   gdb_assert (result != NULL);
4017   return result;
4018 }
4019
4020 static void
4021 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4022                           void *data, int need_fullname)
4023 {
4024   int i;
4025   struct cleanup *cleanup;
4026   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4027                                       NULL, xcalloc, xfree);
4028
4029   cleanup = make_cleanup_htab_delete (visited);
4030   dw2_setup (objfile);
4031
4032   /* The rule is CUs specify all the files, including those used by
4033      any TU, so there's no need to scan TUs here.
4034      We can ignore file names coming from already-expanded CUs.  */
4035
4036   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4037     {
4038       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4039
4040       if (per_cu->v.quick->symtab)
4041         {
4042           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4043                                         INSERT);
4044
4045           *slot = per_cu->v.quick->file_names;
4046         }
4047     }
4048
4049   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4050     {
4051       int j;
4052       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4053       struct quick_file_names *file_data;
4054       void **slot;
4055
4056       /* We only need to look at symtabs not already expanded.  */
4057       if (per_cu->v.quick->symtab)
4058         continue;
4059
4060       file_data = dw2_get_file_names (per_cu);
4061       if (file_data == NULL)
4062         continue;
4063
4064       slot = htab_find_slot (visited, file_data, INSERT);
4065       if (*slot)
4066         {
4067           /* Already visited.  */
4068           continue;
4069         }
4070       *slot = file_data;
4071
4072       for (j = 0; j < file_data->num_file_names; ++j)
4073         {
4074           const char *this_real_name;
4075
4076           if (need_fullname)
4077             this_real_name = dw2_get_real_path (objfile, file_data, j);
4078           else
4079             this_real_name = NULL;
4080           (*fun) (file_data->file_names[j], this_real_name, data);
4081         }
4082     }
4083
4084   do_cleanups (cleanup);
4085 }
4086
4087 static int
4088 dw2_has_symbols (struct objfile *objfile)
4089 {
4090   return 1;
4091 }
4092
4093 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4094 {
4095   dw2_has_symbols,
4096   dw2_find_last_source_symtab,
4097   dw2_forget_cached_source_info,
4098   dw2_map_symtabs_matching_filename,
4099   dw2_lookup_symbol,
4100   dw2_print_stats,
4101   dw2_dump,
4102   dw2_relocate,
4103   dw2_expand_symtabs_for_function,
4104   dw2_expand_all_symtabs,
4105   dw2_expand_symtabs_with_fullname,
4106   dw2_map_matching_symbols,
4107   dw2_expand_symtabs_matching,
4108   dw2_find_pc_sect_symtab,
4109   dw2_map_symbol_filenames
4110 };
4111
4112 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4113    file will use psymtabs, or 1 if using the GNU index.  */
4114
4115 int
4116 dwarf2_initialize_objfile (struct objfile *objfile)
4117 {
4118   /* If we're about to read full symbols, don't bother with the
4119      indices.  In this case we also don't care if some other debug
4120      format is making psymtabs, because they are all about to be
4121      expanded anyway.  */
4122   if ((objfile->flags & OBJF_READNOW))
4123     {
4124       int i;
4125
4126       dwarf2_per_objfile->using_index = 1;
4127       create_all_comp_units (objfile);
4128       create_all_type_units (objfile);
4129       dwarf2_per_objfile->quick_file_names_table =
4130         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4131
4132       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4133                        + dwarf2_per_objfile->n_type_units); ++i)
4134         {
4135           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4136
4137           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4138                                             struct dwarf2_per_cu_quick_data);
4139         }
4140
4141       /* Return 1 so that gdb sees the "quick" functions.  However,
4142          these functions will be no-ops because we will have expanded
4143          all symtabs.  */
4144       return 1;
4145     }
4146
4147   if (dwarf2_read_index (objfile))
4148     return 1;
4149
4150   return 0;
4151 }
4152
4153 \f
4154
4155 /* Build a partial symbol table.  */
4156
4157 void
4158 dwarf2_build_psymtabs (struct objfile *objfile)
4159 {
4160   volatile struct gdb_exception except;
4161
4162   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4163     {
4164       init_psymbol_list (objfile, 1024);
4165     }
4166
4167   TRY_CATCH (except, RETURN_MASK_ERROR)
4168     {
4169       /* This isn't really ideal: all the data we allocate on the
4170          objfile's obstack is still uselessly kept around.  However,
4171          freeing it seems unsafe.  */
4172       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4173
4174       dwarf2_build_psymtabs_hard (objfile);
4175       discard_cleanups (cleanups);
4176     }
4177   if (except.reason < 0)
4178     exception_print (gdb_stderr, except);
4179 }
4180
4181 /* Return the total length of the CU described by HEADER.  */
4182
4183 static unsigned int
4184 get_cu_length (const struct comp_unit_head *header)
4185 {
4186   return header->initial_length_size + header->length;
4187 }
4188
4189 /* Return TRUE if OFFSET is within CU_HEADER.  */
4190
4191 static inline int
4192 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4193 {
4194   sect_offset bottom = { cu_header->offset.sect_off };
4195   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4196
4197   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4198 }
4199
4200 /* Find the base address of the compilation unit for range lists and
4201    location lists.  It will normally be specified by DW_AT_low_pc.
4202    In DWARF-3 draft 4, the base address could be overridden by
4203    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4204    compilation units with discontinuous ranges.  */
4205
4206 static void
4207 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4208 {
4209   struct attribute *attr;
4210
4211   cu->base_known = 0;
4212   cu->base_address = 0;
4213
4214   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4215   if (attr)
4216     {
4217       cu->base_address = attr_value_as_address (attr);
4218       cu->base_known = 1;
4219     }
4220   else
4221     {
4222       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4223       if (attr)
4224         {
4225           cu->base_address = attr_value_as_address (attr);
4226           cu->base_known = 1;
4227         }
4228     }
4229 }
4230
4231 /* Read in the comp unit header information from the debug_info at info_ptr.
4232    NOTE: This leaves members offset, first_die_offset to be filled in
4233    by the caller.  */
4234
4235 static const gdb_byte *
4236 read_comp_unit_head (struct comp_unit_head *cu_header,
4237                      const gdb_byte *info_ptr, bfd *abfd)
4238 {
4239   int signed_addr;
4240   unsigned int bytes_read;
4241
4242   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4243   cu_header->initial_length_size = bytes_read;
4244   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4245   info_ptr += bytes_read;
4246   cu_header->version = read_2_bytes (abfd, info_ptr);
4247   info_ptr += 2;
4248   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4249                                              &bytes_read);
4250   info_ptr += bytes_read;
4251   cu_header->addr_size = read_1_byte (abfd, info_ptr);
4252   info_ptr += 1;
4253   signed_addr = bfd_get_sign_extend_vma (abfd);
4254   if (signed_addr < 0)
4255     internal_error (__FILE__, __LINE__,
4256                     _("read_comp_unit_head: dwarf from non elf file"));
4257   cu_header->signed_addr_p = signed_addr;
4258
4259   return info_ptr;
4260 }
4261
4262 /* Helper function that returns the proper abbrev section for
4263    THIS_CU.  */
4264
4265 static struct dwarf2_section_info *
4266 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4267 {
4268   struct dwarf2_section_info *abbrev;
4269
4270   if (this_cu->is_dwz)
4271     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4272   else
4273     abbrev = &dwarf2_per_objfile->abbrev;
4274
4275   return abbrev;
4276 }
4277
4278 /* Subroutine of read_and_check_comp_unit_head and
4279    read_and_check_type_unit_head to simplify them.
4280    Perform various error checking on the header.  */
4281
4282 static void
4283 error_check_comp_unit_head (struct comp_unit_head *header,
4284                             struct dwarf2_section_info *section,
4285                             struct dwarf2_section_info *abbrev_section)
4286 {
4287   bfd *abfd = get_section_bfd_owner (section);
4288   const char *filename = get_section_file_name (section);
4289
4290   if (header->version != 2 && header->version != 3 && header->version != 4)
4291     error (_("Dwarf Error: wrong version in compilation unit header "
4292            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4293            filename);
4294
4295   if (header->abbrev_offset.sect_off
4296       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4297     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4298            "(offset 0x%lx + 6) [in module %s]"),
4299            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4300            filename);
4301
4302   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4303      avoid potential 32-bit overflow.  */
4304   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4305       > section->size)
4306     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4307            "(offset 0x%lx + 0) [in module %s]"),
4308            (long) header->length, (long) header->offset.sect_off,
4309            filename);
4310 }
4311
4312 /* Read in a CU/TU header and perform some basic error checking.
4313    The contents of the header are stored in HEADER.
4314    The result is a pointer to the start of the first DIE.  */
4315
4316 static const gdb_byte *
4317 read_and_check_comp_unit_head (struct comp_unit_head *header,
4318                                struct dwarf2_section_info *section,
4319                                struct dwarf2_section_info *abbrev_section,
4320                                const gdb_byte *info_ptr,
4321                                int is_debug_types_section)
4322 {
4323   const gdb_byte *beg_of_comp_unit = info_ptr;
4324   bfd *abfd = get_section_bfd_owner (section);
4325
4326   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4327
4328   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4329
4330   /* If we're reading a type unit, skip over the signature and
4331      type_offset fields.  */
4332   if (is_debug_types_section)
4333     info_ptr += 8 /*signature*/ + header->offset_size;
4334
4335   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4336
4337   error_check_comp_unit_head (header, section, abbrev_section);
4338
4339   return info_ptr;
4340 }
4341
4342 /* Read in the types comp unit header information from .debug_types entry at
4343    types_ptr.  The result is a pointer to one past the end of the header.  */
4344
4345 static const gdb_byte *
4346 read_and_check_type_unit_head (struct comp_unit_head *header,
4347                                struct dwarf2_section_info *section,
4348                                struct dwarf2_section_info *abbrev_section,
4349                                const gdb_byte *info_ptr,
4350                                ULONGEST *signature,
4351                                cu_offset *type_offset_in_tu)
4352 {
4353   const gdb_byte *beg_of_comp_unit = info_ptr;
4354   bfd *abfd = get_section_bfd_owner (section);
4355
4356   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4357
4358   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4359
4360   /* If we're reading a type unit, skip over the signature and
4361      type_offset fields.  */
4362   if (signature != NULL)
4363     *signature = read_8_bytes (abfd, info_ptr);
4364   info_ptr += 8;
4365   if (type_offset_in_tu != NULL)
4366     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4367                                                header->offset_size);
4368   info_ptr += header->offset_size;
4369
4370   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4371
4372   error_check_comp_unit_head (header, section, abbrev_section);
4373
4374   return info_ptr;
4375 }
4376
4377 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4378
4379 static sect_offset
4380 read_abbrev_offset (struct dwarf2_section_info *section,
4381                     sect_offset offset)
4382 {
4383   bfd *abfd = get_section_bfd_owner (section);
4384   const gdb_byte *info_ptr;
4385   unsigned int length, initial_length_size, offset_size;
4386   sect_offset abbrev_offset;
4387
4388   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4389   info_ptr = section->buffer + offset.sect_off;
4390   length = read_initial_length (abfd, info_ptr, &initial_length_size);
4391   offset_size = initial_length_size == 4 ? 4 : 8;
4392   info_ptr += initial_length_size + 2 /*version*/;
4393   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4394   return abbrev_offset;
4395 }
4396
4397 /* Allocate a new partial symtab for file named NAME and mark this new
4398    partial symtab as being an include of PST.  */
4399
4400 static void
4401 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4402                                struct objfile *objfile)
4403 {
4404   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4405
4406   if (!IS_ABSOLUTE_PATH (subpst->filename))
4407     {
4408       /* It shares objfile->objfile_obstack.  */
4409       subpst->dirname = pst->dirname;
4410     }
4411
4412   subpst->section_offsets = pst->section_offsets;
4413   subpst->textlow = 0;
4414   subpst->texthigh = 0;
4415
4416   subpst->dependencies = (struct partial_symtab **)
4417     obstack_alloc (&objfile->objfile_obstack,
4418                    sizeof (struct partial_symtab *));
4419   subpst->dependencies[0] = pst;
4420   subpst->number_of_dependencies = 1;
4421
4422   subpst->globals_offset = 0;
4423   subpst->n_global_syms = 0;
4424   subpst->statics_offset = 0;
4425   subpst->n_static_syms = 0;
4426   subpst->symtab = NULL;
4427   subpst->read_symtab = pst->read_symtab;
4428   subpst->readin = 0;
4429
4430   /* No private part is necessary for include psymtabs.  This property
4431      can be used to differentiate between such include psymtabs and
4432      the regular ones.  */
4433   subpst->read_symtab_private = NULL;
4434 }
4435
4436 /* Read the Line Number Program data and extract the list of files
4437    included by the source file represented by PST.  Build an include
4438    partial symtab for each of these included files.  */
4439
4440 static void
4441 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4442                                struct die_info *die,
4443                                struct partial_symtab *pst)
4444 {
4445   struct line_header *lh = NULL;
4446   struct attribute *attr;
4447
4448   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4449   if (attr)
4450     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4451   if (lh == NULL)
4452     return;  /* No linetable, so no includes.  */
4453
4454   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4455   dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow);
4456
4457   free_line_header (lh);
4458 }
4459
4460 static hashval_t
4461 hash_signatured_type (const void *item)
4462 {
4463   const struct signatured_type *sig_type = item;
4464
4465   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4466   return sig_type->signature;
4467 }
4468
4469 static int
4470 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4471 {
4472   const struct signatured_type *lhs = item_lhs;
4473   const struct signatured_type *rhs = item_rhs;
4474
4475   return lhs->signature == rhs->signature;
4476 }
4477
4478 /* Allocate a hash table for signatured types.  */
4479
4480 static htab_t
4481 allocate_signatured_type_table (struct objfile *objfile)
4482 {
4483   return htab_create_alloc_ex (41,
4484                                hash_signatured_type,
4485                                eq_signatured_type,
4486                                NULL,
4487                                &objfile->objfile_obstack,
4488                                hashtab_obstack_allocate,
4489                                dummy_obstack_deallocate);
4490 }
4491
4492 /* A helper function to add a signatured type CU to a table.  */
4493
4494 static int
4495 add_signatured_type_cu_to_table (void **slot, void *datum)
4496 {
4497   struct signatured_type *sigt = *slot;
4498   struct signatured_type ***datap = datum;
4499
4500   **datap = sigt;
4501   ++*datap;
4502
4503   return 1;
4504 }
4505
4506 /* Create the hash table of all entries in the .debug_types
4507    (or .debug_types.dwo) section(s).
4508    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4509    otherwise it is NULL.
4510
4511    The result is a pointer to the hash table or NULL if there are no types.
4512
4513    Note: This function processes DWO files only, not DWP files.  */
4514
4515 static htab_t
4516 create_debug_types_hash_table (struct dwo_file *dwo_file,
4517                                VEC (dwarf2_section_info_def) *types)
4518 {
4519   struct objfile *objfile = dwarf2_per_objfile->objfile;
4520   htab_t types_htab = NULL;
4521   int ix;
4522   struct dwarf2_section_info *section;
4523   struct dwarf2_section_info *abbrev_section;
4524
4525   if (VEC_empty (dwarf2_section_info_def, types))
4526     return NULL;
4527
4528   abbrev_section = (dwo_file != NULL
4529                     ? &dwo_file->sections.abbrev
4530                     : &dwarf2_per_objfile->abbrev);
4531
4532   if (dwarf2_read_debug)
4533     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4534                         dwo_file ? ".dwo" : "",
4535                         get_section_file_name (abbrev_section));
4536
4537   for (ix = 0;
4538        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4539        ++ix)
4540     {
4541       bfd *abfd;
4542       const gdb_byte *info_ptr, *end_ptr;
4543
4544       dwarf2_read_section (objfile, section);
4545       info_ptr = section->buffer;
4546
4547       if (info_ptr == NULL)
4548         continue;
4549
4550       /* We can't set abfd until now because the section may be empty or
4551          not present, in which case the bfd is unknown.  */
4552       abfd = get_section_bfd_owner (section);
4553
4554       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4555          because we don't need to read any dies: the signature is in the
4556          header.  */
4557
4558       end_ptr = info_ptr + section->size;
4559       while (info_ptr < end_ptr)
4560         {
4561           sect_offset offset;
4562           cu_offset type_offset_in_tu;
4563           ULONGEST signature;
4564           struct signatured_type *sig_type;
4565           struct dwo_unit *dwo_tu;
4566           void **slot;
4567           const gdb_byte *ptr = info_ptr;
4568           struct comp_unit_head header;
4569           unsigned int length;
4570
4571           offset.sect_off = ptr - section->buffer;
4572
4573           /* We need to read the type's signature in order to build the hash
4574              table, but we don't need anything else just yet.  */
4575
4576           ptr = read_and_check_type_unit_head (&header, section,
4577                                                abbrev_section, ptr,
4578                                                &signature, &type_offset_in_tu);
4579
4580           length = get_cu_length (&header);
4581
4582           /* Skip dummy type units.  */
4583           if (ptr >= info_ptr + length
4584               || peek_abbrev_code (abfd, ptr) == 0)
4585             {
4586               info_ptr += length;
4587               continue;
4588             }
4589
4590           if (types_htab == NULL)
4591             {
4592               if (dwo_file)
4593                 types_htab = allocate_dwo_unit_table (objfile);
4594               else
4595                 types_htab = allocate_signatured_type_table (objfile);
4596             }
4597
4598           if (dwo_file)
4599             {
4600               sig_type = NULL;
4601               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4602                                        struct dwo_unit);
4603               dwo_tu->dwo_file = dwo_file;
4604               dwo_tu->signature = signature;
4605               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4606               dwo_tu->section = section;
4607               dwo_tu->offset = offset;
4608               dwo_tu->length = length;
4609             }
4610           else
4611             {
4612               /* N.B.: type_offset is not usable if this type uses a DWO file.
4613                  The real type_offset is in the DWO file.  */
4614               dwo_tu = NULL;
4615               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4616                                          struct signatured_type);
4617               sig_type->signature = signature;
4618               sig_type->type_offset_in_tu = type_offset_in_tu;
4619               sig_type->per_cu.objfile = objfile;
4620               sig_type->per_cu.is_debug_types = 1;
4621               sig_type->per_cu.section = section;
4622               sig_type->per_cu.offset = offset;
4623               sig_type->per_cu.length = length;
4624             }
4625
4626           slot = htab_find_slot (types_htab,
4627                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4628                                  INSERT);
4629           gdb_assert (slot != NULL);
4630           if (*slot != NULL)
4631             {
4632               sect_offset dup_offset;
4633
4634               if (dwo_file)
4635                 {
4636                   const struct dwo_unit *dup_tu = *slot;
4637
4638                   dup_offset = dup_tu->offset;
4639                 }
4640               else
4641                 {
4642                   const struct signatured_type *dup_tu = *slot;
4643
4644                   dup_offset = dup_tu->per_cu.offset;
4645                 }
4646
4647               complaint (&symfile_complaints,
4648                          _("debug type entry at offset 0x%x is duplicate to"
4649                            " the entry at offset 0x%x, signature %s"),
4650                          offset.sect_off, dup_offset.sect_off,
4651                          hex_string (signature));
4652             }
4653           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4654
4655           if (dwarf2_read_debug > 1)
4656             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4657                                 offset.sect_off,
4658                                 hex_string (signature));
4659
4660           info_ptr += length;
4661         }
4662     }
4663
4664   return types_htab;
4665 }
4666
4667 /* Create the hash table of all entries in the .debug_types section,
4668    and initialize all_type_units.
4669    The result is zero if there is an error (e.g. missing .debug_types section),
4670    otherwise non-zero.  */
4671
4672 static int
4673 create_all_type_units (struct objfile *objfile)
4674 {
4675   htab_t types_htab;
4676   struct signatured_type **iter;
4677
4678   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4679   if (types_htab == NULL)
4680     {
4681       dwarf2_per_objfile->signatured_types = NULL;
4682       return 0;
4683     }
4684
4685   dwarf2_per_objfile->signatured_types = types_htab;
4686
4687   dwarf2_per_objfile->n_type_units
4688     = dwarf2_per_objfile->n_allocated_type_units
4689     = htab_elements (types_htab);
4690   dwarf2_per_objfile->all_type_units
4691     = xmalloc (dwarf2_per_objfile->n_type_units
4692                * sizeof (struct signatured_type *));
4693   iter = &dwarf2_per_objfile->all_type_units[0];
4694   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4695   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4696               == dwarf2_per_objfile->n_type_units);
4697
4698   return 1;
4699 }
4700
4701 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4702    If SLOT is non-NULL, it is the entry to use in the hash table.
4703    Otherwise we find one.  */
4704
4705 static struct signatured_type *
4706 add_type_unit (ULONGEST sig, void **slot)
4707 {
4708   struct objfile *objfile = dwarf2_per_objfile->objfile;
4709   int n_type_units = dwarf2_per_objfile->n_type_units;
4710   struct signatured_type *sig_type;
4711
4712   gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4713   ++n_type_units;
4714   if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4715     {
4716       if (dwarf2_per_objfile->n_allocated_type_units == 0)
4717         dwarf2_per_objfile->n_allocated_type_units = 1;
4718       dwarf2_per_objfile->n_allocated_type_units *= 2;
4719       dwarf2_per_objfile->all_type_units
4720         = xrealloc (dwarf2_per_objfile->all_type_units,
4721                     dwarf2_per_objfile->n_allocated_type_units
4722                     * sizeof (struct signatured_type *));
4723       ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4724     }
4725   dwarf2_per_objfile->n_type_units = n_type_units;
4726
4727   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4728                              struct signatured_type);
4729   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4730   sig_type->signature = sig;
4731   sig_type->per_cu.is_debug_types = 1;
4732   if (dwarf2_per_objfile->using_index)
4733     {
4734       sig_type->per_cu.v.quick =
4735         OBSTACK_ZALLOC (&objfile->objfile_obstack,
4736                         struct dwarf2_per_cu_quick_data);
4737     }
4738
4739   if (slot == NULL)
4740     {
4741       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4742                              sig_type, INSERT);
4743     }
4744   gdb_assert (*slot == NULL);
4745   *slot = sig_type;
4746   /* The rest of sig_type must be filled in by the caller.  */
4747   return sig_type;
4748 }
4749
4750 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4751    Fill in SIG_ENTRY with DWO_ENTRY.  */
4752
4753 static void
4754 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4755                                   struct signatured_type *sig_entry,
4756                                   struct dwo_unit *dwo_entry)
4757 {
4758   /* Make sure we're not clobbering something we don't expect to.  */
4759   gdb_assert (! sig_entry->per_cu.queued);
4760   gdb_assert (sig_entry->per_cu.cu == NULL);
4761   if (dwarf2_per_objfile->using_index)
4762     {
4763       gdb_assert (sig_entry->per_cu.v.quick != NULL);
4764       gdb_assert (sig_entry->per_cu.v.quick->symtab == NULL);
4765     }
4766   else
4767       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
4768   gdb_assert (sig_entry->signature == dwo_entry->signature);
4769   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4770   gdb_assert (sig_entry->type_unit_group == NULL);
4771   gdb_assert (sig_entry->dwo_unit == NULL);
4772
4773   sig_entry->per_cu.section = dwo_entry->section;
4774   sig_entry->per_cu.offset = dwo_entry->offset;
4775   sig_entry->per_cu.length = dwo_entry->length;
4776   sig_entry->per_cu.reading_dwo_directly = 1;
4777   sig_entry->per_cu.objfile = objfile;
4778   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4779   sig_entry->dwo_unit = dwo_entry;
4780 }
4781
4782 /* Subroutine of lookup_signatured_type.
4783    If we haven't read the TU yet, create the signatured_type data structure
4784    for a TU to be read in directly from a DWO file, bypassing the stub.
4785    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4786    using .gdb_index, then when reading a CU we want to stay in the DWO file
4787    containing that CU.  Otherwise we could end up reading several other DWO
4788    files (due to comdat folding) to process the transitive closure of all the
4789    mentioned TUs, and that can be slow.  The current DWO file will have every
4790    type signature that it needs.
4791    We only do this for .gdb_index because in the psymtab case we already have
4792    to read all the DWOs to build the type unit groups.  */
4793
4794 static struct signatured_type *
4795 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4796 {
4797   struct objfile *objfile = dwarf2_per_objfile->objfile;
4798   struct dwo_file *dwo_file;
4799   struct dwo_unit find_dwo_entry, *dwo_entry;
4800   struct signatured_type find_sig_entry, *sig_entry;
4801   void **slot;
4802
4803   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4804
4805   /* If TU skeletons have been removed then we may not have read in any
4806      TUs yet.  */
4807   if (dwarf2_per_objfile->signatured_types == NULL)
4808     {
4809       dwarf2_per_objfile->signatured_types
4810         = allocate_signatured_type_table (objfile);
4811     }
4812
4813   /* We only ever need to read in one copy of a signatured type.
4814      Use the global signatured_types array to do our own comdat-folding
4815      of types.  If this is the first time we're reading this TU, and
4816      the TU has an entry in .gdb_index, replace the recorded data from
4817      .gdb_index with this TU.  */
4818
4819   find_sig_entry.signature = sig;
4820   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4821                          &find_sig_entry, INSERT);
4822   sig_entry = *slot;
4823
4824   /* We can get here with the TU already read, *or* in the process of being
4825      read.  Don't reassign the global entry to point to this DWO if that's
4826      the case.  Also note that if the TU is already being read, it may not
4827      have come from a DWO, the program may be a mix of Fission-compiled
4828      code and non-Fission-compiled code.  */
4829
4830   /* Have we already tried to read this TU?
4831      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4832      needn't exist in the global table yet).  */
4833   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
4834     return sig_entry;
4835
4836   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4837      dwo_unit of the TU itself.  */
4838   dwo_file = cu->dwo_unit->dwo_file;
4839
4840   /* Ok, this is the first time we're reading this TU.  */
4841   if (dwo_file->tus == NULL)
4842     return NULL;
4843   find_dwo_entry.signature = sig;
4844   dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4845   if (dwo_entry == NULL)
4846     return NULL;
4847
4848   /* If the global table doesn't have an entry for this TU, add one.  */
4849   if (sig_entry == NULL)
4850     sig_entry = add_type_unit (sig, slot);
4851
4852   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4853   sig_entry->per_cu.tu_read = 1;
4854   return sig_entry;
4855 }
4856
4857 /* Subroutine of lookup_signatured_type.
4858    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4859    then try the DWP file.  If the TU stub (skeleton) has been removed then
4860    it won't be in .gdb_index.  */
4861
4862 static struct signatured_type *
4863 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4864 {
4865   struct objfile *objfile = dwarf2_per_objfile->objfile;
4866   struct dwp_file *dwp_file = get_dwp_file ();
4867   struct dwo_unit *dwo_entry;
4868   struct signatured_type find_sig_entry, *sig_entry;
4869   void **slot;
4870
4871   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4872   gdb_assert (dwp_file != NULL);
4873
4874   /* If TU skeletons have been removed then we may not have read in any
4875      TUs yet.  */
4876   if (dwarf2_per_objfile->signatured_types == NULL)
4877     {
4878       dwarf2_per_objfile->signatured_types
4879         = allocate_signatured_type_table (objfile);
4880     }
4881
4882   find_sig_entry.signature = sig;
4883   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4884                          &find_sig_entry, INSERT);
4885   sig_entry = *slot;
4886
4887   /* Have we already tried to read this TU?
4888      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4889      needn't exist in the global table yet).  */
4890   if (sig_entry != NULL)
4891     return sig_entry;
4892
4893   if (dwp_file->tus == NULL)
4894     return NULL;
4895   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4896                                       sig, 1 /* is_debug_types */);
4897   if (dwo_entry == NULL)
4898     return NULL;
4899
4900   sig_entry = add_type_unit (sig, slot);
4901   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4902
4903   return sig_entry;
4904 }
4905
4906 /* Lookup a signature based type for DW_FORM_ref_sig8.
4907    Returns NULL if signature SIG is not present in the table.
4908    It is up to the caller to complain about this.  */
4909
4910 static struct signatured_type *
4911 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4912 {
4913   if (cu->dwo_unit
4914       && dwarf2_per_objfile->using_index)
4915     {
4916       /* We're in a DWO/DWP file, and we're using .gdb_index.
4917          These cases require special processing.  */
4918       if (get_dwp_file () == NULL)
4919         return lookup_dwo_signatured_type (cu, sig);
4920       else
4921         return lookup_dwp_signatured_type (cu, sig);
4922     }
4923   else
4924     {
4925       struct signatured_type find_entry, *entry;
4926
4927       if (dwarf2_per_objfile->signatured_types == NULL)
4928         return NULL;
4929       find_entry.signature = sig;
4930       entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
4931       return entry;
4932     }
4933 }
4934 \f
4935 /* Low level DIE reading support.  */
4936
4937 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
4938
4939 static void
4940 init_cu_die_reader (struct die_reader_specs *reader,
4941                     struct dwarf2_cu *cu,
4942                     struct dwarf2_section_info *section,
4943                     struct dwo_file *dwo_file)
4944 {
4945   gdb_assert (section->readin && section->buffer != NULL);
4946   reader->abfd = get_section_bfd_owner (section);
4947   reader->cu = cu;
4948   reader->dwo_file = dwo_file;
4949   reader->die_section = section;
4950   reader->buffer = section->buffer;
4951   reader->buffer_end = section->buffer + section->size;
4952   reader->comp_dir = NULL;
4953 }
4954
4955 /* Subroutine of init_cutu_and_read_dies to simplify it.
4956    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
4957    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
4958    already.
4959
4960    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
4961    from it to the DIE in the DWO.  If NULL we are skipping the stub.
4962    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
4963    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
4964    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
4965    STUB_COMP_DIR may be non-NULL.
4966    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
4967    are filled in with the info of the DIE from the DWO file.
4968    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
4969    provided an abbrev table to use.
4970    The result is non-zero if a valid (non-dummy) DIE was found.  */
4971
4972 static int
4973 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
4974                         struct dwo_unit *dwo_unit,
4975                         int abbrev_table_provided,
4976                         struct die_info *stub_comp_unit_die,
4977                         const char *stub_comp_dir,
4978                         struct die_reader_specs *result_reader,
4979                         const gdb_byte **result_info_ptr,
4980                         struct die_info **result_comp_unit_die,
4981                         int *result_has_children)
4982 {
4983   struct objfile *objfile = dwarf2_per_objfile->objfile;
4984   struct dwarf2_cu *cu = this_cu->cu;
4985   struct dwarf2_section_info *section;
4986   bfd *abfd;
4987   const gdb_byte *begin_info_ptr, *info_ptr;
4988   ULONGEST signature; /* Or dwo_id.  */
4989   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
4990   int i,num_extra_attrs;
4991   struct dwarf2_section_info *dwo_abbrev_section;
4992   struct attribute *attr;
4993   struct die_info *comp_unit_die;
4994
4995   /* At most one of these may be provided.  */
4996   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
4997
4998   /* These attributes aren't processed until later:
4999      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
5000      DW_AT_comp_dir is used now, to find the DWO file, but it is also
5001      referenced later.  However, these attributes are found in the stub
5002      which we won't have later.  In order to not impose this complication
5003      on the rest of the code, we read them here and copy them to the
5004      DWO CU/TU die.  */
5005
5006   stmt_list = NULL;
5007   low_pc = NULL;
5008   high_pc = NULL;
5009   ranges = NULL;
5010   comp_dir = NULL;
5011
5012   if (stub_comp_unit_die != NULL)
5013     {
5014       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5015          DWO file.  */
5016       if (! this_cu->is_debug_types)
5017         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5018       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5019       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5020       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5021       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5022
5023       /* There should be a DW_AT_addr_base attribute here (if needed).
5024          We need the value before we can process DW_FORM_GNU_addr_index.  */
5025       cu->addr_base = 0;
5026       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5027       if (attr)
5028         cu->addr_base = DW_UNSND (attr);
5029
5030       /* There should be a DW_AT_ranges_base attribute here (if needed).
5031          We need the value before we can process DW_AT_ranges.  */
5032       cu->ranges_base = 0;
5033       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5034       if (attr)
5035         cu->ranges_base = DW_UNSND (attr);
5036     }
5037   else if (stub_comp_dir != NULL)
5038     {
5039       /* Reconstruct the comp_dir attribute to simplify the code below.  */
5040       comp_dir = (struct attribute *)
5041         obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5042       comp_dir->name = DW_AT_comp_dir;
5043       comp_dir->form = DW_FORM_string;
5044       DW_STRING_IS_CANONICAL (comp_dir) = 0;
5045       DW_STRING (comp_dir) = stub_comp_dir;
5046     }
5047
5048   /* Set up for reading the DWO CU/TU.  */
5049   cu->dwo_unit = dwo_unit;
5050   section = dwo_unit->section;
5051   dwarf2_read_section (objfile, section);
5052   abfd = get_section_bfd_owner (section);
5053   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5054   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5055   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5056
5057   if (this_cu->is_debug_types)
5058     {
5059       ULONGEST header_signature;
5060       cu_offset type_offset_in_tu;
5061       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5062
5063       info_ptr = read_and_check_type_unit_head (&cu->header, section,
5064                                                 dwo_abbrev_section,
5065                                                 info_ptr,
5066                                                 &header_signature,
5067                                                 &type_offset_in_tu);
5068       /* This is not an assert because it can be caused by bad debug info.  */
5069       if (sig_type->signature != header_signature)
5070         {
5071           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5072                    " TU at offset 0x%x [in module %s]"),
5073                  hex_string (sig_type->signature),
5074                  hex_string (header_signature),
5075                  dwo_unit->offset.sect_off,
5076                  bfd_get_filename (abfd));
5077         }
5078       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5079       /* For DWOs coming from DWP files, we don't know the CU length
5080          nor the type's offset in the TU until now.  */
5081       dwo_unit->length = get_cu_length (&cu->header);
5082       dwo_unit->type_offset_in_tu = type_offset_in_tu;
5083
5084       /* Establish the type offset that can be used to lookup the type.
5085          For DWO files, we don't know it until now.  */
5086       sig_type->type_offset_in_section.sect_off =
5087         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5088     }
5089   else
5090     {
5091       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5092                                                 dwo_abbrev_section,
5093                                                 info_ptr, 0);
5094       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5095       /* For DWOs coming from DWP files, we don't know the CU length
5096          until now.  */
5097       dwo_unit->length = get_cu_length (&cu->header);
5098     }
5099
5100   /* Replace the CU's original abbrev table with the DWO's.
5101      Reminder: We can't read the abbrev table until we've read the header.  */
5102   if (abbrev_table_provided)
5103     {
5104       /* Don't free the provided abbrev table, the caller of
5105          init_cutu_and_read_dies owns it.  */
5106       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5107       /* Ensure the DWO abbrev table gets freed.  */
5108       make_cleanup (dwarf2_free_abbrev_table, cu);
5109     }
5110   else
5111     {
5112       dwarf2_free_abbrev_table (cu);
5113       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5114       /* Leave any existing abbrev table cleanup as is.  */
5115     }
5116
5117   /* Read in the die, but leave space to copy over the attributes
5118      from the stub.  This has the benefit of simplifying the rest of
5119      the code - all the work to maintain the illusion of a single
5120      DW_TAG_{compile,type}_unit DIE is done here.  */
5121   num_extra_attrs = ((stmt_list != NULL)
5122                      + (low_pc != NULL)
5123                      + (high_pc != NULL)
5124                      + (ranges != NULL)
5125                      + (comp_dir != NULL));
5126   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5127                               result_has_children, num_extra_attrs);
5128
5129   /* Copy over the attributes from the stub to the DIE we just read in.  */
5130   comp_unit_die = *result_comp_unit_die;
5131   i = comp_unit_die->num_attrs;
5132   if (stmt_list != NULL)
5133     comp_unit_die->attrs[i++] = *stmt_list;
5134   if (low_pc != NULL)
5135     comp_unit_die->attrs[i++] = *low_pc;
5136   if (high_pc != NULL)
5137     comp_unit_die->attrs[i++] = *high_pc;
5138   if (ranges != NULL)
5139     comp_unit_die->attrs[i++] = *ranges;
5140   if (comp_dir != NULL)
5141     comp_unit_die->attrs[i++] = *comp_dir;
5142   comp_unit_die->num_attrs += num_extra_attrs;
5143
5144   if (dwarf2_die_debug)
5145     {
5146       fprintf_unfiltered (gdb_stdlog,
5147                           "Read die from %s@0x%x of %s:\n",
5148                           get_section_name (section),
5149                           (unsigned) (begin_info_ptr - section->buffer),
5150                           bfd_get_filename (abfd));
5151       dump_die (comp_unit_die, dwarf2_die_debug);
5152     }
5153
5154   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5155      TUs by skipping the stub and going directly to the entry in the DWO file.
5156      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5157      to get it via circuitous means.  Blech.  */
5158   if (comp_dir != NULL)
5159     result_reader->comp_dir = DW_STRING (comp_dir);
5160
5161   /* Skip dummy compilation units.  */
5162   if (info_ptr >= begin_info_ptr + dwo_unit->length
5163       || peek_abbrev_code (abfd, info_ptr) == 0)
5164     return 0;
5165
5166   *result_info_ptr = info_ptr;
5167   return 1;
5168 }
5169
5170 /* Subroutine of init_cutu_and_read_dies to simplify it.
5171    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5172    Returns NULL if the specified DWO unit cannot be found.  */
5173
5174 static struct dwo_unit *
5175 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5176                  struct die_info *comp_unit_die)
5177 {
5178   struct dwarf2_cu *cu = this_cu->cu;
5179   struct attribute *attr;
5180   ULONGEST signature;
5181   struct dwo_unit *dwo_unit;
5182   const char *comp_dir, *dwo_name;
5183
5184   gdb_assert (cu != NULL);
5185
5186   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5187   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5188   gdb_assert (attr != NULL);
5189   dwo_name = DW_STRING (attr);
5190   comp_dir = NULL;
5191   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5192   if (attr)
5193     comp_dir = DW_STRING (attr);
5194
5195   if (this_cu->is_debug_types)
5196     {
5197       struct signatured_type *sig_type;
5198
5199       /* Since this_cu is the first member of struct signatured_type,
5200          we can go from a pointer to one to a pointer to the other.  */
5201       sig_type = (struct signatured_type *) this_cu;
5202       signature = sig_type->signature;
5203       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5204     }
5205   else
5206     {
5207       struct attribute *attr;
5208
5209       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5210       if (! attr)
5211         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5212                  " [in module %s]"),
5213                dwo_name, objfile_name (this_cu->objfile));
5214       signature = DW_UNSND (attr);
5215       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5216                                        signature);
5217     }
5218
5219   return dwo_unit;
5220 }
5221
5222 /* Subroutine of init_cutu_and_read_dies to simplify it.
5223    See it for a description of the parameters.
5224    Read a TU directly from a DWO file, bypassing the stub.
5225
5226    Note: This function could be a little bit simpler if we shared cleanups
5227    with our caller, init_cutu_and_read_dies.  That's generally a fragile thing
5228    to do, so we keep this function self-contained.  Or we could move this
5229    into our caller, but it's complex enough already.  */
5230
5231 static void
5232 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5233                            int use_existing_cu, int keep,
5234                            die_reader_func_ftype *die_reader_func,
5235                            void *data)
5236 {
5237   struct dwarf2_cu *cu;
5238   struct signatured_type *sig_type;
5239   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5240   struct die_reader_specs reader;
5241   const gdb_byte *info_ptr;
5242   struct die_info *comp_unit_die;
5243   int has_children;
5244
5245   /* Verify we can do the following downcast, and that we have the
5246      data we need.  */
5247   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5248   sig_type = (struct signatured_type *) this_cu;
5249   gdb_assert (sig_type->dwo_unit != NULL);
5250
5251   cleanups = make_cleanup (null_cleanup, NULL);
5252
5253   if (use_existing_cu && this_cu->cu != NULL)
5254     {
5255       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5256       cu = this_cu->cu;
5257       /* There's no need to do the rereading_dwo_cu handling that
5258          init_cutu_and_read_dies does since we don't read the stub.  */
5259     }
5260   else
5261     {
5262       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5263       gdb_assert (this_cu->cu == NULL);
5264       cu = xmalloc (sizeof (*cu));
5265       init_one_comp_unit (cu, this_cu);
5266       /* If an error occurs while loading, release our storage.  */
5267       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5268     }
5269
5270   /* A future optimization, if needed, would be to use an existing
5271      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
5272      could share abbrev tables.  */
5273
5274   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5275                               0 /* abbrev_table_provided */,
5276                               NULL /* stub_comp_unit_die */,
5277                               sig_type->dwo_unit->dwo_file->comp_dir,
5278                               &reader, &info_ptr,
5279                               &comp_unit_die, &has_children) == 0)
5280     {
5281       /* Dummy die.  */
5282       do_cleanups (cleanups);
5283       return;
5284     }
5285
5286   /* All the "real" work is done here.  */
5287   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5288
5289   /* This duplicates the code in init_cutu_and_read_dies,
5290      but the alternative is making the latter more complex.
5291      This function is only for the special case of using DWO files directly:
5292      no point in overly complicating the general case just to handle this.  */
5293   if (free_cu_cleanup != NULL)
5294     {
5295       if (keep)
5296         {
5297           /* We've successfully allocated this compilation unit.  Let our
5298              caller clean it up when finished with it.  */
5299           discard_cleanups (free_cu_cleanup);
5300
5301           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5302              So we have to manually free the abbrev table.  */
5303           dwarf2_free_abbrev_table (cu);
5304
5305           /* Link this CU into read_in_chain.  */
5306           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5307           dwarf2_per_objfile->read_in_chain = this_cu;
5308         }
5309       else
5310         do_cleanups (free_cu_cleanup);
5311     }
5312
5313   do_cleanups (cleanups);
5314 }
5315
5316 /* Initialize a CU (or TU) and read its DIEs.
5317    If the CU defers to a DWO file, read the DWO file as well.
5318
5319    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5320    Otherwise the table specified in the comp unit header is read in and used.
5321    This is an optimization for when we already have the abbrev table.
5322
5323    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5324    Otherwise, a new CU is allocated with xmalloc.
5325
5326    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5327    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5328
5329    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5330    linker) then DIE_READER_FUNC will not get called.  */
5331
5332 static void
5333 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5334                          struct abbrev_table *abbrev_table,
5335                          int use_existing_cu, int keep,
5336                          die_reader_func_ftype *die_reader_func,
5337                          void *data)
5338 {
5339   struct objfile *objfile = dwarf2_per_objfile->objfile;
5340   struct dwarf2_section_info *section = this_cu->section;
5341   bfd *abfd = get_section_bfd_owner (section);
5342   struct dwarf2_cu *cu;
5343   const gdb_byte *begin_info_ptr, *info_ptr;
5344   struct die_reader_specs reader;
5345   struct die_info *comp_unit_die;
5346   int has_children;
5347   struct attribute *attr;
5348   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5349   struct signatured_type *sig_type = NULL;
5350   struct dwarf2_section_info *abbrev_section;
5351   /* Non-zero if CU currently points to a DWO file and we need to
5352      reread it.  When this happens we need to reread the skeleton die
5353      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5354   int rereading_dwo_cu = 0;
5355
5356   if (dwarf2_die_debug)
5357     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5358                         this_cu->is_debug_types ? "type" : "comp",
5359                         this_cu->offset.sect_off);
5360
5361   if (use_existing_cu)
5362     gdb_assert (keep);
5363
5364   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5365      file (instead of going through the stub), short-circuit all of this.  */
5366   if (this_cu->reading_dwo_directly)
5367     {
5368       /* Narrow down the scope of possibilities to have to understand.  */
5369       gdb_assert (this_cu->is_debug_types);
5370       gdb_assert (abbrev_table == NULL);
5371       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5372                                  die_reader_func, data);
5373       return;
5374     }
5375
5376   cleanups = make_cleanup (null_cleanup, NULL);
5377
5378   /* This is cheap if the section is already read in.  */
5379   dwarf2_read_section (objfile, section);
5380
5381   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5382
5383   abbrev_section = get_abbrev_section_for_cu (this_cu);
5384
5385   if (use_existing_cu && this_cu->cu != NULL)
5386     {
5387       cu = this_cu->cu;
5388       /* If this CU is from a DWO file we need to start over, we need to
5389          refetch the attributes from the skeleton CU.
5390          This could be optimized by retrieving those attributes from when we
5391          were here the first time: the previous comp_unit_die was stored in
5392          comp_unit_obstack.  But there's no data yet that we need this
5393          optimization.  */
5394       if (cu->dwo_unit != NULL)
5395         rereading_dwo_cu = 1;
5396     }
5397   else
5398     {
5399       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5400       gdb_assert (this_cu->cu == NULL);
5401       cu = xmalloc (sizeof (*cu));
5402       init_one_comp_unit (cu, this_cu);
5403       /* If an error occurs while loading, release our storage.  */
5404       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5405     }
5406
5407   /* Get the header.  */
5408   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5409     {
5410       /* We already have the header, there's no need to read it in again.  */
5411       info_ptr += cu->header.first_die_offset.cu_off;
5412     }
5413   else
5414     {
5415       if (this_cu->is_debug_types)
5416         {
5417           ULONGEST signature;
5418           cu_offset type_offset_in_tu;
5419
5420           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5421                                                     abbrev_section, info_ptr,
5422                                                     &signature,
5423                                                     &type_offset_in_tu);
5424
5425           /* Since per_cu is the first member of struct signatured_type,
5426              we can go from a pointer to one to a pointer to the other.  */
5427           sig_type = (struct signatured_type *) this_cu;
5428           gdb_assert (sig_type->signature == signature);
5429           gdb_assert (sig_type->type_offset_in_tu.cu_off
5430                       == type_offset_in_tu.cu_off);
5431           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5432
5433           /* LENGTH has not been set yet for type units if we're
5434              using .gdb_index.  */
5435           this_cu->length = get_cu_length (&cu->header);
5436
5437           /* Establish the type offset that can be used to lookup the type.  */
5438           sig_type->type_offset_in_section.sect_off =
5439             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5440         }
5441       else
5442         {
5443           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5444                                                     abbrev_section,
5445                                                     info_ptr, 0);
5446
5447           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5448           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5449         }
5450     }
5451
5452   /* Skip dummy compilation units.  */
5453   if (info_ptr >= begin_info_ptr + this_cu->length
5454       || peek_abbrev_code (abfd, info_ptr) == 0)
5455     {
5456       do_cleanups (cleanups);
5457       return;
5458     }
5459
5460   /* If we don't have them yet, read the abbrevs for this compilation unit.
5461      And if we need to read them now, make sure they're freed when we're
5462      done.  Note that it's important that if the CU had an abbrev table
5463      on entry we don't free it when we're done: Somewhere up the call stack
5464      it may be in use.  */
5465   if (abbrev_table != NULL)
5466     {
5467       gdb_assert (cu->abbrev_table == NULL);
5468       gdb_assert (cu->header.abbrev_offset.sect_off
5469                   == abbrev_table->offset.sect_off);
5470       cu->abbrev_table = abbrev_table;
5471     }
5472   else if (cu->abbrev_table == NULL)
5473     {
5474       dwarf2_read_abbrevs (cu, abbrev_section);
5475       make_cleanup (dwarf2_free_abbrev_table, cu);
5476     }
5477   else if (rereading_dwo_cu)
5478     {
5479       dwarf2_free_abbrev_table (cu);
5480       dwarf2_read_abbrevs (cu, abbrev_section);
5481     }
5482
5483   /* Read the top level CU/TU die.  */
5484   init_cu_die_reader (&reader, cu, section, NULL);
5485   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5486
5487   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5488      from the DWO file.
5489      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5490      DWO CU, that this test will fail (the attribute will not be present).  */
5491   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5492   if (attr)
5493     {
5494       struct dwo_unit *dwo_unit;
5495       struct die_info *dwo_comp_unit_die;
5496
5497       if (has_children)
5498         {
5499           complaint (&symfile_complaints,
5500                      _("compilation unit with DW_AT_GNU_dwo_name"
5501                        " has children (offset 0x%x) [in module %s]"),
5502                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5503         }
5504       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5505       if (dwo_unit != NULL)
5506         {
5507           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5508                                       abbrev_table != NULL,
5509                                       comp_unit_die, NULL,
5510                                       &reader, &info_ptr,
5511                                       &dwo_comp_unit_die, &has_children) == 0)
5512             {
5513               /* Dummy die.  */
5514               do_cleanups (cleanups);
5515               return;
5516             }
5517           comp_unit_die = dwo_comp_unit_die;
5518         }
5519       else
5520         {
5521           /* Yikes, we couldn't find the rest of the DIE, we only have
5522              the stub.  A complaint has already been logged.  There's
5523              not much more we can do except pass on the stub DIE to
5524              die_reader_func.  We don't want to throw an error on bad
5525              debug info.  */
5526         }
5527     }
5528
5529   /* All of the above is setup for this call.  Yikes.  */
5530   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5531
5532   /* Done, clean up.  */
5533   if (free_cu_cleanup != NULL)
5534     {
5535       if (keep)
5536         {
5537           /* We've successfully allocated this compilation unit.  Let our
5538              caller clean it up when finished with it.  */
5539           discard_cleanups (free_cu_cleanup);
5540
5541           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5542              So we have to manually free the abbrev table.  */
5543           dwarf2_free_abbrev_table (cu);
5544
5545           /* Link this CU into read_in_chain.  */
5546           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5547           dwarf2_per_objfile->read_in_chain = this_cu;
5548         }
5549       else
5550         do_cleanups (free_cu_cleanup);
5551     }
5552
5553   do_cleanups (cleanups);
5554 }
5555
5556 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5557    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5558    to have already done the lookup to find the DWO file).
5559
5560    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5561    THIS_CU->is_debug_types, but nothing else.
5562
5563    We fill in THIS_CU->length.
5564
5565    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5566    linker) then DIE_READER_FUNC will not get called.
5567
5568    THIS_CU->cu is always freed when done.
5569    This is done in order to not leave THIS_CU->cu in a state where we have
5570    to care whether it refers to the "main" CU or the DWO CU.  */
5571
5572 static void
5573 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5574                                    struct dwo_file *dwo_file,
5575                                    die_reader_func_ftype *die_reader_func,
5576                                    void *data)
5577 {
5578   struct objfile *objfile = dwarf2_per_objfile->objfile;
5579   struct dwarf2_section_info *section = this_cu->section;
5580   bfd *abfd = get_section_bfd_owner (section);
5581   struct dwarf2_section_info *abbrev_section;
5582   struct dwarf2_cu cu;
5583   const gdb_byte *begin_info_ptr, *info_ptr;
5584   struct die_reader_specs reader;
5585   struct cleanup *cleanups;
5586   struct die_info *comp_unit_die;
5587   int has_children;
5588
5589   if (dwarf2_die_debug)
5590     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5591                         this_cu->is_debug_types ? "type" : "comp",
5592                         this_cu->offset.sect_off);
5593
5594   gdb_assert (this_cu->cu == NULL);
5595
5596   abbrev_section = (dwo_file != NULL
5597                     ? &dwo_file->sections.abbrev
5598                     : get_abbrev_section_for_cu (this_cu));
5599
5600   /* This is cheap if the section is already read in.  */
5601   dwarf2_read_section (objfile, section);
5602
5603   init_one_comp_unit (&cu, this_cu);
5604
5605   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5606
5607   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5608   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5609                                             abbrev_section, info_ptr,
5610                                             this_cu->is_debug_types);
5611
5612   this_cu->length = get_cu_length (&cu.header);
5613
5614   /* Skip dummy compilation units.  */
5615   if (info_ptr >= begin_info_ptr + this_cu->length
5616       || peek_abbrev_code (abfd, info_ptr) == 0)
5617     {
5618       do_cleanups (cleanups);
5619       return;
5620     }
5621
5622   dwarf2_read_abbrevs (&cu, abbrev_section);
5623   make_cleanup (dwarf2_free_abbrev_table, &cu);
5624
5625   init_cu_die_reader (&reader, &cu, section, dwo_file);
5626   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5627
5628   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5629
5630   do_cleanups (cleanups);
5631 }
5632
5633 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5634    does not lookup the specified DWO file.
5635    This cannot be used to read DWO files.
5636
5637    THIS_CU->cu is always freed when done.
5638    This is done in order to not leave THIS_CU->cu in a state where we have
5639    to care whether it refers to the "main" CU or the DWO CU.
5640    We can revisit this if the data shows there's a performance issue.  */
5641
5642 static void
5643 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5644                                 die_reader_func_ftype *die_reader_func,
5645                                 void *data)
5646 {
5647   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
5648 }
5649 \f
5650 /* Type Unit Groups.
5651
5652    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5653    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5654    so that all types coming from the same compilation (.o file) are grouped
5655    together.  A future step could be to put the types in the same symtab as
5656    the CU the types ultimately came from.  */
5657
5658 static hashval_t
5659 hash_type_unit_group (const void *item)
5660 {
5661   const struct type_unit_group *tu_group = item;
5662
5663   return hash_stmt_list_entry (&tu_group->hash);
5664 }
5665
5666 static int
5667 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5668 {
5669   const struct type_unit_group *lhs = item_lhs;
5670   const struct type_unit_group *rhs = item_rhs;
5671
5672   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5673 }
5674
5675 /* Allocate a hash table for type unit groups.  */
5676
5677 static htab_t
5678 allocate_type_unit_groups_table (void)
5679 {
5680   return htab_create_alloc_ex (3,
5681                                hash_type_unit_group,
5682                                eq_type_unit_group,
5683                                NULL,
5684                                &dwarf2_per_objfile->objfile->objfile_obstack,
5685                                hashtab_obstack_allocate,
5686                                dummy_obstack_deallocate);
5687 }
5688
5689 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5690    partial symtabs.  We combine several TUs per psymtab to not let the size
5691    of any one psymtab grow too big.  */
5692 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5693 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5694
5695 /* Helper routine for get_type_unit_group.
5696    Create the type_unit_group object used to hold one or more TUs.  */
5697
5698 static struct type_unit_group *
5699 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5700 {
5701   struct objfile *objfile = dwarf2_per_objfile->objfile;
5702   struct dwarf2_per_cu_data *per_cu;
5703   struct type_unit_group *tu_group;
5704
5705   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5706                              struct type_unit_group);
5707   per_cu = &tu_group->per_cu;
5708   per_cu->objfile = objfile;
5709
5710   if (dwarf2_per_objfile->using_index)
5711     {
5712       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5713                                         struct dwarf2_per_cu_quick_data);
5714     }
5715   else
5716     {
5717       unsigned int line_offset = line_offset_struct.sect_off;
5718       struct partial_symtab *pst;
5719       char *name;
5720
5721       /* Give the symtab a useful name for debug purposes.  */
5722       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5723         name = xstrprintf ("<type_units_%d>",
5724                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5725       else
5726         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5727
5728       pst = create_partial_symtab (per_cu, name);
5729       pst->anonymous = 1;
5730
5731       xfree (name);
5732     }
5733
5734   tu_group->hash.dwo_unit = cu->dwo_unit;
5735   tu_group->hash.line_offset = line_offset_struct;
5736
5737   return tu_group;
5738 }
5739
5740 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5741    STMT_LIST is a DW_AT_stmt_list attribute.  */
5742
5743 static struct type_unit_group *
5744 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5745 {
5746   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5747   struct type_unit_group *tu_group;
5748   void **slot;
5749   unsigned int line_offset;
5750   struct type_unit_group type_unit_group_for_lookup;
5751
5752   if (dwarf2_per_objfile->type_unit_groups == NULL)
5753     {
5754       dwarf2_per_objfile->type_unit_groups =
5755         allocate_type_unit_groups_table ();
5756     }
5757
5758   /* Do we need to create a new group, or can we use an existing one?  */
5759
5760   if (stmt_list)
5761     {
5762       line_offset = DW_UNSND (stmt_list);
5763       ++tu_stats->nr_symtab_sharers;
5764     }
5765   else
5766     {
5767       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5768          We can do various things here like create one group per TU or
5769          spread them over multiple groups to split up the expansion work.
5770          To avoid worst case scenarios (too many groups or too large groups)
5771          we, umm, group them in bunches.  */
5772       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5773                      | (tu_stats->nr_stmt_less_type_units
5774                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5775       ++tu_stats->nr_stmt_less_type_units;
5776     }
5777
5778   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5779   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5780   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5781                          &type_unit_group_for_lookup, INSERT);
5782   if (*slot != NULL)
5783     {
5784       tu_group = *slot;
5785       gdb_assert (tu_group != NULL);
5786     }
5787   else
5788     {
5789       sect_offset line_offset_struct;
5790
5791       line_offset_struct.sect_off = line_offset;
5792       tu_group = create_type_unit_group (cu, line_offset_struct);
5793       *slot = tu_group;
5794       ++tu_stats->nr_symtabs;
5795     }
5796
5797   return tu_group;
5798 }
5799 \f
5800 /* Partial symbol tables.  */
5801
5802 /* Create a psymtab named NAME and assign it to PER_CU.
5803
5804    The caller must fill in the following details:
5805    dirname, textlow, texthigh.  */
5806
5807 static struct partial_symtab *
5808 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5809 {
5810   struct objfile *objfile = per_cu->objfile;
5811   struct partial_symtab *pst;
5812
5813   pst = start_psymtab_common (objfile, objfile->section_offsets,
5814                               name, 0,
5815                               objfile->global_psymbols.next,
5816                               objfile->static_psymbols.next);
5817
5818   pst->psymtabs_addrmap_supported = 1;
5819
5820   /* This is the glue that links PST into GDB's symbol API.  */
5821   pst->read_symtab_private = per_cu;
5822   pst->read_symtab = dwarf2_read_symtab;
5823   per_cu->v.psymtab = pst;
5824
5825   return pst;
5826 }
5827
5828 /* The DATA object passed to process_psymtab_comp_unit_reader has this
5829    type.  */
5830
5831 struct process_psymtab_comp_unit_data
5832 {
5833   /* True if we are reading a DW_TAG_partial_unit.  */
5834
5835   int want_partial_unit;
5836
5837   /* The "pretend" language that is used if the CU doesn't declare a
5838      language.  */
5839
5840   enum language pretend_language;
5841 };
5842
5843 /* die_reader_func for process_psymtab_comp_unit.  */
5844
5845 static void
5846 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5847                                   const gdb_byte *info_ptr,
5848                                   struct die_info *comp_unit_die,
5849                                   int has_children,
5850                                   void *data)
5851 {
5852   struct dwarf2_cu *cu = reader->cu;
5853   struct objfile *objfile = cu->objfile;
5854   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5855   struct attribute *attr;
5856   CORE_ADDR baseaddr;
5857   CORE_ADDR best_lowpc = 0, best_highpc = 0;
5858   struct partial_symtab *pst;
5859   int has_pc_info;
5860   const char *filename;
5861   struct process_psymtab_comp_unit_data *info = data;
5862
5863   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
5864     return;
5865
5866   gdb_assert (! per_cu->is_debug_types);
5867
5868   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
5869
5870   cu->list_in_scope = &file_symbols;
5871
5872   /* Allocate a new partial symbol table structure.  */
5873   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5874   if (attr == NULL || !DW_STRING (attr))
5875     filename = "";
5876   else
5877     filename = DW_STRING (attr);
5878
5879   pst = create_partial_symtab (per_cu, filename);
5880
5881   /* This must be done before calling dwarf2_build_include_psymtabs.  */
5882   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5883   if (attr != NULL)
5884     pst->dirname = DW_STRING (attr);
5885
5886   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5887
5888   dwarf2_find_base_address (comp_unit_die, cu);
5889
5890   /* Possibly set the default values of LOWPC and HIGHPC from
5891      `DW_AT_ranges'.  */
5892   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5893                                       &best_highpc, cu, pst);
5894   if (has_pc_info == 1 && best_lowpc < best_highpc)
5895     /* Store the contiguous range if it is not empty; it can be empty for
5896        CUs with no code.  */
5897     addrmap_set_empty (objfile->psymtabs_addrmap,
5898                        best_lowpc + baseaddr,
5899                        best_highpc + baseaddr - 1, pst);
5900
5901   /* Check if comp unit has_children.
5902      If so, read the rest of the partial symbols from this comp unit.
5903      If not, there's no more debug_info for this comp unit.  */
5904   if (has_children)
5905     {
5906       struct partial_die_info *first_die;
5907       CORE_ADDR lowpc, highpc;
5908
5909       lowpc = ((CORE_ADDR) -1);
5910       highpc = ((CORE_ADDR) 0);
5911
5912       first_die = load_partial_dies (reader, info_ptr, 1);
5913
5914       scan_partial_symbols (first_die, &lowpc, &highpc,
5915                             ! has_pc_info, cu);
5916
5917       /* If we didn't find a lowpc, set it to highpc to avoid
5918          complaints from `maint check'.  */
5919       if (lowpc == ((CORE_ADDR) -1))
5920         lowpc = highpc;
5921
5922       /* If the compilation unit didn't have an explicit address range,
5923          then use the information extracted from its child dies.  */
5924       if (! has_pc_info)
5925         {
5926           best_lowpc = lowpc;
5927           best_highpc = highpc;
5928         }
5929     }
5930   pst->textlow = best_lowpc + baseaddr;
5931   pst->texthigh = best_highpc + baseaddr;
5932
5933   pst->n_global_syms = objfile->global_psymbols.next -
5934     (objfile->global_psymbols.list + pst->globals_offset);
5935   pst->n_static_syms = objfile->static_psymbols.next -
5936     (objfile->static_psymbols.list + pst->statics_offset);
5937   sort_pst_symbols (objfile, pst);
5938
5939   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
5940     {
5941       int i;
5942       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
5943       struct dwarf2_per_cu_data *iter;
5944
5945       /* Fill in 'dependencies' here; we fill in 'users' in a
5946          post-pass.  */
5947       pst->number_of_dependencies = len;
5948       pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
5949                                          len * sizeof (struct symtab *));
5950       for (i = 0;
5951            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
5952                         i, iter);
5953            ++i)
5954         pst->dependencies[i] = iter->v.psymtab;
5955
5956       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
5957     }
5958
5959   /* Get the list of files included in the current compilation unit,
5960      and build a psymtab for each of them.  */
5961   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
5962
5963   if (dwarf2_read_debug)
5964     {
5965       struct gdbarch *gdbarch = get_objfile_arch (objfile);
5966
5967       fprintf_unfiltered (gdb_stdlog,
5968                           "Psymtab for %s unit @0x%x: %s - %s"
5969                           ", %d global, %d static syms\n",
5970                           per_cu->is_debug_types ? "type" : "comp",
5971                           per_cu->offset.sect_off,
5972                           paddress (gdbarch, pst->textlow),
5973                           paddress (gdbarch, pst->texthigh),
5974                           pst->n_global_syms, pst->n_static_syms);
5975     }
5976 }
5977
5978 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
5979    Process compilation unit THIS_CU for a psymtab.  */
5980
5981 static void
5982 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
5983                            int want_partial_unit,
5984                            enum language pretend_language)
5985 {
5986   struct process_psymtab_comp_unit_data info;
5987
5988   /* If this compilation unit was already read in, free the
5989      cached copy in order to read it in again.  This is
5990      necessary because we skipped some symbols when we first
5991      read in the compilation unit (see load_partial_dies).
5992      This problem could be avoided, but the benefit is unclear.  */
5993   if (this_cu->cu != NULL)
5994     free_one_cached_comp_unit (this_cu);
5995
5996   gdb_assert (! this_cu->is_debug_types);
5997   info.want_partial_unit = want_partial_unit;
5998   info.pretend_language = pretend_language;
5999   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6000                            process_psymtab_comp_unit_reader,
6001                            &info);
6002
6003   /* Age out any secondary CUs.  */
6004   age_cached_comp_units ();
6005 }
6006
6007 /* Reader function for build_type_psymtabs.  */
6008
6009 static void
6010 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6011                             const gdb_byte *info_ptr,
6012                             struct die_info *type_unit_die,
6013                             int has_children,
6014                             void *data)
6015 {
6016   struct objfile *objfile = dwarf2_per_objfile->objfile;
6017   struct dwarf2_cu *cu = reader->cu;
6018   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6019   struct signatured_type *sig_type;
6020   struct type_unit_group *tu_group;
6021   struct attribute *attr;
6022   struct partial_die_info *first_die;
6023   CORE_ADDR lowpc, highpc;
6024   struct partial_symtab *pst;
6025
6026   gdb_assert (data == NULL);
6027   gdb_assert (per_cu->is_debug_types);
6028   sig_type = (struct signatured_type *) per_cu;
6029
6030   if (! has_children)
6031     return;
6032
6033   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6034   tu_group = get_type_unit_group (cu, attr);
6035
6036   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6037
6038   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6039   cu->list_in_scope = &file_symbols;
6040   pst = create_partial_symtab (per_cu, "");
6041   pst->anonymous = 1;
6042
6043   first_die = load_partial_dies (reader, info_ptr, 1);
6044
6045   lowpc = (CORE_ADDR) -1;
6046   highpc = (CORE_ADDR) 0;
6047   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6048
6049   pst->n_global_syms = objfile->global_psymbols.next -
6050     (objfile->global_psymbols.list + pst->globals_offset);
6051   pst->n_static_syms = objfile->static_psymbols.next -
6052     (objfile->static_psymbols.list + pst->statics_offset);
6053   sort_pst_symbols (objfile, pst);
6054 }
6055
6056 /* Struct used to sort TUs by their abbreviation table offset.  */
6057
6058 struct tu_abbrev_offset
6059 {
6060   struct signatured_type *sig_type;
6061   sect_offset abbrev_offset;
6062 };
6063
6064 /* Helper routine for build_type_psymtabs_1, passed to qsort.  */
6065
6066 static int
6067 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6068 {
6069   const struct tu_abbrev_offset * const *a = ap;
6070   const struct tu_abbrev_offset * const *b = bp;
6071   unsigned int aoff = (*a)->abbrev_offset.sect_off;
6072   unsigned int boff = (*b)->abbrev_offset.sect_off;
6073
6074   return (aoff > boff) - (aoff < boff);
6075 }
6076
6077 /* Efficiently read all the type units.
6078    This does the bulk of the work for build_type_psymtabs.
6079
6080    The efficiency is because we sort TUs by the abbrev table they use and
6081    only read each abbrev table once.  In one program there are 200K TUs
6082    sharing 8K abbrev tables.
6083
6084    The main purpose of this function is to support building the
6085    dwarf2_per_objfile->type_unit_groups table.
6086    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6087    can collapse the search space by grouping them by stmt_list.
6088    The savings can be significant, in the same program from above the 200K TUs
6089    share 8K stmt_list tables.
6090
6091    FUNC is expected to call get_type_unit_group, which will create the
6092    struct type_unit_group if necessary and add it to
6093    dwarf2_per_objfile->type_unit_groups.  */
6094
6095 static void
6096 build_type_psymtabs_1 (void)
6097 {
6098   struct objfile *objfile = dwarf2_per_objfile->objfile;
6099   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6100   struct cleanup *cleanups;
6101   struct abbrev_table *abbrev_table;
6102   sect_offset abbrev_offset;
6103   struct tu_abbrev_offset *sorted_by_abbrev;
6104   struct type_unit_group **iter;
6105   int i;
6106
6107   /* It's up to the caller to not call us multiple times.  */
6108   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6109
6110   if (dwarf2_per_objfile->n_type_units == 0)
6111     return;
6112
6113   /* TUs typically share abbrev tables, and there can be way more TUs than
6114      abbrev tables.  Sort by abbrev table to reduce the number of times we
6115      read each abbrev table in.
6116      Alternatives are to punt or to maintain a cache of abbrev tables.
6117      This is simpler and efficient enough for now.
6118
6119      Later we group TUs by their DW_AT_stmt_list value (as this defines the
6120      symtab to use).  Typically TUs with the same abbrev offset have the same
6121      stmt_list value too so in practice this should work well.
6122
6123      The basic algorithm here is:
6124
6125       sort TUs by abbrev table
6126       for each TU with same abbrev table:
6127         read abbrev table if first user
6128         read TU top level DIE
6129           [IWBN if DWO skeletons had DW_AT_stmt_list]
6130         call FUNC  */
6131
6132   if (dwarf2_read_debug)
6133     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6134
6135   /* Sort in a separate table to maintain the order of all_type_units
6136      for .gdb_index: TU indices directly index all_type_units.  */
6137   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6138                               dwarf2_per_objfile->n_type_units);
6139   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6140     {
6141       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6142
6143       sorted_by_abbrev[i].sig_type = sig_type;
6144       sorted_by_abbrev[i].abbrev_offset =
6145         read_abbrev_offset (sig_type->per_cu.section,
6146                             sig_type->per_cu.offset);
6147     }
6148   cleanups = make_cleanup (xfree, sorted_by_abbrev);
6149   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6150          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6151
6152   abbrev_offset.sect_off = ~(unsigned) 0;
6153   abbrev_table = NULL;
6154   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6155
6156   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6157     {
6158       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6159
6160       /* Switch to the next abbrev table if necessary.  */
6161       if (abbrev_table == NULL
6162           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6163         {
6164           if (abbrev_table != NULL)
6165             {
6166               abbrev_table_free (abbrev_table);
6167               /* Reset to NULL in case abbrev_table_read_table throws
6168                  an error: abbrev_table_free_cleanup will get called.  */
6169               abbrev_table = NULL;
6170             }
6171           abbrev_offset = tu->abbrev_offset;
6172           abbrev_table =
6173             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6174                                      abbrev_offset);
6175           ++tu_stats->nr_uniq_abbrev_tables;
6176         }
6177
6178       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6179                                build_type_psymtabs_reader, NULL);
6180     }
6181
6182   do_cleanups (cleanups);
6183 }
6184
6185 /* Print collected type unit statistics.  */
6186
6187 static void
6188 print_tu_stats (void)
6189 {
6190   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6191
6192   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6193   fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
6194                       dwarf2_per_objfile->n_type_units);
6195   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
6196                       tu_stats->nr_uniq_abbrev_tables);
6197   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
6198                       tu_stats->nr_symtabs);
6199   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
6200                       tu_stats->nr_symtab_sharers);
6201   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
6202                       tu_stats->nr_stmt_less_type_units);
6203   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
6204                       tu_stats->nr_all_type_units_reallocs);
6205 }
6206
6207 /* Traversal function for build_type_psymtabs.  */
6208
6209 static int
6210 build_type_psymtab_dependencies (void **slot, void *info)
6211 {
6212   struct objfile *objfile = dwarf2_per_objfile->objfile;
6213   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6214   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6215   struct partial_symtab *pst = per_cu->v.psymtab;
6216   int len = VEC_length (sig_type_ptr, tu_group->tus);
6217   struct signatured_type *iter;
6218   int i;
6219
6220   gdb_assert (len > 0);
6221   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6222
6223   pst->number_of_dependencies = len;
6224   pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6225                                      len * sizeof (struct psymtab *));
6226   for (i = 0;
6227        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6228        ++i)
6229     {
6230       gdb_assert (iter->per_cu.is_debug_types);
6231       pst->dependencies[i] = iter->per_cu.v.psymtab;
6232       iter->type_unit_group = tu_group;
6233     }
6234
6235   VEC_free (sig_type_ptr, tu_group->tus);
6236
6237   return 1;
6238 }
6239
6240 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6241    Build partial symbol tables for the .debug_types comp-units.  */
6242
6243 static void
6244 build_type_psymtabs (struct objfile *objfile)
6245 {
6246   if (! create_all_type_units (objfile))
6247     return;
6248
6249   build_type_psymtabs_1 ();
6250 }
6251
6252 /* Traversal function for process_skeletonless_type_unit.
6253    Read a TU in a DWO file and build partial symbols for it.  */
6254
6255 static int
6256 process_skeletonless_type_unit (void **slot, void *info)
6257 {
6258   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6259   struct objfile *objfile = info;
6260   struct signatured_type find_entry, *entry;
6261
6262   /* If this TU doesn't exist in the global table, add it and read it in.  */
6263
6264   if (dwarf2_per_objfile->signatured_types == NULL)
6265     {
6266       dwarf2_per_objfile->signatured_types
6267         = allocate_signatured_type_table (objfile);
6268     }
6269
6270   find_entry.signature = dwo_unit->signature;
6271   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6272                          INSERT);
6273   /* If we've already seen this type there's nothing to do.  What's happening
6274      is we're doing our own version of comdat-folding here.  */
6275   if (*slot != NULL)
6276     return 1;
6277
6278   /* This does the job that create_all_type_units would have done for
6279      this TU.  */
6280   entry = add_type_unit (dwo_unit->signature, slot);
6281   fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6282   *slot = entry;
6283
6284   /* This does the job that build_type_psymtabs_1 would have done.  */
6285   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6286                            build_type_psymtabs_reader, NULL);
6287
6288   return 1;
6289 }
6290
6291 /* Traversal function for process_skeletonless_type_units.  */
6292
6293 static int
6294 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6295 {
6296   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6297
6298   if (dwo_file->tus != NULL)
6299     {
6300       htab_traverse_noresize (dwo_file->tus,
6301                               process_skeletonless_type_unit, info);
6302     }
6303
6304   return 1;
6305 }
6306
6307 /* Scan all TUs of DWO files, verifying we've processed them.
6308    This is needed in case a TU was emitted without its skeleton.
6309    Note: This can't be done until we know what all the DWO files are.  */
6310
6311 static void
6312 process_skeletonless_type_units (struct objfile *objfile)
6313 {
6314   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
6315   if (get_dwp_file () == NULL
6316       && dwarf2_per_objfile->dwo_files != NULL)
6317     {
6318       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6319                               process_dwo_file_for_skeletonless_type_units,
6320                               objfile);
6321     }
6322 }
6323
6324 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6325
6326 static void
6327 psymtabs_addrmap_cleanup (void *o)
6328 {
6329   struct objfile *objfile = o;
6330
6331   objfile->psymtabs_addrmap = NULL;
6332 }
6333
6334 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6335
6336 static void
6337 set_partial_user (struct objfile *objfile)
6338 {
6339   int i;
6340
6341   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6342     {
6343       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6344       struct partial_symtab *pst = per_cu->v.psymtab;
6345       int j;
6346
6347       if (pst == NULL)
6348         continue;
6349
6350       for (j = 0; j < pst->number_of_dependencies; ++j)
6351         {
6352           /* Set the 'user' field only if it is not already set.  */
6353           if (pst->dependencies[j]->user == NULL)
6354             pst->dependencies[j]->user = pst;
6355         }
6356     }
6357 }
6358
6359 /* Build the partial symbol table by doing a quick pass through the
6360    .debug_info and .debug_abbrev sections.  */
6361
6362 static void
6363 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6364 {
6365   struct cleanup *back_to, *addrmap_cleanup;
6366   struct obstack temp_obstack;
6367   int i;
6368
6369   if (dwarf2_read_debug)
6370     {
6371       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6372                           objfile_name (objfile));
6373     }
6374
6375   dwarf2_per_objfile->reading_partial_symbols = 1;
6376
6377   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6378
6379   /* Any cached compilation units will be linked by the per-objfile
6380      read_in_chain.  Make sure to free them when we're done.  */
6381   back_to = make_cleanup (free_cached_comp_units, NULL);
6382
6383   build_type_psymtabs (objfile);
6384
6385   create_all_comp_units (objfile);
6386
6387   /* Create a temporary address map on a temporary obstack.  We later
6388      copy this to the final obstack.  */
6389   obstack_init (&temp_obstack);
6390   make_cleanup_obstack_free (&temp_obstack);
6391   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6392   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6393
6394   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6395     {
6396       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6397
6398       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6399     }
6400
6401   /* This has to wait until we read the CUs, we need the list of DWOs.  */
6402   process_skeletonless_type_units (objfile);
6403
6404   /* Now that all TUs have been processed we can fill in the dependencies.  */
6405   if (dwarf2_per_objfile->type_unit_groups != NULL)
6406     {
6407       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6408                               build_type_psymtab_dependencies, NULL);
6409     }
6410
6411   if (dwarf2_read_debug)
6412     print_tu_stats ();
6413
6414   set_partial_user (objfile);
6415
6416   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6417                                                     &objfile->objfile_obstack);
6418   discard_cleanups (addrmap_cleanup);
6419
6420   do_cleanups (back_to);
6421
6422   if (dwarf2_read_debug)
6423     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6424                         objfile_name (objfile));
6425 }
6426
6427 /* die_reader_func for load_partial_comp_unit.  */
6428
6429 static void
6430 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6431                                const gdb_byte *info_ptr,
6432                                struct die_info *comp_unit_die,
6433                                int has_children,
6434                                void *data)
6435 {
6436   struct dwarf2_cu *cu = reader->cu;
6437
6438   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6439
6440   /* Check if comp unit has_children.
6441      If so, read the rest of the partial symbols from this comp unit.
6442      If not, there's no more debug_info for this comp unit.  */
6443   if (has_children)
6444     load_partial_dies (reader, info_ptr, 0);
6445 }
6446
6447 /* Load the partial DIEs for a secondary CU into memory.
6448    This is also used when rereading a primary CU with load_all_dies.  */
6449
6450 static void
6451 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6452 {
6453   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6454                            load_partial_comp_unit_reader, NULL);
6455 }
6456
6457 static void
6458 read_comp_units_from_section (struct objfile *objfile,
6459                               struct dwarf2_section_info *section,
6460                               unsigned int is_dwz,
6461                               int *n_allocated,
6462                               int *n_comp_units,
6463                               struct dwarf2_per_cu_data ***all_comp_units)
6464 {
6465   const gdb_byte *info_ptr;
6466   bfd *abfd = get_section_bfd_owner (section);
6467
6468   if (dwarf2_read_debug)
6469     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6470                         get_section_name (section),
6471                         get_section_file_name (section));
6472
6473   dwarf2_read_section (objfile, section);
6474
6475   info_ptr = section->buffer;
6476
6477   while (info_ptr < section->buffer + section->size)
6478     {
6479       unsigned int length, initial_length_size;
6480       struct dwarf2_per_cu_data *this_cu;
6481       sect_offset offset;
6482
6483       offset.sect_off = info_ptr - section->buffer;
6484
6485       /* Read just enough information to find out where the next
6486          compilation unit is.  */
6487       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6488
6489       /* Save the compilation unit for later lookup.  */
6490       this_cu = obstack_alloc (&objfile->objfile_obstack,
6491                                sizeof (struct dwarf2_per_cu_data));
6492       memset (this_cu, 0, sizeof (*this_cu));
6493       this_cu->offset = offset;
6494       this_cu->length = length + initial_length_size;
6495       this_cu->is_dwz = is_dwz;
6496       this_cu->objfile = objfile;
6497       this_cu->section = section;
6498
6499       if (*n_comp_units == *n_allocated)
6500         {
6501           *n_allocated *= 2;
6502           *all_comp_units = xrealloc (*all_comp_units,
6503                                       *n_allocated
6504                                       * sizeof (struct dwarf2_per_cu_data *));
6505         }
6506       (*all_comp_units)[*n_comp_units] = this_cu;
6507       ++*n_comp_units;
6508
6509       info_ptr = info_ptr + this_cu->length;
6510     }
6511 }
6512
6513 /* Create a list of all compilation units in OBJFILE.
6514    This is only done for -readnow and building partial symtabs.  */
6515
6516 static void
6517 create_all_comp_units (struct objfile *objfile)
6518 {
6519   int n_allocated;
6520   int n_comp_units;
6521   struct dwarf2_per_cu_data **all_comp_units;
6522   struct dwz_file *dwz;
6523
6524   n_comp_units = 0;
6525   n_allocated = 10;
6526   all_comp_units = xmalloc (n_allocated
6527                             * sizeof (struct dwarf2_per_cu_data *));
6528
6529   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6530                                 &n_allocated, &n_comp_units, &all_comp_units);
6531
6532   dwz = dwarf2_get_dwz_file ();
6533   if (dwz != NULL)
6534     read_comp_units_from_section (objfile, &dwz->info, 1,
6535                                   &n_allocated, &n_comp_units,
6536                                   &all_comp_units);
6537
6538   dwarf2_per_objfile->all_comp_units
6539     = obstack_alloc (&objfile->objfile_obstack,
6540                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6541   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6542           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6543   xfree (all_comp_units);
6544   dwarf2_per_objfile->n_comp_units = n_comp_units;
6545 }
6546
6547 /* Process all loaded DIEs for compilation unit CU, starting at
6548    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
6549    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6550    DW_AT_ranges).  See the comments of add_partial_subprogram on how
6551    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
6552
6553 static void
6554 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6555                       CORE_ADDR *highpc, int set_addrmap,
6556                       struct dwarf2_cu *cu)
6557 {
6558   struct partial_die_info *pdi;
6559
6560   /* Now, march along the PDI's, descending into ones which have
6561      interesting children but skipping the children of the other ones,
6562      until we reach the end of the compilation unit.  */
6563
6564   pdi = first_die;
6565
6566   while (pdi != NULL)
6567     {
6568       fixup_partial_die (pdi, cu);
6569
6570       /* Anonymous namespaces or modules have no name but have interesting
6571          children, so we need to look at them.  Ditto for anonymous
6572          enums.  */
6573
6574       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6575           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6576           || pdi->tag == DW_TAG_imported_unit)
6577         {
6578           switch (pdi->tag)
6579             {
6580             case DW_TAG_subprogram:
6581               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
6582               break;
6583             case DW_TAG_constant:
6584             case DW_TAG_variable:
6585             case DW_TAG_typedef:
6586             case DW_TAG_union_type:
6587               if (!pdi->is_declaration)
6588                 {
6589                   add_partial_symbol (pdi, cu);
6590                 }
6591               break;
6592             case DW_TAG_class_type:
6593             case DW_TAG_interface_type:
6594             case DW_TAG_structure_type:
6595               if (!pdi->is_declaration)
6596                 {
6597                   add_partial_symbol (pdi, cu);
6598                 }
6599               break;
6600             case DW_TAG_enumeration_type:
6601               if (!pdi->is_declaration)
6602                 add_partial_enumeration (pdi, cu);
6603               break;
6604             case DW_TAG_base_type:
6605             case DW_TAG_subrange_type:
6606               /* File scope base type definitions are added to the partial
6607                  symbol table.  */
6608               add_partial_symbol (pdi, cu);
6609               break;
6610             case DW_TAG_namespace:
6611               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
6612               break;
6613             case DW_TAG_module:
6614               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
6615               break;
6616             case DW_TAG_imported_unit:
6617               {
6618                 struct dwarf2_per_cu_data *per_cu;
6619
6620                 /* For now we don't handle imported units in type units.  */
6621                 if (cu->per_cu->is_debug_types)
6622                   {
6623                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6624                              " supported in type units [in module %s]"),
6625                            objfile_name (cu->objfile));
6626                   }
6627
6628                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6629                                                            pdi->is_dwz,
6630                                                            cu->objfile);
6631
6632                 /* Go read the partial unit, if needed.  */
6633                 if (per_cu->v.psymtab == NULL)
6634                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6635
6636                 VEC_safe_push (dwarf2_per_cu_ptr,
6637                                cu->per_cu->imported_symtabs, per_cu);
6638               }
6639               break;
6640             case DW_TAG_imported_declaration:
6641               add_partial_symbol (pdi, cu);
6642               break;
6643             default:
6644               break;
6645             }
6646         }
6647
6648       /* If the die has a sibling, skip to the sibling.  */
6649
6650       pdi = pdi->die_sibling;
6651     }
6652 }
6653
6654 /* Functions used to compute the fully scoped name of a partial DIE.
6655
6656    Normally, this is simple.  For C++, the parent DIE's fully scoped
6657    name is concatenated with "::" and the partial DIE's name.  For
6658    Java, the same thing occurs except that "." is used instead of "::".
6659    Enumerators are an exception; they use the scope of their parent
6660    enumeration type, i.e. the name of the enumeration type is not
6661    prepended to the enumerator.
6662
6663    There are two complexities.  One is DW_AT_specification; in this
6664    case "parent" means the parent of the target of the specification,
6665    instead of the direct parent of the DIE.  The other is compilers
6666    which do not emit DW_TAG_namespace; in this case we try to guess
6667    the fully qualified name of structure types from their members'
6668    linkage names.  This must be done using the DIE's children rather
6669    than the children of any DW_AT_specification target.  We only need
6670    to do this for structures at the top level, i.e. if the target of
6671    any DW_AT_specification (if any; otherwise the DIE itself) does not
6672    have a parent.  */
6673
6674 /* Compute the scope prefix associated with PDI's parent, in
6675    compilation unit CU.  The result will be allocated on CU's
6676    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6677    field.  NULL is returned if no prefix is necessary.  */
6678 static const char *
6679 partial_die_parent_scope (struct partial_die_info *pdi,
6680                           struct dwarf2_cu *cu)
6681 {
6682   const char *grandparent_scope;
6683   struct partial_die_info *parent, *real_pdi;
6684
6685   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6686      then this means the parent of the specification DIE.  */
6687
6688   real_pdi = pdi;
6689   while (real_pdi->has_specification)
6690     real_pdi = find_partial_die (real_pdi->spec_offset,
6691                                  real_pdi->spec_is_dwz, cu);
6692
6693   parent = real_pdi->die_parent;
6694   if (parent == NULL)
6695     return NULL;
6696
6697   if (parent->scope_set)
6698     return parent->scope;
6699
6700   fixup_partial_die (parent, cu);
6701
6702   grandparent_scope = partial_die_parent_scope (parent, cu);
6703
6704   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6705      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6706      Work around this problem here.  */
6707   if (cu->language == language_cplus
6708       && parent->tag == DW_TAG_namespace
6709       && strcmp (parent->name, "::") == 0
6710       && grandparent_scope == NULL)
6711     {
6712       parent->scope = NULL;
6713       parent->scope_set = 1;
6714       return NULL;
6715     }
6716
6717   if (pdi->tag == DW_TAG_enumerator)
6718     /* Enumerators should not get the name of the enumeration as a prefix.  */
6719     parent->scope = grandparent_scope;
6720   else if (parent->tag == DW_TAG_namespace
6721       || parent->tag == DW_TAG_module
6722       || parent->tag == DW_TAG_structure_type
6723       || parent->tag == DW_TAG_class_type
6724       || parent->tag == DW_TAG_interface_type
6725       || parent->tag == DW_TAG_union_type
6726       || parent->tag == DW_TAG_enumeration_type)
6727     {
6728       if (grandparent_scope == NULL)
6729         parent->scope = parent->name;
6730       else
6731         parent->scope = typename_concat (&cu->comp_unit_obstack,
6732                                          grandparent_scope,
6733                                          parent->name, 0, cu);
6734     }
6735   else
6736     {
6737       /* FIXME drow/2004-04-01: What should we be doing with
6738          function-local names?  For partial symbols, we should probably be
6739          ignoring them.  */
6740       complaint (&symfile_complaints,
6741                  _("unhandled containing DIE tag %d for DIE at %d"),
6742                  parent->tag, pdi->offset.sect_off);
6743       parent->scope = grandparent_scope;
6744     }
6745
6746   parent->scope_set = 1;
6747   return parent->scope;
6748 }
6749
6750 /* Return the fully scoped name associated with PDI, from compilation unit
6751    CU.  The result will be allocated with malloc.  */
6752
6753 static char *
6754 partial_die_full_name (struct partial_die_info *pdi,
6755                        struct dwarf2_cu *cu)
6756 {
6757   const char *parent_scope;
6758
6759   /* If this is a template instantiation, we can not work out the
6760      template arguments from partial DIEs.  So, unfortunately, we have
6761      to go through the full DIEs.  At least any work we do building
6762      types here will be reused if full symbols are loaded later.  */
6763   if (pdi->has_template_arguments)
6764     {
6765       fixup_partial_die (pdi, cu);
6766
6767       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6768         {
6769           struct die_info *die;
6770           struct attribute attr;
6771           struct dwarf2_cu *ref_cu = cu;
6772
6773           /* DW_FORM_ref_addr is using section offset.  */
6774           attr.name = 0;
6775           attr.form = DW_FORM_ref_addr;
6776           attr.u.unsnd = pdi->offset.sect_off;
6777           die = follow_die_ref (NULL, &attr, &ref_cu);
6778
6779           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6780         }
6781     }
6782
6783   parent_scope = partial_die_parent_scope (pdi, cu);
6784   if (parent_scope == NULL)
6785     return NULL;
6786   else
6787     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6788 }
6789
6790 static void
6791 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6792 {
6793   struct objfile *objfile = cu->objfile;
6794   CORE_ADDR addr = 0;
6795   const char *actual_name = NULL;
6796   CORE_ADDR baseaddr;
6797   char *built_actual_name;
6798
6799   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6800
6801   built_actual_name = partial_die_full_name (pdi, cu);
6802   if (built_actual_name != NULL)
6803     actual_name = built_actual_name;
6804
6805   if (actual_name == NULL)
6806     actual_name = pdi->name;
6807
6808   switch (pdi->tag)
6809     {
6810     case DW_TAG_subprogram:
6811       if (pdi->is_external || cu->language == language_ada)
6812         {
6813           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6814              of the global scope.  But in Ada, we want to be able to access
6815              nested procedures globally.  So all Ada subprograms are stored
6816              in the global scope.  */
6817           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6818              mst_text, objfile); */
6819           add_psymbol_to_list (actual_name, strlen (actual_name),
6820                                built_actual_name != NULL,
6821                                VAR_DOMAIN, LOC_BLOCK,
6822                                &objfile->global_psymbols,
6823                                0, pdi->lowpc + baseaddr,
6824                                cu->language, objfile);
6825         }
6826       else
6827         {
6828           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6829              mst_file_text, objfile); */
6830           add_psymbol_to_list (actual_name, strlen (actual_name),
6831                                built_actual_name != NULL,
6832                                VAR_DOMAIN, LOC_BLOCK,
6833                                &objfile->static_psymbols,
6834                                0, pdi->lowpc + baseaddr,
6835                                cu->language, objfile);
6836         }
6837       break;
6838     case DW_TAG_constant:
6839       {
6840         struct psymbol_allocation_list *list;
6841
6842         if (pdi->is_external)
6843           list = &objfile->global_psymbols;
6844         else
6845           list = &objfile->static_psymbols;
6846         add_psymbol_to_list (actual_name, strlen (actual_name),
6847                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6848                              list, 0, 0, cu->language, objfile);
6849       }
6850       break;
6851     case DW_TAG_variable:
6852       if (pdi->d.locdesc)
6853         addr = decode_locdesc (pdi->d.locdesc, cu);
6854
6855       if (pdi->d.locdesc
6856           && addr == 0
6857           && !dwarf2_per_objfile->has_section_at_zero)
6858         {
6859           /* A global or static variable may also have been stripped
6860              out by the linker if unused, in which case its address
6861              will be nullified; do not add such variables into partial
6862              symbol table then.  */
6863         }
6864       else if (pdi->is_external)
6865         {
6866           /* Global Variable.
6867              Don't enter into the minimal symbol tables as there is
6868              a minimal symbol table entry from the ELF symbols already.
6869              Enter into partial symbol table if it has a location
6870              descriptor or a type.
6871              If the location descriptor is missing, new_symbol will create
6872              a LOC_UNRESOLVED symbol, the address of the variable will then
6873              be determined from the minimal symbol table whenever the variable
6874              is referenced.
6875              The address for the partial symbol table entry is not
6876              used by GDB, but it comes in handy for debugging partial symbol
6877              table building.  */
6878
6879           if (pdi->d.locdesc || pdi->has_type)
6880             add_psymbol_to_list (actual_name, strlen (actual_name),
6881                                  built_actual_name != NULL,
6882                                  VAR_DOMAIN, LOC_STATIC,
6883                                  &objfile->global_psymbols,
6884                                  0, addr + baseaddr,
6885                                  cu->language, objfile);
6886         }
6887       else
6888         {
6889           /* Static Variable.  Skip symbols without location descriptors.  */
6890           if (pdi->d.locdesc == NULL)
6891             {
6892               xfree (built_actual_name);
6893               return;
6894             }
6895           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
6896              mst_file_data, objfile); */
6897           add_psymbol_to_list (actual_name, strlen (actual_name),
6898                                built_actual_name != NULL,
6899                                VAR_DOMAIN, LOC_STATIC,
6900                                &objfile->static_psymbols,
6901                                0, addr + baseaddr,
6902                                cu->language, objfile);
6903         }
6904       break;
6905     case DW_TAG_typedef:
6906     case DW_TAG_base_type:
6907     case DW_TAG_subrange_type:
6908       add_psymbol_to_list (actual_name, strlen (actual_name),
6909                            built_actual_name != NULL,
6910                            VAR_DOMAIN, LOC_TYPEDEF,
6911                            &objfile->static_psymbols,
6912                            0, (CORE_ADDR) 0, cu->language, objfile);
6913       break;
6914     case DW_TAG_imported_declaration:
6915     case DW_TAG_namespace:
6916       add_psymbol_to_list (actual_name, strlen (actual_name),
6917                            built_actual_name != NULL,
6918                            VAR_DOMAIN, LOC_TYPEDEF,
6919                            &objfile->global_psymbols,
6920                            0, (CORE_ADDR) 0, cu->language, objfile);
6921       break;
6922     case DW_TAG_module:
6923       add_psymbol_to_list (actual_name, strlen (actual_name),
6924                            built_actual_name != NULL,
6925                            MODULE_DOMAIN, LOC_TYPEDEF,
6926                            &objfile->global_psymbols,
6927                            0, (CORE_ADDR) 0, cu->language, objfile);
6928       break;
6929     case DW_TAG_class_type:
6930     case DW_TAG_interface_type:
6931     case DW_TAG_structure_type:
6932     case DW_TAG_union_type:
6933     case DW_TAG_enumeration_type:
6934       /* Skip external references.  The DWARF standard says in the section
6935          about "Structure, Union, and Class Type Entries": "An incomplete
6936          structure, union or class type is represented by a structure,
6937          union or class entry that does not have a byte size attribute
6938          and that has a DW_AT_declaration attribute."  */
6939       if (!pdi->has_byte_size && pdi->is_declaration)
6940         {
6941           xfree (built_actual_name);
6942           return;
6943         }
6944
6945       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
6946          static vs. global.  */
6947       add_psymbol_to_list (actual_name, strlen (actual_name),
6948                            built_actual_name != NULL,
6949                            STRUCT_DOMAIN, LOC_TYPEDEF,
6950                            (cu->language == language_cplus
6951                             || cu->language == language_java)
6952                            ? &objfile->global_psymbols
6953                            : &objfile->static_psymbols,
6954                            0, (CORE_ADDR) 0, cu->language, objfile);
6955
6956       break;
6957     case DW_TAG_enumerator:
6958       add_psymbol_to_list (actual_name, strlen (actual_name),
6959                            built_actual_name != NULL,
6960                            VAR_DOMAIN, LOC_CONST,
6961                            (cu->language == language_cplus
6962                             || cu->language == language_java)
6963                            ? &objfile->global_psymbols
6964                            : &objfile->static_psymbols,
6965                            0, (CORE_ADDR) 0, cu->language, objfile);
6966       break;
6967     default:
6968       break;
6969     }
6970
6971   xfree (built_actual_name);
6972 }
6973
6974 /* Read a partial die corresponding to a namespace; also, add a symbol
6975    corresponding to that namespace to the symbol table.  NAMESPACE is
6976    the name of the enclosing namespace.  */
6977
6978 static void
6979 add_partial_namespace (struct partial_die_info *pdi,
6980                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
6981                        int set_addrmap, struct dwarf2_cu *cu)
6982 {
6983   /* Add a symbol for the namespace.  */
6984
6985   add_partial_symbol (pdi, cu);
6986
6987   /* Now scan partial symbols in that namespace.  */
6988
6989   if (pdi->has_children)
6990     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
6991 }
6992
6993 /* Read a partial die corresponding to a Fortran module.  */
6994
6995 static void
6996 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
6997                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
6998 {
6999   /* Add a symbol for the namespace.  */
7000
7001   add_partial_symbol (pdi, cu);
7002
7003   /* Now scan partial symbols in that module.  */
7004
7005   if (pdi->has_children)
7006     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7007 }
7008
7009 /* Read a partial die corresponding to a subprogram and create a partial
7010    symbol for that subprogram.  When the CU language allows it, this
7011    routine also defines a partial symbol for each nested subprogram
7012    that this subprogram contains.  If SET_ADDRMAP is true, record the
7013    covered ranges in the addrmap.  Set *LOWPC and *HIGHPC to the lowest
7014    and highest PC values found in PDI.
7015
7016    PDI may also be a lexical block, in which case we simply search
7017    recursively for subprograms defined inside that lexical block.
7018    Again, this is only performed when the CU language allows this
7019    type of definitions.  */
7020
7021 static void
7022 add_partial_subprogram (struct partial_die_info *pdi,
7023                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
7024                         int set_addrmap, struct dwarf2_cu *cu)
7025 {
7026   if (pdi->tag == DW_TAG_subprogram)
7027     {
7028       if (pdi->has_pc_info)
7029         {
7030           if (pdi->lowpc < *lowpc)
7031             *lowpc = pdi->lowpc;
7032           if (pdi->highpc > *highpc)
7033             *highpc = pdi->highpc;
7034           if (set_addrmap)
7035             {
7036               CORE_ADDR baseaddr;
7037               struct objfile *objfile = cu->objfile;
7038
7039               baseaddr = ANOFFSET (objfile->section_offsets,
7040                                    SECT_OFF_TEXT (objfile));
7041               addrmap_set_empty (objfile->psymtabs_addrmap,
7042                                  pdi->lowpc + baseaddr,
7043                                  pdi->highpc - 1 + baseaddr,
7044                                  cu->per_cu->v.psymtab);
7045             }
7046         }
7047
7048       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7049         {
7050           if (!pdi->is_declaration)
7051             /* Ignore subprogram DIEs that do not have a name, they are
7052                illegal.  Do not emit a complaint at this point, we will
7053                do so when we convert this psymtab into a symtab.  */
7054             if (pdi->name)
7055               add_partial_symbol (pdi, cu);
7056         }
7057     }
7058
7059   if (! pdi->has_children)
7060     return;
7061
7062   if (cu->language == language_ada)
7063     {
7064       pdi = pdi->die_child;
7065       while (pdi != NULL)
7066         {
7067           fixup_partial_die (pdi, cu);
7068           if (pdi->tag == DW_TAG_subprogram
7069               || pdi->tag == DW_TAG_lexical_block)
7070             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
7071           pdi = pdi->die_sibling;
7072         }
7073     }
7074 }
7075
7076 /* Read a partial die corresponding to an enumeration type.  */
7077
7078 static void
7079 add_partial_enumeration (struct partial_die_info *enum_pdi,
7080                          struct dwarf2_cu *cu)
7081 {
7082   struct partial_die_info *pdi;
7083
7084   if (enum_pdi->name != NULL)
7085     add_partial_symbol (enum_pdi, cu);
7086
7087   pdi = enum_pdi->die_child;
7088   while (pdi)
7089     {
7090       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
7091         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
7092       else
7093         add_partial_symbol (pdi, cu);
7094       pdi = pdi->die_sibling;
7095     }
7096 }
7097
7098 /* Return the initial uleb128 in the die at INFO_PTR.  */
7099
7100 static unsigned int
7101 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
7102 {
7103   unsigned int bytes_read;
7104
7105   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7106 }
7107
7108 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7109    Return the corresponding abbrev, or NULL if the number is zero (indicating
7110    an empty DIE).  In either case *BYTES_READ will be set to the length of
7111    the initial number.  */
7112
7113 static struct abbrev_info *
7114 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
7115                  struct dwarf2_cu *cu)
7116 {
7117   bfd *abfd = cu->objfile->obfd;
7118   unsigned int abbrev_number;
7119   struct abbrev_info *abbrev;
7120
7121   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7122
7123   if (abbrev_number == 0)
7124     return NULL;
7125
7126   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
7127   if (!abbrev)
7128     {
7129       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
7130              abbrev_number, bfd_get_filename (abfd));
7131     }
7132
7133   return abbrev;
7134 }
7135
7136 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7137    Returns a pointer to the end of a series of DIEs, terminated by an empty
7138    DIE.  Any children of the skipped DIEs will also be skipped.  */
7139
7140 static const gdb_byte *
7141 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
7142 {
7143   struct dwarf2_cu *cu = reader->cu;
7144   struct abbrev_info *abbrev;
7145   unsigned int bytes_read;
7146
7147   while (1)
7148     {
7149       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7150       if (abbrev == NULL)
7151         return info_ptr + bytes_read;
7152       else
7153         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7154     }
7155 }
7156
7157 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7158    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7159    abbrev corresponding to that skipped uleb128 should be passed in
7160    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7161    children.  */
7162
7163 static const gdb_byte *
7164 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7165               struct abbrev_info *abbrev)
7166 {
7167   unsigned int bytes_read;
7168   struct attribute attr;
7169   bfd *abfd = reader->abfd;
7170   struct dwarf2_cu *cu = reader->cu;
7171   const gdb_byte *buffer = reader->buffer;
7172   const gdb_byte *buffer_end = reader->buffer_end;
7173   const gdb_byte *start_info_ptr = info_ptr;
7174   unsigned int form, i;
7175
7176   for (i = 0; i < abbrev->num_attrs; i++)
7177     {
7178       /* The only abbrev we care about is DW_AT_sibling.  */
7179       if (abbrev->attrs[i].name == DW_AT_sibling)
7180         {
7181           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7182           if (attr.form == DW_FORM_ref_addr)
7183             complaint (&symfile_complaints,
7184                        _("ignoring absolute DW_AT_sibling"));
7185           else
7186             {
7187               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7188               const gdb_byte *sibling_ptr = buffer + off;
7189
7190               if (sibling_ptr < info_ptr)
7191                 complaint (&symfile_complaints,
7192                            _("DW_AT_sibling points backwards"));
7193               else if (sibling_ptr > reader->buffer_end)
7194                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
7195               else
7196                 return sibling_ptr;
7197             }
7198         }
7199
7200       /* If it isn't DW_AT_sibling, skip this attribute.  */
7201       form = abbrev->attrs[i].form;
7202     skip_attribute:
7203       switch (form)
7204         {
7205         case DW_FORM_ref_addr:
7206           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7207              and later it is offset sized.  */
7208           if (cu->header.version == 2)
7209             info_ptr += cu->header.addr_size;
7210           else
7211             info_ptr += cu->header.offset_size;
7212           break;
7213         case DW_FORM_GNU_ref_alt:
7214           info_ptr += cu->header.offset_size;
7215           break;
7216         case DW_FORM_addr:
7217           info_ptr += cu->header.addr_size;
7218           break;
7219         case DW_FORM_data1:
7220         case DW_FORM_ref1:
7221         case DW_FORM_flag:
7222           info_ptr += 1;
7223           break;
7224         case DW_FORM_flag_present:
7225           break;
7226         case DW_FORM_data2:
7227         case DW_FORM_ref2:
7228           info_ptr += 2;
7229           break;
7230         case DW_FORM_data4:
7231         case DW_FORM_ref4:
7232           info_ptr += 4;
7233           break;
7234         case DW_FORM_data8:
7235         case DW_FORM_ref8:
7236         case DW_FORM_ref_sig8:
7237           info_ptr += 8;
7238           break;
7239         case DW_FORM_string:
7240           read_direct_string (abfd, info_ptr, &bytes_read);
7241           info_ptr += bytes_read;
7242           break;
7243         case DW_FORM_sec_offset:
7244         case DW_FORM_strp:
7245         case DW_FORM_GNU_strp_alt:
7246           info_ptr += cu->header.offset_size;
7247           break;
7248         case DW_FORM_exprloc:
7249         case DW_FORM_block:
7250           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7251           info_ptr += bytes_read;
7252           break;
7253         case DW_FORM_block1:
7254           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7255           break;
7256         case DW_FORM_block2:
7257           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7258           break;
7259         case DW_FORM_block4:
7260           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7261           break;
7262         case DW_FORM_sdata:
7263         case DW_FORM_udata:
7264         case DW_FORM_ref_udata:
7265         case DW_FORM_GNU_addr_index:
7266         case DW_FORM_GNU_str_index:
7267           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7268           break;
7269         case DW_FORM_indirect:
7270           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7271           info_ptr += bytes_read;
7272           /* We need to continue parsing from here, so just go back to
7273              the top.  */
7274           goto skip_attribute;
7275
7276         default:
7277           error (_("Dwarf Error: Cannot handle %s "
7278                    "in DWARF reader [in module %s]"),
7279                  dwarf_form_name (form),
7280                  bfd_get_filename (abfd));
7281         }
7282     }
7283
7284   if (abbrev->has_children)
7285     return skip_children (reader, info_ptr);
7286   else
7287     return info_ptr;
7288 }
7289
7290 /* Locate ORIG_PDI's sibling.
7291    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7292
7293 static const gdb_byte *
7294 locate_pdi_sibling (const struct die_reader_specs *reader,
7295                     struct partial_die_info *orig_pdi,
7296                     const gdb_byte *info_ptr)
7297 {
7298   /* Do we know the sibling already?  */
7299
7300   if (orig_pdi->sibling)
7301     return orig_pdi->sibling;
7302
7303   /* Are there any children to deal with?  */
7304
7305   if (!orig_pdi->has_children)
7306     return info_ptr;
7307
7308   /* Skip the children the long way.  */
7309
7310   return skip_children (reader, info_ptr);
7311 }
7312
7313 /* Expand this partial symbol table into a full symbol table.  SELF is
7314    not NULL.  */
7315
7316 static void
7317 dwarf2_read_symtab (struct partial_symtab *self,
7318                     struct objfile *objfile)
7319 {
7320   if (self->readin)
7321     {
7322       warning (_("bug: psymtab for %s is already read in."),
7323                self->filename);
7324     }
7325   else
7326     {
7327       if (info_verbose)
7328         {
7329           printf_filtered (_("Reading in symbols for %s..."),
7330                            self->filename);
7331           gdb_flush (gdb_stdout);
7332         }
7333
7334       /* Restore our global data.  */
7335       dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
7336
7337       /* If this psymtab is constructed from a debug-only objfile, the
7338          has_section_at_zero flag will not necessarily be correct.  We
7339          can get the correct value for this flag by looking at the data
7340          associated with the (presumably stripped) associated objfile.  */
7341       if (objfile->separate_debug_objfile_backlink)
7342         {
7343           struct dwarf2_per_objfile *dpo_backlink
7344             = objfile_data (objfile->separate_debug_objfile_backlink,
7345                             dwarf2_objfile_data_key);
7346
7347           dwarf2_per_objfile->has_section_at_zero
7348             = dpo_backlink->has_section_at_zero;
7349         }
7350
7351       dwarf2_per_objfile->reading_partial_symbols = 0;
7352
7353       psymtab_to_symtab_1 (self);
7354
7355       /* Finish up the debug error message.  */
7356       if (info_verbose)
7357         printf_filtered (_("done.\n"));
7358     }
7359
7360   process_cu_includes ();
7361 }
7362 \f
7363 /* Reading in full CUs.  */
7364
7365 /* Add PER_CU to the queue.  */
7366
7367 static void
7368 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7369                  enum language pretend_language)
7370 {
7371   struct dwarf2_queue_item *item;
7372
7373   per_cu->queued = 1;
7374   item = xmalloc (sizeof (*item));
7375   item->per_cu = per_cu;
7376   item->pretend_language = pretend_language;
7377   item->next = NULL;
7378
7379   if (dwarf2_queue == NULL)
7380     dwarf2_queue = item;
7381   else
7382     dwarf2_queue_tail->next = item;
7383
7384   dwarf2_queue_tail = item;
7385 }
7386
7387 /* If PER_CU is not yet queued, add it to the queue.
7388    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7389    dependency.
7390    The result is non-zero if PER_CU was queued, otherwise the result is zero
7391    meaning either PER_CU is already queued or it is already loaded.
7392
7393    N.B. There is an invariant here that if a CU is queued then it is loaded.
7394    The caller is required to load PER_CU if we return non-zero.  */
7395
7396 static int
7397 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7398                        struct dwarf2_per_cu_data *per_cu,
7399                        enum language pretend_language)
7400 {
7401   /* We may arrive here during partial symbol reading, if we need full
7402      DIEs to process an unusual case (e.g. template arguments).  Do
7403      not queue PER_CU, just tell our caller to load its DIEs.  */
7404   if (dwarf2_per_objfile->reading_partial_symbols)
7405     {
7406       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7407         return 1;
7408       return 0;
7409     }
7410
7411   /* Mark the dependence relation so that we don't flush PER_CU
7412      too early.  */
7413   if (dependent_cu != NULL)
7414     dwarf2_add_dependence (dependent_cu, per_cu);
7415
7416   /* If it's already on the queue, we have nothing to do.  */
7417   if (per_cu->queued)
7418     return 0;
7419
7420   /* If the compilation unit is already loaded, just mark it as
7421      used.  */
7422   if (per_cu->cu != NULL)
7423     {
7424       per_cu->cu->last_used = 0;
7425       return 0;
7426     }
7427
7428   /* Add it to the queue.  */
7429   queue_comp_unit (per_cu, pretend_language);
7430
7431   return 1;
7432 }
7433
7434 /* Process the queue.  */
7435
7436 static void
7437 process_queue (void)
7438 {
7439   struct dwarf2_queue_item *item, *next_item;
7440
7441   if (dwarf2_read_debug)
7442     {
7443       fprintf_unfiltered (gdb_stdlog,
7444                           "Expanding one or more symtabs of objfile %s ...\n",
7445                           objfile_name (dwarf2_per_objfile->objfile));
7446     }
7447
7448   /* The queue starts out with one item, but following a DIE reference
7449      may load a new CU, adding it to the end of the queue.  */
7450   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7451     {
7452       if (dwarf2_per_objfile->using_index
7453           ? !item->per_cu->v.quick->symtab
7454           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7455         {
7456           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7457           unsigned int debug_print_threshold;
7458           char buf[100];
7459
7460           if (per_cu->is_debug_types)
7461             {
7462               struct signatured_type *sig_type =
7463                 (struct signatured_type *) per_cu;
7464
7465               sprintf (buf, "TU %s at offset 0x%x",
7466                        hex_string (sig_type->signature),
7467                        per_cu->offset.sect_off);
7468               /* There can be 100s of TUs.
7469                  Only print them in verbose mode.  */
7470               debug_print_threshold = 2;
7471             }
7472           else
7473             {
7474               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7475               debug_print_threshold = 1;
7476             }
7477
7478           if (dwarf2_read_debug >= debug_print_threshold)
7479             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7480
7481           if (per_cu->is_debug_types)
7482             process_full_type_unit (per_cu, item->pretend_language);
7483           else
7484             process_full_comp_unit (per_cu, item->pretend_language);
7485
7486           if (dwarf2_read_debug >= debug_print_threshold)
7487             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7488         }
7489
7490       item->per_cu->queued = 0;
7491       next_item = item->next;
7492       xfree (item);
7493     }
7494
7495   dwarf2_queue_tail = NULL;
7496
7497   if (dwarf2_read_debug)
7498     {
7499       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7500                           objfile_name (dwarf2_per_objfile->objfile));
7501     }
7502 }
7503
7504 /* Free all allocated queue entries.  This function only releases anything if
7505    an error was thrown; if the queue was processed then it would have been
7506    freed as we went along.  */
7507
7508 static void
7509 dwarf2_release_queue (void *dummy)
7510 {
7511   struct dwarf2_queue_item *item, *last;
7512
7513   item = dwarf2_queue;
7514   while (item)
7515     {
7516       /* Anything still marked queued is likely to be in an
7517          inconsistent state, so discard it.  */
7518       if (item->per_cu->queued)
7519         {
7520           if (item->per_cu->cu != NULL)
7521             free_one_cached_comp_unit (item->per_cu);
7522           item->per_cu->queued = 0;
7523         }
7524
7525       last = item;
7526       item = item->next;
7527       xfree (last);
7528     }
7529
7530   dwarf2_queue = dwarf2_queue_tail = NULL;
7531 }
7532
7533 /* Read in full symbols for PST, and anything it depends on.  */
7534
7535 static void
7536 psymtab_to_symtab_1 (struct partial_symtab *pst)
7537 {
7538   struct dwarf2_per_cu_data *per_cu;
7539   int i;
7540
7541   if (pst->readin)
7542     return;
7543
7544   for (i = 0; i < pst->number_of_dependencies; i++)
7545     if (!pst->dependencies[i]->readin
7546         && pst->dependencies[i]->user == NULL)
7547       {
7548         /* Inform about additional files that need to be read in.  */
7549         if (info_verbose)
7550           {
7551             /* FIXME: i18n: Need to make this a single string.  */
7552             fputs_filtered (" ", gdb_stdout);
7553             wrap_here ("");
7554             fputs_filtered ("and ", gdb_stdout);
7555             wrap_here ("");
7556             printf_filtered ("%s...", pst->dependencies[i]->filename);
7557             wrap_here ("");     /* Flush output.  */
7558             gdb_flush (gdb_stdout);
7559           }
7560         psymtab_to_symtab_1 (pst->dependencies[i]);
7561       }
7562
7563   per_cu = pst->read_symtab_private;
7564
7565   if (per_cu == NULL)
7566     {
7567       /* It's an include file, no symbols to read for it.
7568          Everything is in the parent symtab.  */
7569       pst->readin = 1;
7570       return;
7571     }
7572
7573   dw2_do_instantiate_symtab (per_cu);
7574 }
7575
7576 /* Trivial hash function for die_info: the hash value of a DIE
7577    is its offset in .debug_info for this objfile.  */
7578
7579 static hashval_t
7580 die_hash (const void *item)
7581 {
7582   const struct die_info *die = item;
7583
7584   return die->offset.sect_off;
7585 }
7586
7587 /* Trivial comparison function for die_info structures: two DIEs
7588    are equal if they have the same offset.  */
7589
7590 static int
7591 die_eq (const void *item_lhs, const void *item_rhs)
7592 {
7593   const struct die_info *die_lhs = item_lhs;
7594   const struct die_info *die_rhs = item_rhs;
7595
7596   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7597 }
7598
7599 /* die_reader_func for load_full_comp_unit.
7600    This is identical to read_signatured_type_reader,
7601    but is kept separate for now.  */
7602
7603 static void
7604 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7605                             const gdb_byte *info_ptr,
7606                             struct die_info *comp_unit_die,
7607                             int has_children,
7608                             void *data)
7609 {
7610   struct dwarf2_cu *cu = reader->cu;
7611   enum language *language_ptr = data;
7612
7613   gdb_assert (cu->die_hash == NULL);
7614   cu->die_hash =
7615     htab_create_alloc_ex (cu->header.length / 12,
7616                           die_hash,
7617                           die_eq,
7618                           NULL,
7619                           &cu->comp_unit_obstack,
7620                           hashtab_obstack_allocate,
7621                           dummy_obstack_deallocate);
7622
7623   if (has_children)
7624     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7625                                                   &info_ptr, comp_unit_die);
7626   cu->dies = comp_unit_die;
7627   /* comp_unit_die is not stored in die_hash, no need.  */
7628
7629   /* We try not to read any attributes in this function, because not
7630      all CUs needed for references have been loaded yet, and symbol
7631      table processing isn't initialized.  But we have to set the CU language,
7632      or we won't be able to build types correctly.
7633      Similarly, if we do not read the producer, we can not apply
7634      producer-specific interpretation.  */
7635   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7636 }
7637
7638 /* Load the DIEs associated with PER_CU into memory.  */
7639
7640 static void
7641 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7642                      enum language pretend_language)
7643 {
7644   gdb_assert (! this_cu->is_debug_types);
7645
7646   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7647                            load_full_comp_unit_reader, &pretend_language);
7648 }
7649
7650 /* Add a DIE to the delayed physname list.  */
7651
7652 static void
7653 add_to_method_list (struct type *type, int fnfield_index, int index,
7654                     const char *name, struct die_info *die,
7655                     struct dwarf2_cu *cu)
7656 {
7657   struct delayed_method_info mi;
7658   mi.type = type;
7659   mi.fnfield_index = fnfield_index;
7660   mi.index = index;
7661   mi.name = name;
7662   mi.die = die;
7663   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7664 }
7665
7666 /* A cleanup for freeing the delayed method list.  */
7667
7668 static void
7669 free_delayed_list (void *ptr)
7670 {
7671   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7672   if (cu->method_list != NULL)
7673     {
7674       VEC_free (delayed_method_info, cu->method_list);
7675       cu->method_list = NULL;
7676     }
7677 }
7678
7679 /* Compute the physnames of any methods on the CU's method list.
7680
7681    The computation of method physnames is delayed in order to avoid the
7682    (bad) condition that one of the method's formal parameters is of an as yet
7683    incomplete type.  */
7684
7685 static void
7686 compute_delayed_physnames (struct dwarf2_cu *cu)
7687 {
7688   int i;
7689   struct delayed_method_info *mi;
7690   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7691     {
7692       const char *physname;
7693       struct fn_fieldlist *fn_flp
7694         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7695       physname = dwarf2_physname (mi->name, mi->die, cu);
7696       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
7697     }
7698 }
7699
7700 /* Go objects should be embedded in a DW_TAG_module DIE,
7701    and it's not clear if/how imported objects will appear.
7702    To keep Go support simple until that's worked out,
7703    go back through what we've read and create something usable.
7704    We could do this while processing each DIE, and feels kinda cleaner,
7705    but that way is more invasive.
7706    This is to, for example, allow the user to type "p var" or "b main"
7707    without having to specify the package name, and allow lookups
7708    of module.object to work in contexts that use the expression
7709    parser.  */
7710
7711 static void
7712 fixup_go_packaging (struct dwarf2_cu *cu)
7713 {
7714   char *package_name = NULL;
7715   struct pending *list;
7716   int i;
7717
7718   for (list = global_symbols; list != NULL; list = list->next)
7719     {
7720       for (i = 0; i < list->nsyms; ++i)
7721         {
7722           struct symbol *sym = list->symbol[i];
7723
7724           if (SYMBOL_LANGUAGE (sym) == language_go
7725               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7726             {
7727               char *this_package_name = go_symbol_package_name (sym);
7728
7729               if (this_package_name == NULL)
7730                 continue;
7731               if (package_name == NULL)
7732                 package_name = this_package_name;
7733               else
7734                 {
7735                   if (strcmp (package_name, this_package_name) != 0)
7736                     complaint (&symfile_complaints,
7737                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7738                                (SYMBOL_SYMTAB (sym)
7739                           ? symtab_to_filename_for_display (SYMBOL_SYMTAB (sym))
7740                                 : objfile_name (cu->objfile)),
7741                                this_package_name, package_name);
7742                   xfree (this_package_name);
7743                 }
7744             }
7745         }
7746     }
7747
7748   if (package_name != NULL)
7749     {
7750       struct objfile *objfile = cu->objfile;
7751       const char *saved_package_name
7752         = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7753                          package_name,
7754                          strlen (package_name));
7755       struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
7756                                      saved_package_name, objfile);
7757       struct symbol *sym;
7758
7759       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7760
7761       sym = allocate_symbol (objfile);
7762       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7763       SYMBOL_SET_NAMES (sym, saved_package_name,
7764                         strlen (saved_package_name), 0, objfile);
7765       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7766          e.g., "main" finds the "main" module and not C's main().  */
7767       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7768       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7769       SYMBOL_TYPE (sym) = type;
7770
7771       add_symbol_to_list (sym, &global_symbols);
7772
7773       xfree (package_name);
7774     }
7775 }
7776
7777 /* Return the symtab for PER_CU.  This works properly regardless of
7778    whether we're using the index or psymtabs.  */
7779
7780 static struct symtab *
7781 get_symtab (struct dwarf2_per_cu_data *per_cu)
7782 {
7783   return (dwarf2_per_objfile->using_index
7784           ? per_cu->v.quick->symtab
7785           : per_cu->v.psymtab->symtab);
7786 }
7787
7788 /* A helper function for computing the list of all symbol tables
7789    included by PER_CU.  */
7790
7791 static void
7792 recursively_compute_inclusions (VEC (symtab_ptr) **result,
7793                                 htab_t all_children, htab_t all_type_symtabs,
7794                                 struct dwarf2_per_cu_data *per_cu,
7795                                 struct symtab *immediate_parent)
7796 {
7797   void **slot;
7798   int ix;
7799   struct symtab *symtab;
7800   struct dwarf2_per_cu_data *iter;
7801
7802   slot = htab_find_slot (all_children, per_cu, INSERT);
7803   if (*slot != NULL)
7804     {
7805       /* This inclusion and its children have been processed.  */
7806       return;
7807     }
7808
7809   *slot = per_cu;
7810   /* Only add a CU if it has a symbol table.  */
7811   symtab = get_symtab (per_cu);
7812   if (symtab != NULL)
7813     {
7814       /* If this is a type unit only add its symbol table if we haven't
7815          seen it yet (type unit per_cu's can share symtabs).  */
7816       if (per_cu->is_debug_types)
7817         {
7818           slot = htab_find_slot (all_type_symtabs, symtab, INSERT);
7819           if (*slot == NULL)
7820             {
7821               *slot = symtab;
7822               VEC_safe_push (symtab_ptr, *result, symtab);
7823               if (symtab->user == NULL)
7824                 symtab->user = immediate_parent;
7825             }
7826         }
7827       else
7828         {
7829           VEC_safe_push (symtab_ptr, *result, symtab);
7830           if (symtab->user == NULL)
7831             symtab->user = immediate_parent;
7832         }
7833     }
7834
7835   for (ix = 0;
7836        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7837        ++ix)
7838     {
7839       recursively_compute_inclusions (result, all_children,
7840                                       all_type_symtabs, iter, symtab);
7841     }
7842 }
7843
7844 /* Compute the symtab 'includes' fields for the symtab related to
7845    PER_CU.  */
7846
7847 static void
7848 compute_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7849 {
7850   gdb_assert (! per_cu->is_debug_types);
7851
7852   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7853     {
7854       int ix, len;
7855       struct dwarf2_per_cu_data *per_cu_iter;
7856       struct symtab *symtab_iter;
7857       VEC (symtab_ptr) *result_symtabs = NULL;
7858       htab_t all_children, all_type_symtabs;
7859       struct symtab *symtab = get_symtab (per_cu);
7860
7861       /* If we don't have a symtab, we can just skip this case.  */
7862       if (symtab == NULL)
7863         return;
7864
7865       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7866                                         NULL, xcalloc, xfree);
7867       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7868                                             NULL, xcalloc, xfree);
7869
7870       for (ix = 0;
7871            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7872                         ix, per_cu_iter);
7873            ++ix)
7874         {
7875           recursively_compute_inclusions (&result_symtabs, all_children,
7876                                           all_type_symtabs, per_cu_iter,
7877                                           symtab);
7878         }
7879
7880       /* Now we have a transitive closure of all the included symtabs.  */
7881       len = VEC_length (symtab_ptr, result_symtabs);
7882       symtab->includes
7883         = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7884                          (len + 1) * sizeof (struct symtab *));
7885       for (ix = 0;
7886            VEC_iterate (symtab_ptr, result_symtabs, ix, symtab_iter);
7887            ++ix)
7888         symtab->includes[ix] = symtab_iter;
7889       symtab->includes[len] = NULL;
7890
7891       VEC_free (symtab_ptr, result_symtabs);
7892       htab_delete (all_children);
7893       htab_delete (all_type_symtabs);
7894     }
7895 }
7896
7897 /* Compute the 'includes' field for the symtabs of all the CUs we just
7898    read.  */
7899
7900 static void
7901 process_cu_includes (void)
7902 {
7903   int ix;
7904   struct dwarf2_per_cu_data *iter;
7905
7906   for (ix = 0;
7907        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7908                     ix, iter);
7909        ++ix)
7910     {
7911       if (! iter->is_debug_types)
7912         compute_symtab_includes (iter);
7913     }
7914
7915   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
7916 }
7917
7918 /* Generate full symbol information for PER_CU, whose DIEs have
7919    already been loaded into memory.  */
7920
7921 static void
7922 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
7923                         enum language pretend_language)
7924 {
7925   struct dwarf2_cu *cu = per_cu->cu;
7926   struct objfile *objfile = per_cu->objfile;
7927   CORE_ADDR lowpc, highpc;
7928   struct symtab *symtab;
7929   struct cleanup *back_to, *delayed_list_cleanup;
7930   CORE_ADDR baseaddr;
7931   struct block *static_block;
7932
7933   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7934
7935   buildsym_init ();
7936   back_to = make_cleanup (really_free_pendings, NULL);
7937   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7938
7939   cu->list_in_scope = &file_symbols;
7940
7941   cu->language = pretend_language;
7942   cu->language_defn = language_def (cu->language);
7943
7944   /* Do line number decoding in read_file_scope () */
7945   process_die (cu->dies, cu);
7946
7947   /* For now fudge the Go package.  */
7948   if (cu->language == language_go)
7949     fixup_go_packaging (cu);
7950
7951   /* Now that we have processed all the DIEs in the CU, all the types 
7952      should be complete, and it should now be safe to compute all of the
7953      physnames.  */
7954   compute_delayed_physnames (cu);
7955   do_cleanups (delayed_list_cleanup);
7956
7957   /* Some compilers don't define a DW_AT_high_pc attribute for the
7958      compilation unit.  If the DW_AT_high_pc is missing, synthesize
7959      it, by scanning the DIE's below the compilation unit.  */
7960   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
7961
7962   static_block
7963     = end_symtab_get_static_block (highpc + baseaddr, objfile, 0, 1);
7964
7965   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
7966      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
7967      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
7968      addrmap to help ensure it has an accurate map of pc values belonging to
7969      this comp unit.  */
7970   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
7971
7972   symtab = end_symtab_from_static_block (static_block, objfile,
7973                                          SECT_OFF_TEXT (objfile), 0);
7974
7975   if (symtab != NULL)
7976     {
7977       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
7978
7979       /* Set symtab language to language from DW_AT_language.  If the
7980          compilation is from a C file generated by language preprocessors, do
7981          not set the language if it was already deduced by start_subfile.  */
7982       if (!(cu->language == language_c && symtab->language != language_c))
7983         symtab->language = cu->language;
7984
7985       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
7986          produce DW_AT_location with location lists but it can be possibly
7987          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
7988          there were bugs in prologue debug info, fixed later in GCC-4.5
7989          by "unwind info for epilogues" patch (which is not directly related).
7990
7991          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
7992          needed, it would be wrong due to missing DW_AT_producer there.
7993
7994          Still one can confuse GDB by using non-standard GCC compilation
7995          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
7996          */ 
7997       if (cu->has_loclist && gcc_4_minor >= 5)
7998         symtab->locations_valid = 1;
7999
8000       if (gcc_4_minor >= 5)
8001         symtab->epilogue_unwind_valid = 1;
8002
8003       symtab->call_site_htab = cu->call_site_htab;
8004     }
8005
8006   if (dwarf2_per_objfile->using_index)
8007     per_cu->v.quick->symtab = symtab;
8008   else
8009     {
8010       struct partial_symtab *pst = per_cu->v.psymtab;
8011       pst->symtab = symtab;
8012       pst->readin = 1;
8013     }
8014
8015   /* Push it for inclusion processing later.  */
8016   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8017
8018   do_cleanups (back_to);
8019 }
8020
8021 /* Generate full symbol information for type unit PER_CU, whose DIEs have
8022    already been loaded into memory.  */
8023
8024 static void
8025 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8026                         enum language pretend_language)
8027 {
8028   struct dwarf2_cu *cu = per_cu->cu;
8029   struct objfile *objfile = per_cu->objfile;
8030   struct symtab *symtab;
8031   struct cleanup *back_to, *delayed_list_cleanup;
8032   struct signatured_type *sig_type;
8033
8034   gdb_assert (per_cu->is_debug_types);
8035   sig_type = (struct signatured_type *) per_cu;
8036
8037   buildsym_init ();
8038   back_to = make_cleanup (really_free_pendings, NULL);
8039   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8040
8041   cu->list_in_scope = &file_symbols;
8042
8043   cu->language = pretend_language;
8044   cu->language_defn = language_def (cu->language);
8045
8046   /* The symbol tables are set up in read_type_unit_scope.  */
8047   process_die (cu->dies, cu);
8048
8049   /* For now fudge the Go package.  */
8050   if (cu->language == language_go)
8051     fixup_go_packaging (cu);
8052
8053   /* Now that we have processed all the DIEs in the CU, all the types 
8054      should be complete, and it should now be safe to compute all of the
8055      physnames.  */
8056   compute_delayed_physnames (cu);
8057   do_cleanups (delayed_list_cleanup);
8058
8059   /* TUs share symbol tables.
8060      If this is the first TU to use this symtab, complete the construction
8061      of it with end_expandable_symtab.  Otherwise, complete the addition of
8062      this TU's symbols to the existing symtab.  */
8063   if (sig_type->type_unit_group->primary_symtab == NULL)
8064     {
8065       symtab = end_expandable_symtab (0, objfile, SECT_OFF_TEXT (objfile));
8066       sig_type->type_unit_group->primary_symtab = symtab;
8067
8068       if (symtab != NULL)
8069         {
8070           /* Set symtab language to language from DW_AT_language.  If the
8071              compilation is from a C file generated by language preprocessors,
8072              do not set the language if it was already deduced by
8073              start_subfile.  */
8074           if (!(cu->language == language_c && symtab->language != language_c))
8075             symtab->language = cu->language;
8076         }
8077     }
8078   else
8079     {
8080       augment_type_symtab (objfile,
8081                            sig_type->type_unit_group->primary_symtab);
8082       symtab = sig_type->type_unit_group->primary_symtab;
8083     }
8084
8085   if (dwarf2_per_objfile->using_index)
8086     per_cu->v.quick->symtab = symtab;
8087   else
8088     {
8089       struct partial_symtab *pst = per_cu->v.psymtab;
8090       pst->symtab = symtab;
8091       pst->readin = 1;
8092     }
8093
8094   do_cleanups (back_to);
8095 }
8096
8097 /* Process an imported unit DIE.  */
8098
8099 static void
8100 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8101 {
8102   struct attribute *attr;
8103
8104   /* For now we don't handle imported units in type units.  */
8105   if (cu->per_cu->is_debug_types)
8106     {
8107       error (_("Dwarf Error: DW_TAG_imported_unit is not"
8108                " supported in type units [in module %s]"),
8109              objfile_name (cu->objfile));
8110     }
8111
8112   attr = dwarf2_attr (die, DW_AT_import, cu);
8113   if (attr != NULL)
8114     {
8115       struct dwarf2_per_cu_data *per_cu;
8116       struct symtab *imported_symtab;
8117       sect_offset offset;
8118       int is_dwz;
8119
8120       offset = dwarf2_get_ref_die_offset (attr);
8121       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8122       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
8123
8124       /* If necessary, add it to the queue and load its DIEs.  */
8125       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8126         load_full_comp_unit (per_cu, cu->language);
8127
8128       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8129                      per_cu);
8130     }
8131 }
8132
8133 /* Reset the in_process bit of a die.  */
8134
8135 static void
8136 reset_die_in_process (void *arg)
8137 {
8138   struct die_info *die = arg;
8139
8140   die->in_process = 0;
8141 }
8142
8143 /* Process a die and its children.  */
8144
8145 static void
8146 process_die (struct die_info *die, struct dwarf2_cu *cu)
8147 {
8148   struct cleanup *in_process;
8149
8150   /* We should only be processing those not already in process.  */
8151   gdb_assert (!die->in_process);
8152
8153   die->in_process = 1;
8154   in_process = make_cleanup (reset_die_in_process,die);
8155
8156   switch (die->tag)
8157     {
8158     case DW_TAG_padding:
8159       break;
8160     case DW_TAG_compile_unit:
8161     case DW_TAG_partial_unit:
8162       read_file_scope (die, cu);
8163       break;
8164     case DW_TAG_type_unit:
8165       read_type_unit_scope (die, cu);
8166       break;
8167     case DW_TAG_subprogram:
8168     case DW_TAG_inlined_subroutine:
8169       read_func_scope (die, cu);
8170       break;
8171     case DW_TAG_lexical_block:
8172     case DW_TAG_try_block:
8173     case DW_TAG_catch_block:
8174       read_lexical_block_scope (die, cu);
8175       break;
8176     case DW_TAG_GNU_call_site:
8177       read_call_site_scope (die, cu);
8178       break;
8179     case DW_TAG_class_type:
8180     case DW_TAG_interface_type:
8181     case DW_TAG_structure_type:
8182     case DW_TAG_union_type:
8183       process_structure_scope (die, cu);
8184       break;
8185     case DW_TAG_enumeration_type:
8186       process_enumeration_scope (die, cu);
8187       break;
8188
8189     /* These dies have a type, but processing them does not create
8190        a symbol or recurse to process the children.  Therefore we can
8191        read them on-demand through read_type_die.  */
8192     case DW_TAG_subroutine_type:
8193     case DW_TAG_set_type:
8194     case DW_TAG_array_type:
8195     case DW_TAG_pointer_type:
8196     case DW_TAG_ptr_to_member_type:
8197     case DW_TAG_reference_type:
8198     case DW_TAG_string_type:
8199       break;
8200
8201     case DW_TAG_base_type:
8202     case DW_TAG_subrange_type:
8203     case DW_TAG_typedef:
8204       /* Add a typedef symbol for the type definition, if it has a
8205          DW_AT_name.  */
8206       new_symbol (die, read_type_die (die, cu), cu);
8207       break;
8208     case DW_TAG_common_block:
8209       read_common_block (die, cu);
8210       break;
8211     case DW_TAG_common_inclusion:
8212       break;
8213     case DW_TAG_namespace:
8214       cu->processing_has_namespace_info = 1;
8215       read_namespace (die, cu);
8216       break;
8217     case DW_TAG_module:
8218       cu->processing_has_namespace_info = 1;
8219       read_module (die, cu);
8220       break;
8221     case DW_TAG_imported_declaration:
8222       cu->processing_has_namespace_info = 1;
8223       if (read_namespace_alias (die, cu))
8224         break;
8225       /* The declaration is not a global namespace alias: fall through.  */
8226     case DW_TAG_imported_module:
8227       cu->processing_has_namespace_info = 1;
8228       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8229                                  || cu->language != language_fortran))
8230         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8231                    dwarf_tag_name (die->tag));
8232       read_import_statement (die, cu);
8233       break;
8234
8235     case DW_TAG_imported_unit:
8236       process_imported_unit_die (die, cu);
8237       break;
8238
8239     default:
8240       new_symbol (die, NULL, cu);
8241       break;
8242     }
8243
8244   do_cleanups (in_process);
8245 }
8246 \f
8247 /* DWARF name computation.  */
8248
8249 /* A helper function for dwarf2_compute_name which determines whether DIE
8250    needs to have the name of the scope prepended to the name listed in the
8251    die.  */
8252
8253 static int
8254 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8255 {
8256   struct attribute *attr;
8257
8258   switch (die->tag)
8259     {
8260     case DW_TAG_namespace:
8261     case DW_TAG_typedef:
8262     case DW_TAG_class_type:
8263     case DW_TAG_interface_type:
8264     case DW_TAG_structure_type:
8265     case DW_TAG_union_type:
8266     case DW_TAG_enumeration_type:
8267     case DW_TAG_enumerator:
8268     case DW_TAG_subprogram:
8269     case DW_TAG_member:
8270     case DW_TAG_imported_declaration:
8271       return 1;
8272
8273     case DW_TAG_variable:
8274     case DW_TAG_constant:
8275       /* We only need to prefix "globally" visible variables.  These include
8276          any variable marked with DW_AT_external or any variable that
8277          lives in a namespace.  [Variables in anonymous namespaces
8278          require prefixing, but they are not DW_AT_external.]  */
8279
8280       if (dwarf2_attr (die, DW_AT_specification, cu))
8281         {
8282           struct dwarf2_cu *spec_cu = cu;
8283
8284           return die_needs_namespace (die_specification (die, &spec_cu),
8285                                       spec_cu);
8286         }
8287
8288       attr = dwarf2_attr (die, DW_AT_external, cu);
8289       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8290           && die->parent->tag != DW_TAG_module)
8291         return 0;
8292       /* A variable in a lexical block of some kind does not need a
8293          namespace, even though in C++ such variables may be external
8294          and have a mangled name.  */
8295       if (die->parent->tag ==  DW_TAG_lexical_block
8296           || die->parent->tag ==  DW_TAG_try_block
8297           || die->parent->tag ==  DW_TAG_catch_block
8298           || die->parent->tag == DW_TAG_subprogram)
8299         return 0;
8300       return 1;
8301
8302     default:
8303       return 0;
8304     }
8305 }
8306
8307 /* Retrieve the last character from a mem_file.  */
8308
8309 static void
8310 do_ui_file_peek_last (void *object, const char *buffer, long length)
8311 {
8312   char *last_char_p = (char *) object;
8313
8314   if (length > 0)
8315     *last_char_p = buffer[length - 1];
8316 }
8317
8318 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8319    compute the physname for the object, which include a method's:
8320    - formal parameters (C++/Java),
8321    - receiver type (Go),
8322    - return type (Java).
8323
8324    The term "physname" is a bit confusing.
8325    For C++, for example, it is the demangled name.
8326    For Go, for example, it's the mangled name.
8327
8328    For Ada, return the DIE's linkage name rather than the fully qualified
8329    name.  PHYSNAME is ignored..
8330
8331    The result is allocated on the objfile_obstack and canonicalized.  */
8332
8333 static const char *
8334 dwarf2_compute_name (const char *name,
8335                      struct die_info *die, struct dwarf2_cu *cu,
8336                      int physname)
8337 {
8338   struct objfile *objfile = cu->objfile;
8339
8340   if (name == NULL)
8341     name = dwarf2_name (die, cu);
8342
8343   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8344      compute it by typename_concat inside GDB.  */
8345   if (cu->language == language_ada
8346       || (cu->language == language_fortran && physname))
8347     {
8348       /* For Ada unit, we prefer the linkage name over the name, as
8349          the former contains the exported name, which the user expects
8350          to be able to reference.  Ideally, we want the user to be able
8351          to reference this entity using either natural or linkage name,
8352          but we haven't started looking at this enhancement yet.  */
8353       struct attribute *attr;
8354
8355       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8356       if (attr == NULL)
8357         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8358       if (attr && DW_STRING (attr))
8359         return DW_STRING (attr);
8360     }
8361
8362   /* These are the only languages we know how to qualify names in.  */
8363   if (name != NULL
8364       && (cu->language == language_cplus || cu->language == language_java
8365           || cu->language == language_fortran))
8366     {
8367       if (die_needs_namespace (die, cu))
8368         {
8369           long length;
8370           const char *prefix;
8371           struct ui_file *buf;
8372           char *intermediate_name;
8373           const char *canonical_name = NULL;
8374
8375           prefix = determine_prefix (die, cu);
8376           buf = mem_fileopen ();
8377           if (*prefix != '\0')
8378             {
8379               char *prefixed_name = typename_concat (NULL, prefix, name,
8380                                                      physname, cu);
8381
8382               fputs_unfiltered (prefixed_name, buf);
8383               xfree (prefixed_name);
8384             }
8385           else
8386             fputs_unfiltered (name, buf);
8387
8388           /* Template parameters may be specified in the DIE's DW_AT_name, or
8389              as children with DW_TAG_template_type_param or
8390              DW_TAG_value_type_param.  If the latter, add them to the name
8391              here.  If the name already has template parameters, then
8392              skip this step; some versions of GCC emit both, and
8393              it is more efficient to use the pre-computed name.
8394
8395              Something to keep in mind about this process: it is very
8396              unlikely, or in some cases downright impossible, to produce
8397              something that will match the mangled name of a function.
8398              If the definition of the function has the same debug info,
8399              we should be able to match up with it anyway.  But fallbacks
8400              using the minimal symbol, for instance to find a method
8401              implemented in a stripped copy of libstdc++, will not work.
8402              If we do not have debug info for the definition, we will have to
8403              match them up some other way.
8404
8405              When we do name matching there is a related problem with function
8406              templates; two instantiated function templates are allowed to
8407              differ only by their return types, which we do not add here.  */
8408
8409           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8410             {
8411               struct attribute *attr;
8412               struct die_info *child;
8413               int first = 1;
8414
8415               die->building_fullname = 1;
8416
8417               for (child = die->child; child != NULL; child = child->sibling)
8418                 {
8419                   struct type *type;
8420                   LONGEST value;
8421                   const gdb_byte *bytes;
8422                   struct dwarf2_locexpr_baton *baton;
8423                   struct value *v;
8424
8425                   if (child->tag != DW_TAG_template_type_param
8426                       && child->tag != DW_TAG_template_value_param)
8427                     continue;
8428
8429                   if (first)
8430                     {
8431                       fputs_unfiltered ("<", buf);
8432                       first = 0;
8433                     }
8434                   else
8435                     fputs_unfiltered (", ", buf);
8436
8437                   attr = dwarf2_attr (child, DW_AT_type, cu);
8438                   if (attr == NULL)
8439                     {
8440                       complaint (&symfile_complaints,
8441                                  _("template parameter missing DW_AT_type"));
8442                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
8443                       continue;
8444                     }
8445                   type = die_type (child, cu);
8446
8447                   if (child->tag == DW_TAG_template_type_param)
8448                     {
8449                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
8450                       continue;
8451                     }
8452
8453                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8454                   if (attr == NULL)
8455                     {
8456                       complaint (&symfile_complaints,
8457                                  _("template parameter missing "
8458                                    "DW_AT_const_value"));
8459                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
8460                       continue;
8461                     }
8462
8463                   dwarf2_const_value_attr (attr, type, name,
8464                                            &cu->comp_unit_obstack, cu,
8465                                            &value, &bytes, &baton);
8466
8467                   if (TYPE_NOSIGN (type))
8468                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8469                        changed, this can use value_print instead.  */
8470                     c_printchar (value, type, buf);
8471                   else
8472                     {
8473                       struct value_print_options opts;
8474
8475                       if (baton != NULL)
8476                         v = dwarf2_evaluate_loc_desc (type, NULL,
8477                                                       baton->data,
8478                                                       baton->size,
8479                                                       baton->per_cu);
8480                       else if (bytes != NULL)
8481                         {
8482                           v = allocate_value (type);
8483                           memcpy (value_contents_writeable (v), bytes,
8484                                   TYPE_LENGTH (type));
8485                         }
8486                       else
8487                         v = value_from_longest (type, value);
8488
8489                       /* Specify decimal so that we do not depend on
8490                          the radix.  */
8491                       get_formatted_print_options (&opts, 'd');
8492                       opts.raw = 1;
8493                       value_print (v, buf, &opts);
8494                       release_value (v);
8495                       value_free (v);
8496                     }
8497                 }
8498
8499               die->building_fullname = 0;
8500
8501               if (!first)
8502                 {
8503                   /* Close the argument list, with a space if necessary
8504                      (nested templates).  */
8505                   char last_char = '\0';
8506                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8507                   if (last_char == '>')
8508                     fputs_unfiltered (" >", buf);
8509                   else
8510                     fputs_unfiltered (">", buf);
8511                 }
8512             }
8513
8514           /* For Java and C++ methods, append formal parameter type
8515              information, if PHYSNAME.  */
8516
8517           if (physname && die->tag == DW_TAG_subprogram
8518               && (cu->language == language_cplus
8519                   || cu->language == language_java))
8520             {
8521               struct type *type = read_type_die (die, cu);
8522
8523               c_type_print_args (type, buf, 1, cu->language,
8524                                  &type_print_raw_options);
8525
8526               if (cu->language == language_java)
8527                 {
8528                   /* For java, we must append the return type to method
8529                      names.  */
8530                   if (die->tag == DW_TAG_subprogram)
8531                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
8532                                      0, 0, &type_print_raw_options);
8533                 }
8534               else if (cu->language == language_cplus)
8535                 {
8536                   /* Assume that an artificial first parameter is
8537                      "this", but do not crash if it is not.  RealView
8538                      marks unnamed (and thus unused) parameters as
8539                      artificial; there is no way to differentiate
8540                      the two cases.  */
8541                   if (TYPE_NFIELDS (type) > 0
8542                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8543                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8544                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8545                                                                         0))))
8546                     fputs_unfiltered (" const", buf);
8547                 }
8548             }
8549
8550           intermediate_name = ui_file_xstrdup (buf, &length);
8551           ui_file_delete (buf);
8552
8553           if (cu->language == language_cplus)
8554             canonical_name
8555               = dwarf2_canonicalize_name (intermediate_name, cu,
8556                                           &objfile->per_bfd->storage_obstack);
8557
8558           /* If we only computed INTERMEDIATE_NAME, or if
8559              INTERMEDIATE_NAME is already canonical, then we need to
8560              copy it to the appropriate obstack.  */
8561           if (canonical_name == NULL || canonical_name == intermediate_name)
8562             name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8563                                   intermediate_name,
8564                                   strlen (intermediate_name));
8565           else
8566             name = canonical_name;
8567
8568           xfree (intermediate_name);
8569         }
8570     }
8571
8572   return name;
8573 }
8574
8575 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8576    If scope qualifiers are appropriate they will be added.  The result
8577    will be allocated on the storage_obstack, or NULL if the DIE does
8578    not have a name.  NAME may either be from a previous call to
8579    dwarf2_name or NULL.
8580
8581    The output string will be canonicalized (if C++/Java).  */
8582
8583 static const char *
8584 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8585 {
8586   return dwarf2_compute_name (name, die, cu, 0);
8587 }
8588
8589 /* Construct a physname for the given DIE in CU.  NAME may either be
8590    from a previous call to dwarf2_name or NULL.  The result will be
8591    allocated on the objfile_objstack or NULL if the DIE does not have a
8592    name.
8593
8594    The output string will be canonicalized (if C++/Java).  */
8595
8596 static const char *
8597 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8598 {
8599   struct objfile *objfile = cu->objfile;
8600   struct attribute *attr;
8601   const char *retval, *mangled = NULL, *canon = NULL;
8602   struct cleanup *back_to;
8603   int need_copy = 1;
8604
8605   /* In this case dwarf2_compute_name is just a shortcut not building anything
8606      on its own.  */
8607   if (!die_needs_namespace (die, cu))
8608     return dwarf2_compute_name (name, die, cu, 1);
8609
8610   back_to = make_cleanup (null_cleanup, NULL);
8611
8612   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8613   if (!attr)
8614     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8615
8616   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8617      has computed.  */
8618   if (attr && DW_STRING (attr))
8619     {
8620       char *demangled;
8621
8622       mangled = DW_STRING (attr);
8623
8624       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8625          type.  It is easier for GDB users to search for such functions as
8626          `name(params)' than `long name(params)'.  In such case the minimal
8627          symbol names do not match the full symbol names but for template
8628          functions there is never a need to look up their definition from their
8629          declaration so the only disadvantage remains the minimal symbol
8630          variant `long name(params)' does not have the proper inferior type.
8631          */
8632
8633       if (cu->language == language_go)
8634         {
8635           /* This is a lie, but we already lie to the caller new_symbol_full.
8636              new_symbol_full assumes we return the mangled name.
8637              This just undoes that lie until things are cleaned up.  */
8638           demangled = NULL;
8639         }
8640       else
8641         {
8642           demangled = gdb_demangle (mangled,
8643                                     (DMGL_PARAMS | DMGL_ANSI
8644                                      | (cu->language == language_java
8645                                         ? DMGL_JAVA | DMGL_RET_POSTFIX
8646                                         : DMGL_RET_DROP)));
8647         }
8648       if (demangled)
8649         {
8650           make_cleanup (xfree, demangled);
8651           canon = demangled;
8652         }
8653       else
8654         {
8655           canon = mangled;
8656           need_copy = 0;
8657         }
8658     }
8659
8660   if (canon == NULL || check_physname)
8661     {
8662       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8663
8664       if (canon != NULL && strcmp (physname, canon) != 0)
8665         {
8666           /* It may not mean a bug in GDB.  The compiler could also
8667              compute DW_AT_linkage_name incorrectly.  But in such case
8668              GDB would need to be bug-to-bug compatible.  */
8669
8670           complaint (&symfile_complaints,
8671                      _("Computed physname <%s> does not match demangled <%s> "
8672                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8673                      physname, canon, mangled, die->offset.sect_off,
8674                      objfile_name (objfile));
8675
8676           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8677              is available here - over computed PHYSNAME.  It is safer
8678              against both buggy GDB and buggy compilers.  */
8679
8680           retval = canon;
8681         }
8682       else
8683         {
8684           retval = physname;
8685           need_copy = 0;
8686         }
8687     }
8688   else
8689     retval = canon;
8690
8691   if (need_copy)
8692     retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8693                             retval, strlen (retval));
8694
8695   do_cleanups (back_to);
8696   return retval;
8697 }
8698
8699 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8700    a new symbol for it.
8701
8702    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8703
8704 static int
8705 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8706 {
8707   struct attribute *attr;
8708
8709   /* If the die does not have a name, this is not a namespace
8710      alias.  */
8711   attr = dwarf2_attr (die, DW_AT_name, cu);
8712   if (attr != NULL)
8713     {
8714       int num;
8715       struct die_info *d = die;
8716       struct dwarf2_cu *imported_cu = cu;
8717
8718       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8719          keep inspecting DIEs until we hit the underlying import.  */
8720 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8721       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8722         {
8723           attr = dwarf2_attr (d, DW_AT_import, cu);
8724           if (attr == NULL)
8725             break;
8726
8727           d = follow_die_ref (d, attr, &imported_cu);
8728           if (d->tag != DW_TAG_imported_declaration)
8729             break;
8730         }
8731
8732       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8733         {
8734           complaint (&symfile_complaints,
8735                      _("DIE at 0x%x has too many recursively imported "
8736                        "declarations"), d->offset.sect_off);
8737           return 0;
8738         }
8739
8740       if (attr != NULL)
8741         {
8742           struct type *type;
8743           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8744
8745           type = get_die_type_at_offset (offset, cu->per_cu);
8746           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8747             {
8748               /* This declaration is a global namespace alias.  Add
8749                  a symbol for it whose type is the aliased namespace.  */
8750               new_symbol (die, type, cu);
8751               return 1;
8752             }
8753         }
8754     }
8755
8756   return 0;
8757 }
8758
8759 /* Read the import statement specified by the given die and record it.  */
8760
8761 static void
8762 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8763 {
8764   struct objfile *objfile = cu->objfile;
8765   struct attribute *import_attr;
8766   struct die_info *imported_die, *child_die;
8767   struct dwarf2_cu *imported_cu;
8768   const char *imported_name;
8769   const char *imported_name_prefix;
8770   const char *canonical_name;
8771   const char *import_alias;
8772   const char *imported_declaration = NULL;
8773   const char *import_prefix;
8774   VEC (const_char_ptr) *excludes = NULL;
8775   struct cleanup *cleanups;
8776
8777   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8778   if (import_attr == NULL)
8779     {
8780       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8781                  dwarf_tag_name (die->tag));
8782       return;
8783     }
8784
8785   imported_cu = cu;
8786   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8787   imported_name = dwarf2_name (imported_die, imported_cu);
8788   if (imported_name == NULL)
8789     {
8790       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8791
8792         The import in the following code:
8793         namespace A
8794           {
8795             typedef int B;
8796           }
8797
8798         int main ()
8799           {
8800             using A::B;
8801             B b;
8802             return b;
8803           }
8804
8805         ...
8806          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8807             <52>   DW_AT_decl_file   : 1
8808             <53>   DW_AT_decl_line   : 6
8809             <54>   DW_AT_import      : <0x75>
8810          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8811             <59>   DW_AT_name        : B
8812             <5b>   DW_AT_decl_file   : 1
8813             <5c>   DW_AT_decl_line   : 2
8814             <5d>   DW_AT_type        : <0x6e>
8815         ...
8816          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8817             <76>   DW_AT_byte_size   : 4
8818             <77>   DW_AT_encoding    : 5        (signed)
8819
8820         imports the wrong die ( 0x75 instead of 0x58 ).
8821         This case will be ignored until the gcc bug is fixed.  */
8822       return;
8823     }
8824
8825   /* Figure out the local name after import.  */
8826   import_alias = dwarf2_name (die, cu);
8827
8828   /* Figure out where the statement is being imported to.  */
8829   import_prefix = determine_prefix (die, cu);
8830
8831   /* Figure out what the scope of the imported die is and prepend it
8832      to the name of the imported die.  */
8833   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8834
8835   if (imported_die->tag != DW_TAG_namespace
8836       && imported_die->tag != DW_TAG_module)
8837     {
8838       imported_declaration = imported_name;
8839       canonical_name = imported_name_prefix;
8840     }
8841   else if (strlen (imported_name_prefix) > 0)
8842     canonical_name = obconcat (&objfile->objfile_obstack,
8843                                imported_name_prefix, "::", imported_name,
8844                                (char *) NULL);
8845   else
8846     canonical_name = imported_name;
8847
8848   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8849
8850   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8851     for (child_die = die->child; child_die && child_die->tag;
8852          child_die = sibling_die (child_die))
8853       {
8854         /* DWARF-4: A Fortran use statement with a “rename list” may be
8855            represented by an imported module entry with an import attribute
8856            referring to the module and owned entries corresponding to those
8857            entities that are renamed as part of being imported.  */
8858
8859         if (child_die->tag != DW_TAG_imported_declaration)
8860           {
8861             complaint (&symfile_complaints,
8862                        _("child DW_TAG_imported_declaration expected "
8863                          "- DIE at 0x%x [in module %s]"),
8864                        child_die->offset.sect_off, objfile_name (objfile));
8865             continue;
8866           }
8867
8868         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8869         if (import_attr == NULL)
8870           {
8871             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8872                        dwarf_tag_name (child_die->tag));
8873             continue;
8874           }
8875
8876         imported_cu = cu;
8877         imported_die = follow_die_ref_or_sig (child_die, import_attr,
8878                                               &imported_cu);
8879         imported_name = dwarf2_name (imported_die, imported_cu);
8880         if (imported_name == NULL)
8881           {
8882             complaint (&symfile_complaints,
8883                        _("child DW_TAG_imported_declaration has unknown "
8884                          "imported name - DIE at 0x%x [in module %s]"),
8885                        child_die->offset.sect_off, objfile_name (objfile));
8886             continue;
8887           }
8888
8889         VEC_safe_push (const_char_ptr, excludes, imported_name);
8890
8891         process_die (child_die, cu);
8892       }
8893
8894   cp_add_using_directive (import_prefix,
8895                           canonical_name,
8896                           import_alias,
8897                           imported_declaration,
8898                           excludes,
8899                           0,
8900                           &objfile->objfile_obstack);
8901
8902   do_cleanups (cleanups);
8903 }
8904
8905 /* Cleanup function for handle_DW_AT_stmt_list.  */
8906
8907 static void
8908 free_cu_line_header (void *arg)
8909 {
8910   struct dwarf2_cu *cu = arg;
8911
8912   free_line_header (cu->line_header);
8913   cu->line_header = NULL;
8914 }
8915
8916 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
8917    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
8918    this, it was first present in GCC release 4.3.0.  */
8919
8920 static int
8921 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
8922 {
8923   if (!cu->checked_producer)
8924     check_producer (cu);
8925
8926   return cu->producer_is_gcc_lt_4_3;
8927 }
8928
8929 static void
8930 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
8931                          const char **name, const char **comp_dir)
8932 {
8933   struct attribute *attr;
8934
8935   *name = NULL;
8936   *comp_dir = NULL;
8937
8938   /* Find the filename.  Do not use dwarf2_name here, since the filename
8939      is not a source language identifier.  */
8940   attr = dwarf2_attr (die, DW_AT_name, cu);
8941   if (attr)
8942     {
8943       *name = DW_STRING (attr);
8944     }
8945
8946   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
8947   if (attr)
8948     *comp_dir = DW_STRING (attr);
8949   else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
8950            && IS_ABSOLUTE_PATH (*name))
8951     {
8952       char *d = ldirname (*name);
8953
8954       *comp_dir = d;
8955       if (d != NULL)
8956         make_cleanup (xfree, d);
8957     }
8958   if (*comp_dir != NULL)
8959     {
8960       /* Irix 6.2 native cc prepends <machine>.: to the compilation
8961          directory, get rid of it.  */
8962       char *cp = strchr (*comp_dir, ':');
8963
8964       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
8965         *comp_dir = cp + 1;
8966     }
8967
8968   if (*name == NULL)
8969     *name = "<unknown>";
8970 }
8971
8972 /* Handle DW_AT_stmt_list for a compilation unit.
8973    DIE is the DW_TAG_compile_unit die for CU.
8974    COMP_DIR is the compilation directory.  LOWPC is passed to
8975    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
8976
8977 static void
8978 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
8979                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
8980 {
8981   struct attribute *attr;
8982
8983   gdb_assert (! cu->per_cu->is_debug_types);
8984
8985   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8986   if (attr)
8987     {
8988       unsigned int line_offset = DW_UNSND (attr);
8989       struct line_header *line_header
8990         = dwarf_decode_line_header (line_offset, cu);
8991
8992       if (line_header)
8993         {
8994           cu->line_header = line_header;
8995           make_cleanup (free_cu_line_header, cu);
8996           dwarf_decode_lines (line_header, comp_dir, cu, NULL, lowpc);
8997         }
8998     }
8999 }
9000
9001 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
9002
9003 static void
9004 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
9005 {
9006   struct objfile *objfile = dwarf2_per_objfile->objfile;
9007   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
9008   CORE_ADDR lowpc = ((CORE_ADDR) -1);
9009   CORE_ADDR highpc = ((CORE_ADDR) 0);
9010   struct attribute *attr;
9011   const char *name = NULL;
9012   const char *comp_dir = NULL;
9013   struct die_info *child_die;
9014   bfd *abfd = objfile->obfd;
9015   CORE_ADDR baseaddr;
9016
9017   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9018
9019   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
9020
9021   /* If we didn't find a lowpc, set it to highpc to avoid complaints
9022      from finish_block.  */
9023   if (lowpc == ((CORE_ADDR) -1))
9024     lowpc = highpc;
9025   lowpc += baseaddr;
9026   highpc += baseaddr;
9027
9028   find_file_and_directory (die, cu, &name, &comp_dir);
9029
9030   prepare_one_comp_unit (cu, die, cu->language);
9031
9032   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9033      standardised yet.  As a workaround for the language detection we fall
9034      back to the DW_AT_producer string.  */
9035   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9036     cu->language = language_opencl;
9037
9038   /* Similar hack for Go.  */
9039   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9040     set_cu_language (DW_LANG_Go, cu);
9041
9042   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
9043
9044   /* Decode line number information if present.  We do this before
9045      processing child DIEs, so that the line header table is available
9046      for DW_AT_decl_file.  */
9047   handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
9048
9049   /* Process all dies in compilation unit.  */
9050   if (die->child != NULL)
9051     {
9052       child_die = die->child;
9053       while (child_die && child_die->tag)
9054         {
9055           process_die (child_die, cu);
9056           child_die = sibling_die (child_die);
9057         }
9058     }
9059
9060   /* Decode macro information, if present.  Dwarf 2 macro information
9061      refers to information in the line number info statement program
9062      header, so we can only read it if we've read the header
9063      successfully.  */
9064   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9065   if (attr && cu->line_header)
9066     {
9067       if (dwarf2_attr (die, DW_AT_macro_info, cu))
9068         complaint (&symfile_complaints,
9069                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9070
9071       dwarf_decode_macros (cu, DW_UNSND (attr), comp_dir, 1);
9072     }
9073   else
9074     {
9075       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9076       if (attr && cu->line_header)
9077         {
9078           unsigned int macro_offset = DW_UNSND (attr);
9079
9080           dwarf_decode_macros (cu, macro_offset, comp_dir, 0);
9081         }
9082     }
9083
9084   do_cleanups (back_to);
9085 }
9086
9087 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9088    Create the set of symtabs used by this TU, or if this TU is sharing
9089    symtabs with another TU and the symtabs have already been created
9090    then restore those symtabs in the line header.
9091    We don't need the pc/line-number mapping for type units.  */
9092
9093 static void
9094 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
9095 {
9096   struct objfile *objfile = dwarf2_per_objfile->objfile;
9097   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9098   struct type_unit_group *tu_group;
9099   int first_time;
9100   struct line_header *lh;
9101   struct attribute *attr;
9102   unsigned int i, line_offset;
9103   struct signatured_type *sig_type;
9104
9105   gdb_assert (per_cu->is_debug_types);
9106   sig_type = (struct signatured_type *) per_cu;
9107
9108   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9109
9110   /* If we're using .gdb_index (includes -readnow) then
9111      per_cu->type_unit_group may not have been set up yet.  */
9112   if (sig_type->type_unit_group == NULL)
9113     sig_type->type_unit_group = get_type_unit_group (cu, attr);
9114   tu_group = sig_type->type_unit_group;
9115
9116   /* If we've already processed this stmt_list there's no real need to
9117      do it again, we could fake it and just recreate the part we need
9118      (file name,index -> symtab mapping).  If data shows this optimization
9119      is useful we can do it then.  */
9120   first_time = tu_group->primary_symtab == NULL;
9121
9122   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9123      debug info.  */
9124   lh = NULL;
9125   if (attr != NULL)
9126     {
9127       line_offset = DW_UNSND (attr);
9128       lh = dwarf_decode_line_header (line_offset, cu);
9129     }
9130   if (lh == NULL)
9131     {
9132       if (first_time)
9133         dwarf2_start_symtab (cu, "", NULL, 0);
9134       else
9135         {
9136           gdb_assert (tu_group->symtabs == NULL);
9137           restart_symtab (0);
9138         }
9139       /* Note: The primary symtab will get allocated at the end.  */
9140       return;
9141     }
9142
9143   cu->line_header = lh;
9144   make_cleanup (free_cu_line_header, cu);
9145
9146   if (first_time)
9147     {
9148       dwarf2_start_symtab (cu, "", NULL, 0);
9149
9150       tu_group->num_symtabs = lh->num_file_names;
9151       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
9152
9153       for (i = 0; i < lh->num_file_names; ++i)
9154         {
9155           const char *dir = NULL;
9156           struct file_entry *fe = &lh->file_names[i];
9157
9158           if (fe->dir_index)
9159             dir = lh->include_dirs[fe->dir_index - 1];
9160           dwarf2_start_subfile (fe->name, dir, NULL);
9161
9162           /* Note: We don't have to watch for the main subfile here, type units
9163              don't have DW_AT_name.  */
9164
9165           if (current_subfile->symtab == NULL)
9166             {
9167               /* NOTE: start_subfile will recognize when it's been passed
9168                  a file it has already seen.  So we can't assume there's a
9169                  simple mapping from lh->file_names to subfiles,
9170                  lh->file_names may contain dups.  */
9171               current_subfile->symtab = allocate_symtab (current_subfile->name,
9172                                                          objfile);
9173             }
9174
9175           fe->symtab = current_subfile->symtab;
9176           tu_group->symtabs[i] = fe->symtab;
9177         }
9178     }
9179   else
9180     {
9181       restart_symtab (0);
9182
9183       for (i = 0; i < lh->num_file_names; ++i)
9184         {
9185           struct file_entry *fe = &lh->file_names[i];
9186
9187           fe->symtab = tu_group->symtabs[i];
9188         }
9189     }
9190
9191   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9192      so they don't have a "real" (so to speak) symtab anyway.
9193      There is later code that will assign the main symtab to all symbols
9194      that don't have one.  We need to handle the case of a symbol with a
9195      missing symtab (DW_AT_decl_file) anyway.  */
9196 }
9197
9198 /* Process DW_TAG_type_unit.
9199    For TUs we want to skip the first top level sibling if it's not the
9200    actual type being defined by this TU.  In this case the first top
9201    level sibling is there to provide context only.  */
9202
9203 static void
9204 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9205 {
9206   struct die_info *child_die;
9207
9208   prepare_one_comp_unit (cu, die, language_minimal);
9209
9210   /* Initialize (or reinitialize) the machinery for building symtabs.
9211      We do this before processing child DIEs, so that the line header table
9212      is available for DW_AT_decl_file.  */
9213   setup_type_unit_groups (die, cu);
9214
9215   if (die->child != NULL)
9216     {
9217       child_die = die->child;
9218       while (child_die && child_die->tag)
9219         {
9220           process_die (child_die, cu);
9221           child_die = sibling_die (child_die);
9222         }
9223     }
9224 }
9225 \f
9226 /* DWO/DWP files.
9227
9228    http://gcc.gnu.org/wiki/DebugFission
9229    http://gcc.gnu.org/wiki/DebugFissionDWP
9230
9231    To simplify handling of both DWO files ("object" files with the DWARF info)
9232    and DWP files (a file with the DWOs packaged up into one file), we treat
9233    DWP files as having a collection of virtual DWO files.  */
9234
9235 static hashval_t
9236 hash_dwo_file (const void *item)
9237 {
9238   const struct dwo_file *dwo_file = item;
9239   hashval_t hash;
9240
9241   hash = htab_hash_string (dwo_file->dwo_name);
9242   if (dwo_file->comp_dir != NULL)
9243     hash += htab_hash_string (dwo_file->comp_dir);
9244   return hash;
9245 }
9246
9247 static int
9248 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9249 {
9250   const struct dwo_file *lhs = item_lhs;
9251   const struct dwo_file *rhs = item_rhs;
9252
9253   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9254     return 0;
9255   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9256     return lhs->comp_dir == rhs->comp_dir;
9257   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9258 }
9259
9260 /* Allocate a hash table for DWO files.  */
9261
9262 static htab_t
9263 allocate_dwo_file_hash_table (void)
9264 {
9265   struct objfile *objfile = dwarf2_per_objfile->objfile;
9266
9267   return htab_create_alloc_ex (41,
9268                                hash_dwo_file,
9269                                eq_dwo_file,
9270                                NULL,
9271                                &objfile->objfile_obstack,
9272                                hashtab_obstack_allocate,
9273                                dummy_obstack_deallocate);
9274 }
9275
9276 /* Lookup DWO file DWO_NAME.  */
9277
9278 static void **
9279 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9280 {
9281   struct dwo_file find_entry;
9282   void **slot;
9283
9284   if (dwarf2_per_objfile->dwo_files == NULL)
9285     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9286
9287   memset (&find_entry, 0, sizeof (find_entry));
9288   find_entry.dwo_name = dwo_name;
9289   find_entry.comp_dir = comp_dir;
9290   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9291
9292   return slot;
9293 }
9294
9295 static hashval_t
9296 hash_dwo_unit (const void *item)
9297 {
9298   const struct dwo_unit *dwo_unit = item;
9299
9300   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9301   return dwo_unit->signature;
9302 }
9303
9304 static int
9305 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9306 {
9307   const struct dwo_unit *lhs = item_lhs;
9308   const struct dwo_unit *rhs = item_rhs;
9309
9310   /* The signature is assumed to be unique within the DWO file.
9311      So while object file CU dwo_id's always have the value zero,
9312      that's OK, assuming each object file DWO file has only one CU,
9313      and that's the rule for now.  */
9314   return lhs->signature == rhs->signature;
9315 }
9316
9317 /* Allocate a hash table for DWO CUs,TUs.
9318    There is one of these tables for each of CUs,TUs for each DWO file.  */
9319
9320 static htab_t
9321 allocate_dwo_unit_table (struct objfile *objfile)
9322 {
9323   /* Start out with a pretty small number.
9324      Generally DWO files contain only one CU and maybe some TUs.  */
9325   return htab_create_alloc_ex (3,
9326                                hash_dwo_unit,
9327                                eq_dwo_unit,
9328                                NULL,
9329                                &objfile->objfile_obstack,
9330                                hashtab_obstack_allocate,
9331                                dummy_obstack_deallocate);
9332 }
9333
9334 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9335
9336 struct create_dwo_cu_data
9337 {
9338   struct dwo_file *dwo_file;
9339   struct dwo_unit dwo_unit;
9340 };
9341
9342 /* die_reader_func for create_dwo_cu.  */
9343
9344 static void
9345 create_dwo_cu_reader (const struct die_reader_specs *reader,
9346                       const gdb_byte *info_ptr,
9347                       struct die_info *comp_unit_die,
9348                       int has_children,
9349                       void *datap)
9350 {
9351   struct dwarf2_cu *cu = reader->cu;
9352   struct objfile *objfile = dwarf2_per_objfile->objfile;
9353   sect_offset offset = cu->per_cu->offset;
9354   struct dwarf2_section_info *section = cu->per_cu->section;
9355   struct create_dwo_cu_data *data = datap;
9356   struct dwo_file *dwo_file = data->dwo_file;
9357   struct dwo_unit *dwo_unit = &data->dwo_unit;
9358   struct attribute *attr;
9359
9360   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9361   if (attr == NULL)
9362     {
9363       complaint (&symfile_complaints,
9364                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9365                    " its dwo_id [in module %s]"),
9366                  offset.sect_off, dwo_file->dwo_name);
9367       return;
9368     }
9369
9370   dwo_unit->dwo_file = dwo_file;
9371   dwo_unit->signature = DW_UNSND (attr);
9372   dwo_unit->section = section;
9373   dwo_unit->offset = offset;
9374   dwo_unit->length = cu->per_cu->length;
9375
9376   if (dwarf2_read_debug)
9377     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9378                         offset.sect_off, hex_string (dwo_unit->signature));
9379 }
9380
9381 /* Create the dwo_unit for the lone CU in DWO_FILE.
9382    Note: This function processes DWO files only, not DWP files.  */
9383
9384 static struct dwo_unit *
9385 create_dwo_cu (struct dwo_file *dwo_file)
9386 {
9387   struct objfile *objfile = dwarf2_per_objfile->objfile;
9388   struct dwarf2_section_info *section = &dwo_file->sections.info;
9389   bfd *abfd;
9390   htab_t cu_htab;
9391   const gdb_byte *info_ptr, *end_ptr;
9392   struct create_dwo_cu_data create_dwo_cu_data;
9393   struct dwo_unit *dwo_unit;
9394
9395   dwarf2_read_section (objfile, section);
9396   info_ptr = section->buffer;
9397
9398   if (info_ptr == NULL)
9399     return NULL;
9400
9401   /* We can't set abfd until now because the section may be empty or
9402      not present, in which case section->asection will be NULL.  */
9403   abfd = get_section_bfd_owner (section);
9404
9405   if (dwarf2_read_debug)
9406     {
9407       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9408                           get_section_name (section),
9409                           get_section_file_name (section));
9410     }
9411
9412   create_dwo_cu_data.dwo_file = dwo_file;
9413   dwo_unit = NULL;
9414
9415   end_ptr = info_ptr + section->size;
9416   while (info_ptr < end_ptr)
9417     {
9418       struct dwarf2_per_cu_data per_cu;
9419
9420       memset (&create_dwo_cu_data.dwo_unit, 0,
9421               sizeof (create_dwo_cu_data.dwo_unit));
9422       memset (&per_cu, 0, sizeof (per_cu));
9423       per_cu.objfile = objfile;
9424       per_cu.is_debug_types = 0;
9425       per_cu.offset.sect_off = info_ptr - section->buffer;
9426       per_cu.section = section;
9427
9428       init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
9429                                          create_dwo_cu_reader,
9430                                          &create_dwo_cu_data);
9431
9432       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9433         {
9434           /* If we've already found one, complain.  We only support one
9435              because having more than one requires hacking the dwo_name of
9436              each to match, which is highly unlikely to happen.  */
9437           if (dwo_unit != NULL)
9438             {
9439               complaint (&symfile_complaints,
9440                          _("Multiple CUs in DWO file %s [in module %s]"),
9441                          dwo_file->dwo_name, objfile_name (objfile));
9442               break;
9443             }
9444
9445           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9446           *dwo_unit = create_dwo_cu_data.dwo_unit;
9447         }
9448
9449       info_ptr += per_cu.length;
9450     }
9451
9452   return dwo_unit;
9453 }
9454
9455 /* DWP file .debug_{cu,tu}_index section format:
9456    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9457
9458    DWP Version 1:
9459
9460    Both index sections have the same format, and serve to map a 64-bit
9461    signature to a set of section numbers.  Each section begins with a header,
9462    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9463    indexes, and a pool of 32-bit section numbers.  The index sections will be
9464    aligned at 8-byte boundaries in the file.
9465
9466    The index section header consists of:
9467
9468     V, 32 bit version number
9469     -, 32 bits unused
9470     N, 32 bit number of compilation units or type units in the index
9471     M, 32 bit number of slots in the hash table
9472
9473    Numbers are recorded using the byte order of the application binary.
9474
9475    The hash table begins at offset 16 in the section, and consists of an array
9476    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9477    order of the application binary).  Unused slots in the hash table are 0.
9478    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9479
9480    The parallel table begins immediately after the hash table
9481    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9482    array of 32-bit indexes (using the byte order of the application binary),
9483    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9484    table contains a 32-bit index into the pool of section numbers.  For unused
9485    hash table slots, the corresponding entry in the parallel table will be 0.
9486
9487    The pool of section numbers begins immediately following the hash table
9488    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9489    section numbers consists of an array of 32-bit words (using the byte order
9490    of the application binary).  Each item in the array is indexed starting
9491    from 0.  The hash table entry provides the index of the first section
9492    number in the set.  Additional section numbers in the set follow, and the
9493    set is terminated by a 0 entry (section number 0 is not used in ELF).
9494
9495    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9496    section must be the first entry in the set, and the .debug_abbrev.dwo must
9497    be the second entry. Other members of the set may follow in any order.
9498
9499    ---
9500
9501    DWP Version 2:
9502
9503    DWP Version 2 combines all the .debug_info, etc. sections into one,
9504    and the entries in the index tables are now offsets into these sections.
9505    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9506    section.
9507
9508    Index Section Contents:
9509     Header
9510     Hash Table of Signatures   dwp_hash_table.hash_table
9511     Parallel Table of Indices  dwp_hash_table.unit_table
9512     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9513     Table of Section Sizes     dwp_hash_table.v2.sizes
9514
9515    The index section header consists of:
9516
9517     V, 32 bit version number
9518     L, 32 bit number of columns in the table of section offsets
9519     N, 32 bit number of compilation units or type units in the index
9520     M, 32 bit number of slots in the hash table
9521
9522    Numbers are recorded using the byte order of the application binary.
9523
9524    The hash table has the same format as version 1.
9525    The parallel table of indices has the same format as version 1,
9526    except that the entries are origin-1 indices into the table of sections
9527    offsets and the table of section sizes.
9528
9529    The table of offsets begins immediately following the parallel table
9530    (at offset 16 + 12 * M from the beginning of the section).  The table is
9531    a two-dimensional array of 32-bit words (using the byte order of the
9532    application binary), with L columns and N+1 rows, in row-major order.
9533    Each row in the array is indexed starting from 0.  The first row provides
9534    a key to the remaining rows: each column in this row provides an identifier
9535    for a debug section, and the offsets in the same column of subsequent rows
9536    refer to that section.  The section identifiers are:
9537
9538     DW_SECT_INFO         1  .debug_info.dwo
9539     DW_SECT_TYPES        2  .debug_types.dwo
9540     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9541     DW_SECT_LINE         4  .debug_line.dwo
9542     DW_SECT_LOC          5  .debug_loc.dwo
9543     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9544     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9545     DW_SECT_MACRO        8  .debug_macro.dwo
9546
9547    The offsets provided by the CU and TU index sections are the base offsets
9548    for the contributions made by each CU or TU to the corresponding section
9549    in the package file.  Each CU and TU header contains an abbrev_offset
9550    field, used to find the abbreviations table for that CU or TU within the
9551    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9552    be interpreted as relative to the base offset given in the index section.
9553    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9554    should be interpreted as relative to the base offset for .debug_line.dwo,
9555    and offsets into other debug sections obtained from DWARF attributes should
9556    also be interpreted as relative to the corresponding base offset.
9557
9558    The table of sizes begins immediately following the table of offsets.
9559    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9560    with L columns and N rows, in row-major order.  Each row in the array is
9561    indexed starting from 1 (row 0 is shared by the two tables).
9562
9563    ---
9564
9565    Hash table lookup is handled the same in version 1 and 2:
9566
9567    We assume that N and M will not exceed 2^32 - 1.
9568    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9569
9570    Given a 64-bit compilation unit signature or a type signature S, an entry
9571    in the hash table is located as follows:
9572
9573    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9574       the low-order k bits all set to 1.
9575
9576    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9577
9578    3) If the hash table entry at index H matches the signature, use that
9579       entry.  If the hash table entry at index H is unused (all zeroes),
9580       terminate the search: the signature is not present in the table.
9581
9582    4) Let H = (H + H') modulo M. Repeat at Step 3.
9583
9584    Because M > N and H' and M are relatively prime, the search is guaranteed
9585    to stop at an unused slot or find the match.  */
9586
9587 /* Create a hash table to map DWO IDs to their CU/TU entry in
9588    .debug_{info,types}.dwo in DWP_FILE.
9589    Returns NULL if there isn't one.
9590    Note: This function processes DWP files only, not DWO files.  */
9591
9592 static struct dwp_hash_table *
9593 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9594 {
9595   struct objfile *objfile = dwarf2_per_objfile->objfile;
9596   bfd *dbfd = dwp_file->dbfd;
9597   const gdb_byte *index_ptr, *index_end;
9598   struct dwarf2_section_info *index;
9599   uint32_t version, nr_columns, nr_units, nr_slots;
9600   struct dwp_hash_table *htab;
9601
9602   if (is_debug_types)
9603     index = &dwp_file->sections.tu_index;
9604   else
9605     index = &dwp_file->sections.cu_index;
9606
9607   if (dwarf2_section_empty_p (index))
9608     return NULL;
9609   dwarf2_read_section (objfile, index);
9610
9611   index_ptr = index->buffer;
9612   index_end = index_ptr + index->size;
9613
9614   version = read_4_bytes (dbfd, index_ptr);
9615   index_ptr += 4;
9616   if (version == 2)
9617     nr_columns = read_4_bytes (dbfd, index_ptr);
9618   else
9619     nr_columns = 0;
9620   index_ptr += 4;
9621   nr_units = read_4_bytes (dbfd, index_ptr);
9622   index_ptr += 4;
9623   nr_slots = read_4_bytes (dbfd, index_ptr);
9624   index_ptr += 4;
9625
9626   if (version != 1 && version != 2)
9627     {
9628       error (_("Dwarf Error: unsupported DWP file version (%s)"
9629                " [in module %s]"),
9630              pulongest (version), dwp_file->name);
9631     }
9632   if (nr_slots != (nr_slots & -nr_slots))
9633     {
9634       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9635                " is not power of 2 [in module %s]"),
9636              pulongest (nr_slots), dwp_file->name);
9637     }
9638
9639   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9640   htab->version = version;
9641   htab->nr_columns = nr_columns;
9642   htab->nr_units = nr_units;
9643   htab->nr_slots = nr_slots;
9644   htab->hash_table = index_ptr;
9645   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9646
9647   /* Exit early if the table is empty.  */
9648   if (nr_slots == 0 || nr_units == 0
9649       || (version == 2 && nr_columns == 0))
9650     {
9651       /* All must be zero.  */
9652       if (nr_slots != 0 || nr_units != 0
9653           || (version == 2 && nr_columns != 0))
9654         {
9655           complaint (&symfile_complaints,
9656                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9657                        " all zero [in modules %s]"),
9658                      dwp_file->name);
9659         }
9660       return htab;
9661     }
9662
9663   if (version == 1)
9664     {
9665       htab->section_pool.v1.indices =
9666         htab->unit_table + sizeof (uint32_t) * nr_slots;
9667       /* It's harder to decide whether the section is too small in v1.
9668          V1 is deprecated anyway so we punt.  */
9669     }
9670   else
9671     {
9672       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9673       int *ids = htab->section_pool.v2.section_ids;
9674       /* Reverse map for error checking.  */
9675       int ids_seen[DW_SECT_MAX + 1];
9676       int i;
9677
9678       if (nr_columns < 2)
9679         {
9680           error (_("Dwarf Error: bad DWP hash table, too few columns"
9681                    " in section table [in module %s]"),
9682                  dwp_file->name);
9683         }
9684       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9685         {
9686           error (_("Dwarf Error: bad DWP hash table, too many columns"
9687                    " in section table [in module %s]"),
9688                  dwp_file->name);
9689         }
9690       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9691       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9692       for (i = 0; i < nr_columns; ++i)
9693         {
9694           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9695
9696           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9697             {
9698               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9699                        " in section table [in module %s]"),
9700                      id, dwp_file->name);
9701             }
9702           if (ids_seen[id] != -1)
9703             {
9704               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9705                        " id %d in section table [in module %s]"),
9706                      id, dwp_file->name);
9707             }
9708           ids_seen[id] = i;
9709           ids[i] = id;
9710         }
9711       /* Must have exactly one info or types section.  */
9712       if (((ids_seen[DW_SECT_INFO] != -1)
9713            + (ids_seen[DW_SECT_TYPES] != -1))
9714           != 1)
9715         {
9716           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9717                    " DWO info/types section [in module %s]"),
9718                  dwp_file->name);
9719         }
9720       /* Must have an abbrev section.  */
9721       if (ids_seen[DW_SECT_ABBREV] == -1)
9722         {
9723           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9724                    " section [in module %s]"),
9725                  dwp_file->name);
9726         }
9727       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9728       htab->section_pool.v2.sizes =
9729         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9730                                          * nr_units * nr_columns);
9731       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9732                                           * nr_units * nr_columns))
9733           > index_end)
9734         {
9735           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9736                    " [in module %s]"),
9737                  dwp_file->name);
9738         }
9739     }
9740
9741   return htab;
9742 }
9743
9744 /* Update SECTIONS with the data from SECTP.
9745
9746    This function is like the other "locate" section routines that are
9747    passed to bfd_map_over_sections, but in this context the sections to
9748    read comes from the DWP V1 hash table, not the full ELF section table.
9749
9750    The result is non-zero for success, or zero if an error was found.  */
9751
9752 static int
9753 locate_v1_virtual_dwo_sections (asection *sectp,
9754                                 struct virtual_v1_dwo_sections *sections)
9755 {
9756   const struct dwop_section_names *names = &dwop_section_names;
9757
9758   if (section_is_p (sectp->name, &names->abbrev_dwo))
9759     {
9760       /* There can be only one.  */
9761       if (sections->abbrev.s.asection != NULL)
9762         return 0;
9763       sections->abbrev.s.asection = sectp;
9764       sections->abbrev.size = bfd_get_section_size (sectp);
9765     }
9766   else if (section_is_p (sectp->name, &names->info_dwo)
9767            || section_is_p (sectp->name, &names->types_dwo))
9768     {
9769       /* There can be only one.  */
9770       if (sections->info_or_types.s.asection != NULL)
9771         return 0;
9772       sections->info_or_types.s.asection = sectp;
9773       sections->info_or_types.size = bfd_get_section_size (sectp);
9774     }
9775   else if (section_is_p (sectp->name, &names->line_dwo))
9776     {
9777       /* There can be only one.  */
9778       if (sections->line.s.asection != NULL)
9779         return 0;
9780       sections->line.s.asection = sectp;
9781       sections->line.size = bfd_get_section_size (sectp);
9782     }
9783   else if (section_is_p (sectp->name, &names->loc_dwo))
9784     {
9785       /* There can be only one.  */
9786       if (sections->loc.s.asection != NULL)
9787         return 0;
9788       sections->loc.s.asection = sectp;
9789       sections->loc.size = bfd_get_section_size (sectp);
9790     }
9791   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9792     {
9793       /* There can be only one.  */
9794       if (sections->macinfo.s.asection != NULL)
9795         return 0;
9796       sections->macinfo.s.asection = sectp;
9797       sections->macinfo.size = bfd_get_section_size (sectp);
9798     }
9799   else if (section_is_p (sectp->name, &names->macro_dwo))
9800     {
9801       /* There can be only one.  */
9802       if (sections->macro.s.asection != NULL)
9803         return 0;
9804       sections->macro.s.asection = sectp;
9805       sections->macro.size = bfd_get_section_size (sectp);
9806     }
9807   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9808     {
9809       /* There can be only one.  */
9810       if (sections->str_offsets.s.asection != NULL)
9811         return 0;
9812       sections->str_offsets.s.asection = sectp;
9813       sections->str_offsets.size = bfd_get_section_size (sectp);
9814     }
9815   else
9816     {
9817       /* No other kind of section is valid.  */
9818       return 0;
9819     }
9820
9821   return 1;
9822 }
9823
9824 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9825    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9826    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9827    This is for DWP version 1 files.  */
9828
9829 static struct dwo_unit *
9830 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9831                            uint32_t unit_index,
9832                            const char *comp_dir,
9833                            ULONGEST signature, int is_debug_types)
9834 {
9835   struct objfile *objfile = dwarf2_per_objfile->objfile;
9836   const struct dwp_hash_table *dwp_htab =
9837     is_debug_types ? dwp_file->tus : dwp_file->cus;
9838   bfd *dbfd = dwp_file->dbfd;
9839   const char *kind = is_debug_types ? "TU" : "CU";
9840   struct dwo_file *dwo_file;
9841   struct dwo_unit *dwo_unit;
9842   struct virtual_v1_dwo_sections sections;
9843   void **dwo_file_slot;
9844   char *virtual_dwo_name;
9845   struct dwarf2_section_info *cutu;
9846   struct cleanup *cleanups;
9847   int i;
9848
9849   gdb_assert (dwp_file->version == 1);
9850
9851   if (dwarf2_read_debug)
9852     {
9853       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
9854                           kind,
9855                           pulongest (unit_index), hex_string (signature),
9856                           dwp_file->name);
9857     }
9858
9859   /* Fetch the sections of this DWO unit.
9860      Put a limit on the number of sections we look for so that bad data
9861      doesn't cause us to loop forever.  */
9862
9863 #define MAX_NR_V1_DWO_SECTIONS \
9864   (1 /* .debug_info or .debug_types */ \
9865    + 1 /* .debug_abbrev */ \
9866    + 1 /* .debug_line */ \
9867    + 1 /* .debug_loc */ \
9868    + 1 /* .debug_str_offsets */ \
9869    + 1 /* .debug_macro or .debug_macinfo */ \
9870    + 1 /* trailing zero */)
9871
9872   memset (&sections, 0, sizeof (sections));
9873   cleanups = make_cleanup (null_cleanup, 0);
9874
9875   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
9876     {
9877       asection *sectp;
9878       uint32_t section_nr =
9879         read_4_bytes (dbfd,
9880                       dwp_htab->section_pool.v1.indices
9881                       + (unit_index + i) * sizeof (uint32_t));
9882
9883       if (section_nr == 0)
9884         break;
9885       if (section_nr >= dwp_file->num_sections)
9886         {
9887           error (_("Dwarf Error: bad DWP hash table, section number too large"
9888                    " [in module %s]"),
9889                  dwp_file->name);
9890         }
9891
9892       sectp = dwp_file->elf_sections[section_nr];
9893       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
9894         {
9895           error (_("Dwarf Error: bad DWP hash table, invalid section found"
9896                    " [in module %s]"),
9897                  dwp_file->name);
9898         }
9899     }
9900
9901   if (i < 2
9902       || dwarf2_section_empty_p (&sections.info_or_types)
9903       || dwarf2_section_empty_p (&sections.abbrev))
9904     {
9905       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
9906                " [in module %s]"),
9907              dwp_file->name);
9908     }
9909   if (i == MAX_NR_V1_DWO_SECTIONS)
9910     {
9911       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
9912                " [in module %s]"),
9913              dwp_file->name);
9914     }
9915
9916   /* It's easier for the rest of the code if we fake a struct dwo_file and
9917      have dwo_unit "live" in that.  At least for now.
9918
9919      The DWP file can be made up of a random collection of CUs and TUs.
9920      However, for each CU + set of TUs that came from the same original DWO
9921      file, we can combine them back into a virtual DWO file to save space
9922      (fewer struct dwo_file objects to allocate).  Remember that for really
9923      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9924
9925   virtual_dwo_name =
9926     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
9927                 get_section_id (&sections.abbrev),
9928                 get_section_id (&sections.line),
9929                 get_section_id (&sections.loc),
9930                 get_section_id (&sections.str_offsets));
9931   make_cleanup (xfree, virtual_dwo_name);
9932   /* Can we use an existing virtual DWO file?  */
9933   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9934   /* Create one if necessary.  */
9935   if (*dwo_file_slot == NULL)
9936     {
9937       if (dwarf2_read_debug)
9938         {
9939           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9940                               virtual_dwo_name);
9941         }
9942       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9943       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9944                                           virtual_dwo_name,
9945                                           strlen (virtual_dwo_name));
9946       dwo_file->comp_dir = comp_dir;
9947       dwo_file->sections.abbrev = sections.abbrev;
9948       dwo_file->sections.line = sections.line;
9949       dwo_file->sections.loc = sections.loc;
9950       dwo_file->sections.macinfo = sections.macinfo;
9951       dwo_file->sections.macro = sections.macro;
9952       dwo_file->sections.str_offsets = sections.str_offsets;
9953       /* The "str" section is global to the entire DWP file.  */
9954       dwo_file->sections.str = dwp_file->sections.str;
9955       /* The info or types section is assigned below to dwo_unit,
9956          there's no need to record it in dwo_file.
9957          Also, we can't simply record type sections in dwo_file because
9958          we record a pointer into the vector in dwo_unit.  As we collect more
9959          types we'll grow the vector and eventually have to reallocate space
9960          for it, invalidating all copies of pointers into the previous
9961          contents.  */
9962       *dwo_file_slot = dwo_file;
9963     }
9964   else
9965     {
9966       if (dwarf2_read_debug)
9967         {
9968           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
9969                               virtual_dwo_name);
9970         }
9971       dwo_file = *dwo_file_slot;
9972     }
9973   do_cleanups (cleanups);
9974
9975   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9976   dwo_unit->dwo_file = dwo_file;
9977   dwo_unit->signature = signature;
9978   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
9979                                      sizeof (struct dwarf2_section_info));
9980   *dwo_unit->section = sections.info_or_types;
9981   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
9982
9983   return dwo_unit;
9984 }
9985
9986 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
9987    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
9988    piece within that section used by a TU/CU, return a virtual section
9989    of just that piece.  */
9990
9991 static struct dwarf2_section_info
9992 create_dwp_v2_section (struct dwarf2_section_info *section,
9993                        bfd_size_type offset, bfd_size_type size)
9994 {
9995   struct dwarf2_section_info result;
9996   asection *sectp;
9997
9998   gdb_assert (section != NULL);
9999   gdb_assert (!section->is_virtual);
10000
10001   memset (&result, 0, sizeof (result));
10002   result.s.containing_section = section;
10003   result.is_virtual = 1;
10004
10005   if (size == 0)
10006     return result;
10007
10008   sectp = get_section_bfd_section (section);
10009
10010   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10011      bounds of the real section.  This is a pretty-rare event, so just
10012      flag an error (easier) instead of a warning and trying to cope.  */
10013   if (sectp == NULL
10014       || offset + size > bfd_get_section_size (sectp))
10015     {
10016       bfd *abfd = sectp->owner;
10017
10018       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10019                " in section %s [in module %s]"),
10020              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10021              objfile_name (dwarf2_per_objfile->objfile));
10022     }
10023
10024   result.virtual_offset = offset;
10025   result.size = size;
10026   return result;
10027 }
10028
10029 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10030    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10031    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10032    This is for DWP version 2 files.  */
10033
10034 static struct dwo_unit *
10035 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10036                            uint32_t unit_index,
10037                            const char *comp_dir,
10038                            ULONGEST signature, int is_debug_types)
10039 {
10040   struct objfile *objfile = dwarf2_per_objfile->objfile;
10041   const struct dwp_hash_table *dwp_htab =
10042     is_debug_types ? dwp_file->tus : dwp_file->cus;
10043   bfd *dbfd = dwp_file->dbfd;
10044   const char *kind = is_debug_types ? "TU" : "CU";
10045   struct dwo_file *dwo_file;
10046   struct dwo_unit *dwo_unit;
10047   struct virtual_v2_dwo_sections sections;
10048   void **dwo_file_slot;
10049   char *virtual_dwo_name;
10050   struct dwarf2_section_info *cutu;
10051   struct cleanup *cleanups;
10052   int i;
10053
10054   gdb_assert (dwp_file->version == 2);
10055
10056   if (dwarf2_read_debug)
10057     {
10058       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10059                           kind,
10060                           pulongest (unit_index), hex_string (signature),
10061                           dwp_file->name);
10062     }
10063
10064   /* Fetch the section offsets of this DWO unit.  */
10065
10066   memset (&sections, 0, sizeof (sections));
10067   cleanups = make_cleanup (null_cleanup, 0);
10068
10069   for (i = 0; i < dwp_htab->nr_columns; ++i)
10070     {
10071       uint32_t offset = read_4_bytes (dbfd,
10072                                       dwp_htab->section_pool.v2.offsets
10073                                       + (((unit_index - 1) * dwp_htab->nr_columns
10074                                           + i)
10075                                          * sizeof (uint32_t)));
10076       uint32_t size = read_4_bytes (dbfd,
10077                                     dwp_htab->section_pool.v2.sizes
10078                                     + (((unit_index - 1) * dwp_htab->nr_columns
10079                                         + i)
10080                                        * sizeof (uint32_t)));
10081
10082       switch (dwp_htab->section_pool.v2.section_ids[i])
10083         {
10084         case DW_SECT_INFO:
10085         case DW_SECT_TYPES:
10086           sections.info_or_types_offset = offset;
10087           sections.info_or_types_size = size;
10088           break;
10089         case DW_SECT_ABBREV:
10090           sections.abbrev_offset = offset;
10091           sections.abbrev_size = size;
10092           break;
10093         case DW_SECT_LINE:
10094           sections.line_offset = offset;
10095           sections.line_size = size;
10096           break;
10097         case DW_SECT_LOC:
10098           sections.loc_offset = offset;
10099           sections.loc_size = size;
10100           break;
10101         case DW_SECT_STR_OFFSETS:
10102           sections.str_offsets_offset = offset;
10103           sections.str_offsets_size = size;
10104           break;
10105         case DW_SECT_MACINFO:
10106           sections.macinfo_offset = offset;
10107           sections.macinfo_size = size;
10108           break;
10109         case DW_SECT_MACRO:
10110           sections.macro_offset = offset;
10111           sections.macro_size = size;
10112           break;
10113         }
10114     }
10115
10116   /* It's easier for the rest of the code if we fake a struct dwo_file and
10117      have dwo_unit "live" in that.  At least for now.
10118
10119      The DWP file can be made up of a random collection of CUs and TUs.
10120      However, for each CU + set of TUs that came from the same original DWO
10121      file, we can combine them back into a virtual DWO file to save space
10122      (fewer struct dwo_file objects to allocate).  Remember that for really
10123      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10124
10125   virtual_dwo_name =
10126     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10127                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10128                 (long) (sections.line_size ? sections.line_offset : 0),
10129                 (long) (sections.loc_size ? sections.loc_offset : 0),
10130                 (long) (sections.str_offsets_size
10131                         ? sections.str_offsets_offset : 0));
10132   make_cleanup (xfree, virtual_dwo_name);
10133   /* Can we use an existing virtual DWO file?  */
10134   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10135   /* Create one if necessary.  */
10136   if (*dwo_file_slot == NULL)
10137     {
10138       if (dwarf2_read_debug)
10139         {
10140           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10141                               virtual_dwo_name);
10142         }
10143       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10144       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10145                                           virtual_dwo_name,
10146                                           strlen (virtual_dwo_name));
10147       dwo_file->comp_dir = comp_dir;
10148       dwo_file->sections.abbrev =
10149         create_dwp_v2_section (&dwp_file->sections.abbrev,
10150                                sections.abbrev_offset, sections.abbrev_size);
10151       dwo_file->sections.line =
10152         create_dwp_v2_section (&dwp_file->sections.line,
10153                                sections.line_offset, sections.line_size);
10154       dwo_file->sections.loc =
10155         create_dwp_v2_section (&dwp_file->sections.loc,
10156                                sections.loc_offset, sections.loc_size);
10157       dwo_file->sections.macinfo =
10158         create_dwp_v2_section (&dwp_file->sections.macinfo,
10159                                sections.macinfo_offset, sections.macinfo_size);
10160       dwo_file->sections.macro =
10161         create_dwp_v2_section (&dwp_file->sections.macro,
10162                                sections.macro_offset, sections.macro_size);
10163       dwo_file->sections.str_offsets =
10164         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10165                                sections.str_offsets_offset,
10166                                sections.str_offsets_size);
10167       /* The "str" section is global to the entire DWP file.  */
10168       dwo_file->sections.str = dwp_file->sections.str;
10169       /* The info or types section is assigned below to dwo_unit,
10170          there's no need to record it in dwo_file.
10171          Also, we can't simply record type sections in dwo_file because
10172          we record a pointer into the vector in dwo_unit.  As we collect more
10173          types we'll grow the vector and eventually have to reallocate space
10174          for it, invalidating all copies of pointers into the previous
10175          contents.  */
10176       *dwo_file_slot = dwo_file;
10177     }
10178   else
10179     {
10180       if (dwarf2_read_debug)
10181         {
10182           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10183                               virtual_dwo_name);
10184         }
10185       dwo_file = *dwo_file_slot;
10186     }
10187   do_cleanups (cleanups);
10188
10189   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10190   dwo_unit->dwo_file = dwo_file;
10191   dwo_unit->signature = signature;
10192   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10193                                      sizeof (struct dwarf2_section_info));
10194   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10195                                               ? &dwp_file->sections.types
10196                                               : &dwp_file->sections.info,
10197                                               sections.info_or_types_offset,
10198                                               sections.info_or_types_size);
10199   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10200
10201   return dwo_unit;
10202 }
10203
10204 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10205    Returns NULL if the signature isn't found.  */
10206
10207 static struct dwo_unit *
10208 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10209                         ULONGEST signature, int is_debug_types)
10210 {
10211   const struct dwp_hash_table *dwp_htab =
10212     is_debug_types ? dwp_file->tus : dwp_file->cus;
10213   bfd *dbfd = dwp_file->dbfd;
10214   uint32_t mask = dwp_htab->nr_slots - 1;
10215   uint32_t hash = signature & mask;
10216   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10217   unsigned int i;
10218   void **slot;
10219   struct dwo_unit find_dwo_cu, *dwo_cu;
10220
10221   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10222   find_dwo_cu.signature = signature;
10223   slot = htab_find_slot (is_debug_types
10224                          ? dwp_file->loaded_tus
10225                          : dwp_file->loaded_cus,
10226                          &find_dwo_cu, INSERT);
10227
10228   if (*slot != NULL)
10229     return *slot;
10230
10231   /* Use a for loop so that we don't loop forever on bad debug info.  */
10232   for (i = 0; i < dwp_htab->nr_slots; ++i)
10233     {
10234       ULONGEST signature_in_table;
10235
10236       signature_in_table =
10237         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10238       if (signature_in_table == signature)
10239         {
10240           uint32_t unit_index =
10241             read_4_bytes (dbfd,
10242                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10243
10244           if (dwp_file->version == 1)
10245             {
10246               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10247                                                  comp_dir, signature,
10248                                                  is_debug_types);
10249             }
10250           else
10251             {
10252               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10253                                                  comp_dir, signature,
10254                                                  is_debug_types);
10255             }
10256           return *slot;
10257         }
10258       if (signature_in_table == 0)
10259         return NULL;
10260       hash = (hash + hash2) & mask;
10261     }
10262
10263   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10264            " [in module %s]"),
10265          dwp_file->name);
10266 }
10267
10268 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10269    Open the file specified by FILE_NAME and hand it off to BFD for
10270    preliminary analysis.  Return a newly initialized bfd *, which
10271    includes a canonicalized copy of FILE_NAME.
10272    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10273    SEARCH_CWD is true if the current directory is to be searched.
10274    It will be searched before debug-file-directory.
10275    If successful, the file is added to the bfd include table of the
10276    objfile's bfd (see gdb_bfd_record_inclusion).
10277    If unable to find/open the file, return NULL.
10278    NOTE: This function is derived from symfile_bfd_open.  */
10279
10280 static bfd *
10281 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10282 {
10283   bfd *sym_bfd;
10284   int desc, flags;
10285   char *absolute_name;
10286   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10287      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10288      to debug_file_directory.  */
10289   char *search_path;
10290   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10291
10292   if (search_cwd)
10293     {
10294       if (*debug_file_directory != '\0')
10295         search_path = concat (".", dirname_separator_string,
10296                               debug_file_directory, NULL);
10297       else
10298         search_path = xstrdup (".");
10299     }
10300   else
10301     search_path = xstrdup (debug_file_directory);
10302
10303   flags = OPF_RETURN_REALPATH;
10304   if (is_dwp)
10305     flags |= OPF_SEARCH_IN_PATH;
10306   desc = openp (search_path, flags, file_name,
10307                 O_RDONLY | O_BINARY, &absolute_name);
10308   xfree (search_path);
10309   if (desc < 0)
10310     return NULL;
10311
10312   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
10313   xfree (absolute_name);
10314   if (sym_bfd == NULL)
10315     return NULL;
10316   bfd_set_cacheable (sym_bfd, 1);
10317
10318   if (!bfd_check_format (sym_bfd, bfd_object))
10319     {
10320       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
10321       return NULL;
10322     }
10323
10324   /* Success.  Record the bfd as having been included by the objfile's bfd.
10325      This is important because things like demangled_names_hash lives in the
10326      objfile's per_bfd space and may have references to things like symbol
10327      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
10328   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10329
10330   return sym_bfd;
10331 }
10332
10333 /* Try to open DWO file FILE_NAME.
10334    COMP_DIR is the DW_AT_comp_dir attribute.
10335    The result is the bfd handle of the file.
10336    If there is a problem finding or opening the file, return NULL.
10337    Upon success, the canonicalized path of the file is stored in the bfd,
10338    same as symfile_bfd_open.  */
10339
10340 static bfd *
10341 open_dwo_file (const char *file_name, const char *comp_dir)
10342 {
10343   bfd *abfd;
10344
10345   if (IS_ABSOLUTE_PATH (file_name))
10346     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10347
10348   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10349
10350   if (comp_dir != NULL)
10351     {
10352       char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
10353
10354       /* NOTE: If comp_dir is a relative path, this will also try the
10355          search path, which seems useful.  */
10356       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
10357       xfree (path_to_try);
10358       if (abfd != NULL)
10359         return abfd;
10360     }
10361
10362   /* That didn't work, try debug-file-directory, which, despite its name,
10363      is a list of paths.  */
10364
10365   if (*debug_file_directory == '\0')
10366     return NULL;
10367
10368   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10369 }
10370
10371 /* This function is mapped across the sections and remembers the offset and
10372    size of each of the DWO debugging sections we are interested in.  */
10373
10374 static void
10375 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10376 {
10377   struct dwo_sections *dwo_sections = dwo_sections_ptr;
10378   const struct dwop_section_names *names = &dwop_section_names;
10379
10380   if (section_is_p (sectp->name, &names->abbrev_dwo))
10381     {
10382       dwo_sections->abbrev.s.asection = sectp;
10383       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10384     }
10385   else if (section_is_p (sectp->name, &names->info_dwo))
10386     {
10387       dwo_sections->info.s.asection = sectp;
10388       dwo_sections->info.size = bfd_get_section_size (sectp);
10389     }
10390   else if (section_is_p (sectp->name, &names->line_dwo))
10391     {
10392       dwo_sections->line.s.asection = sectp;
10393       dwo_sections->line.size = bfd_get_section_size (sectp);
10394     }
10395   else if (section_is_p (sectp->name, &names->loc_dwo))
10396     {
10397       dwo_sections->loc.s.asection = sectp;
10398       dwo_sections->loc.size = bfd_get_section_size (sectp);
10399     }
10400   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10401     {
10402       dwo_sections->macinfo.s.asection = sectp;
10403       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10404     }
10405   else if (section_is_p (sectp->name, &names->macro_dwo))
10406     {
10407       dwo_sections->macro.s.asection = sectp;
10408       dwo_sections->macro.size = bfd_get_section_size (sectp);
10409     }
10410   else if (section_is_p (sectp->name, &names->str_dwo))
10411     {
10412       dwo_sections->str.s.asection = sectp;
10413       dwo_sections->str.size = bfd_get_section_size (sectp);
10414     }
10415   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10416     {
10417       dwo_sections->str_offsets.s.asection = sectp;
10418       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10419     }
10420   else if (section_is_p (sectp->name, &names->types_dwo))
10421     {
10422       struct dwarf2_section_info type_section;
10423
10424       memset (&type_section, 0, sizeof (type_section));
10425       type_section.s.asection = sectp;
10426       type_section.size = bfd_get_section_size (sectp);
10427       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10428                      &type_section);
10429     }
10430 }
10431
10432 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10433    by PER_CU.  This is for the non-DWP case.
10434    The result is NULL if DWO_NAME can't be found.  */
10435
10436 static struct dwo_file *
10437 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10438                         const char *dwo_name, const char *comp_dir)
10439 {
10440   struct objfile *objfile = dwarf2_per_objfile->objfile;
10441   struct dwo_file *dwo_file;
10442   bfd *dbfd;
10443   struct cleanup *cleanups;
10444
10445   dbfd = open_dwo_file (dwo_name, comp_dir);
10446   if (dbfd == NULL)
10447     {
10448       if (dwarf2_read_debug)
10449         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10450       return NULL;
10451     }
10452   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10453   dwo_file->dwo_name = dwo_name;
10454   dwo_file->comp_dir = comp_dir;
10455   dwo_file->dbfd = dbfd;
10456
10457   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10458
10459   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
10460
10461   dwo_file->cu = create_dwo_cu (dwo_file);
10462
10463   dwo_file->tus = create_debug_types_hash_table (dwo_file,
10464                                                  dwo_file->sections.types);
10465
10466   discard_cleanups (cleanups);
10467
10468   if (dwarf2_read_debug)
10469     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10470
10471   return dwo_file;
10472 }
10473
10474 /* This function is mapped across the sections and remembers the offset and
10475    size of each of the DWP debugging sections common to version 1 and 2 that
10476    we are interested in.  */
10477
10478 static void
10479 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10480                                    void *dwp_file_ptr)
10481 {
10482   struct dwp_file *dwp_file = dwp_file_ptr;
10483   const struct dwop_section_names *names = &dwop_section_names;
10484   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10485
10486   /* Record the ELF section number for later lookup: this is what the
10487      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10488   gdb_assert (elf_section_nr < dwp_file->num_sections);
10489   dwp_file->elf_sections[elf_section_nr] = sectp;
10490
10491   /* Look for specific sections that we need.  */
10492   if (section_is_p (sectp->name, &names->str_dwo))
10493     {
10494       dwp_file->sections.str.s.asection = sectp;
10495       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10496     }
10497   else if (section_is_p (sectp->name, &names->cu_index))
10498     {
10499       dwp_file->sections.cu_index.s.asection = sectp;
10500       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10501     }
10502   else if (section_is_p (sectp->name, &names->tu_index))
10503     {
10504       dwp_file->sections.tu_index.s.asection = sectp;
10505       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10506     }
10507 }
10508
10509 /* This function is mapped across the sections and remembers the offset and
10510    size of each of the DWP version 2 debugging sections that we are interested
10511    in.  This is split into a separate function because we don't know if we
10512    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10513
10514 static void
10515 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10516 {
10517   struct dwp_file *dwp_file = dwp_file_ptr;
10518   const struct dwop_section_names *names = &dwop_section_names;
10519   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10520
10521   /* Record the ELF section number for later lookup: this is what the
10522      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10523   gdb_assert (elf_section_nr < dwp_file->num_sections);
10524   dwp_file->elf_sections[elf_section_nr] = sectp;
10525
10526   /* Look for specific sections that we need.  */
10527   if (section_is_p (sectp->name, &names->abbrev_dwo))
10528     {
10529       dwp_file->sections.abbrev.s.asection = sectp;
10530       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10531     }
10532   else if (section_is_p (sectp->name, &names->info_dwo))
10533     {
10534       dwp_file->sections.info.s.asection = sectp;
10535       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10536     }
10537   else if (section_is_p (sectp->name, &names->line_dwo))
10538     {
10539       dwp_file->sections.line.s.asection = sectp;
10540       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10541     }
10542   else if (section_is_p (sectp->name, &names->loc_dwo))
10543     {
10544       dwp_file->sections.loc.s.asection = sectp;
10545       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10546     }
10547   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10548     {
10549       dwp_file->sections.macinfo.s.asection = sectp;
10550       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10551     }
10552   else if (section_is_p (sectp->name, &names->macro_dwo))
10553     {
10554       dwp_file->sections.macro.s.asection = sectp;
10555       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10556     }
10557   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10558     {
10559       dwp_file->sections.str_offsets.s.asection = sectp;
10560       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10561     }
10562   else if (section_is_p (sectp->name, &names->types_dwo))
10563     {
10564       dwp_file->sections.types.s.asection = sectp;
10565       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10566     }
10567 }
10568
10569 /* Hash function for dwp_file loaded CUs/TUs.  */
10570
10571 static hashval_t
10572 hash_dwp_loaded_cutus (const void *item)
10573 {
10574   const struct dwo_unit *dwo_unit = item;
10575
10576   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10577   return dwo_unit->signature;
10578 }
10579
10580 /* Equality function for dwp_file loaded CUs/TUs.  */
10581
10582 static int
10583 eq_dwp_loaded_cutus (const void *a, const void *b)
10584 {
10585   const struct dwo_unit *dua = a;
10586   const struct dwo_unit *dub = b;
10587
10588   return dua->signature == dub->signature;
10589 }
10590
10591 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10592
10593 static htab_t
10594 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10595 {
10596   return htab_create_alloc_ex (3,
10597                                hash_dwp_loaded_cutus,
10598                                eq_dwp_loaded_cutus,
10599                                NULL,
10600                                &objfile->objfile_obstack,
10601                                hashtab_obstack_allocate,
10602                                dummy_obstack_deallocate);
10603 }
10604
10605 /* Try to open DWP file FILE_NAME.
10606    The result is the bfd handle of the file.
10607    If there is a problem finding or opening the file, return NULL.
10608    Upon success, the canonicalized path of the file is stored in the bfd,
10609    same as symfile_bfd_open.  */
10610
10611 static bfd *
10612 open_dwp_file (const char *file_name)
10613 {
10614   bfd *abfd;
10615
10616   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10617   if (abfd != NULL)
10618     return abfd;
10619
10620   /* Work around upstream bug 15652.
10621      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10622      [Whether that's a "bug" is debatable, but it is getting in our way.]
10623      We have no real idea where the dwp file is, because gdb's realpath-ing
10624      of the executable's path may have discarded the needed info.
10625      [IWBN if the dwp file name was recorded in the executable, akin to
10626      .gnu_debuglink, but that doesn't exist yet.]
10627      Strip the directory from FILE_NAME and search again.  */
10628   if (*debug_file_directory != '\0')
10629     {
10630       /* Don't implicitly search the current directory here.
10631          If the user wants to search "." to handle this case,
10632          it must be added to debug-file-directory.  */
10633       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10634                                  0 /*search_cwd*/);
10635     }
10636
10637   return NULL;
10638 }
10639
10640 /* Initialize the use of the DWP file for the current objfile.
10641    By convention the name of the DWP file is ${objfile}.dwp.
10642    The result is NULL if it can't be found.  */
10643
10644 static struct dwp_file *
10645 open_and_init_dwp_file (void)
10646 {
10647   struct objfile *objfile = dwarf2_per_objfile->objfile;
10648   struct dwp_file *dwp_file;
10649   char *dwp_name;
10650   bfd *dbfd;
10651   struct cleanup *cleanups;
10652
10653   /* Try to find first .dwp for the binary file before any symbolic links
10654      resolving.  */
10655   dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10656   cleanups = make_cleanup (xfree, dwp_name);
10657
10658   dbfd = open_dwp_file (dwp_name);
10659   if (dbfd == NULL
10660       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10661     {
10662       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10663       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10664       make_cleanup (xfree, dwp_name);
10665       dbfd = open_dwp_file (dwp_name);
10666     }
10667
10668   if (dbfd == NULL)
10669     {
10670       if (dwarf2_read_debug)
10671         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10672       do_cleanups (cleanups);
10673       return NULL;
10674     }
10675   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10676   dwp_file->name = bfd_get_filename (dbfd);
10677   dwp_file->dbfd = dbfd;
10678   do_cleanups (cleanups);
10679
10680   /* +1: section 0 is unused */
10681   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10682   dwp_file->elf_sections =
10683     OBSTACK_CALLOC (&objfile->objfile_obstack,
10684                     dwp_file->num_sections, asection *);
10685
10686   bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
10687
10688   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10689
10690   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10691
10692   /* The DWP file version is stored in the hash table.  Oh well.  */
10693   if (dwp_file->cus->version != dwp_file->tus->version)
10694     {
10695       /* Technically speaking, we should try to limp along, but this is
10696          pretty bizarre.  We use pulongest here because that's the established
10697          portability solution (e.g, we cannot use %u for uint32_t).  */
10698       error (_("Dwarf Error: DWP file CU version %s doesn't match"
10699                " TU version %s [in DWP file %s]"),
10700              pulongest (dwp_file->cus->version),
10701              pulongest (dwp_file->tus->version), dwp_name);
10702     }
10703   dwp_file->version = dwp_file->cus->version;
10704
10705   if (dwp_file->version == 2)
10706     bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10707
10708   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10709   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10710
10711   if (dwarf2_read_debug)
10712     {
10713       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10714       fprintf_unfiltered (gdb_stdlog,
10715                           "    %s CUs, %s TUs\n",
10716                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10717                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10718     }
10719
10720   return dwp_file;
10721 }
10722
10723 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10724
10725 static struct dwp_file *
10726 get_dwp_file (void)
10727 {
10728   if (! dwarf2_per_objfile->dwp_checked)
10729     {
10730       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10731       dwarf2_per_objfile->dwp_checked = 1;
10732     }
10733   return dwarf2_per_objfile->dwp_file;
10734 }
10735
10736 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10737    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10738    or in the DWP file for the objfile, referenced by THIS_UNIT.
10739    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10740    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10741
10742    This is called, for example, when wanting to read a variable with a
10743    complex location.  Therefore we don't want to do file i/o for every call.
10744    Therefore we don't want to look for a DWO file on every call.
10745    Therefore we first see if we've already seen SIGNATURE in a DWP file,
10746    then we check if we've already seen DWO_NAME, and only THEN do we check
10747    for a DWO file.
10748
10749    The result is a pointer to the dwo_unit object or NULL if we didn't find it
10750    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
10751
10752 static struct dwo_unit *
10753 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10754                  const char *dwo_name, const char *comp_dir,
10755                  ULONGEST signature, int is_debug_types)
10756 {
10757   struct objfile *objfile = dwarf2_per_objfile->objfile;
10758   const char *kind = is_debug_types ? "TU" : "CU";
10759   void **dwo_file_slot;
10760   struct dwo_file *dwo_file;
10761   struct dwp_file *dwp_file;
10762
10763   /* First see if there's a DWP file.
10764      If we have a DWP file but didn't find the DWO inside it, don't
10765      look for the original DWO file.  It makes gdb behave differently
10766      depending on whether one is debugging in the build tree.  */
10767
10768   dwp_file = get_dwp_file ();
10769   if (dwp_file != NULL)
10770     {
10771       const struct dwp_hash_table *dwp_htab =
10772         is_debug_types ? dwp_file->tus : dwp_file->cus;
10773
10774       if (dwp_htab != NULL)
10775         {
10776           struct dwo_unit *dwo_cutu =
10777             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10778                                     signature, is_debug_types);
10779
10780           if (dwo_cutu != NULL)
10781             {
10782               if (dwarf2_read_debug)
10783                 {
10784                   fprintf_unfiltered (gdb_stdlog,
10785                                       "Virtual DWO %s %s found: @%s\n",
10786                                       kind, hex_string (signature),
10787                                       host_address_to_string (dwo_cutu));
10788                 }
10789               return dwo_cutu;
10790             }
10791         }
10792     }
10793   else
10794     {
10795       /* No DWP file, look for the DWO file.  */
10796
10797       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10798       if (*dwo_file_slot == NULL)
10799         {
10800           /* Read in the file and build a table of the CUs/TUs it contains.  */
10801           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
10802         }
10803       /* NOTE: This will be NULL if unable to open the file.  */
10804       dwo_file = *dwo_file_slot;
10805
10806       if (dwo_file != NULL)
10807         {
10808           struct dwo_unit *dwo_cutu = NULL;
10809
10810           if (is_debug_types && dwo_file->tus)
10811             {
10812               struct dwo_unit find_dwo_cutu;
10813
10814               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10815               find_dwo_cutu.signature = signature;
10816               dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10817             }
10818           else if (!is_debug_types && dwo_file->cu)
10819             {
10820               if (signature == dwo_file->cu->signature)
10821                 dwo_cutu = dwo_file->cu;
10822             }
10823
10824           if (dwo_cutu != NULL)
10825             {
10826               if (dwarf2_read_debug)
10827                 {
10828                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10829                                       kind, dwo_name, hex_string (signature),
10830                                       host_address_to_string (dwo_cutu));
10831                 }
10832               return dwo_cutu;
10833             }
10834         }
10835     }
10836
10837   /* We didn't find it.  This could mean a dwo_id mismatch, or
10838      someone deleted the DWO/DWP file, or the search path isn't set up
10839      correctly to find the file.  */
10840
10841   if (dwarf2_read_debug)
10842     {
10843       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
10844                           kind, dwo_name, hex_string (signature));
10845     }
10846
10847   /* This is a warning and not a complaint because it can be caused by
10848      pilot error (e.g., user accidentally deleting the DWO).  */
10849   {
10850     /* Print the name of the DWP file if we looked there, helps the user
10851        better diagnose the problem.  */
10852     char *dwp_text = NULL;
10853     struct cleanup *cleanups;
10854
10855     if (dwp_file != NULL)
10856       dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
10857     cleanups = make_cleanup (xfree, dwp_text);
10858
10859     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
10860                " [in module %s]"),
10861              kind, dwo_name, hex_string (signature),
10862              dwp_text != NULL ? dwp_text : "",
10863              this_unit->is_debug_types ? "TU" : "CU",
10864              this_unit->offset.sect_off, objfile_name (objfile));
10865
10866     do_cleanups (cleanups);
10867   }
10868   return NULL;
10869 }
10870
10871 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
10872    See lookup_dwo_cutu_unit for details.  */
10873
10874 static struct dwo_unit *
10875 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
10876                       const char *dwo_name, const char *comp_dir,
10877                       ULONGEST signature)
10878 {
10879   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
10880 }
10881
10882 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
10883    See lookup_dwo_cutu_unit for details.  */
10884
10885 static struct dwo_unit *
10886 lookup_dwo_type_unit (struct signatured_type *this_tu,
10887                       const char *dwo_name, const char *comp_dir)
10888 {
10889   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
10890 }
10891
10892 /* Traversal function for queue_and_load_all_dwo_tus.  */
10893
10894 static int
10895 queue_and_load_dwo_tu (void **slot, void *info)
10896 {
10897   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
10898   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
10899   ULONGEST signature = dwo_unit->signature;
10900   struct signatured_type *sig_type =
10901     lookup_dwo_signatured_type (per_cu->cu, signature);
10902
10903   if (sig_type != NULL)
10904     {
10905       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
10906
10907       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
10908          a real dependency of PER_CU on SIG_TYPE.  That is detected later
10909          while processing PER_CU.  */
10910       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
10911         load_full_type_unit (sig_cu);
10912       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
10913     }
10914
10915   return 1;
10916 }
10917
10918 /* Queue all TUs contained in the DWO of PER_CU to be read in.
10919    The DWO may have the only definition of the type, though it may not be
10920    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
10921    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
10922
10923 static void
10924 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
10925 {
10926   struct dwo_unit *dwo_unit;
10927   struct dwo_file *dwo_file;
10928
10929   gdb_assert (!per_cu->is_debug_types);
10930   gdb_assert (get_dwp_file () == NULL);
10931   gdb_assert (per_cu->cu != NULL);
10932
10933   dwo_unit = per_cu->cu->dwo_unit;
10934   gdb_assert (dwo_unit != NULL);
10935
10936   dwo_file = dwo_unit->dwo_file;
10937   if (dwo_file->tus != NULL)
10938     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
10939 }
10940
10941 /* Free all resources associated with DWO_FILE.
10942    Close the DWO file and munmap the sections.
10943    All memory should be on the objfile obstack.  */
10944
10945 static void
10946 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
10947 {
10948   int ix;
10949   struct dwarf2_section_info *section;
10950
10951   /* Note: dbfd is NULL for virtual DWO files.  */
10952   gdb_bfd_unref (dwo_file->dbfd);
10953
10954   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
10955 }
10956
10957 /* Wrapper for free_dwo_file for use in cleanups.  */
10958
10959 static void
10960 free_dwo_file_cleanup (void *arg)
10961 {
10962   struct dwo_file *dwo_file = (struct dwo_file *) arg;
10963   struct objfile *objfile = dwarf2_per_objfile->objfile;
10964
10965   free_dwo_file (dwo_file, objfile);
10966 }
10967
10968 /* Traversal function for free_dwo_files.  */
10969
10970 static int
10971 free_dwo_file_from_slot (void **slot, void *info)
10972 {
10973   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
10974   struct objfile *objfile = (struct objfile *) info;
10975
10976   free_dwo_file (dwo_file, objfile);
10977
10978   return 1;
10979 }
10980
10981 /* Free all resources associated with DWO_FILES.  */
10982
10983 static void
10984 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
10985 {
10986   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
10987 }
10988 \f
10989 /* Read in various DIEs.  */
10990
10991 /* qsort helper for inherit_abstract_dies.  */
10992
10993 static int
10994 unsigned_int_compar (const void *ap, const void *bp)
10995 {
10996   unsigned int a = *(unsigned int *) ap;
10997   unsigned int b = *(unsigned int *) bp;
10998
10999   return (a > b) - (b > a);
11000 }
11001
11002 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
11003    Inherit only the children of the DW_AT_abstract_origin DIE not being
11004    already referenced by DW_AT_abstract_origin from the children of the
11005    current DIE.  */
11006
11007 static void
11008 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11009 {
11010   struct die_info *child_die;
11011   unsigned die_children_count;
11012   /* CU offsets which were referenced by children of the current DIE.  */
11013   sect_offset *offsets;
11014   sect_offset *offsets_end, *offsetp;
11015   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
11016   struct die_info *origin_die;
11017   /* Iterator of the ORIGIN_DIE children.  */
11018   struct die_info *origin_child_die;
11019   struct cleanup *cleanups;
11020   struct attribute *attr;
11021   struct dwarf2_cu *origin_cu;
11022   struct pending **origin_previous_list_in_scope;
11023
11024   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11025   if (!attr)
11026     return;
11027
11028   /* Note that following die references may follow to a die in a
11029      different cu.  */
11030
11031   origin_cu = cu;
11032   origin_die = follow_die_ref (die, attr, &origin_cu);
11033
11034   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11035      symbols in.  */
11036   origin_previous_list_in_scope = origin_cu->list_in_scope;
11037   origin_cu->list_in_scope = cu->list_in_scope;
11038
11039   if (die->tag != origin_die->tag
11040       && !(die->tag == DW_TAG_inlined_subroutine
11041            && origin_die->tag == DW_TAG_subprogram))
11042     complaint (&symfile_complaints,
11043                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
11044                die->offset.sect_off, origin_die->offset.sect_off);
11045
11046   child_die = die->child;
11047   die_children_count = 0;
11048   while (child_die && child_die->tag)
11049     {
11050       child_die = sibling_die (child_die);
11051       die_children_count++;
11052     }
11053   offsets = xmalloc (sizeof (*offsets) * die_children_count);
11054   cleanups = make_cleanup (xfree, offsets);
11055
11056   offsets_end = offsets;
11057   child_die = die->child;
11058   while (child_die && child_die->tag)
11059     {
11060       /* For each CHILD_DIE, find the corresponding child of
11061          ORIGIN_DIE.  If there is more than one layer of
11062          DW_AT_abstract_origin, follow them all; there shouldn't be,
11063          but GCC versions at least through 4.4 generate this (GCC PR
11064          40573).  */
11065       struct die_info *child_origin_die = child_die;
11066       struct dwarf2_cu *child_origin_cu = cu;
11067
11068       while (1)
11069         {
11070           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11071                               child_origin_cu);
11072           if (attr == NULL)
11073             break;
11074           child_origin_die = follow_die_ref (child_origin_die, attr,
11075                                              &child_origin_cu);
11076         }
11077
11078       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11079          counterpart may exist.  */
11080       if (child_origin_die != child_die)
11081         {
11082           if (child_die->tag != child_origin_die->tag
11083               && !(child_die->tag == DW_TAG_inlined_subroutine
11084                    && child_origin_die->tag == DW_TAG_subprogram))
11085             complaint (&symfile_complaints,
11086                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11087                          "different tags"), child_die->offset.sect_off,
11088                        child_origin_die->offset.sect_off);
11089           if (child_origin_die->parent != origin_die)
11090             complaint (&symfile_complaints,
11091                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11092                          "different parents"), child_die->offset.sect_off,
11093                        child_origin_die->offset.sect_off);
11094           else
11095             *offsets_end++ = child_origin_die->offset;
11096         }
11097       child_die = sibling_die (child_die);
11098     }
11099   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11100          unsigned_int_compar);
11101   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
11102     if (offsetp[-1].sect_off == offsetp->sect_off)
11103       complaint (&symfile_complaints,
11104                  _("Multiple children of DIE 0x%x refer "
11105                    "to DIE 0x%x as their abstract origin"),
11106                  die->offset.sect_off, offsetp->sect_off);
11107
11108   offsetp = offsets;
11109   origin_child_die = origin_die->child;
11110   while (origin_child_die && origin_child_die->tag)
11111     {
11112       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
11113       while (offsetp < offsets_end
11114              && offsetp->sect_off < origin_child_die->offset.sect_off)
11115         offsetp++;
11116       if (offsetp >= offsets_end
11117           || offsetp->sect_off > origin_child_die->offset.sect_off)
11118         {
11119           /* Found that ORIGIN_CHILD_DIE is really not referenced.
11120              Check whether we're already processing ORIGIN_CHILD_DIE.
11121              This can happen with mutually referenced abstract_origins.
11122              PR 16581.  */
11123           if (!origin_child_die->in_process)
11124             process_die (origin_child_die, origin_cu);
11125         }
11126       origin_child_die = sibling_die (origin_child_die);
11127     }
11128   origin_cu->list_in_scope = origin_previous_list_in_scope;
11129
11130   do_cleanups (cleanups);
11131 }
11132
11133 static void
11134 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
11135 {
11136   struct objfile *objfile = cu->objfile;
11137   struct context_stack *new;
11138   CORE_ADDR lowpc;
11139   CORE_ADDR highpc;
11140   struct die_info *child_die;
11141   struct attribute *attr, *call_line, *call_file;
11142   const char *name;
11143   CORE_ADDR baseaddr;
11144   struct block *block;
11145   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
11146   VEC (symbolp) *template_args = NULL;
11147   struct template_symbol *templ_func = NULL;
11148
11149   if (inlined_func)
11150     {
11151       /* If we do not have call site information, we can't show the
11152          caller of this inlined function.  That's too confusing, so
11153          only use the scope for local variables.  */
11154       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11155       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11156       if (call_line == NULL || call_file == NULL)
11157         {
11158           read_lexical_block_scope (die, cu);
11159           return;
11160         }
11161     }
11162
11163   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11164
11165   name = dwarf2_name (die, cu);
11166
11167   /* Ignore functions with missing or empty names.  These are actually
11168      illegal according to the DWARF standard.  */
11169   if (name == NULL)
11170     {
11171       complaint (&symfile_complaints,
11172                  _("missing name for subprogram DIE at %d"),
11173                  die->offset.sect_off);
11174       return;
11175     }
11176
11177   /* Ignore functions with missing or invalid low and high pc attributes.  */
11178   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11179     {
11180       attr = dwarf2_attr (die, DW_AT_external, cu);
11181       if (!attr || !DW_UNSND (attr))
11182         complaint (&symfile_complaints,
11183                    _("cannot get low and high bounds "
11184                      "for subprogram DIE at %d"),
11185                    die->offset.sect_off);
11186       return;
11187     }
11188
11189   lowpc += baseaddr;
11190   highpc += baseaddr;
11191
11192   /* If we have any template arguments, then we must allocate a
11193      different sort of symbol.  */
11194   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11195     {
11196       if (child_die->tag == DW_TAG_template_type_param
11197           || child_die->tag == DW_TAG_template_value_param)
11198         {
11199           templ_func = allocate_template_symbol (objfile);
11200           templ_func->base.is_cplus_template_function = 1;
11201           break;
11202         }
11203     }
11204
11205   new = push_context (0, lowpc);
11206   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
11207                                (struct symbol *) templ_func);
11208
11209   /* If there is a location expression for DW_AT_frame_base, record
11210      it.  */
11211   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11212   if (attr)
11213     dwarf2_symbol_mark_computed (attr, new->name, cu, 1);
11214
11215   cu->list_in_scope = &local_symbols;
11216
11217   if (die->child != NULL)
11218     {
11219       child_die = die->child;
11220       while (child_die && child_die->tag)
11221         {
11222           if (child_die->tag == DW_TAG_template_type_param
11223               || child_die->tag == DW_TAG_template_value_param)
11224             {
11225               struct symbol *arg = new_symbol (child_die, NULL, cu);
11226
11227               if (arg != NULL)
11228                 VEC_safe_push (symbolp, template_args, arg);
11229             }
11230           else
11231             process_die (child_die, cu);
11232           child_die = sibling_die (child_die);
11233         }
11234     }
11235
11236   inherit_abstract_dies (die, cu);
11237
11238   /* If we have a DW_AT_specification, we might need to import using
11239      directives from the context of the specification DIE.  See the
11240      comment in determine_prefix.  */
11241   if (cu->language == language_cplus
11242       && dwarf2_attr (die, DW_AT_specification, cu))
11243     {
11244       struct dwarf2_cu *spec_cu = cu;
11245       struct die_info *spec_die = die_specification (die, &spec_cu);
11246
11247       while (spec_die)
11248         {
11249           child_die = spec_die->child;
11250           while (child_die && child_die->tag)
11251             {
11252               if (child_die->tag == DW_TAG_imported_module)
11253                 process_die (child_die, spec_cu);
11254               child_die = sibling_die (child_die);
11255             }
11256
11257           /* In some cases, GCC generates specification DIEs that
11258              themselves contain DW_AT_specification attributes.  */
11259           spec_die = die_specification (spec_die, &spec_cu);
11260         }
11261     }
11262
11263   new = pop_context ();
11264   /* Make a block for the local symbols within.  */
11265   block = finish_block (new->name, &local_symbols, new->old_blocks,
11266                         lowpc, highpc, objfile);
11267
11268   /* For C++, set the block's scope.  */
11269   if ((cu->language == language_cplus || cu->language == language_fortran)
11270       && cu->processing_has_namespace_info)
11271     block_set_scope (block, determine_prefix (die, cu),
11272                      &objfile->objfile_obstack);
11273
11274   /* If we have address ranges, record them.  */
11275   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11276
11277   /* Attach template arguments to function.  */
11278   if (! VEC_empty (symbolp, template_args))
11279     {
11280       gdb_assert (templ_func != NULL);
11281
11282       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11283       templ_func->template_arguments
11284         = obstack_alloc (&objfile->objfile_obstack,
11285                          (templ_func->n_template_arguments
11286                           * sizeof (struct symbol *)));
11287       memcpy (templ_func->template_arguments,
11288               VEC_address (symbolp, template_args),
11289               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11290       VEC_free (symbolp, template_args);
11291     }
11292
11293   /* In C++, we can have functions nested inside functions (e.g., when
11294      a function declares a class that has methods).  This means that
11295      when we finish processing a function scope, we may need to go
11296      back to building a containing block's symbol lists.  */
11297   local_symbols = new->locals;
11298   using_directives = new->using_directives;
11299
11300   /* If we've finished processing a top-level function, subsequent
11301      symbols go in the file symbol list.  */
11302   if (outermost_context_p ())
11303     cu->list_in_scope = &file_symbols;
11304 }
11305
11306 /* Process all the DIES contained within a lexical block scope.  Start
11307    a new scope, process the dies, and then close the scope.  */
11308
11309 static void
11310 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11311 {
11312   struct objfile *objfile = cu->objfile;
11313   struct context_stack *new;
11314   CORE_ADDR lowpc, highpc;
11315   struct die_info *child_die;
11316   CORE_ADDR baseaddr;
11317
11318   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11319
11320   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11321   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11322      as multiple lexical blocks?  Handling children in a sane way would
11323      be nasty.  Might be easier to properly extend generic blocks to
11324      describe ranges.  */
11325   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11326     return;
11327   lowpc += baseaddr;
11328   highpc += baseaddr;
11329
11330   push_context (0, lowpc);
11331   if (die->child != NULL)
11332     {
11333       child_die = die->child;
11334       while (child_die && child_die->tag)
11335         {
11336           process_die (child_die, cu);
11337           child_die = sibling_die (child_die);
11338         }
11339     }
11340   new = pop_context ();
11341
11342   if (local_symbols != NULL || using_directives != NULL)
11343     {
11344       struct block *block
11345         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
11346                         highpc, objfile);
11347
11348       /* Note that recording ranges after traversing children, as we
11349          do here, means that recording a parent's ranges entails
11350          walking across all its children's ranges as they appear in
11351          the address map, which is quadratic behavior.
11352
11353          It would be nicer to record the parent's ranges before
11354          traversing its children, simply overriding whatever you find
11355          there.  But since we don't even decide whether to create a
11356          block until after we've traversed its children, that's hard
11357          to do.  */
11358       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11359     }
11360   local_symbols = new->locals;
11361   using_directives = new->using_directives;
11362 }
11363
11364 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
11365
11366 static void
11367 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11368 {
11369   struct objfile *objfile = cu->objfile;
11370   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11371   CORE_ADDR pc, baseaddr;
11372   struct attribute *attr;
11373   struct call_site *call_site, call_site_local;
11374   void **slot;
11375   int nparams;
11376   struct die_info *child_die;
11377
11378   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11379
11380   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11381   if (!attr)
11382     {
11383       complaint (&symfile_complaints,
11384                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11385                    "DIE 0x%x [in module %s]"),
11386                  die->offset.sect_off, objfile_name (objfile));
11387       return;
11388     }
11389   pc = attr_value_as_address (attr) + baseaddr;
11390
11391   if (cu->call_site_htab == NULL)
11392     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11393                                                NULL, &objfile->objfile_obstack,
11394                                                hashtab_obstack_allocate, NULL);
11395   call_site_local.pc = pc;
11396   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11397   if (*slot != NULL)
11398     {
11399       complaint (&symfile_complaints,
11400                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
11401                    "DIE 0x%x [in module %s]"),
11402                  paddress (gdbarch, pc), die->offset.sect_off,
11403                  objfile_name (objfile));
11404       return;
11405     }
11406
11407   /* Count parameters at the caller.  */
11408
11409   nparams = 0;
11410   for (child_die = die->child; child_die && child_die->tag;
11411        child_die = sibling_die (child_die))
11412     {
11413       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11414         {
11415           complaint (&symfile_complaints,
11416                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11417                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11418                      child_die->tag, child_die->offset.sect_off,
11419                      objfile_name (objfile));
11420           continue;
11421         }
11422
11423       nparams++;
11424     }
11425
11426   call_site = obstack_alloc (&objfile->objfile_obstack,
11427                              (sizeof (*call_site)
11428                               + (sizeof (*call_site->parameter)
11429                                  * (nparams - 1))));
11430   *slot = call_site;
11431   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11432   call_site->pc = pc;
11433
11434   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11435     {
11436       struct die_info *func_die;
11437
11438       /* Skip also over DW_TAG_inlined_subroutine.  */
11439       for (func_die = die->parent;
11440            func_die && func_die->tag != DW_TAG_subprogram
11441            && func_die->tag != DW_TAG_subroutine_type;
11442            func_die = func_die->parent);
11443
11444       /* DW_AT_GNU_all_call_sites is a superset
11445          of DW_AT_GNU_all_tail_call_sites.  */
11446       if (func_die
11447           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11448           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11449         {
11450           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11451              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11452              both the initial caller containing the real return address PC and
11453              the final callee containing the current PC of a chain of tail
11454              calls do not need to have the tail call list complete.  But any
11455              function candidate for a virtual tail call frame searched via
11456              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11457              determined unambiguously.  */
11458         }
11459       else
11460         {
11461           struct type *func_type = NULL;
11462
11463           if (func_die)
11464             func_type = get_die_type (func_die, cu);
11465           if (func_type != NULL)
11466             {
11467               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11468
11469               /* Enlist this call site to the function.  */
11470               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11471               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11472             }
11473           else
11474             complaint (&symfile_complaints,
11475                        _("Cannot find function owning DW_TAG_GNU_call_site "
11476                          "DIE 0x%x [in module %s]"),
11477                        die->offset.sect_off, objfile_name (objfile));
11478         }
11479     }
11480
11481   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11482   if (attr == NULL)
11483     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11484   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11485   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11486     /* Keep NULL DWARF_BLOCK.  */;
11487   else if (attr_form_is_block (attr))
11488     {
11489       struct dwarf2_locexpr_baton *dlbaton;
11490
11491       dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11492       dlbaton->data = DW_BLOCK (attr)->data;
11493       dlbaton->size = DW_BLOCK (attr)->size;
11494       dlbaton->per_cu = cu->per_cu;
11495
11496       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11497     }
11498   else if (attr_form_is_ref (attr))
11499     {
11500       struct dwarf2_cu *target_cu = cu;
11501       struct die_info *target_die;
11502
11503       target_die = follow_die_ref (die, attr, &target_cu);
11504       gdb_assert (target_cu->objfile == objfile);
11505       if (die_is_declaration (target_die, target_cu))
11506         {
11507           const char *target_physname = NULL;
11508           struct attribute *target_attr;
11509
11510           /* Prefer the mangled name; otherwise compute the demangled one.  */
11511           target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11512           if (target_attr == NULL)
11513             target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11514                                        target_cu);
11515           if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11516             target_physname = DW_STRING (target_attr);
11517           else
11518             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11519           if (target_physname == NULL)
11520             complaint (&symfile_complaints,
11521                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11522                          "physname, for referencing DIE 0x%x [in module %s]"),
11523                        die->offset.sect_off, objfile_name (objfile));
11524           else
11525             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11526         }
11527       else
11528         {
11529           CORE_ADDR lowpc;
11530
11531           /* DW_AT_entry_pc should be preferred.  */
11532           if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11533             complaint (&symfile_complaints,
11534                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11535                          "low pc, for referencing DIE 0x%x [in module %s]"),
11536                        die->offset.sect_off, objfile_name (objfile));
11537           else
11538             SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
11539         }
11540     }
11541   else
11542     complaint (&symfile_complaints,
11543                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11544                  "block nor reference, for DIE 0x%x [in module %s]"),
11545                die->offset.sect_off, objfile_name (objfile));
11546
11547   call_site->per_cu = cu->per_cu;
11548
11549   for (child_die = die->child;
11550        child_die && child_die->tag;
11551        child_die = sibling_die (child_die))
11552     {
11553       struct call_site_parameter *parameter;
11554       struct attribute *loc, *origin;
11555
11556       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11557         {
11558           /* Already printed the complaint above.  */
11559           continue;
11560         }
11561
11562       gdb_assert (call_site->parameter_count < nparams);
11563       parameter = &call_site->parameter[call_site->parameter_count];
11564
11565       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11566          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11567          register is contained in DW_AT_GNU_call_site_value.  */
11568
11569       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11570       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11571       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11572         {
11573           sect_offset offset;
11574
11575           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11576           offset = dwarf2_get_ref_die_offset (origin);
11577           if (!offset_in_cu_p (&cu->header, offset))
11578             {
11579               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11580                  binding can be done only inside one CU.  Such referenced DIE
11581                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11582               complaint (&symfile_complaints,
11583                          _("DW_AT_abstract_origin offset is not in CU for "
11584                            "DW_TAG_GNU_call_site child DIE 0x%x "
11585                            "[in module %s]"),
11586                          child_die->offset.sect_off, objfile_name (objfile));
11587               continue;
11588             }
11589           parameter->u.param_offset.cu_off = (offset.sect_off
11590                                               - cu->header.offset.sect_off);
11591         }
11592       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11593         {
11594           complaint (&symfile_complaints,
11595                      _("No DW_FORM_block* DW_AT_location for "
11596                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11597                      child_die->offset.sect_off, objfile_name (objfile));
11598           continue;
11599         }
11600       else
11601         {
11602           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11603             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11604           if (parameter->u.dwarf_reg != -1)
11605             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11606           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11607                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11608                                              &parameter->u.fb_offset))
11609             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11610           else
11611             {
11612               complaint (&symfile_complaints,
11613                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11614                            "for DW_FORM_block* DW_AT_location is supported for "
11615                            "DW_TAG_GNU_call_site child DIE 0x%x "
11616                            "[in module %s]"),
11617                          child_die->offset.sect_off, objfile_name (objfile));
11618               continue;
11619             }
11620         }
11621
11622       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11623       if (!attr_form_is_block (attr))
11624         {
11625           complaint (&symfile_complaints,
11626                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11627                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11628                      child_die->offset.sect_off, objfile_name (objfile));
11629           continue;
11630         }
11631       parameter->value = DW_BLOCK (attr)->data;
11632       parameter->value_size = DW_BLOCK (attr)->size;
11633
11634       /* Parameters are not pre-cleared by memset above.  */
11635       parameter->data_value = NULL;
11636       parameter->data_value_size = 0;
11637       call_site->parameter_count++;
11638
11639       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11640       if (attr)
11641         {
11642           if (!attr_form_is_block (attr))
11643             complaint (&symfile_complaints,
11644                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11645                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11646                        child_die->offset.sect_off, objfile_name (objfile));
11647           else
11648             {
11649               parameter->data_value = DW_BLOCK (attr)->data;
11650               parameter->data_value_size = DW_BLOCK (attr)->size;
11651             }
11652         }
11653     }
11654 }
11655
11656 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
11657    Return 1 if the attributes are present and valid, otherwise, return 0.
11658    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
11659
11660 static int
11661 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
11662                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
11663                     struct partial_symtab *ranges_pst)
11664 {
11665   struct objfile *objfile = cu->objfile;
11666   struct comp_unit_head *cu_header = &cu->header;
11667   bfd *obfd = objfile->obfd;
11668   unsigned int addr_size = cu_header->addr_size;
11669   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11670   /* Base address selection entry.  */
11671   CORE_ADDR base;
11672   int found_base;
11673   unsigned int dummy;
11674   const gdb_byte *buffer;
11675   CORE_ADDR marker;
11676   int low_set;
11677   CORE_ADDR low = 0;
11678   CORE_ADDR high = 0;
11679   CORE_ADDR baseaddr;
11680
11681   found_base = cu->base_known;
11682   base = cu->base_address;
11683
11684   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11685   if (offset >= dwarf2_per_objfile->ranges.size)
11686     {
11687       complaint (&symfile_complaints,
11688                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
11689                  offset);
11690       return 0;
11691     }
11692   buffer = dwarf2_per_objfile->ranges.buffer + offset;
11693
11694   /* Read in the largest possible address.  */
11695   marker = read_address (obfd, buffer, cu, &dummy);
11696   if ((marker & mask) == mask)
11697     {
11698       /* If we found the largest possible address, then
11699          read the base address.  */
11700       base = read_address (obfd, buffer + addr_size, cu, &dummy);
11701       buffer += 2 * addr_size;
11702       offset += 2 * addr_size;
11703       found_base = 1;
11704     }
11705
11706   low_set = 0;
11707
11708   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11709
11710   while (1)
11711     {
11712       CORE_ADDR range_beginning, range_end;
11713
11714       range_beginning = read_address (obfd, buffer, cu, &dummy);
11715       buffer += addr_size;
11716       range_end = read_address (obfd, buffer, cu, &dummy);
11717       buffer += addr_size;
11718       offset += 2 * addr_size;
11719
11720       /* An end of list marker is a pair of zero addresses.  */
11721       if (range_beginning == 0 && range_end == 0)
11722         /* Found the end of list entry.  */
11723         break;
11724
11725       /* Each base address selection entry is a pair of 2 values.
11726          The first is the largest possible address, the second is
11727          the base address.  Check for a base address here.  */
11728       if ((range_beginning & mask) == mask)
11729         {
11730           /* If we found the largest possible address, then
11731              read the base address.  */
11732           base = read_address (obfd, buffer + addr_size, cu, &dummy);
11733           found_base = 1;
11734           continue;
11735         }
11736
11737       if (!found_base)
11738         {
11739           /* We have no valid base address for the ranges
11740              data.  */
11741           complaint (&symfile_complaints,
11742                      _("Invalid .debug_ranges data (no base address)"));
11743           return 0;
11744         }
11745
11746       if (range_beginning > range_end)
11747         {
11748           /* Inverted range entries are invalid.  */
11749           complaint (&symfile_complaints,
11750                      _("Invalid .debug_ranges data (inverted range)"));
11751           return 0;
11752         }
11753
11754       /* Empty range entries have no effect.  */
11755       if (range_beginning == range_end)
11756         continue;
11757
11758       range_beginning += base;
11759       range_end += base;
11760
11761       /* A not-uncommon case of bad debug info.
11762          Don't pollute the addrmap with bad data.  */
11763       if (range_beginning + baseaddr == 0
11764           && !dwarf2_per_objfile->has_section_at_zero)
11765         {
11766           complaint (&symfile_complaints,
11767                      _(".debug_ranges entry has start address of zero"
11768                        " [in module %s]"), objfile_name (objfile));
11769           continue;
11770         }
11771
11772       if (ranges_pst != NULL)
11773         addrmap_set_empty (objfile->psymtabs_addrmap,
11774                            range_beginning + baseaddr,
11775                            range_end - 1 + baseaddr,
11776                            ranges_pst);
11777
11778       /* FIXME: This is recording everything as a low-high
11779          segment of consecutive addresses.  We should have a
11780          data structure for discontiguous block ranges
11781          instead.  */
11782       if (! low_set)
11783         {
11784           low = range_beginning;
11785           high = range_end;
11786           low_set = 1;
11787         }
11788       else
11789         {
11790           if (range_beginning < low)
11791             low = range_beginning;
11792           if (range_end > high)
11793             high = range_end;
11794         }
11795     }
11796
11797   if (! low_set)
11798     /* If the first entry is an end-of-list marker, the range
11799        describes an empty scope, i.e. no instructions.  */
11800     return 0;
11801
11802   if (low_return)
11803     *low_return = low;
11804   if (high_return)
11805     *high_return = high;
11806   return 1;
11807 }
11808
11809 /* Get low and high pc attributes from a die.  Return 1 if the attributes
11810    are present and valid, otherwise, return 0.  Return -1 if the range is
11811    discontinuous, i.e. derived from DW_AT_ranges information.  */
11812
11813 static int
11814 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
11815                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
11816                       struct partial_symtab *pst)
11817 {
11818   struct attribute *attr;
11819   struct attribute *attr_high;
11820   CORE_ADDR low = 0;
11821   CORE_ADDR high = 0;
11822   int ret = 0;
11823
11824   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11825   if (attr_high)
11826     {
11827       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11828       if (attr)
11829         {
11830           low = attr_value_as_address (attr);
11831           high = attr_value_as_address (attr_high);
11832           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
11833             high += low;
11834         }
11835       else
11836         /* Found high w/o low attribute.  */
11837         return 0;
11838
11839       /* Found consecutive range of addresses.  */
11840       ret = 1;
11841     }
11842   else
11843     {
11844       attr = dwarf2_attr (die, DW_AT_ranges, cu);
11845       if (attr != NULL)
11846         {
11847           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11848              We take advantage of the fact that DW_AT_ranges does not appear
11849              in DW_TAG_compile_unit of DWO files.  */
11850           int need_ranges_base = die->tag != DW_TAG_compile_unit;
11851           unsigned int ranges_offset = (DW_UNSND (attr)
11852                                         + (need_ranges_base
11853                                            ? cu->ranges_base
11854                                            : 0));
11855
11856           /* Value of the DW_AT_ranges attribute is the offset in the
11857              .debug_ranges section.  */
11858           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
11859             return 0;
11860           /* Found discontinuous range of addresses.  */
11861           ret = -1;
11862         }
11863     }
11864
11865   /* read_partial_die has also the strict LOW < HIGH requirement.  */
11866   if (high <= low)
11867     return 0;
11868
11869   /* When using the GNU linker, .gnu.linkonce. sections are used to
11870      eliminate duplicate copies of functions and vtables and such.
11871      The linker will arbitrarily choose one and discard the others.
11872      The AT_*_pc values for such functions refer to local labels in
11873      these sections.  If the section from that file was discarded, the
11874      labels are not in the output, so the relocs get a value of 0.
11875      If this is a discarded function, mark the pc bounds as invalid,
11876      so that GDB will ignore it.  */
11877   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
11878     return 0;
11879
11880   *lowpc = low;
11881   if (highpc)
11882     *highpc = high;
11883   return ret;
11884 }
11885
11886 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
11887    its low and high PC addresses.  Do nothing if these addresses could not
11888    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
11889    and HIGHPC to the high address if greater than HIGHPC.  */
11890
11891 static void
11892 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
11893                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
11894                                  struct dwarf2_cu *cu)
11895 {
11896   CORE_ADDR low, high;
11897   struct die_info *child = die->child;
11898
11899   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
11900     {
11901       *lowpc = min (*lowpc, low);
11902       *highpc = max (*highpc, high);
11903     }
11904
11905   /* If the language does not allow nested subprograms (either inside
11906      subprograms or lexical blocks), we're done.  */
11907   if (cu->language != language_ada)
11908     return;
11909
11910   /* Check all the children of the given DIE.  If it contains nested
11911      subprograms, then check their pc bounds.  Likewise, we need to
11912      check lexical blocks as well, as they may also contain subprogram
11913      definitions.  */
11914   while (child && child->tag)
11915     {
11916       if (child->tag == DW_TAG_subprogram
11917           || child->tag == DW_TAG_lexical_block)
11918         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
11919       child = sibling_die (child);
11920     }
11921 }
11922
11923 /* Get the low and high pc's represented by the scope DIE, and store
11924    them in *LOWPC and *HIGHPC.  If the correct values can't be
11925    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
11926
11927 static void
11928 get_scope_pc_bounds (struct die_info *die,
11929                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
11930                      struct dwarf2_cu *cu)
11931 {
11932   CORE_ADDR best_low = (CORE_ADDR) -1;
11933   CORE_ADDR best_high = (CORE_ADDR) 0;
11934   CORE_ADDR current_low, current_high;
11935
11936   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
11937     {
11938       best_low = current_low;
11939       best_high = current_high;
11940     }
11941   else
11942     {
11943       struct die_info *child = die->child;
11944
11945       while (child && child->tag)
11946         {
11947           switch (child->tag) {
11948           case DW_TAG_subprogram:
11949             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
11950             break;
11951           case DW_TAG_namespace:
11952           case DW_TAG_module:
11953             /* FIXME: carlton/2004-01-16: Should we do this for
11954                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
11955                that current GCC's always emit the DIEs corresponding
11956                to definitions of methods of classes as children of a
11957                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
11958                the DIEs giving the declarations, which could be
11959                anywhere).  But I don't see any reason why the
11960                standards says that they have to be there.  */
11961             get_scope_pc_bounds (child, &current_low, &current_high, cu);
11962
11963             if (current_low != ((CORE_ADDR) -1))
11964               {
11965                 best_low = min (best_low, current_low);
11966                 best_high = max (best_high, current_high);
11967               }
11968             break;
11969           default:
11970             /* Ignore.  */
11971             break;
11972           }
11973
11974           child = sibling_die (child);
11975         }
11976     }
11977
11978   *lowpc = best_low;
11979   *highpc = best_high;
11980 }
11981
11982 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
11983    in DIE.  */
11984
11985 static void
11986 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
11987                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
11988 {
11989   struct objfile *objfile = cu->objfile;
11990   struct attribute *attr;
11991   struct attribute *attr_high;
11992
11993   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11994   if (attr_high)
11995     {
11996       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11997       if (attr)
11998         {
11999           CORE_ADDR low = attr_value_as_address (attr);
12000           CORE_ADDR high = attr_value_as_address (attr_high);
12001
12002           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12003             high += low;
12004
12005           record_block_range (block, baseaddr + low, baseaddr + high - 1);
12006         }
12007     }
12008
12009   attr = dwarf2_attr (die, DW_AT_ranges, cu);
12010   if (attr)
12011     {
12012       bfd *obfd = objfile->obfd;
12013       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12014          We take advantage of the fact that DW_AT_ranges does not appear
12015          in DW_TAG_compile_unit of DWO files.  */
12016       int need_ranges_base = die->tag != DW_TAG_compile_unit;
12017
12018       /* The value of the DW_AT_ranges attribute is the offset of the
12019          address range list in the .debug_ranges section.  */
12020       unsigned long offset = (DW_UNSND (attr)
12021                               + (need_ranges_base ? cu->ranges_base : 0));
12022       const gdb_byte *buffer;
12023
12024       /* For some target architectures, but not others, the
12025          read_address function sign-extends the addresses it returns.
12026          To recognize base address selection entries, we need a
12027          mask.  */
12028       unsigned int addr_size = cu->header.addr_size;
12029       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12030
12031       /* The base address, to which the next pair is relative.  Note
12032          that this 'base' is a DWARF concept: most entries in a range
12033          list are relative, to reduce the number of relocs against the
12034          debugging information.  This is separate from this function's
12035          'baseaddr' argument, which GDB uses to relocate debugging
12036          information from a shared library based on the address at
12037          which the library was loaded.  */
12038       CORE_ADDR base = cu->base_address;
12039       int base_known = cu->base_known;
12040
12041       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
12042       if (offset >= dwarf2_per_objfile->ranges.size)
12043         {
12044           complaint (&symfile_complaints,
12045                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12046                      offset);
12047           return;
12048         }
12049       buffer = dwarf2_per_objfile->ranges.buffer + offset;
12050
12051       for (;;)
12052         {
12053           unsigned int bytes_read;
12054           CORE_ADDR start, end;
12055
12056           start = read_address (obfd, buffer, cu, &bytes_read);
12057           buffer += bytes_read;
12058           end = read_address (obfd, buffer, cu, &bytes_read);
12059           buffer += bytes_read;
12060
12061           /* Did we find the end of the range list?  */
12062           if (start == 0 && end == 0)
12063             break;
12064
12065           /* Did we find a base address selection entry?  */
12066           else if ((start & base_select_mask) == base_select_mask)
12067             {
12068               base = end;
12069               base_known = 1;
12070             }
12071
12072           /* We found an ordinary address range.  */
12073           else
12074             {
12075               if (!base_known)
12076                 {
12077                   complaint (&symfile_complaints,
12078                              _("Invalid .debug_ranges data "
12079                                "(no base address)"));
12080                   return;
12081                 }
12082
12083               if (start > end)
12084                 {
12085                   /* Inverted range entries are invalid.  */
12086                   complaint (&symfile_complaints,
12087                              _("Invalid .debug_ranges data "
12088                                "(inverted range)"));
12089                   return;
12090                 }
12091
12092               /* Empty range entries have no effect.  */
12093               if (start == end)
12094                 continue;
12095
12096               start += base + baseaddr;
12097               end += base + baseaddr;
12098
12099               /* A not-uncommon case of bad debug info.
12100                  Don't pollute the addrmap with bad data.  */
12101               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12102                 {
12103                   complaint (&symfile_complaints,
12104                              _(".debug_ranges entry has start address of zero"
12105                                " [in module %s]"), objfile_name (objfile));
12106                   continue;
12107                 }
12108
12109               record_block_range (block, start, end - 1);
12110             }
12111         }
12112     }
12113 }
12114
12115 /* Check whether the producer field indicates either of GCC < 4.6, or the
12116    Intel C/C++ compiler, and cache the result in CU.  */
12117
12118 static void
12119 check_producer (struct dwarf2_cu *cu)
12120 {
12121   const char *cs;
12122   int major, minor, release;
12123
12124   if (cu->producer == NULL)
12125     {
12126       /* For unknown compilers expect their behavior is DWARF version
12127          compliant.
12128
12129          GCC started to support .debug_types sections by -gdwarf-4 since
12130          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
12131          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12132          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12133          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
12134     }
12135   else if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) == 0)
12136     {
12137       /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
12138
12139       cs = &cu->producer[strlen ("GNU ")];
12140       while (*cs && !isdigit (*cs))
12141         cs++;
12142       if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
12143         {
12144           /* Not recognized as GCC.  */
12145         }
12146       else
12147         {
12148           cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12149           cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
12150         }
12151     }
12152   else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0)
12153     cu->producer_is_icc = 1;
12154   else
12155     {
12156       /* For other non-GCC compilers, expect their behavior is DWARF version
12157          compliant.  */
12158     }
12159
12160   cu->checked_producer = 1;
12161 }
12162
12163 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12164    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12165    during 4.6.0 experimental.  */
12166
12167 static int
12168 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12169 {
12170   if (!cu->checked_producer)
12171     check_producer (cu);
12172
12173   return cu->producer_is_gxx_lt_4_6;
12174 }
12175
12176 /* Return the default accessibility type if it is not overriden by
12177    DW_AT_accessibility.  */
12178
12179 static enum dwarf_access_attribute
12180 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12181 {
12182   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12183     {
12184       /* The default DWARF 2 accessibility for members is public, the default
12185          accessibility for inheritance is private.  */
12186
12187       if (die->tag != DW_TAG_inheritance)
12188         return DW_ACCESS_public;
12189       else
12190         return DW_ACCESS_private;
12191     }
12192   else
12193     {
12194       /* DWARF 3+ defines the default accessibility a different way.  The same
12195          rules apply now for DW_TAG_inheritance as for the members and it only
12196          depends on the container kind.  */
12197
12198       if (die->parent->tag == DW_TAG_class_type)
12199         return DW_ACCESS_private;
12200       else
12201         return DW_ACCESS_public;
12202     }
12203 }
12204
12205 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12206    offset.  If the attribute was not found return 0, otherwise return
12207    1.  If it was found but could not properly be handled, set *OFFSET
12208    to 0.  */
12209
12210 static int
12211 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12212                              LONGEST *offset)
12213 {
12214   struct attribute *attr;
12215
12216   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12217   if (attr != NULL)
12218     {
12219       *offset = 0;
12220
12221       /* Note that we do not check for a section offset first here.
12222          This is because DW_AT_data_member_location is new in DWARF 4,
12223          so if we see it, we can assume that a constant form is really
12224          a constant and not a section offset.  */
12225       if (attr_form_is_constant (attr))
12226         *offset = dwarf2_get_attr_constant_value (attr, 0);
12227       else if (attr_form_is_section_offset (attr))
12228         dwarf2_complex_location_expr_complaint ();
12229       else if (attr_form_is_block (attr))
12230         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12231       else
12232         dwarf2_complex_location_expr_complaint ();
12233
12234       return 1;
12235     }
12236
12237   return 0;
12238 }
12239
12240 /* Add an aggregate field to the field list.  */
12241
12242 static void
12243 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12244                   struct dwarf2_cu *cu)
12245 {
12246   struct objfile *objfile = cu->objfile;
12247   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12248   struct nextfield *new_field;
12249   struct attribute *attr;
12250   struct field *fp;
12251   const char *fieldname = "";
12252
12253   /* Allocate a new field list entry and link it in.  */
12254   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
12255   make_cleanup (xfree, new_field);
12256   memset (new_field, 0, sizeof (struct nextfield));
12257
12258   if (die->tag == DW_TAG_inheritance)
12259     {
12260       new_field->next = fip->baseclasses;
12261       fip->baseclasses = new_field;
12262     }
12263   else
12264     {
12265       new_field->next = fip->fields;
12266       fip->fields = new_field;
12267     }
12268   fip->nfields++;
12269
12270   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12271   if (attr)
12272     new_field->accessibility = DW_UNSND (attr);
12273   else
12274     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12275   if (new_field->accessibility != DW_ACCESS_public)
12276     fip->non_public_fields = 1;
12277
12278   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12279   if (attr)
12280     new_field->virtuality = DW_UNSND (attr);
12281   else
12282     new_field->virtuality = DW_VIRTUALITY_none;
12283
12284   fp = &new_field->field;
12285
12286   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12287     {
12288       LONGEST offset;
12289
12290       /* Data member other than a C++ static data member.  */
12291
12292       /* Get type of field.  */
12293       fp->type = die_type (die, cu);
12294
12295       SET_FIELD_BITPOS (*fp, 0);
12296
12297       /* Get bit size of field (zero if none).  */
12298       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12299       if (attr)
12300         {
12301           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12302         }
12303       else
12304         {
12305           FIELD_BITSIZE (*fp) = 0;
12306         }
12307
12308       /* Get bit offset of field.  */
12309       if (handle_data_member_location (die, cu, &offset))
12310         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12311       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12312       if (attr)
12313         {
12314           if (gdbarch_bits_big_endian (gdbarch))
12315             {
12316               /* For big endian bits, the DW_AT_bit_offset gives the
12317                  additional bit offset from the MSB of the containing
12318                  anonymous object to the MSB of the field.  We don't
12319                  have to do anything special since we don't need to
12320                  know the size of the anonymous object.  */
12321               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12322             }
12323           else
12324             {
12325               /* For little endian bits, compute the bit offset to the
12326                  MSB of the anonymous object, subtract off the number of
12327                  bits from the MSB of the field to the MSB of the
12328                  object, and then subtract off the number of bits of
12329                  the field itself.  The result is the bit offset of
12330                  the LSB of the field.  */
12331               int anonymous_size;
12332               int bit_offset = DW_UNSND (attr);
12333
12334               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12335               if (attr)
12336                 {
12337                   /* The size of the anonymous object containing
12338                      the bit field is explicit, so use the
12339                      indicated size (in bytes).  */
12340                   anonymous_size = DW_UNSND (attr);
12341                 }
12342               else
12343                 {
12344                   /* The size of the anonymous object containing
12345                      the bit field must be inferred from the type
12346                      attribute of the data member containing the
12347                      bit field.  */
12348                   anonymous_size = TYPE_LENGTH (fp->type);
12349                 }
12350               SET_FIELD_BITPOS (*fp,
12351                                 (FIELD_BITPOS (*fp)
12352                                  + anonymous_size * bits_per_byte
12353                                  - bit_offset - FIELD_BITSIZE (*fp)));
12354             }
12355         }
12356
12357       /* Get name of field.  */
12358       fieldname = dwarf2_name (die, cu);
12359       if (fieldname == NULL)
12360         fieldname = "";
12361
12362       /* The name is already allocated along with this objfile, so we don't
12363          need to duplicate it for the type.  */
12364       fp->name = fieldname;
12365
12366       /* Change accessibility for artificial fields (e.g. virtual table
12367          pointer or virtual base class pointer) to private.  */
12368       if (dwarf2_attr (die, DW_AT_artificial, cu))
12369         {
12370           FIELD_ARTIFICIAL (*fp) = 1;
12371           new_field->accessibility = DW_ACCESS_private;
12372           fip->non_public_fields = 1;
12373         }
12374     }
12375   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12376     {
12377       /* C++ static member.  */
12378
12379       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12380          is a declaration, but all versions of G++ as of this writing
12381          (so through at least 3.2.1) incorrectly generate
12382          DW_TAG_variable tags.  */
12383
12384       const char *physname;
12385
12386       /* Get name of field.  */
12387       fieldname = dwarf2_name (die, cu);
12388       if (fieldname == NULL)
12389         return;
12390
12391       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12392       if (attr
12393           /* Only create a symbol if this is an external value.
12394              new_symbol checks this and puts the value in the global symbol
12395              table, which we want.  If it is not external, new_symbol
12396              will try to put the value in cu->list_in_scope which is wrong.  */
12397           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12398         {
12399           /* A static const member, not much different than an enum as far as
12400              we're concerned, except that we can support more types.  */
12401           new_symbol (die, NULL, cu);
12402         }
12403
12404       /* Get physical name.  */
12405       physname = dwarf2_physname (fieldname, die, cu);
12406
12407       /* The name is already allocated along with this objfile, so we don't
12408          need to duplicate it for the type.  */
12409       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12410       FIELD_TYPE (*fp) = die_type (die, cu);
12411       FIELD_NAME (*fp) = fieldname;
12412     }
12413   else if (die->tag == DW_TAG_inheritance)
12414     {
12415       LONGEST offset;
12416
12417       /* C++ base class field.  */
12418       if (handle_data_member_location (die, cu, &offset))
12419         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12420       FIELD_BITSIZE (*fp) = 0;
12421       FIELD_TYPE (*fp) = die_type (die, cu);
12422       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12423       fip->nbaseclasses++;
12424     }
12425 }
12426
12427 /* Add a typedef defined in the scope of the FIP's class.  */
12428
12429 static void
12430 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12431                     struct dwarf2_cu *cu)
12432 {
12433   struct objfile *objfile = cu->objfile;
12434   struct typedef_field_list *new_field;
12435   struct attribute *attr;
12436   struct typedef_field *fp;
12437   char *fieldname = "";
12438
12439   /* Allocate a new field list entry and link it in.  */
12440   new_field = xzalloc (sizeof (*new_field));
12441   make_cleanup (xfree, new_field);
12442
12443   gdb_assert (die->tag == DW_TAG_typedef);
12444
12445   fp = &new_field->field;
12446
12447   /* Get name of field.  */
12448   fp->name = dwarf2_name (die, cu);
12449   if (fp->name == NULL)
12450     return;
12451
12452   fp->type = read_type_die (die, cu);
12453
12454   new_field->next = fip->typedef_field_list;
12455   fip->typedef_field_list = new_field;
12456   fip->typedef_field_list_count++;
12457 }
12458
12459 /* Create the vector of fields, and attach it to the type.  */
12460
12461 static void
12462 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12463                               struct dwarf2_cu *cu)
12464 {
12465   int nfields = fip->nfields;
12466
12467   /* Record the field count, allocate space for the array of fields,
12468      and create blank accessibility bitfields if necessary.  */
12469   TYPE_NFIELDS (type) = nfields;
12470   TYPE_FIELDS (type) = (struct field *)
12471     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12472   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12473
12474   if (fip->non_public_fields && cu->language != language_ada)
12475     {
12476       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12477
12478       TYPE_FIELD_PRIVATE_BITS (type) =
12479         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12480       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12481
12482       TYPE_FIELD_PROTECTED_BITS (type) =
12483         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12484       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12485
12486       TYPE_FIELD_IGNORE_BITS (type) =
12487         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12488       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12489     }
12490
12491   /* If the type has baseclasses, allocate and clear a bit vector for
12492      TYPE_FIELD_VIRTUAL_BITS.  */
12493   if (fip->nbaseclasses && cu->language != language_ada)
12494     {
12495       int num_bytes = B_BYTES (fip->nbaseclasses);
12496       unsigned char *pointer;
12497
12498       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12499       pointer = TYPE_ALLOC (type, num_bytes);
12500       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12501       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12502       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12503     }
12504
12505   /* Copy the saved-up fields into the field vector.  Start from the head of
12506      the list, adding to the tail of the field array, so that they end up in
12507      the same order in the array in which they were added to the list.  */
12508   while (nfields-- > 0)
12509     {
12510       struct nextfield *fieldp;
12511
12512       if (fip->fields)
12513         {
12514           fieldp = fip->fields;
12515           fip->fields = fieldp->next;
12516         }
12517       else
12518         {
12519           fieldp = fip->baseclasses;
12520           fip->baseclasses = fieldp->next;
12521         }
12522
12523       TYPE_FIELD (type, nfields) = fieldp->field;
12524       switch (fieldp->accessibility)
12525         {
12526         case DW_ACCESS_private:
12527           if (cu->language != language_ada)
12528             SET_TYPE_FIELD_PRIVATE (type, nfields);
12529           break;
12530
12531         case DW_ACCESS_protected:
12532           if (cu->language != language_ada)
12533             SET_TYPE_FIELD_PROTECTED (type, nfields);
12534           break;
12535
12536         case DW_ACCESS_public:
12537           break;
12538
12539         default:
12540           /* Unknown accessibility.  Complain and treat it as public.  */
12541           {
12542             complaint (&symfile_complaints, _("unsupported accessibility %d"),
12543                        fieldp->accessibility);
12544           }
12545           break;
12546         }
12547       if (nfields < fip->nbaseclasses)
12548         {
12549           switch (fieldp->virtuality)
12550             {
12551             case DW_VIRTUALITY_virtual:
12552             case DW_VIRTUALITY_pure_virtual:
12553               if (cu->language == language_ada)
12554                 error (_("unexpected virtuality in component of Ada type"));
12555               SET_TYPE_FIELD_VIRTUAL (type, nfields);
12556               break;
12557             }
12558         }
12559     }
12560 }
12561
12562 /* Return true if this member function is a constructor, false
12563    otherwise.  */
12564
12565 static int
12566 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12567 {
12568   const char *fieldname;
12569   const char *typename;
12570   int len;
12571
12572   if (die->parent == NULL)
12573     return 0;
12574
12575   if (die->parent->tag != DW_TAG_structure_type
12576       && die->parent->tag != DW_TAG_union_type
12577       && die->parent->tag != DW_TAG_class_type)
12578     return 0;
12579
12580   fieldname = dwarf2_name (die, cu);
12581   typename = dwarf2_name (die->parent, cu);
12582   if (fieldname == NULL || typename == NULL)
12583     return 0;
12584
12585   len = strlen (fieldname);
12586   return (strncmp (fieldname, typename, len) == 0
12587           && (typename[len] == '\0' || typename[len] == '<'));
12588 }
12589
12590 /* Add a member function to the proper fieldlist.  */
12591
12592 static void
12593 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
12594                       struct type *type, struct dwarf2_cu *cu)
12595 {
12596   struct objfile *objfile = cu->objfile;
12597   struct attribute *attr;
12598   struct fnfieldlist *flp;
12599   int i;
12600   struct fn_field *fnp;
12601   const char *fieldname;
12602   struct nextfnfield *new_fnfield;
12603   struct type *this_type;
12604   enum dwarf_access_attribute accessibility;
12605
12606   if (cu->language == language_ada)
12607     error (_("unexpected member function in Ada type"));
12608
12609   /* Get name of member function.  */
12610   fieldname = dwarf2_name (die, cu);
12611   if (fieldname == NULL)
12612     return;
12613
12614   /* Look up member function name in fieldlist.  */
12615   for (i = 0; i < fip->nfnfields; i++)
12616     {
12617       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
12618         break;
12619     }
12620
12621   /* Create new list element if necessary.  */
12622   if (i < fip->nfnfields)
12623     flp = &fip->fnfieldlists[i];
12624   else
12625     {
12626       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12627         {
12628           fip->fnfieldlists = (struct fnfieldlist *)
12629             xrealloc (fip->fnfieldlists,
12630                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
12631                       * sizeof (struct fnfieldlist));
12632           if (fip->nfnfields == 0)
12633             make_cleanup (free_current_contents, &fip->fnfieldlists);
12634         }
12635       flp = &fip->fnfieldlists[fip->nfnfields];
12636       flp->name = fieldname;
12637       flp->length = 0;
12638       flp->head = NULL;
12639       i = fip->nfnfields++;
12640     }
12641
12642   /* Create a new member function field and chain it to the field list
12643      entry.  */
12644   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
12645   make_cleanup (xfree, new_fnfield);
12646   memset (new_fnfield, 0, sizeof (struct nextfnfield));
12647   new_fnfield->next = flp->head;
12648   flp->head = new_fnfield;
12649   flp->length++;
12650
12651   /* Fill in the member function field info.  */
12652   fnp = &new_fnfield->fnfield;
12653
12654   /* Delay processing of the physname until later.  */
12655   if (cu->language == language_cplus || cu->language == language_java)
12656     {
12657       add_to_method_list (type, i, flp->length - 1, fieldname,
12658                           die, cu);
12659     }
12660   else
12661     {
12662       const char *physname = dwarf2_physname (fieldname, die, cu);
12663       fnp->physname = physname ? physname : "";
12664     }
12665
12666   fnp->type = alloc_type (objfile);
12667   this_type = read_type_die (die, cu);
12668   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
12669     {
12670       int nparams = TYPE_NFIELDS (this_type);
12671
12672       /* TYPE is the domain of this method, and THIS_TYPE is the type
12673            of the method itself (TYPE_CODE_METHOD).  */
12674       smash_to_method_type (fnp->type, type,
12675                             TYPE_TARGET_TYPE (this_type),
12676                             TYPE_FIELDS (this_type),
12677                             TYPE_NFIELDS (this_type),
12678                             TYPE_VARARGS (this_type));
12679
12680       /* Handle static member functions.
12681          Dwarf2 has no clean way to discern C++ static and non-static
12682          member functions.  G++ helps GDB by marking the first
12683          parameter for non-static member functions (which is the this
12684          pointer) as artificial.  We obtain this information from
12685          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
12686       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
12687         fnp->voffset = VOFFSET_STATIC;
12688     }
12689   else
12690     complaint (&symfile_complaints, _("member function type missing for '%s'"),
12691                dwarf2_full_name (fieldname, die, cu));
12692
12693   /* Get fcontext from DW_AT_containing_type if present.  */
12694   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12695     fnp->fcontext = die_containing_type (die, cu);
12696
12697   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12698      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
12699
12700   /* Get accessibility.  */
12701   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12702   if (attr)
12703     accessibility = DW_UNSND (attr);
12704   else
12705     accessibility = dwarf2_default_access_attribute (die, cu);
12706   switch (accessibility)
12707     {
12708     case DW_ACCESS_private:
12709       fnp->is_private = 1;
12710       break;
12711     case DW_ACCESS_protected:
12712       fnp->is_protected = 1;
12713       break;
12714     }
12715
12716   /* Check for artificial methods.  */
12717   attr = dwarf2_attr (die, DW_AT_artificial, cu);
12718   if (attr && DW_UNSND (attr) != 0)
12719     fnp->is_artificial = 1;
12720
12721   fnp->is_constructor = dwarf2_is_constructor (die, cu);
12722
12723   /* Get index in virtual function table if it is a virtual member
12724      function.  For older versions of GCC, this is an offset in the
12725      appropriate virtual table, as specified by DW_AT_containing_type.
12726      For everyone else, it is an expression to be evaluated relative
12727      to the object address.  */
12728
12729   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
12730   if (attr)
12731     {
12732       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
12733         {
12734           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12735             {
12736               /* Old-style GCC.  */
12737               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12738             }
12739           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12740                    || (DW_BLOCK (attr)->size > 1
12741                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12742                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12743             {
12744               struct dwarf_block blk;
12745               int offset;
12746
12747               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12748                         ? 1 : 2);
12749               blk.size = DW_BLOCK (attr)->size - offset;
12750               blk.data = DW_BLOCK (attr)->data + offset;
12751               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12752               if ((fnp->voffset % cu->header.addr_size) != 0)
12753                 dwarf2_complex_location_expr_complaint ();
12754               else
12755                 fnp->voffset /= cu->header.addr_size;
12756               fnp->voffset += 2;
12757             }
12758           else
12759             dwarf2_complex_location_expr_complaint ();
12760
12761           if (!fnp->fcontext)
12762             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12763         }
12764       else if (attr_form_is_section_offset (attr))
12765         {
12766           dwarf2_complex_location_expr_complaint ();
12767         }
12768       else
12769         {
12770           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12771                                                  fieldname);
12772         }
12773     }
12774   else
12775     {
12776       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12777       if (attr && DW_UNSND (attr))
12778         {
12779           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
12780           complaint (&symfile_complaints,
12781                      _("Member function \"%s\" (offset %d) is virtual "
12782                        "but the vtable offset is not specified"),
12783                      fieldname, die->offset.sect_off);
12784           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12785           TYPE_CPLUS_DYNAMIC (type) = 1;
12786         }
12787     }
12788 }
12789
12790 /* Create the vector of member function fields, and attach it to the type.  */
12791
12792 static void
12793 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
12794                                  struct dwarf2_cu *cu)
12795 {
12796   struct fnfieldlist *flp;
12797   int i;
12798
12799   if (cu->language == language_ada)
12800     error (_("unexpected member functions in Ada type"));
12801
12802   ALLOCATE_CPLUS_STRUCT_TYPE (type);
12803   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
12804     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
12805
12806   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
12807     {
12808       struct nextfnfield *nfp = flp->head;
12809       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
12810       int k;
12811
12812       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
12813       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
12814       fn_flp->fn_fields = (struct fn_field *)
12815         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
12816       for (k = flp->length; (k--, nfp); nfp = nfp->next)
12817         fn_flp->fn_fields[k] = nfp->fnfield;
12818     }
12819
12820   TYPE_NFN_FIELDS (type) = fip->nfnfields;
12821 }
12822
12823 /* Returns non-zero if NAME is the name of a vtable member in CU's
12824    language, zero otherwise.  */
12825 static int
12826 is_vtable_name (const char *name, struct dwarf2_cu *cu)
12827 {
12828   static const char vptr[] = "_vptr";
12829   static const char vtable[] = "vtable";
12830
12831   /* Look for the C++ and Java forms of the vtable.  */
12832   if ((cu->language == language_java
12833        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
12834        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
12835        && is_cplus_marker (name[sizeof (vptr) - 1])))
12836     return 1;
12837
12838   return 0;
12839 }
12840
12841 /* GCC outputs unnamed structures that are really pointers to member
12842    functions, with the ABI-specified layout.  If TYPE describes
12843    such a structure, smash it into a member function type.
12844
12845    GCC shouldn't do this; it should just output pointer to member DIEs.
12846    This is GCC PR debug/28767.  */
12847
12848 static void
12849 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
12850 {
12851   struct type *pfn_type, *domain_type, *new_type;
12852
12853   /* Check for a structure with no name and two children.  */
12854   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
12855     return;
12856
12857   /* Check for __pfn and __delta members.  */
12858   if (TYPE_FIELD_NAME (type, 0) == NULL
12859       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
12860       || TYPE_FIELD_NAME (type, 1) == NULL
12861       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
12862     return;
12863
12864   /* Find the type of the method.  */
12865   pfn_type = TYPE_FIELD_TYPE (type, 0);
12866   if (pfn_type == NULL
12867       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
12868       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
12869     return;
12870
12871   /* Look for the "this" argument.  */
12872   pfn_type = TYPE_TARGET_TYPE (pfn_type);
12873   if (TYPE_NFIELDS (pfn_type) == 0
12874       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
12875       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
12876     return;
12877
12878   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
12879   new_type = alloc_type (objfile);
12880   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
12881                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
12882                         TYPE_VARARGS (pfn_type));
12883   smash_to_methodptr_type (type, new_type);
12884 }
12885
12886 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
12887    (icc).  */
12888
12889 static int
12890 producer_is_icc (struct dwarf2_cu *cu)
12891 {
12892   if (!cu->checked_producer)
12893     check_producer (cu);
12894
12895   return cu->producer_is_icc;
12896 }
12897
12898 /* Called when we find the DIE that starts a structure or union scope
12899    (definition) to create a type for the structure or union.  Fill in
12900    the type's name and general properties; the members will not be
12901    processed until process_structure_scope.  A symbol table entry for
12902    the type will also not be done until process_structure_scope (assuming
12903    the type has a name).
12904
12905    NOTE: we need to call these functions regardless of whether or not the
12906    DIE has a DW_AT_name attribute, since it might be an anonymous
12907    structure or union.  This gets the type entered into our set of
12908    user defined types.  */
12909
12910 static struct type *
12911 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
12912 {
12913   struct objfile *objfile = cu->objfile;
12914   struct type *type;
12915   struct attribute *attr;
12916   const char *name;
12917
12918   /* If the definition of this type lives in .debug_types, read that type.
12919      Don't follow DW_AT_specification though, that will take us back up
12920      the chain and we want to go down.  */
12921   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
12922   if (attr)
12923     {
12924       type = get_DW_AT_signature_type (die, attr, cu);
12925
12926       /* The type's CU may not be the same as CU.
12927          Ensure TYPE is recorded with CU in die_type_hash.  */
12928       return set_die_type (die, type, cu);
12929     }
12930
12931   type = alloc_type (objfile);
12932   INIT_CPLUS_SPECIFIC (type);
12933
12934   name = dwarf2_name (die, cu);
12935   if (name != NULL)
12936     {
12937       if (cu->language == language_cplus
12938           || cu->language == language_java)
12939         {
12940           const char *full_name = dwarf2_full_name (name, die, cu);
12941
12942           /* dwarf2_full_name might have already finished building the DIE's
12943              type.  If so, there is no need to continue.  */
12944           if (get_die_type (die, cu) != NULL)
12945             return get_die_type (die, cu);
12946
12947           TYPE_TAG_NAME (type) = full_name;
12948           if (die->tag == DW_TAG_structure_type
12949               || die->tag == DW_TAG_class_type)
12950             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12951         }
12952       else
12953         {
12954           /* The name is already allocated along with this objfile, so
12955              we don't need to duplicate it for the type.  */
12956           TYPE_TAG_NAME (type) = name;
12957           if (die->tag == DW_TAG_class_type)
12958             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12959         }
12960     }
12961
12962   if (die->tag == DW_TAG_structure_type)
12963     {
12964       TYPE_CODE (type) = TYPE_CODE_STRUCT;
12965     }
12966   else if (die->tag == DW_TAG_union_type)
12967     {
12968       TYPE_CODE (type) = TYPE_CODE_UNION;
12969     }
12970   else
12971     {
12972       TYPE_CODE (type) = TYPE_CODE_STRUCT;
12973     }
12974
12975   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
12976     TYPE_DECLARED_CLASS (type) = 1;
12977
12978   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12979   if (attr)
12980     {
12981       TYPE_LENGTH (type) = DW_UNSND (attr);
12982     }
12983   else
12984     {
12985       TYPE_LENGTH (type) = 0;
12986     }
12987
12988   if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
12989     {
12990       /* ICC does not output the required DW_AT_declaration
12991          on incomplete types, but gives them a size of zero.  */
12992       TYPE_STUB (type) = 1;
12993     }
12994   else
12995     TYPE_STUB_SUPPORTED (type) = 1;
12996
12997   if (die_is_declaration (die, cu))
12998     TYPE_STUB (type) = 1;
12999   else if (attr == NULL && die->child == NULL
13000            && producer_is_realview (cu->producer))
13001     /* RealView does not output the required DW_AT_declaration
13002        on incomplete types.  */
13003     TYPE_STUB (type) = 1;
13004
13005   /* We need to add the type field to the die immediately so we don't
13006      infinitely recurse when dealing with pointers to the structure
13007      type within the structure itself.  */
13008   set_die_type (die, type, cu);
13009
13010   /* set_die_type should be already done.  */
13011   set_descriptive_type (type, die, cu);
13012
13013   return type;
13014 }
13015
13016 /* Finish creating a structure or union type, including filling in
13017    its members and creating a symbol for it.  */
13018
13019 static void
13020 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13021 {
13022   struct objfile *objfile = cu->objfile;
13023   struct die_info *child_die;
13024   struct type *type;
13025
13026   type = get_die_type (die, cu);
13027   if (type == NULL)
13028     type = read_structure_type (die, cu);
13029
13030   if (die->child != NULL && ! die_is_declaration (die, cu))
13031     {
13032       struct field_info fi;
13033       VEC (symbolp) *template_args = NULL;
13034       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
13035
13036       memset (&fi, 0, sizeof (struct field_info));
13037
13038       child_die = die->child;
13039
13040       while (child_die && child_die->tag)
13041         {
13042           if (child_die->tag == DW_TAG_member
13043               || child_die->tag == DW_TAG_variable)
13044             {
13045               /* NOTE: carlton/2002-11-05: A C++ static data member
13046                  should be a DW_TAG_member that is a declaration, but
13047                  all versions of G++ as of this writing (so through at
13048                  least 3.2.1) incorrectly generate DW_TAG_variable
13049                  tags for them instead.  */
13050               dwarf2_add_field (&fi, child_die, cu);
13051             }
13052           else if (child_die->tag == DW_TAG_subprogram)
13053             {
13054               /* C++ member function.  */
13055               dwarf2_add_member_fn (&fi, child_die, type, cu);
13056             }
13057           else if (child_die->tag == DW_TAG_inheritance)
13058             {
13059               /* C++ base class field.  */
13060               dwarf2_add_field (&fi, child_die, cu);
13061             }
13062           else if (child_die->tag == DW_TAG_typedef)
13063             dwarf2_add_typedef (&fi, child_die, cu);
13064           else if (child_die->tag == DW_TAG_template_type_param
13065                    || child_die->tag == DW_TAG_template_value_param)
13066             {
13067               struct symbol *arg = new_symbol (child_die, NULL, cu);
13068
13069               if (arg != NULL)
13070                 VEC_safe_push (symbolp, template_args, arg);
13071             }
13072
13073           child_die = sibling_die (child_die);
13074         }
13075
13076       /* Attach template arguments to type.  */
13077       if (! VEC_empty (symbolp, template_args))
13078         {
13079           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13080           TYPE_N_TEMPLATE_ARGUMENTS (type)
13081             = VEC_length (symbolp, template_args);
13082           TYPE_TEMPLATE_ARGUMENTS (type)
13083             = obstack_alloc (&objfile->objfile_obstack,
13084                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
13085                               * sizeof (struct symbol *)));
13086           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13087                   VEC_address (symbolp, template_args),
13088                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
13089                    * sizeof (struct symbol *)));
13090           VEC_free (symbolp, template_args);
13091         }
13092
13093       /* Attach fields and member functions to the type.  */
13094       if (fi.nfields)
13095         dwarf2_attach_fields_to_type (&fi, type, cu);
13096       if (fi.nfnfields)
13097         {
13098           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
13099
13100           /* Get the type which refers to the base class (possibly this
13101              class itself) which contains the vtable pointer for the current
13102              class from the DW_AT_containing_type attribute.  This use of
13103              DW_AT_containing_type is a GNU extension.  */
13104
13105           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
13106             {
13107               struct type *t = die_containing_type (die, cu);
13108
13109               TYPE_VPTR_BASETYPE (type) = t;
13110               if (type == t)
13111                 {
13112                   int i;
13113
13114                   /* Our own class provides vtbl ptr.  */
13115                   for (i = TYPE_NFIELDS (t) - 1;
13116                        i >= TYPE_N_BASECLASSES (t);
13117                        --i)
13118                     {
13119                       const char *fieldname = TYPE_FIELD_NAME (t, i);
13120
13121                       if (is_vtable_name (fieldname, cu))
13122                         {
13123                           TYPE_VPTR_FIELDNO (type) = i;
13124                           break;
13125                         }
13126                     }
13127
13128                   /* Complain if virtual function table field not found.  */
13129                   if (i < TYPE_N_BASECLASSES (t))
13130                     complaint (&symfile_complaints,
13131                                _("virtual function table pointer "
13132                                  "not found when defining class '%s'"),
13133                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13134                                "");
13135                 }
13136               else
13137                 {
13138                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
13139                 }
13140             }
13141           else if (cu->producer
13142                    && strncmp (cu->producer,
13143                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
13144             {
13145               /* The IBM XLC compiler does not provide direct indication
13146                  of the containing type, but the vtable pointer is
13147                  always named __vfp.  */
13148
13149               int i;
13150
13151               for (i = TYPE_NFIELDS (type) - 1;
13152                    i >= TYPE_N_BASECLASSES (type);
13153                    --i)
13154                 {
13155                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13156                     {
13157                       TYPE_VPTR_FIELDNO (type) = i;
13158                       TYPE_VPTR_BASETYPE (type) = type;
13159                       break;
13160                     }
13161                 }
13162             }
13163         }
13164
13165       /* Copy fi.typedef_field_list linked list elements content into the
13166          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
13167       if (fi.typedef_field_list)
13168         {
13169           int i = fi.typedef_field_list_count;
13170
13171           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13172           TYPE_TYPEDEF_FIELD_ARRAY (type)
13173             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13174           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13175
13176           /* Reverse the list order to keep the debug info elements order.  */
13177           while (--i >= 0)
13178             {
13179               struct typedef_field *dest, *src;
13180
13181               dest = &TYPE_TYPEDEF_FIELD (type, i);
13182               src = &fi.typedef_field_list->field;
13183               fi.typedef_field_list = fi.typedef_field_list->next;
13184               *dest = *src;
13185             }
13186         }
13187
13188       do_cleanups (back_to);
13189
13190       if (HAVE_CPLUS_STRUCT (type))
13191         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
13192     }
13193
13194   quirk_gcc_member_function_pointer (type, objfile);
13195
13196   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13197      snapshots) has been known to create a die giving a declaration
13198      for a class that has, as a child, a die giving a definition for a
13199      nested class.  So we have to process our children even if the
13200      current die is a declaration.  Normally, of course, a declaration
13201      won't have any children at all.  */
13202
13203   child_die = die->child;
13204
13205   while (child_die != NULL && child_die->tag)
13206     {
13207       if (child_die->tag == DW_TAG_member
13208           || child_die->tag == DW_TAG_variable
13209           || child_die->tag == DW_TAG_inheritance
13210           || child_die->tag == DW_TAG_template_value_param
13211           || child_die->tag == DW_TAG_template_type_param)
13212         {
13213           /* Do nothing.  */
13214         }
13215       else
13216         process_die (child_die, cu);
13217
13218       child_die = sibling_die (child_die);
13219     }
13220
13221   /* Do not consider external references.  According to the DWARF standard,
13222      these DIEs are identified by the fact that they have no byte_size
13223      attribute, and a declaration attribute.  */
13224   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13225       || !die_is_declaration (die, cu))
13226     new_symbol (die, type, cu);
13227 }
13228
13229 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
13230    update TYPE using some information only available in DIE's children.  */
13231
13232 static void
13233 update_enumeration_type_from_children (struct die_info *die,
13234                                        struct type *type,
13235                                        struct dwarf2_cu *cu)
13236 {
13237   struct obstack obstack;
13238   struct die_info *child_die;
13239   int unsigned_enum = 1;
13240   int flag_enum = 1;
13241   ULONGEST mask = 0;
13242   struct cleanup *old_chain;
13243
13244   obstack_init (&obstack);
13245   old_chain = make_cleanup_obstack_free (&obstack);
13246
13247   for (child_die = die->child;
13248        child_die != NULL && child_die->tag;
13249        child_die = sibling_die (child_die))
13250     {
13251       struct attribute *attr;
13252       LONGEST value;
13253       const gdb_byte *bytes;
13254       struct dwarf2_locexpr_baton *baton;
13255       const char *name;
13256
13257       if (child_die->tag != DW_TAG_enumerator)
13258         continue;
13259
13260       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13261       if (attr == NULL)
13262         continue;
13263
13264       name = dwarf2_name (child_die, cu);
13265       if (name == NULL)
13266         name = "<anonymous enumerator>";
13267
13268       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13269                                &value, &bytes, &baton);
13270       if (value < 0)
13271         {
13272           unsigned_enum = 0;
13273           flag_enum = 0;
13274         }
13275       else if ((mask & value) != 0)
13276         flag_enum = 0;
13277       else
13278         mask |= value;
13279
13280       /* If we already know that the enum type is neither unsigned, nor
13281          a flag type, no need to look at the rest of the enumerates.  */
13282       if (!unsigned_enum && !flag_enum)
13283         break;
13284     }
13285
13286   if (unsigned_enum)
13287     TYPE_UNSIGNED (type) = 1;
13288   if (flag_enum)
13289     TYPE_FLAG_ENUM (type) = 1;
13290
13291   do_cleanups (old_chain);
13292 }
13293
13294 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13295    complete the type's fields yet, or create any symbols.  */
13296
13297 static struct type *
13298 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13299 {
13300   struct objfile *objfile = cu->objfile;
13301   struct type *type;
13302   struct attribute *attr;
13303   const char *name;
13304
13305   /* If the definition of this type lives in .debug_types, read that type.
13306      Don't follow DW_AT_specification though, that will take us back up
13307      the chain and we want to go down.  */
13308   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13309   if (attr)
13310     {
13311       type = get_DW_AT_signature_type (die, attr, cu);
13312
13313       /* The type's CU may not be the same as CU.
13314          Ensure TYPE is recorded with CU in die_type_hash.  */
13315       return set_die_type (die, type, cu);
13316     }
13317
13318   type = alloc_type (objfile);
13319
13320   TYPE_CODE (type) = TYPE_CODE_ENUM;
13321   name = dwarf2_full_name (NULL, die, cu);
13322   if (name != NULL)
13323     TYPE_TAG_NAME (type) = name;
13324
13325   attr = dwarf2_attr (die, DW_AT_type, cu);
13326   if (attr != NULL)
13327     {
13328       struct type *underlying_type = die_type (die, cu);
13329
13330       TYPE_TARGET_TYPE (type) = underlying_type;
13331     }
13332
13333   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13334   if (attr)
13335     {
13336       TYPE_LENGTH (type) = DW_UNSND (attr);
13337     }
13338   else
13339     {
13340       TYPE_LENGTH (type) = 0;
13341     }
13342
13343   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13344      declared as private in the package spec, and then defined only
13345      inside the package body.  Such types are known as Taft Amendment
13346      Types.  When another package uses such a type, an incomplete DIE
13347      may be generated by the compiler.  */
13348   if (die_is_declaration (die, cu))
13349     TYPE_STUB (type) = 1;
13350
13351   /* Finish the creation of this type by using the enum's children.
13352      We must call this even when the underlying type has been provided
13353      so that we can determine if we're looking at a "flag" enum.  */
13354   update_enumeration_type_from_children (die, type, cu);
13355
13356   /* If this type has an underlying type that is not a stub, then we
13357      may use its attributes.  We always use the "unsigned" attribute
13358      in this situation, because ordinarily we guess whether the type
13359      is unsigned -- but the guess can be wrong and the underlying type
13360      can tell us the reality.  However, we defer to a local size
13361      attribute if one exists, because this lets the compiler override
13362      the underlying type if needed.  */
13363   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13364     {
13365       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13366       if (TYPE_LENGTH (type) == 0)
13367         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13368     }
13369
13370   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13371
13372   return set_die_type (die, type, cu);
13373 }
13374
13375 /* Given a pointer to a die which begins an enumeration, process all
13376    the dies that define the members of the enumeration, and create the
13377    symbol for the enumeration type.
13378
13379    NOTE: We reverse the order of the element list.  */
13380
13381 static void
13382 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13383 {
13384   struct type *this_type;
13385
13386   this_type = get_die_type (die, cu);
13387   if (this_type == NULL)
13388     this_type = read_enumeration_type (die, cu);
13389
13390   if (die->child != NULL)
13391     {
13392       struct die_info *child_die;
13393       struct symbol *sym;
13394       struct field *fields = NULL;
13395       int num_fields = 0;
13396       const char *name;
13397
13398       child_die = die->child;
13399       while (child_die && child_die->tag)
13400         {
13401           if (child_die->tag != DW_TAG_enumerator)
13402             {
13403               process_die (child_die, cu);
13404             }
13405           else
13406             {
13407               name = dwarf2_name (child_die, cu);
13408               if (name)
13409                 {
13410                   sym = new_symbol (child_die, this_type, cu);
13411
13412                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13413                     {
13414                       fields = (struct field *)
13415                         xrealloc (fields,
13416                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13417                                   * sizeof (struct field));
13418                     }
13419
13420                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13421                   FIELD_TYPE (fields[num_fields]) = NULL;
13422                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13423                   FIELD_BITSIZE (fields[num_fields]) = 0;
13424
13425                   num_fields++;
13426                 }
13427             }
13428
13429           child_die = sibling_die (child_die);
13430         }
13431
13432       if (num_fields)
13433         {
13434           TYPE_NFIELDS (this_type) = num_fields;
13435           TYPE_FIELDS (this_type) = (struct field *)
13436             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13437           memcpy (TYPE_FIELDS (this_type), fields,
13438                   sizeof (struct field) * num_fields);
13439           xfree (fields);
13440         }
13441     }
13442
13443   /* If we are reading an enum from a .debug_types unit, and the enum
13444      is a declaration, and the enum is not the signatured type in the
13445      unit, then we do not want to add a symbol for it.  Adding a
13446      symbol would in some cases obscure the true definition of the
13447      enum, giving users an incomplete type when the definition is
13448      actually available.  Note that we do not want to do this for all
13449      enums which are just declarations, because C++0x allows forward
13450      enum declarations.  */
13451   if (cu->per_cu->is_debug_types
13452       && die_is_declaration (die, cu))
13453     {
13454       struct signatured_type *sig_type;
13455
13456       sig_type = (struct signatured_type *) cu->per_cu;
13457       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13458       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13459         return;
13460     }
13461
13462   new_symbol (die, this_type, cu);
13463 }
13464
13465 /* Extract all information from a DW_TAG_array_type DIE and put it in
13466    the DIE's type field.  For now, this only handles one dimensional
13467    arrays.  */
13468
13469 static struct type *
13470 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13471 {
13472   struct objfile *objfile = cu->objfile;
13473   struct die_info *child_die;
13474   struct type *type;
13475   struct type *element_type, *range_type, *index_type;
13476   struct type **range_types = NULL;
13477   struct attribute *attr;
13478   int ndim = 0;
13479   struct cleanup *back_to;
13480   const char *name;
13481   unsigned int bit_stride = 0;
13482
13483   element_type = die_type (die, cu);
13484
13485   /* The die_type call above may have already set the type for this DIE.  */
13486   type = get_die_type (die, cu);
13487   if (type)
13488     return type;
13489
13490   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13491   if (attr != NULL)
13492     bit_stride = DW_UNSND (attr) * 8;
13493
13494   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13495   if (attr != NULL)
13496     bit_stride = DW_UNSND (attr);
13497
13498   /* Irix 6.2 native cc creates array types without children for
13499      arrays with unspecified length.  */
13500   if (die->child == NULL)
13501     {
13502       index_type = objfile_type (objfile)->builtin_int;
13503       range_type = create_static_range_type (NULL, index_type, 0, -1);
13504       type = create_array_type_with_stride (NULL, element_type, range_type,
13505                                             bit_stride);
13506       return set_die_type (die, type, cu);
13507     }
13508
13509   back_to = make_cleanup (null_cleanup, NULL);
13510   child_die = die->child;
13511   while (child_die && child_die->tag)
13512     {
13513       if (child_die->tag == DW_TAG_subrange_type)
13514         {
13515           struct type *child_type = read_type_die (child_die, cu);
13516
13517           if (child_type != NULL)
13518             {
13519               /* The range type was succesfully read.  Save it for the
13520                  array type creation.  */
13521               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13522                 {
13523                   range_types = (struct type **)
13524                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13525                               * sizeof (struct type *));
13526                   if (ndim == 0)
13527                     make_cleanup (free_current_contents, &range_types);
13528                 }
13529               range_types[ndim++] = child_type;
13530             }
13531         }
13532       child_die = sibling_die (child_die);
13533     }
13534
13535   /* Dwarf2 dimensions are output from left to right, create the
13536      necessary array types in backwards order.  */
13537
13538   type = element_type;
13539
13540   if (read_array_order (die, cu) == DW_ORD_col_major)
13541     {
13542       int i = 0;
13543
13544       while (i < ndim)
13545         type = create_array_type_with_stride (NULL, type, range_types[i++],
13546                                               bit_stride);
13547     }
13548   else
13549     {
13550       while (ndim-- > 0)
13551         type = create_array_type_with_stride (NULL, type, range_types[ndim],
13552                                               bit_stride);
13553     }
13554
13555   /* Understand Dwarf2 support for vector types (like they occur on
13556      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
13557      array type.  This is not part of the Dwarf2/3 standard yet, but a
13558      custom vendor extension.  The main difference between a regular
13559      array and the vector variant is that vectors are passed by value
13560      to functions.  */
13561   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
13562   if (attr)
13563     make_vector_type (type);
13564
13565   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
13566      implementation may choose to implement triple vectors using this
13567      attribute.  */
13568   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13569   if (attr)
13570     {
13571       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13572         TYPE_LENGTH (type) = DW_UNSND (attr);
13573       else
13574         complaint (&symfile_complaints,
13575                    _("DW_AT_byte_size for array type smaller "
13576                      "than the total size of elements"));
13577     }
13578
13579   name = dwarf2_name (die, cu);
13580   if (name)
13581     TYPE_NAME (type) = name;
13582
13583   /* Install the type in the die.  */
13584   set_die_type (die, type, cu);
13585
13586   /* set_die_type should be already done.  */
13587   set_descriptive_type (type, die, cu);
13588
13589   do_cleanups (back_to);
13590
13591   return type;
13592 }
13593
13594 static enum dwarf_array_dim_ordering
13595 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
13596 {
13597   struct attribute *attr;
13598
13599   attr = dwarf2_attr (die, DW_AT_ordering, cu);
13600
13601   if (attr) return DW_SND (attr);
13602
13603   /* GNU F77 is a special case, as at 08/2004 array type info is the
13604      opposite order to the dwarf2 specification, but data is still
13605      laid out as per normal fortran.
13606
13607      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13608      version checking.  */
13609
13610   if (cu->language == language_fortran
13611       && cu->producer && strstr (cu->producer, "GNU F77"))
13612     {
13613       return DW_ORD_row_major;
13614     }
13615
13616   switch (cu->language_defn->la_array_ordering)
13617     {
13618     case array_column_major:
13619       return DW_ORD_col_major;
13620     case array_row_major:
13621     default:
13622       return DW_ORD_row_major;
13623     };
13624 }
13625
13626 /* Extract all information from a DW_TAG_set_type DIE and put it in
13627    the DIE's type field.  */
13628
13629 static struct type *
13630 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13631 {
13632   struct type *domain_type, *set_type;
13633   struct attribute *attr;
13634
13635   domain_type = die_type (die, cu);
13636
13637   /* The die_type call above may have already set the type for this DIE.  */
13638   set_type = get_die_type (die, cu);
13639   if (set_type)
13640     return set_type;
13641
13642   set_type = create_set_type (NULL, domain_type);
13643
13644   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13645   if (attr)
13646     TYPE_LENGTH (set_type) = DW_UNSND (attr);
13647
13648   return set_die_type (die, set_type, cu);
13649 }
13650
13651 /* A helper for read_common_block that creates a locexpr baton.
13652    SYM is the symbol which we are marking as computed.
13653    COMMON_DIE is the DIE for the common block.
13654    COMMON_LOC is the location expression attribute for the common
13655    block itself.
13656    MEMBER_LOC is the location expression attribute for the particular
13657    member of the common block that we are processing.
13658    CU is the CU from which the above come.  */
13659
13660 static void
13661 mark_common_block_symbol_computed (struct symbol *sym,
13662                                    struct die_info *common_die,
13663                                    struct attribute *common_loc,
13664                                    struct attribute *member_loc,
13665                                    struct dwarf2_cu *cu)
13666 {
13667   struct objfile *objfile = dwarf2_per_objfile->objfile;
13668   struct dwarf2_locexpr_baton *baton;
13669   gdb_byte *ptr;
13670   unsigned int cu_off;
13671   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13672   LONGEST offset = 0;
13673
13674   gdb_assert (common_loc && member_loc);
13675   gdb_assert (attr_form_is_block (common_loc));
13676   gdb_assert (attr_form_is_block (member_loc)
13677               || attr_form_is_constant (member_loc));
13678
13679   baton = obstack_alloc (&objfile->objfile_obstack,
13680                          sizeof (struct dwarf2_locexpr_baton));
13681   baton->per_cu = cu->per_cu;
13682   gdb_assert (baton->per_cu);
13683
13684   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13685
13686   if (attr_form_is_constant (member_loc))
13687     {
13688       offset = dwarf2_get_attr_constant_value (member_loc, 0);
13689       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13690     }
13691   else
13692     baton->size += DW_BLOCK (member_loc)->size;
13693
13694   ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13695   baton->data = ptr;
13696
13697   *ptr++ = DW_OP_call4;
13698   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13699   store_unsigned_integer (ptr, 4, byte_order, cu_off);
13700   ptr += 4;
13701
13702   if (attr_form_is_constant (member_loc))
13703     {
13704       *ptr++ = DW_OP_addr;
13705       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13706       ptr += cu->header.addr_size;
13707     }
13708   else
13709     {
13710       /* We have to copy the data here, because DW_OP_call4 will only
13711          use a DW_AT_location attribute.  */
13712       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13713       ptr += DW_BLOCK (member_loc)->size;
13714     }
13715
13716   *ptr++ = DW_OP_plus;
13717   gdb_assert (ptr - baton->data == baton->size);
13718
13719   SYMBOL_LOCATION_BATON (sym) = baton;
13720   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
13721 }
13722
13723 /* Create appropriate locally-scoped variables for all the
13724    DW_TAG_common_block entries.  Also create a struct common_block
13725    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
13726    is used to sepate the common blocks name namespace from regular
13727    variable names.  */
13728
13729 static void
13730 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
13731 {
13732   struct attribute *attr;
13733
13734   attr = dwarf2_attr (die, DW_AT_location, cu);
13735   if (attr)
13736     {
13737       /* Support the .debug_loc offsets.  */
13738       if (attr_form_is_block (attr))
13739         {
13740           /* Ok.  */
13741         }
13742       else if (attr_form_is_section_offset (attr))
13743         {
13744           dwarf2_complex_location_expr_complaint ();
13745           attr = NULL;
13746         }
13747       else
13748         {
13749           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13750                                                  "common block member");
13751           attr = NULL;
13752         }
13753     }
13754
13755   if (die->child != NULL)
13756     {
13757       struct objfile *objfile = cu->objfile;
13758       struct die_info *child_die;
13759       size_t n_entries = 0, size;
13760       struct common_block *common_block;
13761       struct symbol *sym;
13762
13763       for (child_die = die->child;
13764            child_die && child_die->tag;
13765            child_die = sibling_die (child_die))
13766         ++n_entries;
13767
13768       size = (sizeof (struct common_block)
13769               + (n_entries - 1) * sizeof (struct symbol *));
13770       common_block = obstack_alloc (&objfile->objfile_obstack, size);
13771       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13772       common_block->n_entries = 0;
13773
13774       for (child_die = die->child;
13775            child_die && child_die->tag;
13776            child_die = sibling_die (child_die))
13777         {
13778           /* Create the symbol in the DW_TAG_common_block block in the current
13779              symbol scope.  */
13780           sym = new_symbol (child_die, NULL, cu);
13781           if (sym != NULL)
13782             {
13783               struct attribute *member_loc;
13784
13785               common_block->contents[common_block->n_entries++] = sym;
13786
13787               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13788                                         cu);
13789               if (member_loc)
13790                 {
13791                   /* GDB has handled this for a long time, but it is
13792                      not specified by DWARF.  It seems to have been
13793                      emitted by gfortran at least as recently as:
13794                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
13795                   complaint (&symfile_complaints,
13796                              _("Variable in common block has "
13797                                "DW_AT_data_member_location "
13798                                "- DIE at 0x%x [in module %s]"),
13799                              child_die->offset.sect_off,
13800                              objfile_name (cu->objfile));
13801
13802                   if (attr_form_is_section_offset (member_loc))
13803                     dwarf2_complex_location_expr_complaint ();
13804                   else if (attr_form_is_constant (member_loc)
13805                            || attr_form_is_block (member_loc))
13806                     {
13807                       if (attr)
13808                         mark_common_block_symbol_computed (sym, die, attr,
13809                                                            member_loc, cu);
13810                     }
13811                   else
13812                     dwarf2_complex_location_expr_complaint ();
13813                 }
13814             }
13815         }
13816
13817       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
13818       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
13819     }
13820 }
13821
13822 /* Create a type for a C++ namespace.  */
13823
13824 static struct type *
13825 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
13826 {
13827   struct objfile *objfile = cu->objfile;
13828   const char *previous_prefix, *name;
13829   int is_anonymous;
13830   struct type *type;
13831
13832   /* For extensions, reuse the type of the original namespace.  */
13833   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
13834     {
13835       struct die_info *ext_die;
13836       struct dwarf2_cu *ext_cu = cu;
13837
13838       ext_die = dwarf2_extension (die, &ext_cu);
13839       type = read_type_die (ext_die, ext_cu);
13840
13841       /* EXT_CU may not be the same as CU.
13842          Ensure TYPE is recorded with CU in die_type_hash.  */
13843       return set_die_type (die, type, cu);
13844     }
13845
13846   name = namespace_name (die, &is_anonymous, cu);
13847
13848   /* Now build the name of the current namespace.  */
13849
13850   previous_prefix = determine_prefix (die, cu);
13851   if (previous_prefix[0] != '\0')
13852     name = typename_concat (&objfile->objfile_obstack,
13853                             previous_prefix, name, 0, cu);
13854
13855   /* Create the type.  */
13856   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
13857                     objfile);
13858   TYPE_NAME (type) = name;
13859   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13860
13861   return set_die_type (die, type, cu);
13862 }
13863
13864 /* Read a C++ namespace.  */
13865
13866 static void
13867 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
13868 {
13869   struct objfile *objfile = cu->objfile;
13870   int is_anonymous;
13871
13872   /* Add a symbol associated to this if we haven't seen the namespace
13873      before.  Also, add a using directive if it's an anonymous
13874      namespace.  */
13875
13876   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
13877     {
13878       struct type *type;
13879
13880       type = read_type_die (die, cu);
13881       new_symbol (die, type, cu);
13882
13883       namespace_name (die, &is_anonymous, cu);
13884       if (is_anonymous)
13885         {
13886           const char *previous_prefix = determine_prefix (die, cu);
13887
13888           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
13889                                   NULL, NULL, 0, &objfile->objfile_obstack);
13890         }
13891     }
13892
13893   if (die->child != NULL)
13894     {
13895       struct die_info *child_die = die->child;
13896
13897       while (child_die && child_die->tag)
13898         {
13899           process_die (child_die, cu);
13900           child_die = sibling_die (child_die);
13901         }
13902     }
13903 }
13904
13905 /* Read a Fortran module as type.  This DIE can be only a declaration used for
13906    imported module.  Still we need that type as local Fortran "use ... only"
13907    declaration imports depend on the created type in determine_prefix.  */
13908
13909 static struct type *
13910 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
13911 {
13912   struct objfile *objfile = cu->objfile;
13913   const char *module_name;
13914   struct type *type;
13915
13916   module_name = dwarf2_name (die, cu);
13917   if (!module_name)
13918     complaint (&symfile_complaints,
13919                _("DW_TAG_module has no name, offset 0x%x"),
13920                die->offset.sect_off);
13921   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
13922
13923   /* determine_prefix uses TYPE_TAG_NAME.  */
13924   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13925
13926   return set_die_type (die, type, cu);
13927 }
13928
13929 /* Read a Fortran module.  */
13930
13931 static void
13932 read_module (struct die_info *die, struct dwarf2_cu *cu)
13933 {
13934   struct die_info *child_die = die->child;
13935   struct type *type;
13936
13937   type = read_type_die (die, cu);
13938   new_symbol (die, type, cu);
13939
13940   while (child_die && child_die->tag)
13941     {
13942       process_die (child_die, cu);
13943       child_die = sibling_die (child_die);
13944     }
13945 }
13946
13947 /* Return the name of the namespace represented by DIE.  Set
13948    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
13949    namespace.  */
13950
13951 static const char *
13952 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
13953 {
13954   struct die_info *current_die;
13955   const char *name = NULL;
13956
13957   /* Loop through the extensions until we find a name.  */
13958
13959   for (current_die = die;
13960        current_die != NULL;
13961        current_die = dwarf2_extension (die, &cu))
13962     {
13963       name = dwarf2_name (current_die, cu);
13964       if (name != NULL)
13965         break;
13966     }
13967
13968   /* Is it an anonymous namespace?  */
13969
13970   *is_anonymous = (name == NULL);
13971   if (*is_anonymous)
13972     name = CP_ANONYMOUS_NAMESPACE_STR;
13973
13974   return name;
13975 }
13976
13977 /* Extract all information from a DW_TAG_pointer_type DIE and add to
13978    the user defined type vector.  */
13979
13980 static struct type *
13981 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
13982 {
13983   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
13984   struct comp_unit_head *cu_header = &cu->header;
13985   struct type *type;
13986   struct attribute *attr_byte_size;
13987   struct attribute *attr_address_class;
13988   int byte_size, addr_class;
13989   struct type *target_type;
13990
13991   target_type = die_type (die, cu);
13992
13993   /* The die_type call above may have already set the type for this DIE.  */
13994   type = get_die_type (die, cu);
13995   if (type)
13996     return type;
13997
13998   type = lookup_pointer_type (target_type);
13999
14000   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
14001   if (attr_byte_size)
14002     byte_size = DW_UNSND (attr_byte_size);
14003   else
14004     byte_size = cu_header->addr_size;
14005
14006   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
14007   if (attr_address_class)
14008     addr_class = DW_UNSND (attr_address_class);
14009   else
14010     addr_class = DW_ADDR_none;
14011
14012   /* If the pointer size or address class is different than the
14013      default, create a type variant marked as such and set the
14014      length accordingly.  */
14015   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
14016     {
14017       if (gdbarch_address_class_type_flags_p (gdbarch))
14018         {
14019           int type_flags;
14020
14021           type_flags = gdbarch_address_class_type_flags
14022                          (gdbarch, byte_size, addr_class);
14023           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14024                       == 0);
14025           type = make_type_with_address_space (type, type_flags);
14026         }
14027       else if (TYPE_LENGTH (type) != byte_size)
14028         {
14029           complaint (&symfile_complaints,
14030                      _("invalid pointer size %d"), byte_size);
14031         }
14032       else
14033         {
14034           /* Should we also complain about unhandled address classes?  */
14035         }
14036     }
14037
14038   TYPE_LENGTH (type) = byte_size;
14039   return set_die_type (die, type, cu);
14040 }
14041
14042 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14043    the user defined type vector.  */
14044
14045 static struct type *
14046 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
14047 {
14048   struct type *type;
14049   struct type *to_type;
14050   struct type *domain;
14051
14052   to_type = die_type (die, cu);
14053   domain = die_containing_type (die, cu);
14054
14055   /* The calls above may have already set the type for this DIE.  */
14056   type = get_die_type (die, cu);
14057   if (type)
14058     return type;
14059
14060   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14061     type = lookup_methodptr_type (to_type);
14062   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14063     {
14064       struct type *new_type = alloc_type (cu->objfile);
14065
14066       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14067                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14068                             TYPE_VARARGS (to_type));
14069       type = lookup_methodptr_type (new_type);
14070     }
14071   else
14072     type = lookup_memberptr_type (to_type, domain);
14073
14074   return set_die_type (die, type, cu);
14075 }
14076
14077 /* Extract all information from a DW_TAG_reference_type DIE and add to
14078    the user defined type vector.  */
14079
14080 static struct type *
14081 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
14082 {
14083   struct comp_unit_head *cu_header = &cu->header;
14084   struct type *type, *target_type;
14085   struct attribute *attr;
14086
14087   target_type = die_type (die, cu);
14088
14089   /* The die_type call above may have already set the type for this DIE.  */
14090   type = get_die_type (die, cu);
14091   if (type)
14092     return type;
14093
14094   type = lookup_reference_type (target_type);
14095   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14096   if (attr)
14097     {
14098       TYPE_LENGTH (type) = DW_UNSND (attr);
14099     }
14100   else
14101     {
14102       TYPE_LENGTH (type) = cu_header->addr_size;
14103     }
14104   return set_die_type (die, type, cu);
14105 }
14106
14107 /* Add the given cv-qualifiers to the element type of the array.  GCC
14108    outputs DWARF type qualifiers that apply to an array, not the
14109    element type.  But GDB relies on the array element type to carry
14110    the cv-qualifiers.  This mimics section 6.7.3 of the C99
14111    specification.  */
14112
14113 static struct type *
14114 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14115                    struct type *base_type, int cnst, int voltl)
14116 {
14117   struct type *el_type, *inner_array;
14118
14119   base_type = copy_type (base_type);
14120   inner_array = base_type;
14121
14122   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14123     {
14124       TYPE_TARGET_TYPE (inner_array) =
14125         copy_type (TYPE_TARGET_TYPE (inner_array));
14126       inner_array = TYPE_TARGET_TYPE (inner_array);
14127     }
14128
14129   el_type = TYPE_TARGET_TYPE (inner_array);
14130   cnst |= TYPE_CONST (el_type);
14131   voltl |= TYPE_VOLATILE (el_type);
14132   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14133
14134   return set_die_type (die, base_type, cu);
14135 }
14136
14137 static struct type *
14138 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
14139 {
14140   struct type *base_type, *cv_type;
14141
14142   base_type = die_type (die, cu);
14143
14144   /* The die_type call above may have already set the type for this DIE.  */
14145   cv_type = get_die_type (die, cu);
14146   if (cv_type)
14147     return cv_type;
14148
14149   /* In case the const qualifier is applied to an array type, the element type
14150      is so qualified, not the array type (section 6.7.3 of C99).  */
14151   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14152     return add_array_cv_type (die, cu, base_type, 1, 0);
14153
14154   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14155   return set_die_type (die, cv_type, cu);
14156 }
14157
14158 static struct type *
14159 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
14160 {
14161   struct type *base_type, *cv_type;
14162
14163   base_type = die_type (die, cu);
14164
14165   /* The die_type call above may have already set the type for this DIE.  */
14166   cv_type = get_die_type (die, cu);
14167   if (cv_type)
14168     return cv_type;
14169
14170   /* In case the volatile qualifier is applied to an array type, the
14171      element type is so qualified, not the array type (section 6.7.3
14172      of C99).  */
14173   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14174     return add_array_cv_type (die, cu, base_type, 0, 1);
14175
14176   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14177   return set_die_type (die, cv_type, cu);
14178 }
14179
14180 /* Handle DW_TAG_restrict_type.  */
14181
14182 static struct type *
14183 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14184 {
14185   struct type *base_type, *cv_type;
14186
14187   base_type = die_type (die, cu);
14188
14189   /* The die_type call above may have already set the type for this DIE.  */
14190   cv_type = get_die_type (die, cu);
14191   if (cv_type)
14192     return cv_type;
14193
14194   cv_type = make_restrict_type (base_type);
14195   return set_die_type (die, cv_type, cu);
14196 }
14197
14198 /* Extract all information from a DW_TAG_string_type DIE and add to
14199    the user defined type vector.  It isn't really a user defined type,
14200    but it behaves like one, with other DIE's using an AT_user_def_type
14201    attribute to reference it.  */
14202
14203 static struct type *
14204 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
14205 {
14206   struct objfile *objfile = cu->objfile;
14207   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14208   struct type *type, *range_type, *index_type, *char_type;
14209   struct attribute *attr;
14210   unsigned int length;
14211
14212   attr = dwarf2_attr (die, DW_AT_string_length, cu);
14213   if (attr)
14214     {
14215       length = DW_UNSND (attr);
14216     }
14217   else
14218     {
14219       /* Check for the DW_AT_byte_size attribute.  */
14220       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14221       if (attr)
14222         {
14223           length = DW_UNSND (attr);
14224         }
14225       else
14226         {
14227           length = 1;
14228         }
14229     }
14230
14231   index_type = objfile_type (objfile)->builtin_int;
14232   range_type = create_static_range_type (NULL, index_type, 1, length);
14233   char_type = language_string_char_type (cu->language_defn, gdbarch);
14234   type = create_string_type (NULL, char_type, range_type);
14235
14236   return set_die_type (die, type, cu);
14237 }
14238
14239 /* Assuming that DIE corresponds to a function, returns nonzero
14240    if the function is prototyped.  */
14241
14242 static int
14243 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14244 {
14245   struct attribute *attr;
14246
14247   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14248   if (attr && (DW_UNSND (attr) != 0))
14249     return 1;
14250
14251   /* The DWARF standard implies that the DW_AT_prototyped attribute
14252      is only meaninful for C, but the concept also extends to other
14253      languages that allow unprototyped functions (Eg: Objective C).
14254      For all other languages, assume that functions are always
14255      prototyped.  */
14256   if (cu->language != language_c
14257       && cu->language != language_objc
14258       && cu->language != language_opencl)
14259     return 1;
14260
14261   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
14262      prototyped and unprototyped functions; default to prototyped,
14263      since that is more common in modern code (and RealView warns
14264      about unprototyped functions).  */
14265   if (producer_is_realview (cu->producer))
14266     return 1;
14267
14268   return 0;
14269 }
14270
14271 /* Handle DIES due to C code like:
14272
14273    struct foo
14274    {
14275    int (*funcp)(int a, long l);
14276    int b;
14277    };
14278
14279    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
14280
14281 static struct type *
14282 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
14283 {
14284   struct objfile *objfile = cu->objfile;
14285   struct type *type;            /* Type that this function returns.  */
14286   struct type *ftype;           /* Function that returns above type.  */
14287   struct attribute *attr;
14288
14289   type = die_type (die, cu);
14290
14291   /* The die_type call above may have already set the type for this DIE.  */
14292   ftype = get_die_type (die, cu);
14293   if (ftype)
14294     return ftype;
14295
14296   ftype = lookup_function_type (type);
14297
14298   if (prototyped_function_p (die, cu))
14299     TYPE_PROTOTYPED (ftype) = 1;
14300
14301   /* Store the calling convention in the type if it's available in
14302      the subroutine die.  Otherwise set the calling convention to
14303      the default value DW_CC_normal.  */
14304   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14305   if (attr)
14306     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14307   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14308     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14309   else
14310     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14311
14312   /* We need to add the subroutine type to the die immediately so
14313      we don't infinitely recurse when dealing with parameters
14314      declared as the same subroutine type.  */
14315   set_die_type (die, ftype, cu);
14316
14317   if (die->child != NULL)
14318     {
14319       struct type *void_type = objfile_type (objfile)->builtin_void;
14320       struct die_info *child_die;
14321       int nparams, iparams;
14322
14323       /* Count the number of parameters.
14324          FIXME: GDB currently ignores vararg functions, but knows about
14325          vararg member functions.  */
14326       nparams = 0;
14327       child_die = die->child;
14328       while (child_die && child_die->tag)
14329         {
14330           if (child_die->tag == DW_TAG_formal_parameter)
14331             nparams++;
14332           else if (child_die->tag == DW_TAG_unspecified_parameters)
14333             TYPE_VARARGS (ftype) = 1;
14334           child_die = sibling_die (child_die);
14335         }
14336
14337       /* Allocate storage for parameters and fill them in.  */
14338       TYPE_NFIELDS (ftype) = nparams;
14339       TYPE_FIELDS (ftype) = (struct field *)
14340         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14341
14342       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14343          even if we error out during the parameters reading below.  */
14344       for (iparams = 0; iparams < nparams; iparams++)
14345         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14346
14347       iparams = 0;
14348       child_die = die->child;
14349       while (child_die && child_die->tag)
14350         {
14351           if (child_die->tag == DW_TAG_formal_parameter)
14352             {
14353               struct type *arg_type;
14354
14355               /* DWARF version 2 has no clean way to discern C++
14356                  static and non-static member functions.  G++ helps
14357                  GDB by marking the first parameter for non-static
14358                  member functions (which is the this pointer) as
14359                  artificial.  We pass this information to
14360                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14361
14362                  DWARF version 3 added DW_AT_object_pointer, which GCC
14363                  4.5 does not yet generate.  */
14364               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14365               if (attr)
14366                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14367               else
14368                 {
14369                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14370
14371                   /* GCC/43521: In java, the formal parameter
14372                      "this" is sometimes not marked with DW_AT_artificial.  */
14373                   if (cu->language == language_java)
14374                     {
14375                       const char *name = dwarf2_name (child_die, cu);
14376
14377                       if (name && !strcmp (name, "this"))
14378                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14379                     }
14380                 }
14381               arg_type = die_type (child_die, cu);
14382
14383               /* RealView does not mark THIS as const, which the testsuite
14384                  expects.  GCC marks THIS as const in method definitions,
14385                  but not in the class specifications (GCC PR 43053).  */
14386               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14387                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14388                 {
14389                   int is_this = 0;
14390                   struct dwarf2_cu *arg_cu = cu;
14391                   const char *name = dwarf2_name (child_die, cu);
14392
14393                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14394                   if (attr)
14395                     {
14396                       /* If the compiler emits this, use it.  */
14397                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14398                         is_this = 1;
14399                     }
14400                   else if (name && strcmp (name, "this") == 0)
14401                     /* Function definitions will have the argument names.  */
14402                     is_this = 1;
14403                   else if (name == NULL && iparams == 0)
14404                     /* Declarations may not have the names, so like
14405                        elsewhere in GDB, assume an artificial first
14406                        argument is "this".  */
14407                     is_this = 1;
14408
14409                   if (is_this)
14410                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14411                                              arg_type, 0);
14412                 }
14413
14414               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14415               iparams++;
14416             }
14417           child_die = sibling_die (child_die);
14418         }
14419     }
14420
14421   return ftype;
14422 }
14423
14424 static struct type *
14425 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14426 {
14427   struct objfile *objfile = cu->objfile;
14428   const char *name = NULL;
14429   struct type *this_type, *target_type;
14430
14431   name = dwarf2_full_name (NULL, die, cu);
14432   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
14433                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
14434   TYPE_NAME (this_type) = name;
14435   set_die_type (die, this_type, cu);
14436   target_type = die_type (die, cu);
14437   if (target_type != this_type)
14438     TYPE_TARGET_TYPE (this_type) = target_type;
14439   else
14440     {
14441       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14442          spec and cause infinite loops in GDB.  */
14443       complaint (&symfile_complaints,
14444                  _("Self-referential DW_TAG_typedef "
14445                    "- DIE at 0x%x [in module %s]"),
14446                  die->offset.sect_off, objfile_name (objfile));
14447       TYPE_TARGET_TYPE (this_type) = NULL;
14448     }
14449   return this_type;
14450 }
14451
14452 /* Find a representation of a given base type and install
14453    it in the TYPE field of the die.  */
14454
14455 static struct type *
14456 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14457 {
14458   struct objfile *objfile = cu->objfile;
14459   struct type *type;
14460   struct attribute *attr;
14461   int encoding = 0, size = 0;
14462   const char *name;
14463   enum type_code code = TYPE_CODE_INT;
14464   int type_flags = 0;
14465   struct type *target_type = NULL;
14466
14467   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14468   if (attr)
14469     {
14470       encoding = DW_UNSND (attr);
14471     }
14472   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14473   if (attr)
14474     {
14475       size = DW_UNSND (attr);
14476     }
14477   name = dwarf2_name (die, cu);
14478   if (!name)
14479     {
14480       complaint (&symfile_complaints,
14481                  _("DW_AT_name missing from DW_TAG_base_type"));
14482     }
14483
14484   switch (encoding)
14485     {
14486       case DW_ATE_address:
14487         /* Turn DW_ATE_address into a void * pointer.  */
14488         code = TYPE_CODE_PTR;
14489         type_flags |= TYPE_FLAG_UNSIGNED;
14490         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14491         break;
14492       case DW_ATE_boolean:
14493         code = TYPE_CODE_BOOL;
14494         type_flags |= TYPE_FLAG_UNSIGNED;
14495         break;
14496       case DW_ATE_complex_float:
14497         code = TYPE_CODE_COMPLEX;
14498         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14499         break;
14500       case DW_ATE_decimal_float:
14501         code = TYPE_CODE_DECFLOAT;
14502         break;
14503       case DW_ATE_float:
14504         code = TYPE_CODE_FLT;
14505         break;
14506       case DW_ATE_signed:
14507         break;
14508       case DW_ATE_unsigned:
14509         type_flags |= TYPE_FLAG_UNSIGNED;
14510         if (cu->language == language_fortran
14511             && name
14512             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
14513           code = TYPE_CODE_CHAR;
14514         break;
14515       case DW_ATE_signed_char:
14516         if (cu->language == language_ada || cu->language == language_m2
14517             || cu->language == language_pascal
14518             || cu->language == language_fortran)
14519           code = TYPE_CODE_CHAR;
14520         break;
14521       case DW_ATE_unsigned_char:
14522         if (cu->language == language_ada || cu->language == language_m2
14523             || cu->language == language_pascal
14524             || cu->language == language_fortran)
14525           code = TYPE_CODE_CHAR;
14526         type_flags |= TYPE_FLAG_UNSIGNED;
14527         break;
14528       case DW_ATE_UTF:
14529         /* We just treat this as an integer and then recognize the
14530            type by name elsewhere.  */
14531         break;
14532
14533       default:
14534         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14535                    dwarf_type_encoding_name (encoding));
14536         break;
14537     }
14538
14539   type = init_type (code, size, type_flags, NULL, objfile);
14540   TYPE_NAME (type) = name;
14541   TYPE_TARGET_TYPE (type) = target_type;
14542
14543   if (name && strcmp (name, "char") == 0)
14544     TYPE_NOSIGN (type) = 1;
14545
14546   return set_die_type (die, type, cu);
14547 }
14548
14549 /* Parse dwarf attribute if it's a block, reference or constant and put the
14550    resulting value of the attribute into struct bound_prop.
14551    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
14552
14553 static int
14554 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14555                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
14556 {
14557   struct dwarf2_property_baton *baton;
14558   struct obstack *obstack = &cu->objfile->objfile_obstack;
14559
14560   if (attr == NULL || prop == NULL)
14561     return 0;
14562
14563   if (attr_form_is_block (attr))
14564     {
14565       baton = obstack_alloc (obstack, sizeof (*baton));
14566       baton->referenced_type = NULL;
14567       baton->locexpr.per_cu = cu->per_cu;
14568       baton->locexpr.size = DW_BLOCK (attr)->size;
14569       baton->locexpr.data = DW_BLOCK (attr)->data;
14570       prop->data.baton = baton;
14571       prop->kind = PROP_LOCEXPR;
14572       gdb_assert (prop->data.baton != NULL);
14573     }
14574   else if (attr_form_is_ref (attr))
14575     {
14576       struct dwarf2_cu *target_cu = cu;
14577       struct die_info *target_die;
14578       struct attribute *target_attr;
14579
14580       target_die = follow_die_ref (die, attr, &target_cu);
14581       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
14582       if (target_attr == NULL)
14583         return 0;
14584
14585       if (attr_form_is_section_offset (target_attr))
14586         {
14587           baton = obstack_alloc (obstack, sizeof (*baton));
14588           baton->referenced_type = die_type (target_die, target_cu);
14589           fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14590           prop->data.baton = baton;
14591           prop->kind = PROP_LOCLIST;
14592           gdb_assert (prop->data.baton != NULL);
14593         }
14594       else if (attr_form_is_block (target_attr))
14595         {
14596           baton = obstack_alloc (obstack, sizeof (*baton));
14597           baton->referenced_type = die_type (target_die, target_cu);
14598           baton->locexpr.per_cu = cu->per_cu;
14599           baton->locexpr.size = DW_BLOCK (target_attr)->size;
14600           baton->locexpr.data = DW_BLOCK (target_attr)->data;
14601           prop->data.baton = baton;
14602           prop->kind = PROP_LOCEXPR;
14603           gdb_assert (prop->data.baton != NULL);
14604         }
14605       else
14606         {
14607           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14608                                                  "dynamic property");
14609           return 0;
14610         }
14611     }
14612   else if (attr_form_is_constant (attr))
14613     {
14614       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14615       prop->kind = PROP_CONST;
14616     }
14617   else
14618     {
14619       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14620                                              dwarf2_name (die, cu));
14621       return 0;
14622     }
14623
14624   return 1;
14625 }
14626
14627 /* Read the given DW_AT_subrange DIE.  */
14628
14629 static struct type *
14630 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14631 {
14632   struct type *base_type, *orig_base_type;
14633   struct type *range_type;
14634   struct attribute *attr;
14635   struct dynamic_prop low, high;
14636   int low_default_is_valid;
14637   int high_bound_is_count = 0;
14638   const char *name;
14639   LONGEST negative_mask;
14640
14641   orig_base_type = die_type (die, cu);
14642   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14643      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
14644      creating the range type, but we use the result of check_typedef
14645      when examining properties of the type.  */
14646   base_type = check_typedef (orig_base_type);
14647
14648   /* The die_type call above may have already set the type for this DIE.  */
14649   range_type = get_die_type (die, cu);
14650   if (range_type)
14651     return range_type;
14652
14653   low.kind = PROP_CONST;
14654   high.kind = PROP_CONST;
14655   high.data.const_val = 0;
14656
14657   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14658      omitting DW_AT_lower_bound.  */
14659   switch (cu->language)
14660     {
14661     case language_c:
14662     case language_cplus:
14663       low.data.const_val = 0;
14664       low_default_is_valid = 1;
14665       break;
14666     case language_fortran:
14667       low.data.const_val = 1;
14668       low_default_is_valid = 1;
14669       break;
14670     case language_d:
14671     case language_java:
14672     case language_objc:
14673       low.data.const_val = 0;
14674       low_default_is_valid = (cu->header.version >= 4);
14675       break;
14676     case language_ada:
14677     case language_m2:
14678     case language_pascal:
14679       low.data.const_val = 1;
14680       low_default_is_valid = (cu->header.version >= 4);
14681       break;
14682     default:
14683       low.data.const_val = 0;
14684       low_default_is_valid = 0;
14685       break;
14686     }
14687
14688   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
14689   if (attr)
14690     attr_to_dynamic_prop (attr, die, cu, &low);
14691   else if (!low_default_is_valid)
14692     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14693                                       "- DIE at 0x%x [in module %s]"),
14694                die->offset.sect_off, objfile_name (cu->objfile));
14695
14696   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
14697   if (!attr_to_dynamic_prop (attr, die, cu, &high))
14698     {
14699       attr = dwarf2_attr (die, DW_AT_count, cu);
14700       if (attr_to_dynamic_prop (attr, die, cu, &high))
14701         {
14702           /* If bounds are constant do the final calculation here.  */
14703           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14704             high.data.const_val = low.data.const_val + high.data.const_val - 1;
14705           else
14706             high_bound_is_count = 1;
14707         }
14708     }
14709
14710   /* Dwarf-2 specifications explicitly allows to create subrange types
14711      without specifying a base type.
14712      In that case, the base type must be set to the type of
14713      the lower bound, upper bound or count, in that order, if any of these
14714      three attributes references an object that has a type.
14715      If no base type is found, the Dwarf-2 specifications say that
14716      a signed integer type of size equal to the size of an address should
14717      be used.
14718      For the following C code: `extern char gdb_int [];'
14719      GCC produces an empty range DIE.
14720      FIXME: muller/2010-05-28: Possible references to object for low bound,
14721      high bound or count are not yet handled by this code.  */
14722   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14723     {
14724       struct objfile *objfile = cu->objfile;
14725       struct gdbarch *gdbarch = get_objfile_arch (objfile);
14726       int addr_size = gdbarch_addr_bit (gdbarch) /8;
14727       struct type *int_type = objfile_type (objfile)->builtin_int;
14728
14729       /* Test "int", "long int", and "long long int" objfile types,
14730          and select the first one having a size above or equal to the
14731          architecture address size.  */
14732       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14733         base_type = int_type;
14734       else
14735         {
14736           int_type = objfile_type (objfile)->builtin_long;
14737           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14738             base_type = int_type;
14739           else
14740             {
14741               int_type = objfile_type (objfile)->builtin_long_long;
14742               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14743                 base_type = int_type;
14744             }
14745         }
14746     }
14747
14748   /* Normally, the DWARF producers are expected to use a signed
14749      constant form (Eg. DW_FORM_sdata) to express negative bounds.
14750      But this is unfortunately not always the case, as witnessed
14751      with GCC, for instance, where the ambiguous DW_FORM_dataN form
14752      is used instead.  To work around that ambiguity, we treat
14753      the bounds as signed, and thus sign-extend their values, when
14754      the base type is signed.  */
14755   negative_mask =
14756     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
14757   if (low.kind == PROP_CONST
14758       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
14759     low.data.const_val |= negative_mask;
14760   if (high.kind == PROP_CONST
14761       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
14762     high.data.const_val |= negative_mask;
14763
14764   range_type = create_range_type (NULL, orig_base_type, &low, &high);
14765
14766   if (high_bound_is_count)
14767     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
14768
14769   /* Ada expects an empty array on no boundary attributes.  */
14770   if (attr == NULL && cu->language != language_ada)
14771     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
14772
14773   name = dwarf2_name (die, cu);
14774   if (name)
14775     TYPE_NAME (range_type) = name;
14776
14777   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14778   if (attr)
14779     TYPE_LENGTH (range_type) = DW_UNSND (attr);
14780
14781   set_die_type (die, range_type, cu);
14782
14783   /* set_die_type should be already done.  */
14784   set_descriptive_type (range_type, die, cu);
14785
14786   return range_type;
14787 }
14788
14789 static struct type *
14790 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
14791 {
14792   struct type *type;
14793
14794   /* For now, we only support the C meaning of an unspecified type: void.  */
14795
14796   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
14797   TYPE_NAME (type) = dwarf2_name (die, cu);
14798
14799   return set_die_type (die, type, cu);
14800 }
14801
14802 /* Read a single die and all its descendents.  Set the die's sibling
14803    field to NULL; set other fields in the die correctly, and set all
14804    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
14805    location of the info_ptr after reading all of those dies.  PARENT
14806    is the parent of the die in question.  */
14807
14808 static struct die_info *
14809 read_die_and_children (const struct die_reader_specs *reader,
14810                        const gdb_byte *info_ptr,
14811                        const gdb_byte **new_info_ptr,
14812                        struct die_info *parent)
14813 {
14814   struct die_info *die;
14815   const gdb_byte *cur_ptr;
14816   int has_children;
14817
14818   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
14819   if (die == NULL)
14820     {
14821       *new_info_ptr = cur_ptr;
14822       return NULL;
14823     }
14824   store_in_ref_table (die, reader->cu);
14825
14826   if (has_children)
14827     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
14828   else
14829     {
14830       die->child = NULL;
14831       *new_info_ptr = cur_ptr;
14832     }
14833
14834   die->sibling = NULL;
14835   die->parent = parent;
14836   return die;
14837 }
14838
14839 /* Read a die, all of its descendents, and all of its siblings; set
14840    all of the fields of all of the dies correctly.  Arguments are as
14841    in read_die_and_children.  */
14842
14843 static struct die_info *
14844 read_die_and_siblings_1 (const struct die_reader_specs *reader,
14845                          const gdb_byte *info_ptr,
14846                          const gdb_byte **new_info_ptr,
14847                          struct die_info *parent)
14848 {
14849   struct die_info *first_die, *last_sibling;
14850   const gdb_byte *cur_ptr;
14851
14852   cur_ptr = info_ptr;
14853   first_die = last_sibling = NULL;
14854
14855   while (1)
14856     {
14857       struct die_info *die
14858         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
14859
14860       if (die == NULL)
14861         {
14862           *new_info_ptr = cur_ptr;
14863           return first_die;
14864         }
14865
14866       if (!first_die)
14867         first_die = die;
14868       else
14869         last_sibling->sibling = die;
14870
14871       last_sibling = die;
14872     }
14873 }
14874
14875 /* Read a die, all of its descendents, and all of its siblings; set
14876    all of the fields of all of the dies correctly.  Arguments are as
14877    in read_die_and_children.
14878    This the main entry point for reading a DIE and all its children.  */
14879
14880 static struct die_info *
14881 read_die_and_siblings (const struct die_reader_specs *reader,
14882                        const gdb_byte *info_ptr,
14883                        const gdb_byte **new_info_ptr,
14884                        struct die_info *parent)
14885 {
14886   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
14887                                                   new_info_ptr, parent);
14888
14889   if (dwarf2_die_debug)
14890     {
14891       fprintf_unfiltered (gdb_stdlog,
14892                           "Read die from %s@0x%x of %s:\n",
14893                           get_section_name (reader->die_section),
14894                           (unsigned) (info_ptr - reader->die_section->buffer),
14895                           bfd_get_filename (reader->abfd));
14896       dump_die (die, dwarf2_die_debug);
14897     }
14898
14899   return die;
14900 }
14901
14902 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
14903    attributes.
14904    The caller is responsible for filling in the extra attributes
14905    and updating (*DIEP)->num_attrs.
14906    Set DIEP to point to a newly allocated die with its information,
14907    except for its child, sibling, and parent fields.
14908    Set HAS_CHILDREN to tell whether the die has children or not.  */
14909
14910 static const gdb_byte *
14911 read_full_die_1 (const struct die_reader_specs *reader,
14912                  struct die_info **diep, const gdb_byte *info_ptr,
14913                  int *has_children, int num_extra_attrs)
14914 {
14915   unsigned int abbrev_number, bytes_read, i;
14916   sect_offset offset;
14917   struct abbrev_info *abbrev;
14918   struct die_info *die;
14919   struct dwarf2_cu *cu = reader->cu;
14920   bfd *abfd = reader->abfd;
14921
14922   offset.sect_off = info_ptr - reader->buffer;
14923   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14924   info_ptr += bytes_read;
14925   if (!abbrev_number)
14926     {
14927       *diep = NULL;
14928       *has_children = 0;
14929       return info_ptr;
14930     }
14931
14932   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
14933   if (!abbrev)
14934     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
14935            abbrev_number,
14936            bfd_get_filename (abfd));
14937
14938   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
14939   die->offset = offset;
14940   die->tag = abbrev->tag;
14941   die->abbrev = abbrev_number;
14942
14943   /* Make the result usable.
14944      The caller needs to update num_attrs after adding the extra
14945      attributes.  */
14946   die->num_attrs = abbrev->num_attrs;
14947
14948   for (i = 0; i < abbrev->num_attrs; ++i)
14949     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
14950                                info_ptr);
14951
14952   *diep = die;
14953   *has_children = abbrev->has_children;
14954   return info_ptr;
14955 }
14956
14957 /* Read a die and all its attributes.
14958    Set DIEP to point to a newly allocated die with its information,
14959    except for its child, sibling, and parent fields.
14960    Set HAS_CHILDREN to tell whether the die has children or not.  */
14961
14962 static const gdb_byte *
14963 read_full_die (const struct die_reader_specs *reader,
14964                struct die_info **diep, const gdb_byte *info_ptr,
14965                int *has_children)
14966 {
14967   const gdb_byte *result;
14968
14969   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
14970
14971   if (dwarf2_die_debug)
14972     {
14973       fprintf_unfiltered (gdb_stdlog,
14974                           "Read die from %s@0x%x of %s:\n",
14975                           get_section_name (reader->die_section),
14976                           (unsigned) (info_ptr - reader->die_section->buffer),
14977                           bfd_get_filename (reader->abfd));
14978       dump_die (*diep, dwarf2_die_debug);
14979     }
14980
14981   return result;
14982 }
14983 \f
14984 /* Abbreviation tables.
14985
14986    In DWARF version 2, the description of the debugging information is
14987    stored in a separate .debug_abbrev section.  Before we read any
14988    dies from a section we read in all abbreviations and install them
14989    in a hash table.  */
14990
14991 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
14992
14993 static struct abbrev_info *
14994 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
14995 {
14996   struct abbrev_info *abbrev;
14997
14998   abbrev = (struct abbrev_info *)
14999     obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15000   memset (abbrev, 0, sizeof (struct abbrev_info));
15001   return abbrev;
15002 }
15003
15004 /* Add an abbreviation to the table.  */
15005
15006 static void
15007 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15008                          unsigned int abbrev_number,
15009                          struct abbrev_info *abbrev)
15010 {
15011   unsigned int hash_number;
15012
15013   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15014   abbrev->next = abbrev_table->abbrevs[hash_number];
15015   abbrev_table->abbrevs[hash_number] = abbrev;
15016 }
15017
15018 /* Look up an abbrev in the table.
15019    Returns NULL if the abbrev is not found.  */
15020
15021 static struct abbrev_info *
15022 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15023                             unsigned int abbrev_number)
15024 {
15025   unsigned int hash_number;
15026   struct abbrev_info *abbrev;
15027
15028   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15029   abbrev = abbrev_table->abbrevs[hash_number];
15030
15031   while (abbrev)
15032     {
15033       if (abbrev->number == abbrev_number)
15034         return abbrev;
15035       abbrev = abbrev->next;
15036     }
15037   return NULL;
15038 }
15039
15040 /* Read in an abbrev table.  */
15041
15042 static struct abbrev_table *
15043 abbrev_table_read_table (struct dwarf2_section_info *section,
15044                          sect_offset offset)
15045 {
15046   struct objfile *objfile = dwarf2_per_objfile->objfile;
15047   bfd *abfd = get_section_bfd_owner (section);
15048   struct abbrev_table *abbrev_table;
15049   const gdb_byte *abbrev_ptr;
15050   struct abbrev_info *cur_abbrev;
15051   unsigned int abbrev_number, bytes_read, abbrev_name;
15052   unsigned int abbrev_form;
15053   struct attr_abbrev *cur_attrs;
15054   unsigned int allocated_attrs;
15055
15056   abbrev_table = XNEW (struct abbrev_table);
15057   abbrev_table->offset = offset;
15058   obstack_init (&abbrev_table->abbrev_obstack);
15059   abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15060                                          (ABBREV_HASH_SIZE
15061                                           * sizeof (struct abbrev_info *)));
15062   memset (abbrev_table->abbrevs, 0,
15063           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
15064
15065   dwarf2_read_section (objfile, section);
15066   abbrev_ptr = section->buffer + offset.sect_off;
15067   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15068   abbrev_ptr += bytes_read;
15069
15070   allocated_attrs = ATTR_ALLOC_CHUNK;
15071   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
15072
15073   /* Loop until we reach an abbrev number of 0.  */
15074   while (abbrev_number)
15075     {
15076       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
15077
15078       /* read in abbrev header */
15079       cur_abbrev->number = abbrev_number;
15080       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15081       abbrev_ptr += bytes_read;
15082       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15083       abbrev_ptr += 1;
15084
15085       /* now read in declarations */
15086       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15087       abbrev_ptr += bytes_read;
15088       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15089       abbrev_ptr += bytes_read;
15090       while (abbrev_name)
15091         {
15092           if (cur_abbrev->num_attrs == allocated_attrs)
15093             {
15094               allocated_attrs += ATTR_ALLOC_CHUNK;
15095               cur_attrs
15096                 = xrealloc (cur_attrs, (allocated_attrs
15097                                         * sizeof (struct attr_abbrev)));
15098             }
15099
15100           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
15101           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
15102           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15103           abbrev_ptr += bytes_read;
15104           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15105           abbrev_ptr += bytes_read;
15106         }
15107
15108       cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
15109                                          (cur_abbrev->num_attrs
15110                                           * sizeof (struct attr_abbrev)));
15111       memcpy (cur_abbrev->attrs, cur_attrs,
15112               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15113
15114       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
15115
15116       /* Get next abbreviation.
15117          Under Irix6 the abbreviations for a compilation unit are not
15118          always properly terminated with an abbrev number of 0.
15119          Exit loop if we encounter an abbreviation which we have
15120          already read (which means we are about to read the abbreviations
15121          for the next compile unit) or if the end of the abbreviation
15122          table is reached.  */
15123       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
15124         break;
15125       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15126       abbrev_ptr += bytes_read;
15127       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
15128         break;
15129     }
15130
15131   xfree (cur_attrs);
15132   return abbrev_table;
15133 }
15134
15135 /* Free the resources held by ABBREV_TABLE.  */
15136
15137 static void
15138 abbrev_table_free (struct abbrev_table *abbrev_table)
15139 {
15140   obstack_free (&abbrev_table->abbrev_obstack, NULL);
15141   xfree (abbrev_table);
15142 }
15143
15144 /* Same as abbrev_table_free but as a cleanup.
15145    We pass in a pointer to the pointer to the table so that we can
15146    set the pointer to NULL when we're done.  It also simplifies
15147    build_type_psymtabs_1.  */
15148
15149 static void
15150 abbrev_table_free_cleanup (void *table_ptr)
15151 {
15152   struct abbrev_table **abbrev_table_ptr = table_ptr;
15153
15154   if (*abbrev_table_ptr != NULL)
15155     abbrev_table_free (*abbrev_table_ptr);
15156   *abbrev_table_ptr = NULL;
15157 }
15158
15159 /* Read the abbrev table for CU from ABBREV_SECTION.  */
15160
15161 static void
15162 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15163                      struct dwarf2_section_info *abbrev_section)
15164 {
15165   cu->abbrev_table =
15166     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15167 }
15168
15169 /* Release the memory used by the abbrev table for a compilation unit.  */
15170
15171 static void
15172 dwarf2_free_abbrev_table (void *ptr_to_cu)
15173 {
15174   struct dwarf2_cu *cu = ptr_to_cu;
15175
15176   if (cu->abbrev_table != NULL)
15177     abbrev_table_free (cu->abbrev_table);
15178   /* Set this to NULL so that we SEGV if we try to read it later,
15179      and also because free_comp_unit verifies this is NULL.  */
15180   cu->abbrev_table = NULL;
15181 }
15182 \f
15183 /* Returns nonzero if TAG represents a type that we might generate a partial
15184    symbol for.  */
15185
15186 static int
15187 is_type_tag_for_partial (int tag)
15188 {
15189   switch (tag)
15190     {
15191 #if 0
15192     /* Some types that would be reasonable to generate partial symbols for,
15193        that we don't at present.  */
15194     case DW_TAG_array_type:
15195     case DW_TAG_file_type:
15196     case DW_TAG_ptr_to_member_type:
15197     case DW_TAG_set_type:
15198     case DW_TAG_string_type:
15199     case DW_TAG_subroutine_type:
15200 #endif
15201     case DW_TAG_base_type:
15202     case DW_TAG_class_type:
15203     case DW_TAG_interface_type:
15204     case DW_TAG_enumeration_type:
15205     case DW_TAG_structure_type:
15206     case DW_TAG_subrange_type:
15207     case DW_TAG_typedef:
15208     case DW_TAG_union_type:
15209       return 1;
15210     default:
15211       return 0;
15212     }
15213 }
15214
15215 /* Load all DIEs that are interesting for partial symbols into memory.  */
15216
15217 static struct partial_die_info *
15218 load_partial_dies (const struct die_reader_specs *reader,
15219                    const gdb_byte *info_ptr, int building_psymtab)
15220 {
15221   struct dwarf2_cu *cu = reader->cu;
15222   struct objfile *objfile = cu->objfile;
15223   struct partial_die_info *part_die;
15224   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15225   struct abbrev_info *abbrev;
15226   unsigned int bytes_read;
15227   unsigned int load_all = 0;
15228   int nesting_level = 1;
15229
15230   parent_die = NULL;
15231   last_die = NULL;
15232
15233   gdb_assert (cu->per_cu != NULL);
15234   if (cu->per_cu->load_all_dies)
15235     load_all = 1;
15236
15237   cu->partial_dies
15238     = htab_create_alloc_ex (cu->header.length / 12,
15239                             partial_die_hash,
15240                             partial_die_eq,
15241                             NULL,
15242                             &cu->comp_unit_obstack,
15243                             hashtab_obstack_allocate,
15244                             dummy_obstack_deallocate);
15245
15246   part_die = obstack_alloc (&cu->comp_unit_obstack,
15247                             sizeof (struct partial_die_info));
15248
15249   while (1)
15250     {
15251       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15252
15253       /* A NULL abbrev means the end of a series of children.  */
15254       if (abbrev == NULL)
15255         {
15256           if (--nesting_level == 0)
15257             {
15258               /* PART_DIE was probably the last thing allocated on the
15259                  comp_unit_obstack, so we could call obstack_free
15260                  here.  We don't do that because the waste is small,
15261                  and will be cleaned up when we're done with this
15262                  compilation unit.  This way, we're also more robust
15263                  against other users of the comp_unit_obstack.  */
15264               return first_die;
15265             }
15266           info_ptr += bytes_read;
15267           last_die = parent_die;
15268           parent_die = parent_die->die_parent;
15269           continue;
15270         }
15271
15272       /* Check for template arguments.  We never save these; if
15273          they're seen, we just mark the parent, and go on our way.  */
15274       if (parent_die != NULL
15275           && cu->language == language_cplus
15276           && (abbrev->tag == DW_TAG_template_type_param
15277               || abbrev->tag == DW_TAG_template_value_param))
15278         {
15279           parent_die->has_template_arguments = 1;
15280
15281           if (!load_all)
15282             {
15283               /* We don't need a partial DIE for the template argument.  */
15284               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15285               continue;
15286             }
15287         }
15288
15289       /* We only recurse into c++ subprograms looking for template arguments.
15290          Skip their other children.  */
15291       if (!load_all
15292           && cu->language == language_cplus
15293           && parent_die != NULL
15294           && parent_die->tag == DW_TAG_subprogram)
15295         {
15296           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15297           continue;
15298         }
15299
15300       /* Check whether this DIE is interesting enough to save.  Normally
15301          we would not be interested in members here, but there may be
15302          later variables referencing them via DW_AT_specification (for
15303          static members).  */
15304       if (!load_all
15305           && !is_type_tag_for_partial (abbrev->tag)
15306           && abbrev->tag != DW_TAG_constant
15307           && abbrev->tag != DW_TAG_enumerator
15308           && abbrev->tag != DW_TAG_subprogram
15309           && abbrev->tag != DW_TAG_lexical_block
15310           && abbrev->tag != DW_TAG_variable
15311           && abbrev->tag != DW_TAG_namespace
15312           && abbrev->tag != DW_TAG_module
15313           && abbrev->tag != DW_TAG_member
15314           && abbrev->tag != DW_TAG_imported_unit
15315           && abbrev->tag != DW_TAG_imported_declaration)
15316         {
15317           /* Otherwise we skip to the next sibling, if any.  */
15318           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15319           continue;
15320         }
15321
15322       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15323                                    info_ptr);
15324
15325       /* This two-pass algorithm for processing partial symbols has a
15326          high cost in cache pressure.  Thus, handle some simple cases
15327          here which cover the majority of C partial symbols.  DIEs
15328          which neither have specification tags in them, nor could have
15329          specification tags elsewhere pointing at them, can simply be
15330          processed and discarded.
15331
15332          This segment is also optional; scan_partial_symbols and
15333          add_partial_symbol will handle these DIEs if we chain
15334          them in normally.  When compilers which do not emit large
15335          quantities of duplicate debug information are more common,
15336          this code can probably be removed.  */
15337
15338       /* Any complete simple types at the top level (pretty much all
15339          of them, for a language without namespaces), can be processed
15340          directly.  */
15341       if (parent_die == NULL
15342           && part_die->has_specification == 0
15343           && part_die->is_declaration == 0
15344           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
15345               || part_die->tag == DW_TAG_base_type
15346               || part_die->tag == DW_TAG_subrange_type))
15347         {
15348           if (building_psymtab && part_die->name != NULL)
15349             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15350                                  VAR_DOMAIN, LOC_TYPEDEF,
15351                                  &objfile->static_psymbols,
15352                                  0, (CORE_ADDR) 0, cu->language, objfile);
15353           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15354           continue;
15355         }
15356
15357       /* The exception for DW_TAG_typedef with has_children above is
15358          a workaround of GCC PR debug/47510.  In the case of this complaint
15359          type_name_no_tag_or_error will error on such types later.
15360
15361          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15362          it could not find the child DIEs referenced later, this is checked
15363          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15364
15365       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15366         complaint (&symfile_complaints,
15367                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15368                      "- DIE at 0x%x [in module %s]"),
15369                    part_die->offset.sect_off, objfile_name (objfile));
15370
15371       /* If we're at the second level, and we're an enumerator, and
15372          our parent has no specification (meaning possibly lives in a
15373          namespace elsewhere), then we can add the partial symbol now
15374          instead of queueing it.  */
15375       if (part_die->tag == DW_TAG_enumerator
15376           && parent_die != NULL
15377           && parent_die->die_parent == NULL
15378           && parent_die->tag == DW_TAG_enumeration_type
15379           && parent_die->has_specification == 0)
15380         {
15381           if (part_die->name == NULL)
15382             complaint (&symfile_complaints,
15383                        _("malformed enumerator DIE ignored"));
15384           else if (building_psymtab)
15385             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15386                                  VAR_DOMAIN, LOC_CONST,
15387                                  (cu->language == language_cplus
15388                                   || cu->language == language_java)
15389                                  ? &objfile->global_psymbols
15390                                  : &objfile->static_psymbols,
15391                                  0, (CORE_ADDR) 0, cu->language, objfile);
15392
15393           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15394           continue;
15395         }
15396
15397       /* We'll save this DIE so link it in.  */
15398       part_die->die_parent = parent_die;
15399       part_die->die_sibling = NULL;
15400       part_die->die_child = NULL;
15401
15402       if (last_die && last_die == parent_die)
15403         last_die->die_child = part_die;
15404       else if (last_die)
15405         last_die->die_sibling = part_die;
15406
15407       last_die = part_die;
15408
15409       if (first_die == NULL)
15410         first_die = part_die;
15411
15412       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15413          find interesting need to be in the hash table, because we
15414          also have the parent/sibling/child chains; only those that we
15415          might refer to by offset later during partial symbol reading.
15416
15417          For now this means things that might have be the target of a
15418          DW_AT_specification, DW_AT_abstract_origin, or
15419          DW_AT_extension.  DW_AT_extension will refer only to
15420          namespaces; DW_AT_abstract_origin refers to functions (and
15421          many things under the function DIE, but we do not recurse
15422          into function DIEs during partial symbol reading) and
15423          possibly variables as well; DW_AT_specification refers to
15424          declarations.  Declarations ought to have the DW_AT_declaration
15425          flag.  It happens that GCC forgets to put it in sometimes, but
15426          only for functions, not for types.
15427
15428          Adding more things than necessary to the hash table is harmless
15429          except for the performance cost.  Adding too few will result in
15430          wasted time in find_partial_die, when we reread the compilation
15431          unit with load_all_dies set.  */
15432
15433       if (load_all
15434           || abbrev->tag == DW_TAG_constant
15435           || abbrev->tag == DW_TAG_subprogram
15436           || abbrev->tag == DW_TAG_variable
15437           || abbrev->tag == DW_TAG_namespace
15438           || part_die->is_declaration)
15439         {
15440           void **slot;
15441
15442           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
15443                                            part_die->offset.sect_off, INSERT);
15444           *slot = part_die;
15445         }
15446
15447       part_die = obstack_alloc (&cu->comp_unit_obstack,
15448                                 sizeof (struct partial_die_info));
15449
15450       /* For some DIEs we want to follow their children (if any).  For C
15451          we have no reason to follow the children of structures; for other
15452          languages we have to, so that we can get at method physnames
15453          to infer fully qualified class names, for DW_AT_specification,
15454          and for C++ template arguments.  For C++, we also look one level
15455          inside functions to find template arguments (if the name of the
15456          function does not already contain the template arguments).
15457
15458          For Ada, we need to scan the children of subprograms and lexical
15459          blocks as well because Ada allows the definition of nested
15460          entities that could be interesting for the debugger, such as
15461          nested subprograms for instance.  */
15462       if (last_die->has_children
15463           && (load_all
15464               || last_die->tag == DW_TAG_namespace
15465               || last_die->tag == DW_TAG_module
15466               || last_die->tag == DW_TAG_enumeration_type
15467               || (cu->language == language_cplus
15468                   && last_die->tag == DW_TAG_subprogram
15469                   && (last_die->name == NULL
15470                       || strchr (last_die->name, '<') == NULL))
15471               || (cu->language != language_c
15472                   && (last_die->tag == DW_TAG_class_type
15473                       || last_die->tag == DW_TAG_interface_type
15474                       || last_die->tag == DW_TAG_structure_type
15475                       || last_die->tag == DW_TAG_union_type))
15476               || (cu->language == language_ada
15477                   && (last_die->tag == DW_TAG_subprogram
15478                       || last_die->tag == DW_TAG_lexical_block))))
15479         {
15480           nesting_level++;
15481           parent_die = last_die;
15482           continue;
15483         }
15484
15485       /* Otherwise we skip to the next sibling, if any.  */
15486       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
15487
15488       /* Back to the top, do it again.  */
15489     }
15490 }
15491
15492 /* Read a minimal amount of information into the minimal die structure.  */
15493
15494 static const gdb_byte *
15495 read_partial_die (const struct die_reader_specs *reader,
15496                   struct partial_die_info *part_die,
15497                   struct abbrev_info *abbrev, unsigned int abbrev_len,
15498                   const gdb_byte *info_ptr)
15499 {
15500   struct dwarf2_cu *cu = reader->cu;
15501   struct objfile *objfile = cu->objfile;
15502   const gdb_byte *buffer = reader->buffer;
15503   unsigned int i;
15504   struct attribute attr;
15505   int has_low_pc_attr = 0;
15506   int has_high_pc_attr = 0;
15507   int high_pc_relative = 0;
15508
15509   memset (part_die, 0, sizeof (struct partial_die_info));
15510
15511   part_die->offset.sect_off = info_ptr - buffer;
15512
15513   info_ptr += abbrev_len;
15514
15515   if (abbrev == NULL)
15516     return info_ptr;
15517
15518   part_die->tag = abbrev->tag;
15519   part_die->has_children = abbrev->has_children;
15520
15521   for (i = 0; i < abbrev->num_attrs; ++i)
15522     {
15523       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
15524
15525       /* Store the data if it is of an attribute we want to keep in a
15526          partial symbol table.  */
15527       switch (attr.name)
15528         {
15529         case DW_AT_name:
15530           switch (part_die->tag)
15531             {
15532             case DW_TAG_compile_unit:
15533             case DW_TAG_partial_unit:
15534             case DW_TAG_type_unit:
15535               /* Compilation units have a DW_AT_name that is a filename, not
15536                  a source language identifier.  */
15537             case DW_TAG_enumeration_type:
15538             case DW_TAG_enumerator:
15539               /* These tags always have simple identifiers already; no need
15540                  to canonicalize them.  */
15541               part_die->name = DW_STRING (&attr);
15542               break;
15543             default:
15544               part_die->name
15545                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
15546                                             &objfile->per_bfd->storage_obstack);
15547               break;
15548             }
15549           break;
15550         case DW_AT_linkage_name:
15551         case DW_AT_MIPS_linkage_name:
15552           /* Note that both forms of linkage name might appear.  We
15553              assume they will be the same, and we only store the last
15554              one we see.  */
15555           if (cu->language == language_ada)
15556             part_die->name = DW_STRING (&attr);
15557           part_die->linkage_name = DW_STRING (&attr);
15558           break;
15559         case DW_AT_low_pc:
15560           has_low_pc_attr = 1;
15561           part_die->lowpc = attr_value_as_address (&attr);
15562           break;
15563         case DW_AT_high_pc:
15564           has_high_pc_attr = 1;
15565           part_die->highpc = attr_value_as_address (&attr);
15566           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15567                 high_pc_relative = 1;
15568           break;
15569         case DW_AT_location:
15570           /* Support the .debug_loc offsets.  */
15571           if (attr_form_is_block (&attr))
15572             {
15573                part_die->d.locdesc = DW_BLOCK (&attr);
15574             }
15575           else if (attr_form_is_section_offset (&attr))
15576             {
15577               dwarf2_complex_location_expr_complaint ();
15578             }
15579           else
15580             {
15581               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15582                                                      "partial symbol information");
15583             }
15584           break;
15585         case DW_AT_external:
15586           part_die->is_external = DW_UNSND (&attr);
15587           break;
15588         case DW_AT_declaration:
15589           part_die->is_declaration = DW_UNSND (&attr);
15590           break;
15591         case DW_AT_type:
15592           part_die->has_type = 1;
15593           break;
15594         case DW_AT_abstract_origin:
15595         case DW_AT_specification:
15596         case DW_AT_extension:
15597           part_die->has_specification = 1;
15598           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
15599           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15600                                    || cu->per_cu->is_dwz);
15601           break;
15602         case DW_AT_sibling:
15603           /* Ignore absolute siblings, they might point outside of
15604              the current compile unit.  */
15605           if (attr.form == DW_FORM_ref_addr)
15606             complaint (&symfile_complaints,
15607                        _("ignoring absolute DW_AT_sibling"));
15608           else
15609             {
15610               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15611               const gdb_byte *sibling_ptr = buffer + off;
15612
15613               if (sibling_ptr < info_ptr)
15614                 complaint (&symfile_complaints,
15615                            _("DW_AT_sibling points backwards"));
15616               else if (sibling_ptr > reader->buffer_end)
15617                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
15618               else
15619                 part_die->sibling = sibling_ptr;
15620             }
15621           break;
15622         case DW_AT_byte_size:
15623           part_die->has_byte_size = 1;
15624           break;
15625         case DW_AT_calling_convention:
15626           /* DWARF doesn't provide a way to identify a program's source-level
15627              entry point.  DW_AT_calling_convention attributes are only meant
15628              to describe functions' calling conventions.
15629
15630              However, because it's a necessary piece of information in
15631              Fortran, and because DW_CC_program is the only piece of debugging
15632              information whose definition refers to a 'main program' at all,
15633              several compilers have begun marking Fortran main programs with
15634              DW_CC_program --- even when those functions use the standard
15635              calling conventions.
15636
15637              So until DWARF specifies a way to provide this information and
15638              compilers pick up the new representation, we'll support this
15639              practice.  */
15640           if (DW_UNSND (&attr) == DW_CC_program
15641               && cu->language == language_fortran)
15642             set_objfile_main_name (objfile, part_die->name, language_fortran);
15643           break;
15644         case DW_AT_inline:
15645           if (DW_UNSND (&attr) == DW_INL_inlined
15646               || DW_UNSND (&attr) == DW_INL_declared_inlined)
15647             part_die->may_be_inlined = 1;
15648           break;
15649
15650         case DW_AT_import:
15651           if (part_die->tag == DW_TAG_imported_unit)
15652             {
15653               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15654               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15655                                   || cu->per_cu->is_dwz);
15656             }
15657           break;
15658
15659         default:
15660           break;
15661         }
15662     }
15663
15664   if (high_pc_relative)
15665     part_die->highpc += part_die->lowpc;
15666
15667   if (has_low_pc_attr && has_high_pc_attr)
15668     {
15669       /* When using the GNU linker, .gnu.linkonce. sections are used to
15670          eliminate duplicate copies of functions and vtables and such.
15671          The linker will arbitrarily choose one and discard the others.
15672          The AT_*_pc values for such functions refer to local labels in
15673          these sections.  If the section from that file was discarded, the
15674          labels are not in the output, so the relocs get a value of 0.
15675          If this is a discarded function, mark the pc bounds as invalid,
15676          so that GDB will ignore it.  */
15677       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15678         {
15679           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15680
15681           complaint (&symfile_complaints,
15682                      _("DW_AT_low_pc %s is zero "
15683                        "for DIE at 0x%x [in module %s]"),
15684                      paddress (gdbarch, part_die->lowpc),
15685                      part_die->offset.sect_off, objfile_name (objfile));
15686         }
15687       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
15688       else if (part_die->lowpc >= part_die->highpc)
15689         {
15690           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15691
15692           complaint (&symfile_complaints,
15693                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15694                        "for DIE at 0x%x [in module %s]"),
15695                      paddress (gdbarch, part_die->lowpc),
15696                      paddress (gdbarch, part_die->highpc),
15697                      part_die->offset.sect_off, objfile_name (objfile));
15698         }
15699       else
15700         part_die->has_pc_info = 1;
15701     }
15702
15703   return info_ptr;
15704 }
15705
15706 /* Find a cached partial DIE at OFFSET in CU.  */
15707
15708 static struct partial_die_info *
15709 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
15710 {
15711   struct partial_die_info *lookup_die = NULL;
15712   struct partial_die_info part_die;
15713
15714   part_die.offset = offset;
15715   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15716                                     offset.sect_off);
15717
15718   return lookup_die;
15719 }
15720
15721 /* Find a partial DIE at OFFSET, which may or may not be in CU,
15722    except in the case of .debug_types DIEs which do not reference
15723    outside their CU (they do however referencing other types via
15724    DW_FORM_ref_sig8).  */
15725
15726 static struct partial_die_info *
15727 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
15728 {
15729   struct objfile *objfile = cu->objfile;
15730   struct dwarf2_per_cu_data *per_cu = NULL;
15731   struct partial_die_info *pd = NULL;
15732
15733   if (offset_in_dwz == cu->per_cu->is_dwz
15734       && offset_in_cu_p (&cu->header, offset))
15735     {
15736       pd = find_partial_die_in_comp_unit (offset, cu);
15737       if (pd != NULL)
15738         return pd;
15739       /* We missed recording what we needed.
15740          Load all dies and try again.  */
15741       per_cu = cu->per_cu;
15742     }
15743   else
15744     {
15745       /* TUs don't reference other CUs/TUs (except via type signatures).  */
15746       if (cu->per_cu->is_debug_types)
15747         {
15748           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
15749                    " external reference to offset 0x%lx [in module %s].\n"),
15750                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
15751                  bfd_get_filename (objfile->obfd));
15752         }
15753       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
15754                                                  objfile);
15755
15756       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
15757         load_partial_comp_unit (per_cu);
15758
15759       per_cu->cu->last_used = 0;
15760       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15761     }
15762
15763   /* If we didn't find it, and not all dies have been loaded,
15764      load them all and try again.  */
15765
15766   if (pd == NULL && per_cu->load_all_dies == 0)
15767     {
15768       per_cu->load_all_dies = 1;
15769
15770       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
15771          THIS_CU->cu may already be in use.  So we can't just free it and
15772          replace its DIEs with the ones we read in.  Instead, we leave those
15773          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
15774          and clobber THIS_CU->cu->partial_dies with the hash table for the new
15775          set.  */
15776       load_partial_comp_unit (per_cu);
15777
15778       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15779     }
15780
15781   if (pd == NULL)
15782     internal_error (__FILE__, __LINE__,
15783                     _("could not find partial DIE 0x%x "
15784                       "in cache [from module %s]\n"),
15785                     offset.sect_off, bfd_get_filename (objfile->obfd));
15786   return pd;
15787 }
15788
15789 /* See if we can figure out if the class lives in a namespace.  We do
15790    this by looking for a member function; its demangled name will
15791    contain namespace info, if there is any.  */
15792
15793 static void
15794 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
15795                                   struct dwarf2_cu *cu)
15796 {
15797   /* NOTE: carlton/2003-10-07: Getting the info this way changes
15798      what template types look like, because the demangler
15799      frequently doesn't give the same name as the debug info.  We
15800      could fix this by only using the demangled name to get the
15801      prefix (but see comment in read_structure_type).  */
15802
15803   struct partial_die_info *real_pdi;
15804   struct partial_die_info *child_pdi;
15805
15806   /* If this DIE (this DIE's specification, if any) has a parent, then
15807      we should not do this.  We'll prepend the parent's fully qualified
15808      name when we create the partial symbol.  */
15809
15810   real_pdi = struct_pdi;
15811   while (real_pdi->has_specification)
15812     real_pdi = find_partial_die (real_pdi->spec_offset,
15813                                  real_pdi->spec_is_dwz, cu);
15814
15815   if (real_pdi->die_parent != NULL)
15816     return;
15817
15818   for (child_pdi = struct_pdi->die_child;
15819        child_pdi != NULL;
15820        child_pdi = child_pdi->die_sibling)
15821     {
15822       if (child_pdi->tag == DW_TAG_subprogram
15823           && child_pdi->linkage_name != NULL)
15824         {
15825           char *actual_class_name
15826             = language_class_name_from_physname (cu->language_defn,
15827                                                  child_pdi->linkage_name);
15828           if (actual_class_name != NULL)
15829             {
15830               struct_pdi->name
15831                 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
15832                                  actual_class_name,
15833                                  strlen (actual_class_name));
15834               xfree (actual_class_name);
15835             }
15836           break;
15837         }
15838     }
15839 }
15840
15841 /* Adjust PART_DIE before generating a symbol for it.  This function
15842    may set the is_external flag or change the DIE's name.  */
15843
15844 static void
15845 fixup_partial_die (struct partial_die_info *part_die,
15846                    struct dwarf2_cu *cu)
15847 {
15848   /* Once we've fixed up a die, there's no point in doing so again.
15849      This also avoids a memory leak if we were to call
15850      guess_partial_die_structure_name multiple times.  */
15851   if (part_die->fixup_called)
15852     return;
15853
15854   /* If we found a reference attribute and the DIE has no name, try
15855      to find a name in the referred to DIE.  */
15856
15857   if (part_die->name == NULL && part_die->has_specification)
15858     {
15859       struct partial_die_info *spec_die;
15860
15861       spec_die = find_partial_die (part_die->spec_offset,
15862                                    part_die->spec_is_dwz, cu);
15863
15864       fixup_partial_die (spec_die, cu);
15865
15866       if (spec_die->name)
15867         {
15868           part_die->name = spec_die->name;
15869
15870           /* Copy DW_AT_external attribute if it is set.  */
15871           if (spec_die->is_external)
15872             part_die->is_external = spec_die->is_external;
15873         }
15874     }
15875
15876   /* Set default names for some unnamed DIEs.  */
15877
15878   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
15879     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
15880
15881   /* If there is no parent die to provide a namespace, and there are
15882      children, see if we can determine the namespace from their linkage
15883      name.  */
15884   if (cu->language == language_cplus
15885       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
15886       && part_die->die_parent == NULL
15887       && part_die->has_children
15888       && (part_die->tag == DW_TAG_class_type
15889           || part_die->tag == DW_TAG_structure_type
15890           || part_die->tag == DW_TAG_union_type))
15891     guess_partial_die_structure_name (part_die, cu);
15892
15893   /* GCC might emit a nameless struct or union that has a linkage
15894      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
15895   if (part_die->name == NULL
15896       && (part_die->tag == DW_TAG_class_type
15897           || part_die->tag == DW_TAG_interface_type
15898           || part_die->tag == DW_TAG_structure_type
15899           || part_die->tag == DW_TAG_union_type)
15900       && part_die->linkage_name != NULL)
15901     {
15902       char *demangled;
15903
15904       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
15905       if (demangled)
15906         {
15907           const char *base;
15908
15909           /* Strip any leading namespaces/classes, keep only the base name.
15910              DW_AT_name for named DIEs does not contain the prefixes.  */
15911           base = strrchr (demangled, ':');
15912           if (base && base > demangled && base[-1] == ':')
15913             base++;
15914           else
15915             base = demangled;
15916
15917           part_die->name
15918             = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
15919                              base, strlen (base));
15920           xfree (demangled);
15921         }
15922     }
15923
15924   part_die->fixup_called = 1;
15925 }
15926
15927 /* Read an attribute value described by an attribute form.  */
15928
15929 static const gdb_byte *
15930 read_attribute_value (const struct die_reader_specs *reader,
15931                       struct attribute *attr, unsigned form,
15932                       const gdb_byte *info_ptr)
15933 {
15934   struct dwarf2_cu *cu = reader->cu;
15935   bfd *abfd = reader->abfd;
15936   struct comp_unit_head *cu_header = &cu->header;
15937   unsigned int bytes_read;
15938   struct dwarf_block *blk;
15939
15940   attr->form = form;
15941   switch (form)
15942     {
15943     case DW_FORM_ref_addr:
15944       if (cu->header.version == 2)
15945         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15946       else
15947         DW_UNSND (attr) = read_offset (abfd, info_ptr,
15948                                        &cu->header, &bytes_read);
15949       info_ptr += bytes_read;
15950       break;
15951     case DW_FORM_GNU_ref_alt:
15952       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15953       info_ptr += bytes_read;
15954       break;
15955     case DW_FORM_addr:
15956       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15957       info_ptr += bytes_read;
15958       break;
15959     case DW_FORM_block2:
15960       blk = dwarf_alloc_block (cu);
15961       blk->size = read_2_bytes (abfd, info_ptr);
15962       info_ptr += 2;
15963       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15964       info_ptr += blk->size;
15965       DW_BLOCK (attr) = blk;
15966       break;
15967     case DW_FORM_block4:
15968       blk = dwarf_alloc_block (cu);
15969       blk->size = read_4_bytes (abfd, info_ptr);
15970       info_ptr += 4;
15971       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15972       info_ptr += blk->size;
15973       DW_BLOCK (attr) = blk;
15974       break;
15975     case DW_FORM_data2:
15976       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
15977       info_ptr += 2;
15978       break;
15979     case DW_FORM_data4:
15980       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
15981       info_ptr += 4;
15982       break;
15983     case DW_FORM_data8:
15984       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
15985       info_ptr += 8;
15986       break;
15987     case DW_FORM_sec_offset:
15988       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15989       info_ptr += bytes_read;
15990       break;
15991     case DW_FORM_string:
15992       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
15993       DW_STRING_IS_CANONICAL (attr) = 0;
15994       info_ptr += bytes_read;
15995       break;
15996     case DW_FORM_strp:
15997       if (!cu->per_cu->is_dwz)
15998         {
15999           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16000                                                    &bytes_read);
16001           DW_STRING_IS_CANONICAL (attr) = 0;
16002           info_ptr += bytes_read;
16003           break;
16004         }
16005       /* FALLTHROUGH */
16006     case DW_FORM_GNU_strp_alt:
16007       {
16008         struct dwz_file *dwz = dwarf2_get_dwz_file ();
16009         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16010                                           &bytes_read);
16011
16012         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16013         DW_STRING_IS_CANONICAL (attr) = 0;
16014         info_ptr += bytes_read;
16015       }
16016       break;
16017     case DW_FORM_exprloc:
16018     case DW_FORM_block:
16019       blk = dwarf_alloc_block (cu);
16020       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16021       info_ptr += bytes_read;
16022       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16023       info_ptr += blk->size;
16024       DW_BLOCK (attr) = blk;
16025       break;
16026     case DW_FORM_block1:
16027       blk = dwarf_alloc_block (cu);
16028       blk->size = read_1_byte (abfd, info_ptr);
16029       info_ptr += 1;
16030       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16031       info_ptr += blk->size;
16032       DW_BLOCK (attr) = blk;
16033       break;
16034     case DW_FORM_data1:
16035       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16036       info_ptr += 1;
16037       break;
16038     case DW_FORM_flag:
16039       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16040       info_ptr += 1;
16041       break;
16042     case DW_FORM_flag_present:
16043       DW_UNSND (attr) = 1;
16044       break;
16045     case DW_FORM_sdata:
16046       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16047       info_ptr += bytes_read;
16048       break;
16049     case DW_FORM_udata:
16050       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16051       info_ptr += bytes_read;
16052       break;
16053     case DW_FORM_ref1:
16054       DW_UNSND (attr) = (cu->header.offset.sect_off
16055                          + read_1_byte (abfd, info_ptr));
16056       info_ptr += 1;
16057       break;
16058     case DW_FORM_ref2:
16059       DW_UNSND (attr) = (cu->header.offset.sect_off
16060                          + read_2_bytes (abfd, info_ptr));
16061       info_ptr += 2;
16062       break;
16063     case DW_FORM_ref4:
16064       DW_UNSND (attr) = (cu->header.offset.sect_off
16065                          + read_4_bytes (abfd, info_ptr));
16066       info_ptr += 4;
16067       break;
16068     case DW_FORM_ref8:
16069       DW_UNSND (attr) = (cu->header.offset.sect_off
16070                          + read_8_bytes (abfd, info_ptr));
16071       info_ptr += 8;
16072       break;
16073     case DW_FORM_ref_sig8:
16074       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
16075       info_ptr += 8;
16076       break;
16077     case DW_FORM_ref_udata:
16078       DW_UNSND (attr) = (cu->header.offset.sect_off
16079                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
16080       info_ptr += bytes_read;
16081       break;
16082     case DW_FORM_indirect:
16083       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16084       info_ptr += bytes_read;
16085       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
16086       break;
16087     case DW_FORM_GNU_addr_index:
16088       if (reader->dwo_file == NULL)
16089         {
16090           /* For now flag a hard error.
16091              Later we can turn this into a complaint.  */
16092           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16093                  dwarf_form_name (form),
16094                  bfd_get_filename (abfd));
16095         }
16096       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16097       info_ptr += bytes_read;
16098       break;
16099     case DW_FORM_GNU_str_index:
16100       if (reader->dwo_file == NULL)
16101         {
16102           /* For now flag a hard error.
16103              Later we can turn this into a complaint if warranted.  */
16104           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16105                  dwarf_form_name (form),
16106                  bfd_get_filename (abfd));
16107         }
16108       {
16109         ULONGEST str_index =
16110           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16111
16112         DW_STRING (attr) = read_str_index (reader, str_index);
16113         DW_STRING_IS_CANONICAL (attr) = 0;
16114         info_ptr += bytes_read;
16115       }
16116       break;
16117     default:
16118       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
16119              dwarf_form_name (form),
16120              bfd_get_filename (abfd));
16121     }
16122
16123   /* Super hack.  */
16124   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
16125     attr->form = DW_FORM_GNU_ref_alt;
16126
16127   /* We have seen instances where the compiler tried to emit a byte
16128      size attribute of -1 which ended up being encoded as an unsigned
16129      0xffffffff.  Although 0xffffffff is technically a valid size value,
16130      an object of this size seems pretty unlikely so we can relatively
16131      safely treat these cases as if the size attribute was invalid and
16132      treat them as zero by default.  */
16133   if (attr->name == DW_AT_byte_size
16134       && form == DW_FORM_data4
16135       && DW_UNSND (attr) >= 0xffffffff)
16136     {
16137       complaint
16138         (&symfile_complaints,
16139          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16140          hex_string (DW_UNSND (attr)));
16141       DW_UNSND (attr) = 0;
16142     }
16143
16144   return info_ptr;
16145 }
16146
16147 /* Read an attribute described by an abbreviated attribute.  */
16148
16149 static const gdb_byte *
16150 read_attribute (const struct die_reader_specs *reader,
16151                 struct attribute *attr, struct attr_abbrev *abbrev,
16152                 const gdb_byte *info_ptr)
16153 {
16154   attr->name = abbrev->name;
16155   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
16156 }
16157
16158 /* Read dwarf information from a buffer.  */
16159
16160 static unsigned int
16161 read_1_byte (bfd *abfd, const gdb_byte *buf)
16162 {
16163   return bfd_get_8 (abfd, buf);
16164 }
16165
16166 static int
16167 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
16168 {
16169   return bfd_get_signed_8 (abfd, buf);
16170 }
16171
16172 static unsigned int
16173 read_2_bytes (bfd *abfd, const gdb_byte *buf)
16174 {
16175   return bfd_get_16 (abfd, buf);
16176 }
16177
16178 static int
16179 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
16180 {
16181   return bfd_get_signed_16 (abfd, buf);
16182 }
16183
16184 static unsigned int
16185 read_4_bytes (bfd *abfd, const gdb_byte *buf)
16186 {
16187   return bfd_get_32 (abfd, buf);
16188 }
16189
16190 static int
16191 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
16192 {
16193   return bfd_get_signed_32 (abfd, buf);
16194 }
16195
16196 static ULONGEST
16197 read_8_bytes (bfd *abfd, const gdb_byte *buf)
16198 {
16199   return bfd_get_64 (abfd, buf);
16200 }
16201
16202 static CORE_ADDR
16203 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
16204               unsigned int *bytes_read)
16205 {
16206   struct comp_unit_head *cu_header = &cu->header;
16207   CORE_ADDR retval = 0;
16208
16209   if (cu_header->signed_addr_p)
16210     {
16211       switch (cu_header->addr_size)
16212         {
16213         case 2:
16214           retval = bfd_get_signed_16 (abfd, buf);
16215           break;
16216         case 4:
16217           retval = bfd_get_signed_32 (abfd, buf);
16218           break;
16219         case 8:
16220           retval = bfd_get_signed_64 (abfd, buf);
16221           break;
16222         default:
16223           internal_error (__FILE__, __LINE__,
16224                           _("read_address: bad switch, signed [in module %s]"),
16225                           bfd_get_filename (abfd));
16226         }
16227     }
16228   else
16229     {
16230       switch (cu_header->addr_size)
16231         {
16232         case 2:
16233           retval = bfd_get_16 (abfd, buf);
16234           break;
16235         case 4:
16236           retval = bfd_get_32 (abfd, buf);
16237           break;
16238         case 8:
16239           retval = bfd_get_64 (abfd, buf);
16240           break;
16241         default:
16242           internal_error (__FILE__, __LINE__,
16243                           _("read_address: bad switch, "
16244                             "unsigned [in module %s]"),
16245                           bfd_get_filename (abfd));
16246         }
16247     }
16248
16249   *bytes_read = cu_header->addr_size;
16250   return retval;
16251 }
16252
16253 /* Read the initial length from a section.  The (draft) DWARF 3
16254    specification allows the initial length to take up either 4 bytes
16255    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
16256    bytes describe the length and all offsets will be 8 bytes in length
16257    instead of 4.
16258
16259    An older, non-standard 64-bit format is also handled by this
16260    function.  The older format in question stores the initial length
16261    as an 8-byte quantity without an escape value.  Lengths greater
16262    than 2^32 aren't very common which means that the initial 4 bytes
16263    is almost always zero.  Since a length value of zero doesn't make
16264    sense for the 32-bit format, this initial zero can be considered to
16265    be an escape value which indicates the presence of the older 64-bit
16266    format.  As written, the code can't detect (old format) lengths
16267    greater than 4GB.  If it becomes necessary to handle lengths
16268    somewhat larger than 4GB, we could allow other small values (such
16269    as the non-sensical values of 1, 2, and 3) to also be used as
16270    escape values indicating the presence of the old format.
16271
16272    The value returned via bytes_read should be used to increment the
16273    relevant pointer after calling read_initial_length().
16274
16275    [ Note:  read_initial_length() and read_offset() are based on the
16276      document entitled "DWARF Debugging Information Format", revision
16277      3, draft 8, dated November 19, 2001.  This document was obtained
16278      from:
16279
16280         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
16281
16282      This document is only a draft and is subject to change.  (So beware.)
16283
16284      Details regarding the older, non-standard 64-bit format were
16285      determined empirically by examining 64-bit ELF files produced by
16286      the SGI toolchain on an IRIX 6.5 machine.
16287
16288      - Kevin, July 16, 2002
16289    ] */
16290
16291 static LONGEST
16292 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
16293 {
16294   LONGEST length = bfd_get_32 (abfd, buf);
16295
16296   if (length == 0xffffffff)
16297     {
16298       length = bfd_get_64 (abfd, buf + 4);
16299       *bytes_read = 12;
16300     }
16301   else if (length == 0)
16302     {
16303       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
16304       length = bfd_get_64 (abfd, buf);
16305       *bytes_read = 8;
16306     }
16307   else
16308     {
16309       *bytes_read = 4;
16310     }
16311
16312   return length;
16313 }
16314
16315 /* Cover function for read_initial_length.
16316    Returns the length of the object at BUF, and stores the size of the
16317    initial length in *BYTES_READ and stores the size that offsets will be in
16318    *OFFSET_SIZE.
16319    If the initial length size is not equivalent to that specified in
16320    CU_HEADER then issue a complaint.
16321    This is useful when reading non-comp-unit headers.  */
16322
16323 static LONGEST
16324 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
16325                                         const struct comp_unit_head *cu_header,
16326                                         unsigned int *bytes_read,
16327                                         unsigned int *offset_size)
16328 {
16329   LONGEST length = read_initial_length (abfd, buf, bytes_read);
16330
16331   gdb_assert (cu_header->initial_length_size == 4
16332               || cu_header->initial_length_size == 8
16333               || cu_header->initial_length_size == 12);
16334
16335   if (cu_header->initial_length_size != *bytes_read)
16336     complaint (&symfile_complaints,
16337                _("intermixed 32-bit and 64-bit DWARF sections"));
16338
16339   *offset_size = (*bytes_read == 4) ? 4 : 8;
16340   return length;
16341 }
16342
16343 /* Read an offset from the data stream.  The size of the offset is
16344    given by cu_header->offset_size.  */
16345
16346 static LONGEST
16347 read_offset (bfd *abfd, const gdb_byte *buf,
16348              const struct comp_unit_head *cu_header,
16349              unsigned int *bytes_read)
16350 {
16351   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16352
16353   *bytes_read = cu_header->offset_size;
16354   return offset;
16355 }
16356
16357 /* Read an offset from the data stream.  */
16358
16359 static LONGEST
16360 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16361 {
16362   LONGEST retval = 0;
16363
16364   switch (offset_size)
16365     {
16366     case 4:
16367       retval = bfd_get_32 (abfd, buf);
16368       break;
16369     case 8:
16370       retval = bfd_get_64 (abfd, buf);
16371       break;
16372     default:
16373       internal_error (__FILE__, __LINE__,
16374                       _("read_offset_1: bad switch [in module %s]"),
16375                       bfd_get_filename (abfd));
16376     }
16377
16378   return retval;
16379 }
16380
16381 static const gdb_byte *
16382 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16383 {
16384   /* If the size of a host char is 8 bits, we can return a pointer
16385      to the buffer, otherwise we have to copy the data to a buffer
16386      allocated on the temporary obstack.  */
16387   gdb_assert (HOST_CHAR_BIT == 8);
16388   return buf;
16389 }
16390
16391 static const char *
16392 read_direct_string (bfd *abfd, const gdb_byte *buf,
16393                     unsigned int *bytes_read_ptr)
16394 {
16395   /* If the size of a host char is 8 bits, we can return a pointer
16396      to the string, otherwise we have to copy the string to a buffer
16397      allocated on the temporary obstack.  */
16398   gdb_assert (HOST_CHAR_BIT == 8);
16399   if (*buf == '\0')
16400     {
16401       *bytes_read_ptr = 1;
16402       return NULL;
16403     }
16404   *bytes_read_ptr = strlen ((const char *) buf) + 1;
16405   return (const char *) buf;
16406 }
16407
16408 static const char *
16409 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
16410 {
16411   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
16412   if (dwarf2_per_objfile->str.buffer == NULL)
16413     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16414            bfd_get_filename (abfd));
16415   if (str_offset >= dwarf2_per_objfile->str.size)
16416     error (_("DW_FORM_strp pointing outside of "
16417              ".debug_str section [in module %s]"),
16418            bfd_get_filename (abfd));
16419   gdb_assert (HOST_CHAR_BIT == 8);
16420   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
16421     return NULL;
16422   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
16423 }
16424
16425 /* Read a string at offset STR_OFFSET in the .debug_str section from
16426    the .dwz file DWZ.  Throw an error if the offset is too large.  If
16427    the string consists of a single NUL byte, return NULL; otherwise
16428    return a pointer to the string.  */
16429
16430 static const char *
16431 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16432 {
16433   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16434
16435   if (dwz->str.buffer == NULL)
16436     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16437              "section [in module %s]"),
16438            bfd_get_filename (dwz->dwz_bfd));
16439   if (str_offset >= dwz->str.size)
16440     error (_("DW_FORM_GNU_strp_alt pointing outside of "
16441              ".debug_str section [in module %s]"),
16442            bfd_get_filename (dwz->dwz_bfd));
16443   gdb_assert (HOST_CHAR_BIT == 8);
16444   if (dwz->str.buffer[str_offset] == '\0')
16445     return NULL;
16446   return (const char *) (dwz->str.buffer + str_offset);
16447 }
16448
16449 static const char *
16450 read_indirect_string (bfd *abfd, const gdb_byte *buf,
16451                       const struct comp_unit_head *cu_header,
16452                       unsigned int *bytes_read_ptr)
16453 {
16454   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16455
16456   return read_indirect_string_at_offset (abfd, str_offset);
16457 }
16458
16459 static ULONGEST
16460 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16461                       unsigned int *bytes_read_ptr)
16462 {
16463   ULONGEST result;
16464   unsigned int num_read;
16465   int i, shift;
16466   unsigned char byte;
16467
16468   result = 0;
16469   shift = 0;
16470   num_read = 0;
16471   i = 0;
16472   while (1)
16473     {
16474       byte = bfd_get_8 (abfd, buf);
16475       buf++;
16476       num_read++;
16477       result |= ((ULONGEST) (byte & 127) << shift);
16478       if ((byte & 128) == 0)
16479         {
16480           break;
16481         }
16482       shift += 7;
16483     }
16484   *bytes_read_ptr = num_read;
16485   return result;
16486 }
16487
16488 static LONGEST
16489 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16490                     unsigned int *bytes_read_ptr)
16491 {
16492   LONGEST result;
16493   int i, shift, num_read;
16494   unsigned char byte;
16495
16496   result = 0;
16497   shift = 0;
16498   num_read = 0;
16499   i = 0;
16500   while (1)
16501     {
16502       byte = bfd_get_8 (abfd, buf);
16503       buf++;
16504       num_read++;
16505       result |= ((LONGEST) (byte & 127) << shift);
16506       shift += 7;
16507       if ((byte & 128) == 0)
16508         {
16509           break;
16510         }
16511     }
16512   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
16513     result |= -(((LONGEST) 1) << shift);
16514   *bytes_read_ptr = num_read;
16515   return result;
16516 }
16517
16518 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
16519    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16520    ADDR_SIZE is the size of addresses from the CU header.  */
16521
16522 static CORE_ADDR
16523 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16524 {
16525   struct objfile *objfile = dwarf2_per_objfile->objfile;
16526   bfd *abfd = objfile->obfd;
16527   const gdb_byte *info_ptr;
16528
16529   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16530   if (dwarf2_per_objfile->addr.buffer == NULL)
16531     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
16532            objfile_name (objfile));
16533   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16534     error (_("DW_FORM_addr_index pointing outside of "
16535              ".debug_addr section [in module %s]"),
16536            objfile_name (objfile));
16537   info_ptr = (dwarf2_per_objfile->addr.buffer
16538               + addr_base + addr_index * addr_size);
16539   if (addr_size == 4)
16540     return bfd_get_32 (abfd, info_ptr);
16541   else
16542     return bfd_get_64 (abfd, info_ptr);
16543 }
16544
16545 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
16546
16547 static CORE_ADDR
16548 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16549 {
16550   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16551 }
16552
16553 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
16554
16555 static CORE_ADDR
16556 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
16557                              unsigned int *bytes_read)
16558 {
16559   bfd *abfd = cu->objfile->obfd;
16560   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16561
16562   return read_addr_index (cu, addr_index);
16563 }
16564
16565 /* Data structure to pass results from dwarf2_read_addr_index_reader
16566    back to dwarf2_read_addr_index.  */
16567
16568 struct dwarf2_read_addr_index_data
16569 {
16570   ULONGEST addr_base;
16571   int addr_size;
16572 };
16573
16574 /* die_reader_func for dwarf2_read_addr_index.  */
16575
16576 static void
16577 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
16578                                const gdb_byte *info_ptr,
16579                                struct die_info *comp_unit_die,
16580                                int has_children,
16581                                void *data)
16582 {
16583   struct dwarf2_cu *cu = reader->cu;
16584   struct dwarf2_read_addr_index_data *aidata =
16585     (struct dwarf2_read_addr_index_data *) data;
16586
16587   aidata->addr_base = cu->addr_base;
16588   aidata->addr_size = cu->header.addr_size;
16589 }
16590
16591 /* Given an index in .debug_addr, fetch the value.
16592    NOTE: This can be called during dwarf expression evaluation,
16593    long after the debug information has been read, and thus per_cu->cu
16594    may no longer exist.  */
16595
16596 CORE_ADDR
16597 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16598                         unsigned int addr_index)
16599 {
16600   struct objfile *objfile = per_cu->objfile;
16601   struct dwarf2_cu *cu = per_cu->cu;
16602   ULONGEST addr_base;
16603   int addr_size;
16604
16605   /* This is intended to be called from outside this file.  */
16606   dw2_setup (objfile);
16607
16608   /* We need addr_base and addr_size.
16609      If we don't have PER_CU->cu, we have to get it.
16610      Nasty, but the alternative is storing the needed info in PER_CU,
16611      which at this point doesn't seem justified: it's not clear how frequently
16612      it would get used and it would increase the size of every PER_CU.
16613      Entry points like dwarf2_per_cu_addr_size do a similar thing
16614      so we're not in uncharted territory here.
16615      Alas we need to be a bit more complicated as addr_base is contained
16616      in the DIE.
16617
16618      We don't need to read the entire CU(/TU).
16619      We just need the header and top level die.
16620
16621      IWBN to use the aging mechanism to let us lazily later discard the CU.
16622      For now we skip this optimization.  */
16623
16624   if (cu != NULL)
16625     {
16626       addr_base = cu->addr_base;
16627       addr_size = cu->header.addr_size;
16628     }
16629   else
16630     {
16631       struct dwarf2_read_addr_index_data aidata;
16632
16633       /* Note: We can't use init_cutu_and_read_dies_simple here,
16634          we need addr_base.  */
16635       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16636                                dwarf2_read_addr_index_reader, &aidata);
16637       addr_base = aidata.addr_base;
16638       addr_size = aidata.addr_size;
16639     }
16640
16641   return read_addr_index_1 (addr_index, addr_base, addr_size);
16642 }
16643
16644 /* Given a DW_FORM_GNU_str_index, fetch the string.
16645    This is only used by the Fission support.  */
16646
16647 static const char *
16648 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
16649 {
16650   struct objfile *objfile = dwarf2_per_objfile->objfile;
16651   const char *objf_name = objfile_name (objfile);
16652   bfd *abfd = objfile->obfd;
16653   struct dwarf2_cu *cu = reader->cu;
16654   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16655   struct dwarf2_section_info *str_offsets_section =
16656     &reader->dwo_file->sections.str_offsets;
16657   const gdb_byte *info_ptr;
16658   ULONGEST str_offset;
16659   static const char form_name[] = "DW_FORM_GNU_str_index";
16660
16661   dwarf2_read_section (objfile, str_section);
16662   dwarf2_read_section (objfile, str_offsets_section);
16663   if (str_section->buffer == NULL)
16664     error (_("%s used without .debug_str.dwo section"
16665              " in CU at offset 0x%lx [in module %s]"),
16666            form_name, (long) cu->header.offset.sect_off, objf_name);
16667   if (str_offsets_section->buffer == NULL)
16668     error (_("%s used without .debug_str_offsets.dwo section"
16669              " in CU at offset 0x%lx [in module %s]"),
16670            form_name, (long) cu->header.offset.sect_off, objf_name);
16671   if (str_index * cu->header.offset_size >= str_offsets_section->size)
16672     error (_("%s pointing outside of .debug_str_offsets.dwo"
16673              " section in CU at offset 0x%lx [in module %s]"),
16674            form_name, (long) cu->header.offset.sect_off, objf_name);
16675   info_ptr = (str_offsets_section->buffer
16676               + str_index * cu->header.offset_size);
16677   if (cu->header.offset_size == 4)
16678     str_offset = bfd_get_32 (abfd, info_ptr);
16679   else
16680     str_offset = bfd_get_64 (abfd, info_ptr);
16681   if (str_offset >= str_section->size)
16682     error (_("Offset from %s pointing outside of"
16683              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
16684            form_name, (long) cu->header.offset.sect_off, objf_name);
16685   return (const char *) (str_section->buffer + str_offset);
16686 }
16687
16688 /* Return the length of an LEB128 number in BUF.  */
16689
16690 static int
16691 leb128_size (const gdb_byte *buf)
16692 {
16693   const gdb_byte *begin = buf;
16694   gdb_byte byte;
16695
16696   while (1)
16697     {
16698       byte = *buf++;
16699       if ((byte & 128) == 0)
16700         return buf - begin;
16701     }
16702 }
16703
16704 static void
16705 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
16706 {
16707   switch (lang)
16708     {
16709     case DW_LANG_C89:
16710     case DW_LANG_C99:
16711     case DW_LANG_C:
16712     case DW_LANG_UPC:
16713       cu->language = language_c;
16714       break;
16715     case DW_LANG_C_plus_plus:
16716       cu->language = language_cplus;
16717       break;
16718     case DW_LANG_D:
16719       cu->language = language_d;
16720       break;
16721     case DW_LANG_Fortran77:
16722     case DW_LANG_Fortran90:
16723     case DW_LANG_Fortran95:
16724       cu->language = language_fortran;
16725       break;
16726     case DW_LANG_Go:
16727       cu->language = language_go;
16728       break;
16729     case DW_LANG_Mips_Assembler:
16730       cu->language = language_asm;
16731       break;
16732     case DW_LANG_Java:
16733       cu->language = language_java;
16734       break;
16735     case DW_LANG_Ada83:
16736     case DW_LANG_Ada95:
16737       cu->language = language_ada;
16738       break;
16739     case DW_LANG_Modula2:
16740       cu->language = language_m2;
16741       break;
16742     case DW_LANG_Pascal83:
16743       cu->language = language_pascal;
16744       break;
16745     case DW_LANG_ObjC:
16746       cu->language = language_objc;
16747       break;
16748     case DW_LANG_Cobol74:
16749     case DW_LANG_Cobol85:
16750     default:
16751       cu->language = language_minimal;
16752       break;
16753     }
16754   cu->language_defn = language_def (cu->language);
16755 }
16756
16757 /* Return the named attribute or NULL if not there.  */
16758
16759 static struct attribute *
16760 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
16761 {
16762   for (;;)
16763     {
16764       unsigned int i;
16765       struct attribute *spec = NULL;
16766
16767       for (i = 0; i < die->num_attrs; ++i)
16768         {
16769           if (die->attrs[i].name == name)
16770             return &die->attrs[i];
16771           if (die->attrs[i].name == DW_AT_specification
16772               || die->attrs[i].name == DW_AT_abstract_origin)
16773             spec = &die->attrs[i];
16774         }
16775
16776       if (!spec)
16777         break;
16778
16779       die = follow_die_ref (die, spec, &cu);
16780     }
16781
16782   return NULL;
16783 }
16784
16785 /* Return the named attribute or NULL if not there,
16786    but do not follow DW_AT_specification, etc.
16787    This is for use in contexts where we're reading .debug_types dies.
16788    Following DW_AT_specification, DW_AT_abstract_origin will take us
16789    back up the chain, and we want to go down.  */
16790
16791 static struct attribute *
16792 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
16793 {
16794   unsigned int i;
16795
16796   for (i = 0; i < die->num_attrs; ++i)
16797     if (die->attrs[i].name == name)
16798       return &die->attrs[i];
16799
16800   return NULL;
16801 }
16802
16803 /* Return non-zero iff the attribute NAME is defined for the given DIE,
16804    and holds a non-zero value.  This function should only be used for
16805    DW_FORM_flag or DW_FORM_flag_present attributes.  */
16806
16807 static int
16808 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
16809 {
16810   struct attribute *attr = dwarf2_attr (die, name, cu);
16811
16812   return (attr && DW_UNSND (attr));
16813 }
16814
16815 static int
16816 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
16817 {
16818   /* A DIE is a declaration if it has a DW_AT_declaration attribute
16819      which value is non-zero.  However, we have to be careful with
16820      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
16821      (via dwarf2_flag_true_p) follows this attribute.  So we may
16822      end up accidently finding a declaration attribute that belongs
16823      to a different DIE referenced by the specification attribute,
16824      even though the given DIE does not have a declaration attribute.  */
16825   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
16826           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
16827 }
16828
16829 /* Return the die giving the specification for DIE, if there is
16830    one.  *SPEC_CU is the CU containing DIE on input, and the CU
16831    containing the return value on output.  If there is no
16832    specification, but there is an abstract origin, that is
16833    returned.  */
16834
16835 static struct die_info *
16836 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
16837 {
16838   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
16839                                              *spec_cu);
16840
16841   if (spec_attr == NULL)
16842     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
16843
16844   if (spec_attr == NULL)
16845     return NULL;
16846   else
16847     return follow_die_ref (die, spec_attr, spec_cu);
16848 }
16849
16850 /* Free the line_header structure *LH, and any arrays and strings it
16851    refers to.
16852    NOTE: This is also used as a "cleanup" function.  */
16853
16854 static void
16855 free_line_header (struct line_header *lh)
16856 {
16857   if (lh->standard_opcode_lengths)
16858     xfree (lh->standard_opcode_lengths);
16859
16860   /* Remember that all the lh->file_names[i].name pointers are
16861      pointers into debug_line_buffer, and don't need to be freed.  */
16862   if (lh->file_names)
16863     xfree (lh->file_names);
16864
16865   /* Similarly for the include directory names.  */
16866   if (lh->include_dirs)
16867     xfree (lh->include_dirs);
16868
16869   xfree (lh);
16870 }
16871
16872 /* Add an entry to LH's include directory table.  */
16873
16874 static void
16875 add_include_dir (struct line_header *lh, const char *include_dir)
16876 {
16877   /* Grow the array if necessary.  */
16878   if (lh->include_dirs_size == 0)
16879     {
16880       lh->include_dirs_size = 1; /* for testing */
16881       lh->include_dirs = xmalloc (lh->include_dirs_size
16882                                   * sizeof (*lh->include_dirs));
16883     }
16884   else if (lh->num_include_dirs >= lh->include_dirs_size)
16885     {
16886       lh->include_dirs_size *= 2;
16887       lh->include_dirs = xrealloc (lh->include_dirs,
16888                                    (lh->include_dirs_size
16889                                     * sizeof (*lh->include_dirs)));
16890     }
16891
16892   lh->include_dirs[lh->num_include_dirs++] = include_dir;
16893 }
16894
16895 /* Add an entry to LH's file name table.  */
16896
16897 static void
16898 add_file_name (struct line_header *lh,
16899                const char *name,
16900                unsigned int dir_index,
16901                unsigned int mod_time,
16902                unsigned int length)
16903 {
16904   struct file_entry *fe;
16905
16906   /* Grow the array if necessary.  */
16907   if (lh->file_names_size == 0)
16908     {
16909       lh->file_names_size = 1; /* for testing */
16910       lh->file_names = xmalloc (lh->file_names_size
16911                                 * sizeof (*lh->file_names));
16912     }
16913   else if (lh->num_file_names >= lh->file_names_size)
16914     {
16915       lh->file_names_size *= 2;
16916       lh->file_names = xrealloc (lh->file_names,
16917                                  (lh->file_names_size
16918                                   * sizeof (*lh->file_names)));
16919     }
16920
16921   fe = &lh->file_names[lh->num_file_names++];
16922   fe->name = name;
16923   fe->dir_index = dir_index;
16924   fe->mod_time = mod_time;
16925   fe->length = length;
16926   fe->included_p = 0;
16927   fe->symtab = NULL;
16928 }
16929
16930 /* A convenience function to find the proper .debug_line section for a
16931    CU.  */
16932
16933 static struct dwarf2_section_info *
16934 get_debug_line_section (struct dwarf2_cu *cu)
16935 {
16936   struct dwarf2_section_info *section;
16937
16938   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
16939      DWO file.  */
16940   if (cu->dwo_unit && cu->per_cu->is_debug_types)
16941     section = &cu->dwo_unit->dwo_file->sections.line;
16942   else if (cu->per_cu->is_dwz)
16943     {
16944       struct dwz_file *dwz = dwarf2_get_dwz_file ();
16945
16946       section = &dwz->line;
16947     }
16948   else
16949     section = &dwarf2_per_objfile->line;
16950
16951   return section;
16952 }
16953
16954 /* Read the statement program header starting at OFFSET in
16955    .debug_line, or .debug_line.dwo.  Return a pointer
16956    to a struct line_header, allocated using xmalloc.
16957
16958    NOTE: the strings in the include directory and file name tables of
16959    the returned object point into the dwarf line section buffer,
16960    and must not be freed.  */
16961
16962 static struct line_header *
16963 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
16964 {
16965   struct cleanup *back_to;
16966   struct line_header *lh;
16967   const gdb_byte *line_ptr;
16968   unsigned int bytes_read, offset_size;
16969   int i;
16970   const char *cur_dir, *cur_file;
16971   struct dwarf2_section_info *section;
16972   bfd *abfd;
16973
16974   section = get_debug_line_section (cu);
16975   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
16976   if (section->buffer == NULL)
16977     {
16978       if (cu->dwo_unit && cu->per_cu->is_debug_types)
16979         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
16980       else
16981         complaint (&symfile_complaints, _("missing .debug_line section"));
16982       return 0;
16983     }
16984
16985   /* We can't do this until we know the section is non-empty.
16986      Only then do we know we have such a section.  */
16987   abfd = get_section_bfd_owner (section);
16988
16989   /* Make sure that at least there's room for the total_length field.
16990      That could be 12 bytes long, but we're just going to fudge that.  */
16991   if (offset + 4 >= section->size)
16992     {
16993       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16994       return 0;
16995     }
16996
16997   lh = xmalloc (sizeof (*lh));
16998   memset (lh, 0, sizeof (*lh));
16999   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17000                           (void *) lh);
17001
17002   line_ptr = section->buffer + offset;
17003
17004   /* Read in the header.  */
17005   lh->total_length =
17006     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17007                                             &bytes_read, &offset_size);
17008   line_ptr += bytes_read;
17009   if (line_ptr + lh->total_length > (section->buffer + section->size))
17010     {
17011       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17012       do_cleanups (back_to);
17013       return 0;
17014     }
17015   lh->statement_program_end = line_ptr + lh->total_length;
17016   lh->version = read_2_bytes (abfd, line_ptr);
17017   line_ptr += 2;
17018   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17019   line_ptr += offset_size;
17020   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17021   line_ptr += 1;
17022   if (lh->version >= 4)
17023     {
17024       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17025       line_ptr += 1;
17026     }
17027   else
17028     lh->maximum_ops_per_instruction = 1;
17029
17030   if (lh->maximum_ops_per_instruction == 0)
17031     {
17032       lh->maximum_ops_per_instruction = 1;
17033       complaint (&symfile_complaints,
17034                  _("invalid maximum_ops_per_instruction "
17035                    "in `.debug_line' section"));
17036     }
17037
17038   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17039   line_ptr += 1;
17040   lh->line_base = read_1_signed_byte (abfd, line_ptr);
17041   line_ptr += 1;
17042   lh->line_range = read_1_byte (abfd, line_ptr);
17043   line_ptr += 1;
17044   lh->opcode_base = read_1_byte (abfd, line_ptr);
17045   line_ptr += 1;
17046   lh->standard_opcode_lengths
17047     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
17048
17049   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
17050   for (i = 1; i < lh->opcode_base; ++i)
17051     {
17052       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17053       line_ptr += 1;
17054     }
17055
17056   /* Read directory table.  */
17057   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17058     {
17059       line_ptr += bytes_read;
17060       add_include_dir (lh, cur_dir);
17061     }
17062   line_ptr += bytes_read;
17063
17064   /* Read file name table.  */
17065   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17066     {
17067       unsigned int dir_index, mod_time, length;
17068
17069       line_ptr += bytes_read;
17070       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17071       line_ptr += bytes_read;
17072       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17073       line_ptr += bytes_read;
17074       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17075       line_ptr += bytes_read;
17076
17077       add_file_name (lh, cur_file, dir_index, mod_time, length);
17078     }
17079   line_ptr += bytes_read;
17080   lh->statement_program_start = line_ptr;
17081
17082   if (line_ptr > (section->buffer + section->size))
17083     complaint (&symfile_complaints,
17084                _("line number info header doesn't "
17085                  "fit in `.debug_line' section"));
17086
17087   discard_cleanups (back_to);
17088   return lh;
17089 }
17090
17091 /* Subroutine of dwarf_decode_lines to simplify it.
17092    Return the file name of the psymtab for included file FILE_INDEX
17093    in line header LH of PST.
17094    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17095    If space for the result is malloc'd, it will be freed by a cleanup.
17096    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17097
17098    The function creates dangling cleanup registration.  */
17099
17100 static const char *
17101 psymtab_include_file_name (const struct line_header *lh, int file_index,
17102                            const struct partial_symtab *pst,
17103                            const char *comp_dir)
17104 {
17105   const struct file_entry fe = lh->file_names [file_index];
17106   const char *include_name = fe.name;
17107   const char *include_name_to_compare = include_name;
17108   const char *dir_name = NULL;
17109   const char *pst_filename;
17110   char *copied_name = NULL;
17111   int file_is_pst;
17112
17113   if (fe.dir_index)
17114     dir_name = lh->include_dirs[fe.dir_index - 1];
17115
17116   if (!IS_ABSOLUTE_PATH (include_name)
17117       && (dir_name != NULL || comp_dir != NULL))
17118     {
17119       /* Avoid creating a duplicate psymtab for PST.
17120          We do this by comparing INCLUDE_NAME and PST_FILENAME.
17121          Before we do the comparison, however, we need to account
17122          for DIR_NAME and COMP_DIR.
17123          First prepend dir_name (if non-NULL).  If we still don't
17124          have an absolute path prepend comp_dir (if non-NULL).
17125          However, the directory we record in the include-file's
17126          psymtab does not contain COMP_DIR (to match the
17127          corresponding symtab(s)).
17128
17129          Example:
17130
17131          bash$ cd /tmp
17132          bash$ gcc -g ./hello.c
17133          include_name = "hello.c"
17134          dir_name = "."
17135          DW_AT_comp_dir = comp_dir = "/tmp"
17136          DW_AT_name = "./hello.c"
17137
17138       */
17139
17140       if (dir_name != NULL)
17141         {
17142           char *tem = concat (dir_name, SLASH_STRING,
17143                               include_name, (char *)NULL);
17144
17145           make_cleanup (xfree, tem);
17146           include_name = tem;
17147           include_name_to_compare = include_name;
17148         }
17149       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17150         {
17151           char *tem = concat (comp_dir, SLASH_STRING,
17152                               include_name, (char *)NULL);
17153
17154           make_cleanup (xfree, tem);
17155           include_name_to_compare = tem;
17156         }
17157     }
17158
17159   pst_filename = pst->filename;
17160   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17161     {
17162       copied_name = concat (pst->dirname, SLASH_STRING,
17163                             pst_filename, (char *)NULL);
17164       pst_filename = copied_name;
17165     }
17166
17167   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
17168
17169   if (copied_name != NULL)
17170     xfree (copied_name);
17171
17172   if (file_is_pst)
17173     return NULL;
17174   return include_name;
17175 }
17176
17177 /* Ignore this record_line request.  */
17178
17179 static void
17180 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17181 {
17182   return;
17183 }
17184
17185 /* Return non-zero if we should add LINE to the line number table.
17186    LINE is the line to add, LAST_LINE is the last line that was added,
17187    LAST_SUBFILE is the subfile for LAST_LINE.
17188    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17189    had a non-zero discriminator.
17190
17191    We have to be careful in the presence of discriminators.
17192    E.g., for this line:
17193
17194      for (i = 0; i < 100000; i++);
17195
17196    clang can emit four line number entries for that one line,
17197    each with a different discriminator.
17198    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17199
17200    However, we want gdb to coalesce all four entries into one.
17201    Otherwise the user could stepi into the middle of the line and
17202    gdb would get confused about whether the pc really was in the
17203    middle of the line.
17204
17205    Things are further complicated by the fact that two consecutive
17206    line number entries for the same line is a heuristic used by gcc
17207    to denote the end of the prologue.  So we can't just discard duplicate
17208    entries, we have to be selective about it.  The heuristic we use is
17209    that we only collapse consecutive entries for the same line if at least
17210    one of those entries has a non-zero discriminator.  PR 17276.
17211
17212    Note: Addresses in the line number state machine can never go backwards
17213    within one sequence, thus this coalescing is ok.  */
17214
17215 static int
17216 dwarf_record_line_p (unsigned int line, unsigned int last_line,
17217                      int line_has_non_zero_discriminator,
17218                      struct subfile *last_subfile)
17219 {
17220   if (current_subfile != last_subfile)
17221     return 1;
17222   if (line != last_line)
17223     return 1;
17224   /* Same line for the same file that we've seen already.
17225      As a last check, for pr 17276, only record the line if the line
17226      has never had a non-zero discriminator.  */
17227   if (!line_has_non_zero_discriminator)
17228     return 1;
17229   return 0;
17230 }
17231
17232 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17233    in the line table of subfile SUBFILE.  */
17234
17235 static void
17236 dwarf_record_line (struct gdbarch *gdbarch, struct subfile *subfile,
17237                    unsigned int line, CORE_ADDR address,
17238                    record_line_ftype p_record_line)
17239 {
17240   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17241
17242   (*p_record_line) (subfile, line, addr);
17243 }
17244
17245 /* Subroutine of dwarf_decode_lines_1 to simplify it.
17246    Mark the end of a set of line number records.
17247    The arguments are the same as for dwarf_record_line.
17248    If SUBFILE is NULL the request is ignored.  */
17249
17250 static void
17251 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17252                    CORE_ADDR address, record_line_ftype p_record_line)
17253 {
17254   if (subfile != NULL)
17255     dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
17256 }
17257
17258 /* Subroutine of dwarf_decode_lines to simplify it.
17259    Process the line number information in LH.  */
17260
17261 static void
17262 dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
17263                       struct dwarf2_cu *cu, const int decode_for_pst_p,
17264                       CORE_ADDR lowpc)
17265 {
17266   const gdb_byte *line_ptr, *extended_end;
17267   const gdb_byte *line_end;
17268   unsigned int bytes_read, extended_len;
17269   unsigned char op_code, extended_op;
17270   CORE_ADDR baseaddr;
17271   struct objfile *objfile = cu->objfile;
17272   bfd *abfd = objfile->obfd;
17273   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17274   struct subfile *last_subfile = NULL;
17275   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
17276     = record_line;
17277
17278   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17279
17280   line_ptr = lh->statement_program_start;
17281   line_end = lh->statement_program_end;
17282
17283   /* Read the statement sequences until there's nothing left.  */
17284   while (line_ptr < line_end)
17285     {
17286       /* state machine registers  */
17287       CORE_ADDR address = 0;
17288       unsigned int file = 1;
17289       unsigned int line = 1;
17290       int is_stmt = lh->default_is_stmt;
17291       int end_sequence = 0;
17292       unsigned char op_index = 0;
17293       unsigned int discriminator = 0;
17294       /* The last line number that was recorded, used to coalesce
17295          consecutive entries for the same line.  This can happen, for
17296          example, when discriminators are present.  PR 17276.  */
17297       unsigned int last_line = 0;
17298       int line_has_non_zero_discriminator = 0;
17299
17300       if (!decode_for_pst_p && lh->num_file_names >= file)
17301         {
17302           /* Start a subfile for the current file of the state machine.  */
17303           /* lh->include_dirs and lh->file_names are 0-based, but the
17304              directory and file name numbers in the statement program
17305              are 1-based.  */
17306           struct file_entry *fe = &lh->file_names[file - 1];
17307           const char *dir = NULL;
17308
17309           if (fe->dir_index)
17310             dir = lh->include_dirs[fe->dir_index - 1];
17311
17312           dwarf2_start_subfile (fe->name, dir, comp_dir);
17313         }
17314
17315       /* Decode the table.  */
17316       while (!end_sequence)
17317         {
17318           op_code = read_1_byte (abfd, line_ptr);
17319           line_ptr += 1;
17320           if (line_ptr > line_end)
17321             {
17322               dwarf2_debug_line_missing_end_sequence_complaint ();
17323               break;
17324             }
17325
17326           if (op_code >= lh->opcode_base)
17327             {
17328               /* Special opcode.  */
17329               unsigned char adj_opcode;
17330               int line_delta;
17331
17332               adj_opcode = op_code - lh->opcode_base;
17333               address += (((op_index + (adj_opcode / lh->line_range))
17334                            / lh->maximum_ops_per_instruction)
17335                           * lh->minimum_instruction_length);
17336               op_index = ((op_index + (adj_opcode / lh->line_range))
17337                           % lh->maximum_ops_per_instruction);
17338               line_delta = lh->line_base + (adj_opcode % lh->line_range);
17339               line += line_delta;
17340               if (line_delta != 0)
17341                 line_has_non_zero_discriminator = discriminator != 0;
17342               if (lh->num_file_names < file || file == 0)
17343                 dwarf2_debug_line_missing_file_complaint ();
17344               /* For now we ignore lines not starting on an
17345                  instruction boundary.  */
17346               else if (op_index == 0)
17347                 {
17348                   lh->file_names[file - 1].included_p = 1;
17349                   if (!decode_for_pst_p && is_stmt)
17350                     {
17351                       if (last_subfile != current_subfile)
17352                         {
17353                           dwarf_finish_line (gdbarch, last_subfile,
17354                                              address, p_record_line);
17355                         }
17356                       if (dwarf_record_line_p (line, last_line,
17357                                                line_has_non_zero_discriminator,
17358                                                last_subfile))
17359                         {
17360                           dwarf_record_line (gdbarch, current_subfile,
17361                                              line, address, p_record_line);
17362                         }
17363                       last_subfile = current_subfile;
17364                       last_line = line;
17365                     }
17366                 }
17367               discriminator = 0;
17368             }
17369           else switch (op_code)
17370             {
17371             case DW_LNS_extended_op:
17372               extended_len = read_unsigned_leb128 (abfd, line_ptr,
17373                                                    &bytes_read);
17374               line_ptr += bytes_read;
17375               extended_end = line_ptr + extended_len;
17376               extended_op = read_1_byte (abfd, line_ptr);
17377               line_ptr += 1;
17378               switch (extended_op)
17379                 {
17380                 case DW_LNE_end_sequence:
17381                   p_record_line = record_line;
17382                   end_sequence = 1;
17383                   break;
17384                 case DW_LNE_set_address:
17385                   address = read_address (abfd, line_ptr, cu, &bytes_read);
17386
17387                   /* If address < lowpc then it's not a usable value, it's
17388                      outside the pc range of the CU.  However, we restrict
17389                      the test to only address values of zero to preserve
17390                      GDB's previous behaviour which is to handle the specific
17391                      case of a function being GC'd by the linker.  */
17392                   if (address == 0 && address < lowpc)
17393                     {
17394                       /* This line table is for a function which has been
17395                          GCd by the linker.  Ignore it.  PR gdb/12528 */
17396
17397                       long line_offset
17398                         = line_ptr - get_debug_line_section (cu)->buffer;
17399
17400                       complaint (&symfile_complaints,
17401                                  _(".debug_line address at offset 0x%lx is 0 "
17402                                    "[in module %s]"),
17403                                  line_offset, objfile_name (objfile));
17404                       p_record_line = noop_record_line;
17405                       /* Note: p_record_line is left as noop_record_line
17406                          until we see DW_LNE_end_sequence.  */
17407                     }
17408
17409                   op_index = 0;
17410                   line_ptr += bytes_read;
17411                   address += baseaddr;
17412                   break;
17413                 case DW_LNE_define_file:
17414                   {
17415                     const char *cur_file;
17416                     unsigned int dir_index, mod_time, length;
17417
17418                     cur_file = read_direct_string (abfd, line_ptr,
17419                                                    &bytes_read);
17420                     line_ptr += bytes_read;
17421                     dir_index =
17422                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17423                     line_ptr += bytes_read;
17424                     mod_time =
17425                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17426                     line_ptr += bytes_read;
17427                     length =
17428                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17429                     line_ptr += bytes_read;
17430                     add_file_name (lh, cur_file, dir_index, mod_time, length);
17431                   }
17432                   break;
17433                 case DW_LNE_set_discriminator:
17434                   /* The discriminator is not interesting to the debugger;
17435                      just ignore it.  We still need to check its value though:
17436                      if there are consecutive entries for the same
17437                      (non-prologue) line we want to coalesce them.
17438                      PR 17276.  */
17439                   discriminator = read_unsigned_leb128 (abfd, line_ptr,
17440                                                         &bytes_read);
17441                   line_has_non_zero_discriminator |= discriminator != 0;
17442                   line_ptr += bytes_read;
17443                   break;
17444                 default:
17445                   complaint (&symfile_complaints,
17446                              _("mangled .debug_line section"));
17447                   return;
17448                 }
17449               /* Make sure that we parsed the extended op correctly.  If e.g.
17450                  we expected a different address size than the producer used,
17451                  we may have read the wrong number of bytes.  */
17452               if (line_ptr != extended_end)
17453                 {
17454                   complaint (&symfile_complaints,
17455                              _("mangled .debug_line section"));
17456                   return;
17457                 }
17458               break;
17459             case DW_LNS_copy:
17460               if (lh->num_file_names < file || file == 0)
17461                 dwarf2_debug_line_missing_file_complaint ();
17462               else
17463                 {
17464                   lh->file_names[file - 1].included_p = 1;
17465                   if (!decode_for_pst_p && is_stmt)
17466                     {
17467                       if (last_subfile != current_subfile)
17468                         {
17469                           dwarf_finish_line (gdbarch, last_subfile,
17470                                              address, p_record_line);
17471                         }
17472                       if (dwarf_record_line_p (line, last_line,
17473                                                line_has_non_zero_discriminator,
17474                                                last_subfile))
17475                         {
17476                           dwarf_record_line (gdbarch, current_subfile,
17477                                              line, address, p_record_line);
17478                         }
17479                       last_subfile = current_subfile;
17480                       last_line = line;
17481                     }
17482                 }
17483               discriminator = 0;
17484               break;
17485             case DW_LNS_advance_pc:
17486               {
17487                 CORE_ADDR adjust
17488                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17489
17490                 address += (((op_index + adjust)
17491                              / lh->maximum_ops_per_instruction)
17492                             * lh->minimum_instruction_length);
17493                 op_index = ((op_index + adjust)
17494                             % lh->maximum_ops_per_instruction);
17495                 line_ptr += bytes_read;
17496               }
17497               break;
17498             case DW_LNS_advance_line:
17499               {
17500                 int line_delta
17501                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17502
17503                 line += line_delta;
17504                 if (line_delta != 0)
17505                   line_has_non_zero_discriminator = discriminator != 0;
17506                 line_ptr += bytes_read;
17507               }
17508               break;
17509             case DW_LNS_set_file:
17510               {
17511                 /* The arrays lh->include_dirs and lh->file_names are
17512                    0-based, but the directory and file name numbers in
17513                    the statement program are 1-based.  */
17514                 struct file_entry *fe;
17515                 const char *dir = NULL;
17516
17517                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17518                 line_ptr += bytes_read;
17519                 if (lh->num_file_names < file || file == 0)
17520                   dwarf2_debug_line_missing_file_complaint ();
17521                 else
17522                   {
17523                     fe = &lh->file_names[file - 1];
17524                     if (fe->dir_index)
17525                       dir = lh->include_dirs[fe->dir_index - 1];
17526                     if (!decode_for_pst_p)
17527                       {
17528                         last_subfile = current_subfile;
17529                         line_has_non_zero_discriminator = discriminator != 0;
17530                         dwarf2_start_subfile (fe->name, dir, comp_dir);
17531                       }
17532                   }
17533               }
17534               break;
17535             case DW_LNS_set_column:
17536               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17537               line_ptr += bytes_read;
17538               break;
17539             case DW_LNS_negate_stmt:
17540               is_stmt = (!is_stmt);
17541               break;
17542             case DW_LNS_set_basic_block:
17543               break;
17544             /* Add to the address register of the state machine the
17545                address increment value corresponding to special opcode
17546                255.  I.e., this value is scaled by the minimum
17547                instruction length since special opcode 255 would have
17548                scaled the increment.  */
17549             case DW_LNS_const_add_pc:
17550               {
17551                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
17552
17553                 address += (((op_index + adjust)
17554                              / lh->maximum_ops_per_instruction)
17555                             * lh->minimum_instruction_length);
17556                 op_index = ((op_index + adjust)
17557                             % lh->maximum_ops_per_instruction);
17558               }
17559               break;
17560             case DW_LNS_fixed_advance_pc:
17561               address += read_2_bytes (abfd, line_ptr);
17562               op_index = 0;
17563               line_ptr += 2;
17564               break;
17565             default:
17566               {
17567                 /* Unknown standard opcode, ignore it.  */
17568                 int i;
17569
17570                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
17571                   {
17572                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17573                     line_ptr += bytes_read;
17574                   }
17575               }
17576             }
17577         }
17578       if (lh->num_file_names < file || file == 0)
17579         dwarf2_debug_line_missing_file_complaint ();
17580       else
17581         {
17582           lh->file_names[file - 1].included_p = 1;
17583           if (!decode_for_pst_p)
17584             {
17585               dwarf_finish_line (gdbarch, current_subfile, address,
17586                                  p_record_line);
17587             }
17588         }
17589     }
17590 }
17591
17592 /* Decode the Line Number Program (LNP) for the given line_header
17593    structure and CU.  The actual information extracted and the type
17594    of structures created from the LNP depends on the value of PST.
17595
17596    1. If PST is NULL, then this procedure uses the data from the program
17597       to create all necessary symbol tables, and their linetables.
17598
17599    2. If PST is not NULL, this procedure reads the program to determine
17600       the list of files included by the unit represented by PST, and
17601       builds all the associated partial symbol tables.
17602
17603    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17604    It is used for relative paths in the line table.
17605    NOTE: When processing partial symtabs (pst != NULL),
17606    comp_dir == pst->dirname.
17607
17608    NOTE: It is important that psymtabs have the same file name (via strcmp)
17609    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
17610    symtab we don't use it in the name of the psymtabs we create.
17611    E.g. expand_line_sal requires this when finding psymtabs to expand.
17612    A good testcase for this is mb-inline.exp.
17613
17614    LOWPC is the lowest address in CU (or 0 if not known).  */
17615
17616 static void
17617 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
17618                     struct dwarf2_cu *cu, struct partial_symtab *pst,
17619                     CORE_ADDR lowpc)
17620 {
17621   struct objfile *objfile = cu->objfile;
17622   const int decode_for_pst_p = (pst != NULL);
17623   struct subfile *first_subfile = current_subfile;
17624
17625   dwarf_decode_lines_1 (lh, comp_dir, cu, decode_for_pst_p, lowpc);
17626
17627   if (decode_for_pst_p)
17628     {
17629       int file_index;
17630
17631       /* Now that we're done scanning the Line Header Program, we can
17632          create the psymtab of each included file.  */
17633       for (file_index = 0; file_index < lh->num_file_names; file_index++)
17634         if (lh->file_names[file_index].included_p == 1)
17635           {
17636             const char *include_name =
17637               psymtab_include_file_name (lh, file_index, pst, comp_dir);
17638             if (include_name != NULL)
17639               dwarf2_create_include_psymtab (include_name, pst, objfile);
17640           }
17641     }
17642   else
17643     {
17644       /* Make sure a symtab is created for every file, even files
17645          which contain only variables (i.e. no code with associated
17646          line numbers).  */
17647       int i;
17648
17649       for (i = 0; i < lh->num_file_names; i++)
17650         {
17651           const char *dir = NULL;
17652           struct file_entry *fe;
17653
17654           fe = &lh->file_names[i];
17655           if (fe->dir_index)
17656             dir = lh->include_dirs[fe->dir_index - 1];
17657           dwarf2_start_subfile (fe->name, dir, comp_dir);
17658
17659           /* Skip the main file; we don't need it, and it must be
17660              allocated last, so that it will show up before the
17661              non-primary symtabs in the objfile's symtab list.  */
17662           if (current_subfile == first_subfile)
17663             continue;
17664
17665           if (current_subfile->symtab == NULL)
17666             current_subfile->symtab = allocate_symtab (current_subfile->name,
17667                                                        objfile);
17668           fe->symtab = current_subfile->symtab;
17669         }
17670     }
17671 }
17672
17673 /* Start a subfile for DWARF.  FILENAME is the name of the file and
17674    DIRNAME the name of the source directory which contains FILENAME
17675    or NULL if not known.  COMP_DIR is the compilation directory for the
17676    linetable's compilation unit or NULL if not known.
17677    This routine tries to keep line numbers from identical absolute and
17678    relative file names in a common subfile.
17679
17680    Using the `list' example from the GDB testsuite, which resides in
17681    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
17682    of /srcdir/list0.c yields the following debugging information for list0.c:
17683
17684    DW_AT_name:          /srcdir/list0.c
17685    DW_AT_comp_dir:              /compdir
17686    files.files[0].name: list0.h
17687    files.files[0].dir:  /srcdir
17688    files.files[1].name: list0.c
17689    files.files[1].dir:  /srcdir
17690
17691    The line number information for list0.c has to end up in a single
17692    subfile, so that `break /srcdir/list0.c:1' works as expected.
17693    start_subfile will ensure that this happens provided that we pass the
17694    concatenation of files.files[1].dir and files.files[1].name as the
17695    subfile's name.  */
17696
17697 static void
17698 dwarf2_start_subfile (const char *filename, const char *dirname,
17699                       const char *comp_dir)
17700 {
17701   char *copy = NULL;
17702
17703   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
17704      `start_symtab' will always pass the contents of DW_AT_comp_dir as
17705      second argument to start_subfile.  To be consistent, we do the
17706      same here.  In order not to lose the line information directory,
17707      we concatenate it to the filename when it makes sense.
17708      Note that the Dwarf3 standard says (speaking of filenames in line
17709      information): ``The directory index is ignored for file names
17710      that represent full path names''.  Thus ignoring dirname in the
17711      `else' branch below isn't an issue.  */
17712
17713   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
17714     {
17715       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
17716       filename = copy;
17717     }
17718
17719   start_subfile (filename, comp_dir);
17720
17721   if (copy != NULL)
17722     xfree (copy);
17723 }
17724
17725 /* Start a symtab for DWARF.
17726    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
17727
17728 static void
17729 dwarf2_start_symtab (struct dwarf2_cu *cu,
17730                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
17731 {
17732   start_symtab (name, comp_dir, low_pc);
17733   record_debugformat ("DWARF 2");
17734   record_producer (cu->producer);
17735
17736   /* We assume that we're processing GCC output.  */
17737   processing_gcc_compilation = 2;
17738
17739   cu->processing_has_namespace_info = 0;
17740 }
17741
17742 static void
17743 var_decode_location (struct attribute *attr, struct symbol *sym,
17744                      struct dwarf2_cu *cu)
17745 {
17746   struct objfile *objfile = cu->objfile;
17747   struct comp_unit_head *cu_header = &cu->header;
17748
17749   /* NOTE drow/2003-01-30: There used to be a comment and some special
17750      code here to turn a symbol with DW_AT_external and a
17751      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
17752      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
17753      with some versions of binutils) where shared libraries could have
17754      relocations against symbols in their debug information - the
17755      minimal symbol would have the right address, but the debug info
17756      would not.  It's no longer necessary, because we will explicitly
17757      apply relocations when we read in the debug information now.  */
17758
17759   /* A DW_AT_location attribute with no contents indicates that a
17760      variable has been optimized away.  */
17761   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
17762     {
17763       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17764       return;
17765     }
17766
17767   /* Handle one degenerate form of location expression specially, to
17768      preserve GDB's previous behavior when section offsets are
17769      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
17770      then mark this symbol as LOC_STATIC.  */
17771
17772   if (attr_form_is_block (attr)
17773       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
17774            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
17775           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
17776               && (DW_BLOCK (attr)->size
17777                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
17778     {
17779       unsigned int dummy;
17780
17781       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
17782         SYMBOL_VALUE_ADDRESS (sym) =
17783           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
17784       else
17785         SYMBOL_VALUE_ADDRESS (sym) =
17786           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
17787       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
17788       fixup_symbol_section (sym, objfile);
17789       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
17790                                               SYMBOL_SECTION (sym));
17791       return;
17792     }
17793
17794   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
17795      expression evaluator, and use LOC_COMPUTED only when necessary
17796      (i.e. when the value of a register or memory location is
17797      referenced, or a thread-local block, etc.).  Then again, it might
17798      not be worthwhile.  I'm assuming that it isn't unless performance
17799      or memory numbers show me otherwise.  */
17800
17801   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
17802
17803   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
17804     cu->has_loclist = 1;
17805 }
17806
17807 /* Given a pointer to a DWARF information entry, figure out if we need
17808    to make a symbol table entry for it, and if so, create a new entry
17809    and return a pointer to it.
17810    If TYPE is NULL, determine symbol type from the die, otherwise
17811    used the passed type.
17812    If SPACE is not NULL, use it to hold the new symbol.  If it is
17813    NULL, allocate a new symbol on the objfile's obstack.  */
17814
17815 static struct symbol *
17816 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
17817                  struct symbol *space)
17818 {
17819   struct objfile *objfile = cu->objfile;
17820   struct symbol *sym = NULL;
17821   const char *name;
17822   struct attribute *attr = NULL;
17823   struct attribute *attr2 = NULL;
17824   CORE_ADDR baseaddr;
17825   struct pending **list_to_add = NULL;
17826
17827   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
17828
17829   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17830
17831   name = dwarf2_name (die, cu);
17832   if (name)
17833     {
17834       const char *linkagename;
17835       int suppress_add = 0;
17836
17837       if (space)
17838         sym = space;
17839       else
17840         sym = allocate_symbol (objfile);
17841       OBJSTAT (objfile, n_syms++);
17842
17843       /* Cache this symbol's name and the name's demangled form (if any).  */
17844       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
17845       linkagename = dwarf2_physname (name, die, cu);
17846       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
17847
17848       /* Fortran does not have mangling standard and the mangling does differ
17849          between gfortran, iFort etc.  */
17850       if (cu->language == language_fortran
17851           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
17852         symbol_set_demangled_name (&(sym->ginfo),
17853                                    dwarf2_full_name (name, die, cu),
17854                                    NULL);
17855
17856       /* Default assumptions.
17857          Use the passed type or decode it from the die.  */
17858       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17859       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17860       if (type != NULL)
17861         SYMBOL_TYPE (sym) = type;
17862       else
17863         SYMBOL_TYPE (sym) = die_type (die, cu);
17864       attr = dwarf2_attr (die,
17865                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
17866                           cu);
17867       if (attr)
17868         {
17869           SYMBOL_LINE (sym) = DW_UNSND (attr);
17870         }
17871
17872       attr = dwarf2_attr (die,
17873                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
17874                           cu);
17875       if (attr)
17876         {
17877           int file_index = DW_UNSND (attr);
17878
17879           if (cu->line_header == NULL
17880               || file_index > cu->line_header->num_file_names)
17881             complaint (&symfile_complaints,
17882                        _("file index out of range"));
17883           else if (file_index > 0)
17884             {
17885               struct file_entry *fe;
17886
17887               fe = &cu->line_header->file_names[file_index - 1];
17888               SYMBOL_SYMTAB (sym) = fe->symtab;
17889             }
17890         }
17891
17892       switch (die->tag)
17893         {
17894         case DW_TAG_label:
17895           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
17896           if (attr)
17897             SYMBOL_VALUE_ADDRESS (sym)
17898               = attr_value_as_address (attr) + baseaddr;
17899           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
17900           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
17901           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
17902           add_symbol_to_list (sym, cu->list_in_scope);
17903           break;
17904         case DW_TAG_subprogram:
17905           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17906              finish_block.  */
17907           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17908           attr2 = dwarf2_attr (die, DW_AT_external, cu);
17909           if ((attr2 && (DW_UNSND (attr2) != 0))
17910               || cu->language == language_ada)
17911             {
17912               /* Subprograms marked external are stored as a global symbol.
17913                  Ada subprograms, whether marked external or not, are always
17914                  stored as a global symbol, because we want to be able to
17915                  access them globally.  For instance, we want to be able
17916                  to break on a nested subprogram without having to
17917                  specify the context.  */
17918               list_to_add = &global_symbols;
17919             }
17920           else
17921             {
17922               list_to_add = cu->list_in_scope;
17923             }
17924           break;
17925         case DW_TAG_inlined_subroutine:
17926           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17927              finish_block.  */
17928           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17929           SYMBOL_INLINED (sym) = 1;
17930           list_to_add = cu->list_in_scope;
17931           break;
17932         case DW_TAG_template_value_param:
17933           suppress_add = 1;
17934           /* Fall through.  */
17935         case DW_TAG_constant:
17936         case DW_TAG_variable:
17937         case DW_TAG_member:
17938           /* Compilation with minimal debug info may result in
17939              variables with missing type entries.  Change the
17940              misleading `void' type to something sensible.  */
17941           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
17942             SYMBOL_TYPE (sym)
17943               = objfile_type (objfile)->nodebug_data_symbol;
17944
17945           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17946           /* In the case of DW_TAG_member, we should only be called for
17947              static const members.  */
17948           if (die->tag == DW_TAG_member)
17949             {
17950               /* dwarf2_add_field uses die_is_declaration,
17951                  so we do the same.  */
17952               gdb_assert (die_is_declaration (die, cu));
17953               gdb_assert (attr);
17954             }
17955           if (attr)
17956             {
17957               dwarf2_const_value (attr, sym, cu);
17958               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17959               if (!suppress_add)
17960                 {
17961                   if (attr2 && (DW_UNSND (attr2) != 0))
17962                     list_to_add = &global_symbols;
17963                   else
17964                     list_to_add = cu->list_in_scope;
17965                 }
17966               break;
17967             }
17968           attr = dwarf2_attr (die, DW_AT_location, cu);
17969           if (attr)
17970             {
17971               var_decode_location (attr, sym, cu);
17972               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17973
17974               /* Fortran explicitly imports any global symbols to the local
17975                  scope by DW_TAG_common_block.  */
17976               if (cu->language == language_fortran && die->parent
17977                   && die->parent->tag == DW_TAG_common_block)
17978                 attr2 = NULL;
17979
17980               if (SYMBOL_CLASS (sym) == LOC_STATIC
17981                   && SYMBOL_VALUE_ADDRESS (sym) == 0
17982                   && !dwarf2_per_objfile->has_section_at_zero)
17983                 {
17984                   /* When a static variable is eliminated by the linker,
17985                      the corresponding debug information is not stripped
17986                      out, but the variable address is set to null;
17987                      do not add such variables into symbol table.  */
17988                 }
17989               else if (attr2 && (DW_UNSND (attr2) != 0))
17990                 {
17991                   /* Workaround gfortran PR debug/40040 - it uses
17992                      DW_AT_location for variables in -fPIC libraries which may
17993                      get overriden by other libraries/executable and get
17994                      a different address.  Resolve it by the minimal symbol
17995                      which may come from inferior's executable using copy
17996                      relocation.  Make this workaround only for gfortran as for
17997                      other compilers GDB cannot guess the minimal symbol
17998                      Fortran mangling kind.  */
17999                   if (cu->language == language_fortran && die->parent
18000                       && die->parent->tag == DW_TAG_module
18001                       && cu->producer
18002                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
18003                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
18004
18005                   /* A variable with DW_AT_external is never static,
18006                      but it may be block-scoped.  */
18007                   list_to_add = (cu->list_in_scope == &file_symbols
18008                                  ? &global_symbols : cu->list_in_scope);
18009                 }
18010               else
18011                 list_to_add = cu->list_in_scope;
18012             }
18013           else
18014             {
18015               /* We do not know the address of this symbol.
18016                  If it is an external symbol and we have type information
18017                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
18018                  The address of the variable will then be determined from
18019                  the minimal symbol table whenever the variable is
18020                  referenced.  */
18021               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18022
18023               /* Fortran explicitly imports any global symbols to the local
18024                  scope by DW_TAG_common_block.  */
18025               if (cu->language == language_fortran && die->parent
18026                   && die->parent->tag == DW_TAG_common_block)
18027                 {
18028                   /* SYMBOL_CLASS doesn't matter here because
18029                      read_common_block is going to reset it.  */
18030                   if (!suppress_add)
18031                     list_to_add = cu->list_in_scope;
18032                 }
18033               else if (attr2 && (DW_UNSND (attr2) != 0)
18034                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
18035                 {
18036                   /* A variable with DW_AT_external is never static, but it
18037                      may be block-scoped.  */
18038                   list_to_add = (cu->list_in_scope == &file_symbols
18039                                  ? &global_symbols : cu->list_in_scope);
18040
18041                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
18042                 }
18043               else if (!die_is_declaration (die, cu))
18044                 {
18045                   /* Use the default LOC_OPTIMIZED_OUT class.  */
18046                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
18047                   if (!suppress_add)
18048                     list_to_add = cu->list_in_scope;
18049                 }
18050             }
18051           break;
18052         case DW_TAG_formal_parameter:
18053           /* If we are inside a function, mark this as an argument.  If
18054              not, we might be looking at an argument to an inlined function
18055              when we do not have enough information to show inlined frames;
18056              pretend it's a local variable in that case so that the user can
18057              still see it.  */
18058           if (context_stack_depth > 0
18059               && context_stack[context_stack_depth - 1].name != NULL)
18060             SYMBOL_IS_ARGUMENT (sym) = 1;
18061           attr = dwarf2_attr (die, DW_AT_location, cu);
18062           if (attr)
18063             {
18064               var_decode_location (attr, sym, cu);
18065             }
18066           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18067           if (attr)
18068             {
18069               dwarf2_const_value (attr, sym, cu);
18070             }
18071
18072           list_to_add = cu->list_in_scope;
18073           break;
18074         case DW_TAG_unspecified_parameters:
18075           /* From varargs functions; gdb doesn't seem to have any
18076              interest in this information, so just ignore it for now.
18077              (FIXME?) */
18078           break;
18079         case DW_TAG_template_type_param:
18080           suppress_add = 1;
18081           /* Fall through.  */
18082         case DW_TAG_class_type:
18083         case DW_TAG_interface_type:
18084         case DW_TAG_structure_type:
18085         case DW_TAG_union_type:
18086         case DW_TAG_set_type:
18087         case DW_TAG_enumeration_type:
18088           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18089           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
18090
18091           {
18092             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
18093                really ever be static objects: otherwise, if you try
18094                to, say, break of a class's method and you're in a file
18095                which doesn't mention that class, it won't work unless
18096                the check for all static symbols in lookup_symbol_aux
18097                saves you.  See the OtherFileClass tests in
18098                gdb.c++/namespace.exp.  */
18099
18100             if (!suppress_add)
18101               {
18102                 list_to_add = (cu->list_in_scope == &file_symbols
18103                                && (cu->language == language_cplus
18104                                    || cu->language == language_java)
18105                                ? &global_symbols : cu->list_in_scope);
18106
18107                 /* The semantics of C++ state that "struct foo {
18108                    ... }" also defines a typedef for "foo".  A Java
18109                    class declaration also defines a typedef for the
18110                    class.  */
18111                 if (cu->language == language_cplus
18112                     || cu->language == language_java
18113                     || cu->language == language_ada)
18114                   {
18115                     /* The symbol's name is already allocated along
18116                        with this objfile, so we don't need to
18117                        duplicate it for the type.  */
18118                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18119                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18120                   }
18121               }
18122           }
18123           break;
18124         case DW_TAG_typedef:
18125           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18126           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18127           list_to_add = cu->list_in_scope;
18128           break;
18129         case DW_TAG_base_type:
18130         case DW_TAG_subrange_type:
18131           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18132           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18133           list_to_add = cu->list_in_scope;
18134           break;
18135         case DW_TAG_enumerator:
18136           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18137           if (attr)
18138             {
18139               dwarf2_const_value (attr, sym, cu);
18140             }
18141           {
18142             /* NOTE: carlton/2003-11-10: See comment above in the
18143                DW_TAG_class_type, etc. block.  */
18144
18145             list_to_add = (cu->list_in_scope == &file_symbols
18146                            && (cu->language == language_cplus
18147                                || cu->language == language_java)
18148                            ? &global_symbols : cu->list_in_scope);
18149           }
18150           break;
18151         case DW_TAG_imported_declaration:
18152         case DW_TAG_namespace:
18153           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18154           list_to_add = &global_symbols;
18155           break;
18156         case DW_TAG_module:
18157           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18158           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18159           list_to_add = &global_symbols;
18160           break;
18161         case DW_TAG_common_block:
18162           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
18163           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18164           add_symbol_to_list (sym, cu->list_in_scope);
18165           break;
18166         default:
18167           /* Not a tag we recognize.  Hopefully we aren't processing
18168              trash data, but since we must specifically ignore things
18169              we don't recognize, there is nothing else we should do at
18170              this point.  */
18171           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
18172                      dwarf_tag_name (die->tag));
18173           break;
18174         }
18175
18176       if (suppress_add)
18177         {
18178           sym->hash_next = objfile->template_symbols;
18179           objfile->template_symbols = sym;
18180           list_to_add = NULL;
18181         }
18182
18183       if (list_to_add != NULL)
18184         add_symbol_to_list (sym, list_to_add);
18185
18186       /* For the benefit of old versions of GCC, check for anonymous
18187          namespaces based on the demangled name.  */
18188       if (!cu->processing_has_namespace_info
18189           && cu->language == language_cplus)
18190         cp_scan_for_anonymous_namespaces (sym, objfile);
18191     }
18192   return (sym);
18193 }
18194
18195 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
18196
18197 static struct symbol *
18198 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18199 {
18200   return new_symbol_full (die, type, cu, NULL);
18201 }
18202
18203 /* Given an attr with a DW_FORM_dataN value in host byte order,
18204    zero-extend it as appropriate for the symbol's type.  The DWARF
18205    standard (v4) is not entirely clear about the meaning of using
18206    DW_FORM_dataN for a constant with a signed type, where the type is
18207    wider than the data.  The conclusion of a discussion on the DWARF
18208    list was that this is unspecified.  We choose to always zero-extend
18209    because that is the interpretation long in use by GCC.  */
18210
18211 static gdb_byte *
18212 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
18213                          struct dwarf2_cu *cu, LONGEST *value, int bits)
18214 {
18215   struct objfile *objfile = cu->objfile;
18216   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18217                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
18218   LONGEST l = DW_UNSND (attr);
18219
18220   if (bits < sizeof (*value) * 8)
18221     {
18222       l &= ((LONGEST) 1 << bits) - 1;
18223       *value = l;
18224     }
18225   else if (bits == sizeof (*value) * 8)
18226     *value = l;
18227   else
18228     {
18229       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18230       store_unsigned_integer (bytes, bits / 8, byte_order, l);
18231       return bytes;
18232     }
18233
18234   return NULL;
18235 }
18236
18237 /* Read a constant value from an attribute.  Either set *VALUE, or if
18238    the value does not fit in *VALUE, set *BYTES - either already
18239    allocated on the objfile obstack, or newly allocated on OBSTACK,
18240    or, set *BATON, if we translated the constant to a location
18241    expression.  */
18242
18243 static void
18244 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
18245                          const char *name, struct obstack *obstack,
18246                          struct dwarf2_cu *cu,
18247                          LONGEST *value, const gdb_byte **bytes,
18248                          struct dwarf2_locexpr_baton **baton)
18249 {
18250   struct objfile *objfile = cu->objfile;
18251   struct comp_unit_head *cu_header = &cu->header;
18252   struct dwarf_block *blk;
18253   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18254                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18255
18256   *value = 0;
18257   *bytes = NULL;
18258   *baton = NULL;
18259
18260   switch (attr->form)
18261     {
18262     case DW_FORM_addr:
18263     case DW_FORM_GNU_addr_index:
18264       {
18265         gdb_byte *data;
18266
18267         if (TYPE_LENGTH (type) != cu_header->addr_size)
18268           dwarf2_const_value_length_mismatch_complaint (name,
18269                                                         cu_header->addr_size,
18270                                                         TYPE_LENGTH (type));
18271         /* Symbols of this form are reasonably rare, so we just
18272            piggyback on the existing location code rather than writing
18273            a new implementation of symbol_computed_ops.  */
18274         *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
18275         (*baton)->per_cu = cu->per_cu;
18276         gdb_assert ((*baton)->per_cu);
18277
18278         (*baton)->size = 2 + cu_header->addr_size;
18279         data = obstack_alloc (obstack, (*baton)->size);
18280         (*baton)->data = data;
18281
18282         data[0] = DW_OP_addr;
18283         store_unsigned_integer (&data[1], cu_header->addr_size,
18284                                 byte_order, DW_ADDR (attr));
18285         data[cu_header->addr_size + 1] = DW_OP_stack_value;
18286       }
18287       break;
18288     case DW_FORM_string:
18289     case DW_FORM_strp:
18290     case DW_FORM_GNU_str_index:
18291     case DW_FORM_GNU_strp_alt:
18292       /* DW_STRING is already allocated on the objfile obstack, point
18293          directly to it.  */
18294       *bytes = (const gdb_byte *) DW_STRING (attr);
18295       break;
18296     case DW_FORM_block1:
18297     case DW_FORM_block2:
18298     case DW_FORM_block4:
18299     case DW_FORM_block:
18300     case DW_FORM_exprloc:
18301       blk = DW_BLOCK (attr);
18302       if (TYPE_LENGTH (type) != blk->size)
18303         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18304                                                       TYPE_LENGTH (type));
18305       *bytes = blk->data;
18306       break;
18307
18308       /* The DW_AT_const_value attributes are supposed to carry the
18309          symbol's value "represented as it would be on the target
18310          architecture."  By the time we get here, it's already been
18311          converted to host endianness, so we just need to sign- or
18312          zero-extend it as appropriate.  */
18313     case DW_FORM_data1:
18314       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
18315       break;
18316     case DW_FORM_data2:
18317       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
18318       break;
18319     case DW_FORM_data4:
18320       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
18321       break;
18322     case DW_FORM_data8:
18323       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
18324       break;
18325
18326     case DW_FORM_sdata:
18327       *value = DW_SND (attr);
18328       break;
18329
18330     case DW_FORM_udata:
18331       *value = DW_UNSND (attr);
18332       break;
18333
18334     default:
18335       complaint (&symfile_complaints,
18336                  _("unsupported const value attribute form: '%s'"),
18337                  dwarf_form_name (attr->form));
18338       *value = 0;
18339       break;
18340     }
18341 }
18342
18343
18344 /* Copy constant value from an attribute to a symbol.  */
18345
18346 static void
18347 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
18348                     struct dwarf2_cu *cu)
18349 {
18350   struct objfile *objfile = cu->objfile;
18351   struct comp_unit_head *cu_header = &cu->header;
18352   LONGEST value;
18353   const gdb_byte *bytes;
18354   struct dwarf2_locexpr_baton *baton;
18355
18356   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18357                            SYMBOL_PRINT_NAME (sym),
18358                            &objfile->objfile_obstack, cu,
18359                            &value, &bytes, &baton);
18360
18361   if (baton != NULL)
18362     {
18363       SYMBOL_LOCATION_BATON (sym) = baton;
18364       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
18365     }
18366   else if (bytes != NULL)
18367      {
18368       SYMBOL_VALUE_BYTES (sym) = bytes;
18369       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
18370     }
18371   else
18372     {
18373       SYMBOL_VALUE (sym) = value;
18374       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
18375     }
18376 }
18377
18378 /* Return the type of the die in question using its DW_AT_type attribute.  */
18379
18380 static struct type *
18381 die_type (struct die_info *die, struct dwarf2_cu *cu)
18382 {
18383   struct attribute *type_attr;
18384
18385   type_attr = dwarf2_attr (die, DW_AT_type, cu);
18386   if (!type_attr)
18387     {
18388       /* A missing DW_AT_type represents a void type.  */
18389       return objfile_type (cu->objfile)->builtin_void;
18390     }
18391
18392   return lookup_die_type (die, type_attr, cu);
18393 }
18394
18395 /* True iff CU's producer generates GNAT Ada auxiliary information
18396    that allows to find parallel types through that information instead
18397    of having to do expensive parallel lookups by type name.  */
18398
18399 static int
18400 need_gnat_info (struct dwarf2_cu *cu)
18401 {
18402   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18403      of GNAT produces this auxiliary information, without any indication
18404      that it is produced.  Part of enhancing the FSF version of GNAT
18405      to produce that information will be to put in place an indicator
18406      that we can use in order to determine whether the descriptive type
18407      info is available or not.  One suggestion that has been made is
18408      to use a new attribute, attached to the CU die.  For now, assume
18409      that the descriptive type info is not available.  */
18410   return 0;
18411 }
18412
18413 /* Return the auxiliary type of the die in question using its
18414    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
18415    attribute is not present.  */
18416
18417 static struct type *
18418 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18419 {
18420   struct attribute *type_attr;
18421
18422   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18423   if (!type_attr)
18424     return NULL;
18425
18426   return lookup_die_type (die, type_attr, cu);
18427 }
18428
18429 /* If DIE has a descriptive_type attribute, then set the TYPE's
18430    descriptive type accordingly.  */
18431
18432 static void
18433 set_descriptive_type (struct type *type, struct die_info *die,
18434                       struct dwarf2_cu *cu)
18435 {
18436   struct type *descriptive_type = die_descriptive_type (die, cu);
18437
18438   if (descriptive_type)
18439     {
18440       ALLOCATE_GNAT_AUX_TYPE (type);
18441       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18442     }
18443 }
18444
18445 /* Return the containing type of the die in question using its
18446    DW_AT_containing_type attribute.  */
18447
18448 static struct type *
18449 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
18450 {
18451   struct attribute *type_attr;
18452
18453   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
18454   if (!type_attr)
18455     error (_("Dwarf Error: Problem turning containing type into gdb type "
18456              "[in module %s]"), objfile_name (cu->objfile));
18457
18458   return lookup_die_type (die, type_attr, cu);
18459 }
18460
18461 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
18462
18463 static struct type *
18464 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18465 {
18466   struct objfile *objfile = dwarf2_per_objfile->objfile;
18467   char *message, *saved;
18468
18469   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
18470                         objfile_name (objfile),
18471                         cu->header.offset.sect_off,
18472                         die->offset.sect_off);
18473   saved = obstack_copy0 (&objfile->objfile_obstack,
18474                          message, strlen (message));
18475   xfree (message);
18476
18477   return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18478 }
18479
18480 /* Look up the type of DIE in CU using its type attribute ATTR.
18481    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18482    DW_AT_containing_type.
18483    If there is no type substitute an error marker.  */
18484
18485 static struct type *
18486 lookup_die_type (struct die_info *die, const struct attribute *attr,
18487                  struct dwarf2_cu *cu)
18488 {
18489   struct objfile *objfile = cu->objfile;
18490   struct type *this_type;
18491
18492   gdb_assert (attr->name == DW_AT_type
18493               || attr->name == DW_AT_GNAT_descriptive_type
18494               || attr->name == DW_AT_containing_type);
18495
18496   /* First see if we have it cached.  */
18497
18498   if (attr->form == DW_FORM_GNU_ref_alt)
18499     {
18500       struct dwarf2_per_cu_data *per_cu;
18501       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18502
18503       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18504       this_type = get_die_type_at_offset (offset, per_cu);
18505     }
18506   else if (attr_form_is_ref (attr))
18507     {
18508       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18509
18510       this_type = get_die_type_at_offset (offset, cu->per_cu);
18511     }
18512   else if (attr->form == DW_FORM_ref_sig8)
18513     {
18514       ULONGEST signature = DW_SIGNATURE (attr);
18515
18516       return get_signatured_type (die, signature, cu);
18517     }
18518   else
18519     {
18520       complaint (&symfile_complaints,
18521                  _("Dwarf Error: Bad type attribute %s in DIE"
18522                    " at 0x%x [in module %s]"),
18523                  dwarf_attr_name (attr->name), die->offset.sect_off,
18524                  objfile_name (objfile));
18525       return build_error_marker_type (cu, die);
18526     }
18527
18528   /* If not cached we need to read it in.  */
18529
18530   if (this_type == NULL)
18531     {
18532       struct die_info *type_die = NULL;
18533       struct dwarf2_cu *type_cu = cu;
18534
18535       if (attr_form_is_ref (attr))
18536         type_die = follow_die_ref (die, attr, &type_cu);
18537       if (type_die == NULL)
18538         return build_error_marker_type (cu, die);
18539       /* If we find the type now, it's probably because the type came
18540          from an inter-CU reference and the type's CU got expanded before
18541          ours.  */
18542       this_type = read_type_die (type_die, type_cu);
18543     }
18544
18545   /* If we still don't have a type use an error marker.  */
18546
18547   if (this_type == NULL)
18548     return build_error_marker_type (cu, die);
18549
18550   return this_type;
18551 }
18552
18553 /* Return the type in DIE, CU.
18554    Returns NULL for invalid types.
18555
18556    This first does a lookup in die_type_hash,
18557    and only reads the die in if necessary.
18558
18559    NOTE: This can be called when reading in partial or full symbols.  */
18560
18561 static struct type *
18562 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
18563 {
18564   struct type *this_type;
18565
18566   this_type = get_die_type (die, cu);
18567   if (this_type)
18568     return this_type;
18569
18570   return read_type_die_1 (die, cu);
18571 }
18572
18573 /* Read the type in DIE, CU.
18574    Returns NULL for invalid types.  */
18575
18576 static struct type *
18577 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
18578 {
18579   struct type *this_type = NULL;
18580
18581   switch (die->tag)
18582     {
18583     case DW_TAG_class_type:
18584     case DW_TAG_interface_type:
18585     case DW_TAG_structure_type:
18586     case DW_TAG_union_type:
18587       this_type = read_structure_type (die, cu);
18588       break;
18589     case DW_TAG_enumeration_type:
18590       this_type = read_enumeration_type (die, cu);
18591       break;
18592     case DW_TAG_subprogram:
18593     case DW_TAG_subroutine_type:
18594     case DW_TAG_inlined_subroutine:
18595       this_type = read_subroutine_type (die, cu);
18596       break;
18597     case DW_TAG_array_type:
18598       this_type = read_array_type (die, cu);
18599       break;
18600     case DW_TAG_set_type:
18601       this_type = read_set_type (die, cu);
18602       break;
18603     case DW_TAG_pointer_type:
18604       this_type = read_tag_pointer_type (die, cu);
18605       break;
18606     case DW_TAG_ptr_to_member_type:
18607       this_type = read_tag_ptr_to_member_type (die, cu);
18608       break;
18609     case DW_TAG_reference_type:
18610       this_type = read_tag_reference_type (die, cu);
18611       break;
18612     case DW_TAG_const_type:
18613       this_type = read_tag_const_type (die, cu);
18614       break;
18615     case DW_TAG_volatile_type:
18616       this_type = read_tag_volatile_type (die, cu);
18617       break;
18618     case DW_TAG_restrict_type:
18619       this_type = read_tag_restrict_type (die, cu);
18620       break;
18621     case DW_TAG_string_type:
18622       this_type = read_tag_string_type (die, cu);
18623       break;
18624     case DW_TAG_typedef:
18625       this_type = read_typedef (die, cu);
18626       break;
18627     case DW_TAG_subrange_type:
18628       this_type = read_subrange_type (die, cu);
18629       break;
18630     case DW_TAG_base_type:
18631       this_type = read_base_type (die, cu);
18632       break;
18633     case DW_TAG_unspecified_type:
18634       this_type = read_unspecified_type (die, cu);
18635       break;
18636     case DW_TAG_namespace:
18637       this_type = read_namespace_type (die, cu);
18638       break;
18639     case DW_TAG_module:
18640       this_type = read_module_type (die, cu);
18641       break;
18642     default:
18643       complaint (&symfile_complaints,
18644                  _("unexpected tag in read_type_die: '%s'"),
18645                  dwarf_tag_name (die->tag));
18646       break;
18647     }
18648
18649   return this_type;
18650 }
18651
18652 /* See if we can figure out if the class lives in a namespace.  We do
18653    this by looking for a member function; its demangled name will
18654    contain namespace info, if there is any.
18655    Return the computed name or NULL.
18656    Space for the result is allocated on the objfile's obstack.
18657    This is the full-die version of guess_partial_die_structure_name.
18658    In this case we know DIE has no useful parent.  */
18659
18660 static char *
18661 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
18662 {
18663   struct die_info *spec_die;
18664   struct dwarf2_cu *spec_cu;
18665   struct die_info *child;
18666
18667   spec_cu = cu;
18668   spec_die = die_specification (die, &spec_cu);
18669   if (spec_die != NULL)
18670     {
18671       die = spec_die;
18672       cu = spec_cu;
18673     }
18674
18675   for (child = die->child;
18676        child != NULL;
18677        child = child->sibling)
18678     {
18679       if (child->tag == DW_TAG_subprogram)
18680         {
18681           struct attribute *attr;
18682
18683           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
18684           if (attr == NULL)
18685             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
18686           if (attr != NULL)
18687             {
18688               char *actual_name
18689                 = language_class_name_from_physname (cu->language_defn,
18690                                                      DW_STRING (attr));
18691               char *name = NULL;
18692
18693               if (actual_name != NULL)
18694                 {
18695                   const char *die_name = dwarf2_name (die, cu);
18696
18697                   if (die_name != NULL
18698                       && strcmp (die_name, actual_name) != 0)
18699                     {
18700                       /* Strip off the class name from the full name.
18701                          We want the prefix.  */
18702                       int die_name_len = strlen (die_name);
18703                       int actual_name_len = strlen (actual_name);
18704
18705                       /* Test for '::' as a sanity check.  */
18706                       if (actual_name_len > die_name_len + 2
18707                           && actual_name[actual_name_len
18708                                          - die_name_len - 1] == ':')
18709                         name =
18710                           obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
18711                                          actual_name,
18712                                          actual_name_len - die_name_len - 2);
18713                     }
18714                 }
18715               xfree (actual_name);
18716               return name;
18717             }
18718         }
18719     }
18720
18721   return NULL;
18722 }
18723
18724 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
18725    prefix part in such case.  See
18726    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18727
18728 static char *
18729 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
18730 {
18731   struct attribute *attr;
18732   char *base;
18733
18734   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
18735       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
18736     return NULL;
18737
18738   attr = dwarf2_attr (die, DW_AT_name, cu);
18739   if (attr != NULL && DW_STRING (attr) != NULL)
18740     return NULL;
18741
18742   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18743   if (attr == NULL)
18744     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18745   if (attr == NULL || DW_STRING (attr) == NULL)
18746     return NULL;
18747
18748   /* dwarf2_name had to be already called.  */
18749   gdb_assert (DW_STRING_IS_CANONICAL (attr));
18750
18751   /* Strip the base name, keep any leading namespaces/classes.  */
18752   base = strrchr (DW_STRING (attr), ':');
18753   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
18754     return "";
18755
18756   return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
18757                         DW_STRING (attr), &base[-1] - DW_STRING (attr));
18758 }
18759
18760 /* Return the name of the namespace/class that DIE is defined within,
18761    or "" if we can't tell.  The caller should not xfree the result.
18762
18763    For example, if we're within the method foo() in the following
18764    code:
18765
18766    namespace N {
18767      class C {
18768        void foo () {
18769        }
18770      };
18771    }
18772
18773    then determine_prefix on foo's die will return "N::C".  */
18774
18775 static const char *
18776 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
18777 {
18778   struct die_info *parent, *spec_die;
18779   struct dwarf2_cu *spec_cu;
18780   struct type *parent_type;
18781   char *retval;
18782
18783   if (cu->language != language_cplus && cu->language != language_java
18784       && cu->language != language_fortran)
18785     return "";
18786
18787   retval = anonymous_struct_prefix (die, cu);
18788   if (retval)
18789     return retval;
18790
18791   /* We have to be careful in the presence of DW_AT_specification.
18792      For example, with GCC 3.4, given the code
18793
18794      namespace N {
18795        void foo() {
18796          // Definition of N::foo.
18797        }
18798      }
18799
18800      then we'll have a tree of DIEs like this:
18801
18802      1: DW_TAG_compile_unit
18803        2: DW_TAG_namespace        // N
18804          3: DW_TAG_subprogram     // declaration of N::foo
18805        4: DW_TAG_subprogram       // definition of N::foo
18806             DW_AT_specification   // refers to die #3
18807
18808      Thus, when processing die #4, we have to pretend that we're in
18809      the context of its DW_AT_specification, namely the contex of die
18810      #3.  */
18811   spec_cu = cu;
18812   spec_die = die_specification (die, &spec_cu);
18813   if (spec_die == NULL)
18814     parent = die->parent;
18815   else
18816     {
18817       parent = spec_die->parent;
18818       cu = spec_cu;
18819     }
18820
18821   if (parent == NULL)
18822     return "";
18823   else if (parent->building_fullname)
18824     {
18825       const char *name;
18826       const char *parent_name;
18827
18828       /* It has been seen on RealView 2.2 built binaries,
18829          DW_TAG_template_type_param types actually _defined_ as
18830          children of the parent class:
18831
18832          enum E {};
18833          template class <class Enum> Class{};
18834          Class<enum E> class_e;
18835
18836          1: DW_TAG_class_type (Class)
18837            2: DW_TAG_enumeration_type (E)
18838              3: DW_TAG_enumerator (enum1:0)
18839              3: DW_TAG_enumerator (enum2:1)
18840              ...
18841            2: DW_TAG_template_type_param
18842               DW_AT_type  DW_FORM_ref_udata (E)
18843
18844          Besides being broken debug info, it can put GDB into an
18845          infinite loop.  Consider:
18846
18847          When we're building the full name for Class<E>, we'll start
18848          at Class, and go look over its template type parameters,
18849          finding E.  We'll then try to build the full name of E, and
18850          reach here.  We're now trying to build the full name of E,
18851          and look over the parent DIE for containing scope.  In the
18852          broken case, if we followed the parent DIE of E, we'd again
18853          find Class, and once again go look at its template type
18854          arguments, etc., etc.  Simply don't consider such parent die
18855          as source-level parent of this die (it can't be, the language
18856          doesn't allow it), and break the loop here.  */
18857       name = dwarf2_name (die, cu);
18858       parent_name = dwarf2_name (parent, cu);
18859       complaint (&symfile_complaints,
18860                  _("template param type '%s' defined within parent '%s'"),
18861                  name ? name : "<unknown>",
18862                  parent_name ? parent_name : "<unknown>");
18863       return "";
18864     }
18865   else
18866     switch (parent->tag)
18867       {
18868       case DW_TAG_namespace:
18869         parent_type = read_type_die (parent, cu);
18870         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
18871            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
18872            Work around this problem here.  */
18873         if (cu->language == language_cplus
18874             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
18875           return "";
18876         /* We give a name to even anonymous namespaces.  */
18877         return TYPE_TAG_NAME (parent_type);
18878       case DW_TAG_class_type:
18879       case DW_TAG_interface_type:
18880       case DW_TAG_structure_type:
18881       case DW_TAG_union_type:
18882       case DW_TAG_module:
18883         parent_type = read_type_die (parent, cu);
18884         if (TYPE_TAG_NAME (parent_type) != NULL)
18885           return TYPE_TAG_NAME (parent_type);
18886         else
18887           /* An anonymous structure is only allowed non-static data
18888              members; no typedefs, no member functions, et cetera.
18889              So it does not need a prefix.  */
18890           return "";
18891       case DW_TAG_compile_unit:
18892       case DW_TAG_partial_unit:
18893         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
18894         if (cu->language == language_cplus
18895             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
18896             && die->child != NULL
18897             && (die->tag == DW_TAG_class_type
18898                 || die->tag == DW_TAG_structure_type
18899                 || die->tag == DW_TAG_union_type))
18900           {
18901             char *name = guess_full_die_structure_name (die, cu);
18902             if (name != NULL)
18903               return name;
18904           }
18905         return "";
18906       case DW_TAG_enumeration_type:
18907         parent_type = read_type_die (parent, cu);
18908         if (TYPE_DECLARED_CLASS (parent_type))
18909           {
18910             if (TYPE_TAG_NAME (parent_type) != NULL)
18911               return TYPE_TAG_NAME (parent_type);
18912             return "";
18913           }
18914         /* Fall through.  */
18915       default:
18916         return determine_prefix (parent, cu);
18917       }
18918 }
18919
18920 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
18921    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
18922    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
18923    an obconcat, otherwise allocate storage for the result.  The CU argument is
18924    used to determine the language and hence, the appropriate separator.  */
18925
18926 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
18927
18928 static char *
18929 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
18930                  int physname, struct dwarf2_cu *cu)
18931 {
18932   const char *lead = "";
18933   const char *sep;
18934
18935   if (suffix == NULL || suffix[0] == '\0'
18936       || prefix == NULL || prefix[0] == '\0')
18937     sep = "";
18938   else if (cu->language == language_java)
18939     sep = ".";
18940   else if (cu->language == language_fortran && physname)
18941     {
18942       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
18943          DW_AT_MIPS_linkage_name is preferred and used instead.  */
18944
18945       lead = "__";
18946       sep = "_MOD_";
18947     }
18948   else
18949     sep = "::";
18950
18951   if (prefix == NULL)
18952     prefix = "";
18953   if (suffix == NULL)
18954     suffix = "";
18955
18956   if (obs == NULL)
18957     {
18958       char *retval
18959         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
18960
18961       strcpy (retval, lead);
18962       strcat (retval, prefix);
18963       strcat (retval, sep);
18964       strcat (retval, suffix);
18965       return retval;
18966     }
18967   else
18968     {
18969       /* We have an obstack.  */
18970       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
18971     }
18972 }
18973
18974 /* Return sibling of die, NULL if no sibling.  */
18975
18976 static struct die_info *
18977 sibling_die (struct die_info *die)
18978 {
18979   return die->sibling;
18980 }
18981
18982 /* Get name of a die, return NULL if not found.  */
18983
18984 static const char *
18985 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
18986                           struct obstack *obstack)
18987 {
18988   if (name && cu->language == language_cplus)
18989     {
18990       char *canon_name = cp_canonicalize_string (name);
18991
18992       if (canon_name != NULL)
18993         {
18994           if (strcmp (canon_name, name) != 0)
18995             name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
18996           xfree (canon_name);
18997         }
18998     }
18999
19000   return name;
19001 }
19002
19003 /* Get name of a die, return NULL if not found.  */
19004
19005 static const char *
19006 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
19007 {
19008   struct attribute *attr;
19009
19010   attr = dwarf2_attr (die, DW_AT_name, cu);
19011   if ((!attr || !DW_STRING (attr))
19012       && die->tag != DW_TAG_class_type
19013       && die->tag != DW_TAG_interface_type
19014       && die->tag != DW_TAG_structure_type
19015       && die->tag != DW_TAG_union_type)
19016     return NULL;
19017
19018   switch (die->tag)
19019     {
19020     case DW_TAG_compile_unit:
19021     case DW_TAG_partial_unit:
19022       /* Compilation units have a DW_AT_name that is a filename, not
19023          a source language identifier.  */
19024     case DW_TAG_enumeration_type:
19025     case DW_TAG_enumerator:
19026       /* These tags always have simple identifiers already; no need
19027          to canonicalize them.  */
19028       return DW_STRING (attr);
19029
19030     case DW_TAG_subprogram:
19031       /* Java constructors will all be named "<init>", so return
19032          the class name when we see this special case.  */
19033       if (cu->language == language_java
19034           && DW_STRING (attr) != NULL
19035           && strcmp (DW_STRING (attr), "<init>") == 0)
19036         {
19037           struct dwarf2_cu *spec_cu = cu;
19038           struct die_info *spec_die;
19039
19040           /* GCJ will output '<init>' for Java constructor names.
19041              For this special case, return the name of the parent class.  */
19042
19043           /* GCJ may output subprogram DIEs with AT_specification set.
19044              If so, use the name of the specified DIE.  */
19045           spec_die = die_specification (die, &spec_cu);
19046           if (spec_die != NULL)
19047             return dwarf2_name (spec_die, spec_cu);
19048
19049           do
19050             {
19051               die = die->parent;
19052               if (die->tag == DW_TAG_class_type)
19053                 return dwarf2_name (die, cu);
19054             }
19055           while (die->tag != DW_TAG_compile_unit
19056                  && die->tag != DW_TAG_partial_unit);
19057         }
19058       break;
19059
19060     case DW_TAG_class_type:
19061     case DW_TAG_interface_type:
19062     case DW_TAG_structure_type:
19063     case DW_TAG_union_type:
19064       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19065          structures or unions.  These were of the form "._%d" in GCC 4.1,
19066          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19067          and GCC 4.4.  We work around this problem by ignoring these.  */
19068       if (attr && DW_STRING (attr)
19069           && (strncmp (DW_STRING (attr), "._", 2) == 0
19070               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
19071         return NULL;
19072
19073       /* GCC might emit a nameless typedef that has a linkage name.  See
19074          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19075       if (!attr || DW_STRING (attr) == NULL)
19076         {
19077           char *demangled = NULL;
19078
19079           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19080           if (attr == NULL)
19081             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19082
19083           if (attr == NULL || DW_STRING (attr) == NULL)
19084             return NULL;
19085
19086           /* Avoid demangling DW_STRING (attr) the second time on a second
19087              call for the same DIE.  */
19088           if (!DW_STRING_IS_CANONICAL (attr))
19089             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
19090
19091           if (demangled)
19092             {
19093               char *base;
19094
19095               /* FIXME: we already did this for the partial symbol... */
19096               DW_STRING (attr)
19097                 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19098                                  demangled, strlen (demangled));
19099               DW_STRING_IS_CANONICAL (attr) = 1;
19100               xfree (demangled);
19101
19102               /* Strip any leading namespaces/classes, keep only the base name.
19103                  DW_AT_name for named DIEs does not contain the prefixes.  */
19104               base = strrchr (DW_STRING (attr), ':');
19105               if (base && base > DW_STRING (attr) && base[-1] == ':')
19106                 return &base[1];
19107               else
19108                 return DW_STRING (attr);
19109             }
19110         }
19111       break;
19112
19113     default:
19114       break;
19115     }
19116
19117   if (!DW_STRING_IS_CANONICAL (attr))
19118     {
19119       DW_STRING (attr)
19120         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
19121                                     &cu->objfile->per_bfd->storage_obstack);
19122       DW_STRING_IS_CANONICAL (attr) = 1;
19123     }
19124   return DW_STRING (attr);
19125 }
19126
19127 /* Return the die that this die in an extension of, or NULL if there
19128    is none.  *EXT_CU is the CU containing DIE on input, and the CU
19129    containing the return value on output.  */
19130
19131 static struct die_info *
19132 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
19133 {
19134   struct attribute *attr;
19135
19136   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
19137   if (attr == NULL)
19138     return NULL;
19139
19140   return follow_die_ref (die, attr, ext_cu);
19141 }
19142
19143 /* Convert a DIE tag into its string name.  */
19144
19145 static const char *
19146 dwarf_tag_name (unsigned tag)
19147 {
19148   const char *name = get_DW_TAG_name (tag);
19149
19150   if (name == NULL)
19151     return "DW_TAG_<unknown>";
19152
19153   return name;
19154 }
19155
19156 /* Convert a DWARF attribute code into its string name.  */
19157
19158 static const char *
19159 dwarf_attr_name (unsigned attr)
19160 {
19161   const char *name;
19162
19163 #ifdef MIPS /* collides with DW_AT_HP_block_index */
19164   if (attr == DW_AT_MIPS_fde)
19165     return "DW_AT_MIPS_fde";
19166 #else
19167   if (attr == DW_AT_HP_block_index)
19168     return "DW_AT_HP_block_index";
19169 #endif
19170
19171   name = get_DW_AT_name (attr);
19172
19173   if (name == NULL)
19174     return "DW_AT_<unknown>";
19175
19176   return name;
19177 }
19178
19179 /* Convert a DWARF value form code into its string name.  */
19180
19181 static const char *
19182 dwarf_form_name (unsigned form)
19183 {
19184   const char *name = get_DW_FORM_name (form);
19185
19186   if (name == NULL)
19187     return "DW_FORM_<unknown>";
19188
19189   return name;
19190 }
19191
19192 static char *
19193 dwarf_bool_name (unsigned mybool)
19194 {
19195   if (mybool)
19196     return "TRUE";
19197   else
19198     return "FALSE";
19199 }
19200
19201 /* Convert a DWARF type code into its string name.  */
19202
19203 static const char *
19204 dwarf_type_encoding_name (unsigned enc)
19205 {
19206   const char *name = get_DW_ATE_name (enc);
19207
19208   if (name == NULL)
19209     return "DW_ATE_<unknown>";
19210
19211   return name;
19212 }
19213
19214 static void
19215 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
19216 {
19217   unsigned int i;
19218
19219   print_spaces (indent, f);
19220   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
19221            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
19222
19223   if (die->parent != NULL)
19224     {
19225       print_spaces (indent, f);
19226       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
19227                           die->parent->offset.sect_off);
19228     }
19229
19230   print_spaces (indent, f);
19231   fprintf_unfiltered (f, "  has children: %s\n",
19232            dwarf_bool_name (die->child != NULL));
19233
19234   print_spaces (indent, f);
19235   fprintf_unfiltered (f, "  attributes:\n");
19236
19237   for (i = 0; i < die->num_attrs; ++i)
19238     {
19239       print_spaces (indent, f);
19240       fprintf_unfiltered (f, "    %s (%s) ",
19241                dwarf_attr_name (die->attrs[i].name),
19242                dwarf_form_name (die->attrs[i].form));
19243
19244       switch (die->attrs[i].form)
19245         {
19246         case DW_FORM_addr:
19247         case DW_FORM_GNU_addr_index:
19248           fprintf_unfiltered (f, "address: ");
19249           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
19250           break;
19251         case DW_FORM_block2:
19252         case DW_FORM_block4:
19253         case DW_FORM_block:
19254         case DW_FORM_block1:
19255           fprintf_unfiltered (f, "block: size %s",
19256                               pulongest (DW_BLOCK (&die->attrs[i])->size));
19257           break;
19258         case DW_FORM_exprloc:
19259           fprintf_unfiltered (f, "expression: size %s",
19260                               pulongest (DW_BLOCK (&die->attrs[i])->size));
19261           break;
19262         case DW_FORM_ref_addr:
19263           fprintf_unfiltered (f, "ref address: ");
19264           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19265           break;
19266         case DW_FORM_GNU_ref_alt:
19267           fprintf_unfiltered (f, "alt ref address: ");
19268           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19269           break;
19270         case DW_FORM_ref1:
19271         case DW_FORM_ref2:
19272         case DW_FORM_ref4:
19273         case DW_FORM_ref8:
19274         case DW_FORM_ref_udata:
19275           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
19276                               (long) (DW_UNSND (&die->attrs[i])));
19277           break;
19278         case DW_FORM_data1:
19279         case DW_FORM_data2:
19280         case DW_FORM_data4:
19281         case DW_FORM_data8:
19282         case DW_FORM_udata:
19283         case DW_FORM_sdata:
19284           fprintf_unfiltered (f, "constant: %s",
19285                               pulongest (DW_UNSND (&die->attrs[i])));
19286           break;
19287         case DW_FORM_sec_offset:
19288           fprintf_unfiltered (f, "section offset: %s",
19289                               pulongest (DW_UNSND (&die->attrs[i])));
19290           break;
19291         case DW_FORM_ref_sig8:
19292           fprintf_unfiltered (f, "signature: %s",
19293                               hex_string (DW_SIGNATURE (&die->attrs[i])));
19294           break;
19295         case DW_FORM_string:
19296         case DW_FORM_strp:
19297         case DW_FORM_GNU_str_index:
19298         case DW_FORM_GNU_strp_alt:
19299           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
19300                    DW_STRING (&die->attrs[i])
19301                    ? DW_STRING (&die->attrs[i]) : "",
19302                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
19303           break;
19304         case DW_FORM_flag:
19305           if (DW_UNSND (&die->attrs[i]))
19306             fprintf_unfiltered (f, "flag: TRUE");
19307           else
19308             fprintf_unfiltered (f, "flag: FALSE");
19309           break;
19310         case DW_FORM_flag_present:
19311           fprintf_unfiltered (f, "flag: TRUE");
19312           break;
19313         case DW_FORM_indirect:
19314           /* The reader will have reduced the indirect form to
19315              the "base form" so this form should not occur.  */
19316           fprintf_unfiltered (f, 
19317                               "unexpected attribute form: DW_FORM_indirect");
19318           break;
19319         default:
19320           fprintf_unfiltered (f, "unsupported attribute form: %d.",
19321                    die->attrs[i].form);
19322           break;
19323         }
19324       fprintf_unfiltered (f, "\n");
19325     }
19326 }
19327
19328 static void
19329 dump_die_for_error (struct die_info *die)
19330 {
19331   dump_die_shallow (gdb_stderr, 0, die);
19332 }
19333
19334 static void
19335 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19336 {
19337   int indent = level * 4;
19338
19339   gdb_assert (die != NULL);
19340
19341   if (level >= max_level)
19342     return;
19343
19344   dump_die_shallow (f, indent, die);
19345
19346   if (die->child != NULL)
19347     {
19348       print_spaces (indent, f);
19349       fprintf_unfiltered (f, "  Children:");
19350       if (level + 1 < max_level)
19351         {
19352           fprintf_unfiltered (f, "\n");
19353           dump_die_1 (f, level + 1, max_level, die->child);
19354         }
19355       else
19356         {
19357           fprintf_unfiltered (f,
19358                               " [not printed, max nesting level reached]\n");
19359         }
19360     }
19361
19362   if (die->sibling != NULL && level > 0)
19363     {
19364       dump_die_1 (f, level, max_level, die->sibling);
19365     }
19366 }
19367
19368 /* This is called from the pdie macro in gdbinit.in.
19369    It's not static so gcc will keep a copy callable from gdb.  */
19370
19371 void
19372 dump_die (struct die_info *die, int max_level)
19373 {
19374   dump_die_1 (gdb_stdlog, 0, max_level, die);
19375 }
19376
19377 static void
19378 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
19379 {
19380   void **slot;
19381
19382   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19383                                    INSERT);
19384
19385   *slot = die;
19386 }
19387
19388 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
19389    required kind.  */
19390
19391 static sect_offset
19392 dwarf2_get_ref_die_offset (const struct attribute *attr)
19393 {
19394   sect_offset retval = { DW_UNSND (attr) };
19395
19396   if (attr_form_is_ref (attr))
19397     return retval;
19398
19399   retval.sect_off = 0;
19400   complaint (&symfile_complaints,
19401              _("unsupported die ref attribute form: '%s'"),
19402              dwarf_form_name (attr->form));
19403   return retval;
19404 }
19405
19406 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
19407  * the value held by the attribute is not constant.  */
19408
19409 static LONGEST
19410 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
19411 {
19412   if (attr->form == DW_FORM_sdata)
19413     return DW_SND (attr);
19414   else if (attr->form == DW_FORM_udata
19415            || attr->form == DW_FORM_data1
19416            || attr->form == DW_FORM_data2
19417            || attr->form == DW_FORM_data4
19418            || attr->form == DW_FORM_data8)
19419     return DW_UNSND (attr);
19420   else
19421     {
19422       complaint (&symfile_complaints,
19423                  _("Attribute value is not a constant (%s)"),
19424                  dwarf_form_name (attr->form));
19425       return default_value;
19426     }
19427 }
19428
19429 /* Follow reference or signature attribute ATTR of SRC_DIE.
19430    On entry *REF_CU is the CU of SRC_DIE.
19431    On exit *REF_CU is the CU of the result.  */
19432
19433 static struct die_info *
19434 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
19435                        struct dwarf2_cu **ref_cu)
19436 {
19437   struct die_info *die;
19438
19439   if (attr_form_is_ref (attr))
19440     die = follow_die_ref (src_die, attr, ref_cu);
19441   else if (attr->form == DW_FORM_ref_sig8)
19442     die = follow_die_sig (src_die, attr, ref_cu);
19443   else
19444     {
19445       dump_die_for_error (src_die);
19446       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
19447              objfile_name ((*ref_cu)->objfile));
19448     }
19449
19450   return die;
19451 }
19452
19453 /* Follow reference OFFSET.
19454    On entry *REF_CU is the CU of the source die referencing OFFSET.
19455    On exit *REF_CU is the CU of the result.
19456    Returns NULL if OFFSET is invalid.  */
19457
19458 static struct die_info *
19459 follow_die_offset (sect_offset offset, int offset_in_dwz,
19460                    struct dwarf2_cu **ref_cu)
19461 {
19462   struct die_info temp_die;
19463   struct dwarf2_cu *target_cu, *cu = *ref_cu;
19464
19465   gdb_assert (cu->per_cu != NULL);
19466
19467   target_cu = cu;
19468
19469   if (cu->per_cu->is_debug_types)
19470     {
19471       /* .debug_types CUs cannot reference anything outside their CU.
19472          If they need to, they have to reference a signatured type via
19473          DW_FORM_ref_sig8.  */
19474       if (! offset_in_cu_p (&cu->header, offset))
19475         return NULL;
19476     }
19477   else if (offset_in_dwz != cu->per_cu->is_dwz
19478            || ! offset_in_cu_p (&cu->header, offset))
19479     {
19480       struct dwarf2_per_cu_data *per_cu;
19481
19482       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19483                                                  cu->objfile);
19484
19485       /* If necessary, add it to the queue and load its DIEs.  */
19486       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19487         load_full_comp_unit (per_cu, cu->language);
19488
19489       target_cu = per_cu->cu;
19490     }
19491   else if (cu->dies == NULL)
19492     {
19493       /* We're loading full DIEs during partial symbol reading.  */
19494       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
19495       load_full_comp_unit (cu->per_cu, language_minimal);
19496     }
19497
19498   *ref_cu = target_cu;
19499   temp_die.offset = offset;
19500   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
19501 }
19502
19503 /* Follow reference attribute ATTR of SRC_DIE.
19504    On entry *REF_CU is the CU of SRC_DIE.
19505    On exit *REF_CU is the CU of the result.  */
19506
19507 static struct die_info *
19508 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
19509                 struct dwarf2_cu **ref_cu)
19510 {
19511   sect_offset offset = dwarf2_get_ref_die_offset (attr);
19512   struct dwarf2_cu *cu = *ref_cu;
19513   struct die_info *die;
19514
19515   die = follow_die_offset (offset,
19516                            (attr->form == DW_FORM_GNU_ref_alt
19517                             || cu->per_cu->is_dwz),
19518                            ref_cu);
19519   if (!die)
19520     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19521            "at 0x%x [in module %s]"),
19522            offset.sect_off, src_die->offset.sect_off,
19523            objfile_name (cu->objfile));
19524
19525   return die;
19526 }
19527
19528 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19529    Returned value is intended for DW_OP_call*.  Returned
19530    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
19531
19532 struct dwarf2_locexpr_baton
19533 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19534                                struct dwarf2_per_cu_data *per_cu,
19535                                CORE_ADDR (*get_frame_pc) (void *baton),
19536                                void *baton)
19537 {
19538   struct dwarf2_cu *cu;
19539   struct die_info *die;
19540   struct attribute *attr;
19541   struct dwarf2_locexpr_baton retval;
19542
19543   dw2_setup (per_cu->objfile);
19544
19545   if (per_cu->cu == NULL)
19546     load_cu (per_cu);
19547   cu = per_cu->cu;
19548
19549   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19550   if (!die)
19551     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19552            offset.sect_off, objfile_name (per_cu->objfile));
19553
19554   attr = dwarf2_attr (die, DW_AT_location, cu);
19555   if (!attr)
19556     {
19557       /* DWARF: "If there is no such attribute, then there is no effect.".
19558          DATA is ignored if SIZE is 0.  */
19559
19560       retval.data = NULL;
19561       retval.size = 0;
19562     }
19563   else if (attr_form_is_section_offset (attr))
19564     {
19565       struct dwarf2_loclist_baton loclist_baton;
19566       CORE_ADDR pc = (*get_frame_pc) (baton);
19567       size_t size;
19568
19569       fill_in_loclist_baton (cu, &loclist_baton, attr);
19570
19571       retval.data = dwarf2_find_location_expression (&loclist_baton,
19572                                                      &size, pc);
19573       retval.size = size;
19574     }
19575   else
19576     {
19577       if (!attr_form_is_block (attr))
19578         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
19579                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
19580                offset.sect_off, objfile_name (per_cu->objfile));
19581
19582       retval.data = DW_BLOCK (attr)->data;
19583       retval.size = DW_BLOCK (attr)->size;
19584     }
19585   retval.per_cu = cu->per_cu;
19586
19587   age_cached_comp_units ();
19588
19589   return retval;
19590 }
19591
19592 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
19593    offset.  */
19594
19595 struct dwarf2_locexpr_baton
19596 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
19597                              struct dwarf2_per_cu_data *per_cu,
19598                              CORE_ADDR (*get_frame_pc) (void *baton),
19599                              void *baton)
19600 {
19601   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
19602
19603   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
19604 }
19605
19606 /* Write a constant of a given type as target-ordered bytes into
19607    OBSTACK.  */
19608
19609 static const gdb_byte *
19610 write_constant_as_bytes (struct obstack *obstack,
19611                          enum bfd_endian byte_order,
19612                          struct type *type,
19613                          ULONGEST value,
19614                          LONGEST *len)
19615 {
19616   gdb_byte *result;
19617
19618   *len = TYPE_LENGTH (type);
19619   result = obstack_alloc (obstack, *len);
19620   store_unsigned_integer (result, *len, byte_order, value);
19621
19622   return result;
19623 }
19624
19625 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
19626    pointer to the constant bytes and set LEN to the length of the
19627    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
19628    does not have a DW_AT_const_value, return NULL.  */
19629
19630 const gdb_byte *
19631 dwarf2_fetch_constant_bytes (sect_offset offset,
19632                              struct dwarf2_per_cu_data *per_cu,
19633                              struct obstack *obstack,
19634                              LONGEST *len)
19635 {
19636   struct dwarf2_cu *cu;
19637   struct die_info *die;
19638   struct attribute *attr;
19639   const gdb_byte *result = NULL;
19640   struct type *type;
19641   LONGEST value;
19642   enum bfd_endian byte_order;
19643
19644   dw2_setup (per_cu->objfile);
19645
19646   if (per_cu->cu == NULL)
19647     load_cu (per_cu);
19648   cu = per_cu->cu;
19649
19650   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19651   if (!die)
19652     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19653            offset.sect_off, objfile_name (per_cu->objfile));
19654
19655
19656   attr = dwarf2_attr (die, DW_AT_const_value, cu);
19657   if (attr == NULL)
19658     return NULL;
19659
19660   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
19661                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19662
19663   switch (attr->form)
19664     {
19665     case DW_FORM_addr:
19666     case DW_FORM_GNU_addr_index:
19667       {
19668         gdb_byte *tem;
19669
19670         *len = cu->header.addr_size;
19671         tem = obstack_alloc (obstack, *len);
19672         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
19673         result = tem;
19674       }
19675       break;
19676     case DW_FORM_string:
19677     case DW_FORM_strp:
19678     case DW_FORM_GNU_str_index:
19679     case DW_FORM_GNU_strp_alt:
19680       /* DW_STRING is already allocated on the objfile obstack, point
19681          directly to it.  */
19682       result = (const gdb_byte *) DW_STRING (attr);
19683       *len = strlen (DW_STRING (attr));
19684       break;
19685     case DW_FORM_block1:
19686     case DW_FORM_block2:
19687     case DW_FORM_block4:
19688     case DW_FORM_block:
19689     case DW_FORM_exprloc:
19690       result = DW_BLOCK (attr)->data;
19691       *len = DW_BLOCK (attr)->size;
19692       break;
19693
19694       /* The DW_AT_const_value attributes are supposed to carry the
19695          symbol's value "represented as it would be on the target
19696          architecture."  By the time we get here, it's already been
19697          converted to host endianness, so we just need to sign- or
19698          zero-extend it as appropriate.  */
19699     case DW_FORM_data1:
19700       type = die_type (die, cu);
19701       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
19702       if (result == NULL)
19703         result = write_constant_as_bytes (obstack, byte_order,
19704                                           type, value, len);
19705       break;
19706     case DW_FORM_data2:
19707       type = die_type (die, cu);
19708       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
19709       if (result == NULL)
19710         result = write_constant_as_bytes (obstack, byte_order,
19711                                           type, value, len);
19712       break;
19713     case DW_FORM_data4:
19714       type = die_type (die, cu);
19715       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
19716       if (result == NULL)
19717         result = write_constant_as_bytes (obstack, byte_order,
19718                                           type, value, len);
19719       break;
19720     case DW_FORM_data8:
19721       type = die_type (die, cu);
19722       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
19723       if (result == NULL)
19724         result = write_constant_as_bytes (obstack, byte_order,
19725                                           type, value, len);
19726       break;
19727
19728     case DW_FORM_sdata:
19729       type = die_type (die, cu);
19730       result = write_constant_as_bytes (obstack, byte_order,
19731                                         type, DW_SND (attr), len);
19732       break;
19733
19734     case DW_FORM_udata:
19735       type = die_type (die, cu);
19736       result = write_constant_as_bytes (obstack, byte_order,
19737                                         type, DW_UNSND (attr), len);
19738       break;
19739
19740     default:
19741       complaint (&symfile_complaints,
19742                  _("unsupported const value attribute form: '%s'"),
19743                  dwarf_form_name (attr->form));
19744       break;
19745     }
19746
19747   return result;
19748 }
19749
19750 /* Return the type of the DIE at DIE_OFFSET in the CU named by
19751    PER_CU.  */
19752
19753 struct type *
19754 dwarf2_get_die_type (cu_offset die_offset,
19755                      struct dwarf2_per_cu_data *per_cu)
19756 {
19757   sect_offset die_offset_sect;
19758
19759   dw2_setup (per_cu->objfile);
19760
19761   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
19762   return get_die_type_at_offset (die_offset_sect, per_cu);
19763 }
19764
19765 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
19766    On entry *REF_CU is the CU of SRC_DIE.
19767    On exit *REF_CU is the CU of the result.
19768    Returns NULL if the referenced DIE isn't found.  */
19769
19770 static struct die_info *
19771 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
19772                   struct dwarf2_cu **ref_cu)
19773 {
19774   struct objfile *objfile = (*ref_cu)->objfile;
19775   struct die_info temp_die;
19776   struct dwarf2_cu *sig_cu;
19777   struct die_info *die;
19778
19779   /* While it might be nice to assert sig_type->type == NULL here,
19780      we can get here for DW_AT_imported_declaration where we need
19781      the DIE not the type.  */
19782
19783   /* If necessary, add it to the queue and load its DIEs.  */
19784
19785   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
19786     read_signatured_type (sig_type);
19787
19788   sig_cu = sig_type->per_cu.cu;
19789   gdb_assert (sig_cu != NULL);
19790   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
19791   temp_die.offset = sig_type->type_offset_in_section;
19792   die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
19793                              temp_die.offset.sect_off);
19794   if (die)
19795     {
19796       /* For .gdb_index version 7 keep track of included TUs.
19797          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
19798       if (dwarf2_per_objfile->index_table != NULL
19799           && dwarf2_per_objfile->index_table->version <= 7)
19800         {
19801           VEC_safe_push (dwarf2_per_cu_ptr,
19802                          (*ref_cu)->per_cu->imported_symtabs,
19803                          sig_cu->per_cu);
19804         }
19805
19806       *ref_cu = sig_cu;
19807       return die;
19808     }
19809
19810   return NULL;
19811 }
19812
19813 /* Follow signatured type referenced by ATTR in SRC_DIE.
19814    On entry *REF_CU is the CU of SRC_DIE.
19815    On exit *REF_CU is the CU of the result.
19816    The result is the DIE of the type.
19817    If the referenced type cannot be found an error is thrown.  */
19818
19819 static struct die_info *
19820 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
19821                 struct dwarf2_cu **ref_cu)
19822 {
19823   ULONGEST signature = DW_SIGNATURE (attr);
19824   struct signatured_type *sig_type;
19825   struct die_info *die;
19826
19827   gdb_assert (attr->form == DW_FORM_ref_sig8);
19828
19829   sig_type = lookup_signatured_type (*ref_cu, signature);
19830   /* sig_type will be NULL if the signatured type is missing from
19831      the debug info.  */
19832   if (sig_type == NULL)
19833     {
19834       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
19835                " from DIE at 0x%x [in module %s]"),
19836              hex_string (signature), src_die->offset.sect_off,
19837              objfile_name ((*ref_cu)->objfile));
19838     }
19839
19840   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
19841   if (die == NULL)
19842     {
19843       dump_die_for_error (src_die);
19844       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
19845                " from DIE at 0x%x [in module %s]"),
19846              hex_string (signature), src_die->offset.sect_off,
19847              objfile_name ((*ref_cu)->objfile));
19848     }
19849
19850   return die;
19851 }
19852
19853 /* Get the type specified by SIGNATURE referenced in DIE/CU,
19854    reading in and processing the type unit if necessary.  */
19855
19856 static struct type *
19857 get_signatured_type (struct die_info *die, ULONGEST signature,
19858                      struct dwarf2_cu *cu)
19859 {
19860   struct signatured_type *sig_type;
19861   struct dwarf2_cu *type_cu;
19862   struct die_info *type_die;
19863   struct type *type;
19864
19865   sig_type = lookup_signatured_type (cu, signature);
19866   /* sig_type will be NULL if the signatured type is missing from
19867      the debug info.  */
19868   if (sig_type == NULL)
19869     {
19870       complaint (&symfile_complaints,
19871                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
19872                    " from DIE at 0x%x [in module %s]"),
19873                  hex_string (signature), die->offset.sect_off,
19874                  objfile_name (dwarf2_per_objfile->objfile));
19875       return build_error_marker_type (cu, die);
19876     }
19877
19878   /* If we already know the type we're done.  */
19879   if (sig_type->type != NULL)
19880     return sig_type->type;
19881
19882   type_cu = cu;
19883   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
19884   if (type_die != NULL)
19885     {
19886       /* N.B. We need to call get_die_type to ensure only one type for this DIE
19887          is created.  This is important, for example, because for c++ classes
19888          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
19889       type = read_type_die (type_die, type_cu);
19890       if (type == NULL)
19891         {
19892           complaint (&symfile_complaints,
19893                      _("Dwarf Error: Cannot build signatured type %s"
19894                        " referenced from DIE at 0x%x [in module %s]"),
19895                      hex_string (signature), die->offset.sect_off,
19896                      objfile_name (dwarf2_per_objfile->objfile));
19897           type = build_error_marker_type (cu, die);
19898         }
19899     }
19900   else
19901     {
19902       complaint (&symfile_complaints,
19903                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
19904                    " from DIE at 0x%x [in module %s]"),
19905                  hex_string (signature), die->offset.sect_off,
19906                  objfile_name (dwarf2_per_objfile->objfile));
19907       type = build_error_marker_type (cu, die);
19908     }
19909   sig_type->type = type;
19910
19911   return type;
19912 }
19913
19914 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
19915    reading in and processing the type unit if necessary.  */
19916
19917 static struct type *
19918 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
19919                           struct dwarf2_cu *cu) /* ARI: editCase function */
19920 {
19921   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
19922   if (attr_form_is_ref (attr))
19923     {
19924       struct dwarf2_cu *type_cu = cu;
19925       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
19926
19927       return read_type_die (type_die, type_cu);
19928     }
19929   else if (attr->form == DW_FORM_ref_sig8)
19930     {
19931       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
19932     }
19933   else
19934     {
19935       complaint (&symfile_complaints,
19936                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
19937                    " at 0x%x [in module %s]"),
19938                  dwarf_form_name (attr->form), die->offset.sect_off,
19939                  objfile_name (dwarf2_per_objfile->objfile));
19940       return build_error_marker_type (cu, die);
19941     }
19942 }
19943
19944 /* Load the DIEs associated with type unit PER_CU into memory.  */
19945
19946 static void
19947 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
19948 {
19949   struct signatured_type *sig_type;
19950
19951   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
19952   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
19953
19954   /* We have the per_cu, but we need the signatured_type.
19955      Fortunately this is an easy translation.  */
19956   gdb_assert (per_cu->is_debug_types);
19957   sig_type = (struct signatured_type *) per_cu;
19958
19959   gdb_assert (per_cu->cu == NULL);
19960
19961   read_signatured_type (sig_type);
19962
19963   gdb_assert (per_cu->cu != NULL);
19964 }
19965
19966 /* die_reader_func for read_signatured_type.
19967    This is identical to load_full_comp_unit_reader,
19968    but is kept separate for now.  */
19969
19970 static void
19971 read_signatured_type_reader (const struct die_reader_specs *reader,
19972                              const gdb_byte *info_ptr,
19973                              struct die_info *comp_unit_die,
19974                              int has_children,
19975                              void *data)
19976 {
19977   struct dwarf2_cu *cu = reader->cu;
19978
19979   gdb_assert (cu->die_hash == NULL);
19980   cu->die_hash =
19981     htab_create_alloc_ex (cu->header.length / 12,
19982                           die_hash,
19983                           die_eq,
19984                           NULL,
19985                           &cu->comp_unit_obstack,
19986                           hashtab_obstack_allocate,
19987                           dummy_obstack_deallocate);
19988
19989   if (has_children)
19990     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
19991                                                   &info_ptr, comp_unit_die);
19992   cu->dies = comp_unit_die;
19993   /* comp_unit_die is not stored in die_hash, no need.  */
19994
19995   /* We try not to read any attributes in this function, because not
19996      all CUs needed for references have been loaded yet, and symbol
19997      table processing isn't initialized.  But we have to set the CU language,
19998      or we won't be able to build types correctly.
19999      Similarly, if we do not read the producer, we can not apply
20000      producer-specific interpretation.  */
20001   prepare_one_comp_unit (cu, cu->dies, language_minimal);
20002 }
20003
20004 /* Read in a signatured type and build its CU and DIEs.
20005    If the type is a stub for the real type in a DWO file,
20006    read in the real type from the DWO file as well.  */
20007
20008 static void
20009 read_signatured_type (struct signatured_type *sig_type)
20010 {
20011   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
20012
20013   gdb_assert (per_cu->is_debug_types);
20014   gdb_assert (per_cu->cu == NULL);
20015
20016   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20017                            read_signatured_type_reader, NULL);
20018   sig_type->per_cu.tu_read = 1;
20019 }
20020
20021 /* Decode simple location descriptions.
20022    Given a pointer to a dwarf block that defines a location, compute
20023    the location and return the value.
20024
20025    NOTE drow/2003-11-18: This function is called in two situations
20026    now: for the address of static or global variables (partial symbols
20027    only) and for offsets into structures which are expected to be
20028    (more or less) constant.  The partial symbol case should go away,
20029    and only the constant case should remain.  That will let this
20030    function complain more accurately.  A few special modes are allowed
20031    without complaint for global variables (for instance, global
20032    register values and thread-local values).
20033
20034    A location description containing no operations indicates that the
20035    object is optimized out.  The return value is 0 for that case.
20036    FIXME drow/2003-11-16: No callers check for this case any more; soon all
20037    callers will only want a very basic result and this can become a
20038    complaint.
20039
20040    Note that stack[0] is unused except as a default error return.  */
20041
20042 static CORE_ADDR
20043 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
20044 {
20045   struct objfile *objfile = cu->objfile;
20046   size_t i;
20047   size_t size = blk->size;
20048   const gdb_byte *data = blk->data;
20049   CORE_ADDR stack[64];
20050   int stacki;
20051   unsigned int bytes_read, unsnd;
20052   gdb_byte op;
20053
20054   i = 0;
20055   stacki = 0;
20056   stack[stacki] = 0;
20057   stack[++stacki] = 0;
20058
20059   while (i < size)
20060     {
20061       op = data[i++];
20062       switch (op)
20063         {
20064         case DW_OP_lit0:
20065         case DW_OP_lit1:
20066         case DW_OP_lit2:
20067         case DW_OP_lit3:
20068         case DW_OP_lit4:
20069         case DW_OP_lit5:
20070         case DW_OP_lit6:
20071         case DW_OP_lit7:
20072         case DW_OP_lit8:
20073         case DW_OP_lit9:
20074         case DW_OP_lit10:
20075         case DW_OP_lit11:
20076         case DW_OP_lit12:
20077         case DW_OP_lit13:
20078         case DW_OP_lit14:
20079         case DW_OP_lit15:
20080         case DW_OP_lit16:
20081         case DW_OP_lit17:
20082         case DW_OP_lit18:
20083         case DW_OP_lit19:
20084         case DW_OP_lit20:
20085         case DW_OP_lit21:
20086         case DW_OP_lit22:
20087         case DW_OP_lit23:
20088         case DW_OP_lit24:
20089         case DW_OP_lit25:
20090         case DW_OP_lit26:
20091         case DW_OP_lit27:
20092         case DW_OP_lit28:
20093         case DW_OP_lit29:
20094         case DW_OP_lit30:
20095         case DW_OP_lit31:
20096           stack[++stacki] = op - DW_OP_lit0;
20097           break;
20098
20099         case DW_OP_reg0:
20100         case DW_OP_reg1:
20101         case DW_OP_reg2:
20102         case DW_OP_reg3:
20103         case DW_OP_reg4:
20104         case DW_OP_reg5:
20105         case DW_OP_reg6:
20106         case DW_OP_reg7:
20107         case DW_OP_reg8:
20108         case DW_OP_reg9:
20109         case DW_OP_reg10:
20110         case DW_OP_reg11:
20111         case DW_OP_reg12:
20112         case DW_OP_reg13:
20113         case DW_OP_reg14:
20114         case DW_OP_reg15:
20115         case DW_OP_reg16:
20116         case DW_OP_reg17:
20117         case DW_OP_reg18:
20118         case DW_OP_reg19:
20119         case DW_OP_reg20:
20120         case DW_OP_reg21:
20121         case DW_OP_reg22:
20122         case DW_OP_reg23:
20123         case DW_OP_reg24:
20124         case DW_OP_reg25:
20125         case DW_OP_reg26:
20126         case DW_OP_reg27:
20127         case DW_OP_reg28:
20128         case DW_OP_reg29:
20129         case DW_OP_reg30:
20130         case DW_OP_reg31:
20131           stack[++stacki] = op - DW_OP_reg0;
20132           if (i < size)
20133             dwarf2_complex_location_expr_complaint ();
20134           break;
20135
20136         case DW_OP_regx:
20137           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20138           i += bytes_read;
20139           stack[++stacki] = unsnd;
20140           if (i < size)
20141             dwarf2_complex_location_expr_complaint ();
20142           break;
20143
20144         case DW_OP_addr:
20145           stack[++stacki] = read_address (objfile->obfd, &data[i],
20146                                           cu, &bytes_read);
20147           i += bytes_read;
20148           break;
20149
20150         case DW_OP_const1u:
20151           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20152           i += 1;
20153           break;
20154
20155         case DW_OP_const1s:
20156           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20157           i += 1;
20158           break;
20159
20160         case DW_OP_const2u:
20161           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20162           i += 2;
20163           break;
20164
20165         case DW_OP_const2s:
20166           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20167           i += 2;
20168           break;
20169
20170         case DW_OP_const4u:
20171           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20172           i += 4;
20173           break;
20174
20175         case DW_OP_const4s:
20176           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20177           i += 4;
20178           break;
20179
20180         case DW_OP_const8u:
20181           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20182           i += 8;
20183           break;
20184
20185         case DW_OP_constu:
20186           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20187                                                   &bytes_read);
20188           i += bytes_read;
20189           break;
20190
20191         case DW_OP_consts:
20192           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20193           i += bytes_read;
20194           break;
20195
20196         case DW_OP_dup:
20197           stack[stacki + 1] = stack[stacki];
20198           stacki++;
20199           break;
20200
20201         case DW_OP_plus:
20202           stack[stacki - 1] += stack[stacki];
20203           stacki--;
20204           break;
20205
20206         case DW_OP_plus_uconst:
20207           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20208                                                  &bytes_read);
20209           i += bytes_read;
20210           break;
20211
20212         case DW_OP_minus:
20213           stack[stacki - 1] -= stack[stacki];
20214           stacki--;
20215           break;
20216
20217         case DW_OP_deref:
20218           /* If we're not the last op, then we definitely can't encode
20219              this using GDB's address_class enum.  This is valid for partial
20220              global symbols, although the variable's address will be bogus
20221              in the psymtab.  */
20222           if (i < size)
20223             dwarf2_complex_location_expr_complaint ();
20224           break;
20225
20226         case DW_OP_GNU_push_tls_address:
20227           /* The top of the stack has the offset from the beginning
20228              of the thread control block at which the variable is located.  */
20229           /* Nothing should follow this operator, so the top of stack would
20230              be returned.  */
20231           /* This is valid for partial global symbols, but the variable's
20232              address will be bogus in the psymtab.  Make it always at least
20233              non-zero to not look as a variable garbage collected by linker
20234              which have DW_OP_addr 0.  */
20235           if (i < size)
20236             dwarf2_complex_location_expr_complaint ();
20237           stack[stacki]++;
20238           break;
20239
20240         case DW_OP_GNU_uninit:
20241           break;
20242
20243         case DW_OP_GNU_addr_index:
20244         case DW_OP_GNU_const_index:
20245           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20246                                                          &bytes_read);
20247           i += bytes_read;
20248           break;
20249
20250         default:
20251           {
20252             const char *name = get_DW_OP_name (op);
20253
20254             if (name)
20255               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20256                          name);
20257             else
20258               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20259                          op);
20260           }
20261
20262           return (stack[stacki]);
20263         }
20264
20265       /* Enforce maximum stack depth of SIZE-1 to avoid writing
20266          outside of the allocated space.  Also enforce minimum>0.  */
20267       if (stacki >= ARRAY_SIZE (stack) - 1)
20268         {
20269           complaint (&symfile_complaints,
20270                      _("location description stack overflow"));
20271           return 0;
20272         }
20273
20274       if (stacki <= 0)
20275         {
20276           complaint (&symfile_complaints,
20277                      _("location description stack underflow"));
20278           return 0;
20279         }
20280     }
20281   return (stack[stacki]);
20282 }
20283
20284 /* memory allocation interface */
20285
20286 static struct dwarf_block *
20287 dwarf_alloc_block (struct dwarf2_cu *cu)
20288 {
20289   struct dwarf_block *blk;
20290
20291   blk = (struct dwarf_block *)
20292     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
20293   return (blk);
20294 }
20295
20296 static struct die_info *
20297 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
20298 {
20299   struct die_info *die;
20300   size_t size = sizeof (struct die_info);
20301
20302   if (num_attrs > 1)
20303     size += (num_attrs - 1) * sizeof (struct attribute);
20304
20305   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
20306   memset (die, 0, sizeof (struct die_info));
20307   return (die);
20308 }
20309
20310 \f
20311 /* Macro support.  */
20312
20313 /* Return file name relative to the compilation directory of file number I in
20314    *LH's file name table.  The result is allocated using xmalloc; the caller is
20315    responsible for freeing it.  */
20316
20317 static char *
20318 file_file_name (int file, struct line_header *lh)
20319 {
20320   /* Is the file number a valid index into the line header's file name
20321      table?  Remember that file numbers start with one, not zero.  */
20322   if (1 <= file && file <= lh->num_file_names)
20323     {
20324       struct file_entry *fe = &lh->file_names[file - 1];
20325
20326       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
20327         return xstrdup (fe->name);
20328       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20329                      fe->name, NULL);
20330     }
20331   else
20332     {
20333       /* The compiler produced a bogus file number.  We can at least
20334          record the macro definitions made in the file, even if we
20335          won't be able to find the file by name.  */
20336       char fake_name[80];
20337
20338       xsnprintf (fake_name, sizeof (fake_name),
20339                  "<bad macro file number %d>", file);
20340
20341       complaint (&symfile_complaints,
20342                  _("bad file number in macro information (%d)"),
20343                  file);
20344
20345       return xstrdup (fake_name);
20346     }
20347 }
20348
20349 /* Return the full name of file number I in *LH's file name table.
20350    Use COMP_DIR as the name of the current directory of the
20351    compilation.  The result is allocated using xmalloc; the caller is
20352    responsible for freeing it.  */
20353 static char *
20354 file_full_name (int file, struct line_header *lh, const char *comp_dir)
20355 {
20356   /* Is the file number a valid index into the line header's file name
20357      table?  Remember that file numbers start with one, not zero.  */
20358   if (1 <= file && file <= lh->num_file_names)
20359     {
20360       char *relative = file_file_name (file, lh);
20361
20362       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20363         return relative;
20364       return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20365     }
20366   else
20367     return file_file_name (file, lh);
20368 }
20369
20370
20371 static struct macro_source_file *
20372 macro_start_file (int file, int line,
20373                   struct macro_source_file *current_file,
20374                   const char *comp_dir,
20375                   struct line_header *lh, struct objfile *objfile)
20376 {
20377   /* File name relative to the compilation directory of this source file.  */
20378   char *file_name = file_file_name (file, lh);
20379
20380   if (! current_file)
20381     {
20382       /* Note: We don't create a macro table for this compilation unit
20383          at all until we actually get a filename.  */
20384       struct macro_table *macro_table = get_macro_table (objfile, comp_dir);
20385
20386       /* If we have no current file, then this must be the start_file
20387          directive for the compilation unit's main source file.  */
20388       current_file = macro_set_main (macro_table, file_name);
20389       macro_define_special (macro_table);
20390     }
20391   else
20392     current_file = macro_include (current_file, line, file_name);
20393
20394   xfree (file_name);
20395
20396   return current_file;
20397 }
20398
20399
20400 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20401    followed by a null byte.  */
20402 static char *
20403 copy_string (const char *buf, int len)
20404 {
20405   char *s = xmalloc (len + 1);
20406
20407   memcpy (s, buf, len);
20408   s[len] = '\0';
20409   return s;
20410 }
20411
20412
20413 static const char *
20414 consume_improper_spaces (const char *p, const char *body)
20415 {
20416   if (*p == ' ')
20417     {
20418       complaint (&symfile_complaints,
20419                  _("macro definition contains spaces "
20420                    "in formal argument list:\n`%s'"),
20421                  body);
20422
20423       while (*p == ' ')
20424         p++;
20425     }
20426
20427   return p;
20428 }
20429
20430
20431 static void
20432 parse_macro_definition (struct macro_source_file *file, int line,
20433                         const char *body)
20434 {
20435   const char *p;
20436
20437   /* The body string takes one of two forms.  For object-like macro
20438      definitions, it should be:
20439
20440         <macro name> " " <definition>
20441
20442      For function-like macro definitions, it should be:
20443
20444         <macro name> "() " <definition>
20445      or
20446         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20447
20448      Spaces may appear only where explicitly indicated, and in the
20449      <definition>.
20450
20451      The Dwarf 2 spec says that an object-like macro's name is always
20452      followed by a space, but versions of GCC around March 2002 omit
20453      the space when the macro's definition is the empty string.
20454
20455      The Dwarf 2 spec says that there should be no spaces between the
20456      formal arguments in a function-like macro's formal argument list,
20457      but versions of GCC around March 2002 include spaces after the
20458      commas.  */
20459
20460
20461   /* Find the extent of the macro name.  The macro name is terminated
20462      by either a space or null character (for an object-like macro) or
20463      an opening paren (for a function-like macro).  */
20464   for (p = body; *p; p++)
20465     if (*p == ' ' || *p == '(')
20466       break;
20467
20468   if (*p == ' ' || *p == '\0')
20469     {
20470       /* It's an object-like macro.  */
20471       int name_len = p - body;
20472       char *name = copy_string (body, name_len);
20473       const char *replacement;
20474
20475       if (*p == ' ')
20476         replacement = body + name_len + 1;
20477       else
20478         {
20479           dwarf2_macro_malformed_definition_complaint (body);
20480           replacement = body + name_len;
20481         }
20482
20483       macro_define_object (file, line, name, replacement);
20484
20485       xfree (name);
20486     }
20487   else if (*p == '(')
20488     {
20489       /* It's a function-like macro.  */
20490       char *name = copy_string (body, p - body);
20491       int argc = 0;
20492       int argv_size = 1;
20493       char **argv = xmalloc (argv_size * sizeof (*argv));
20494
20495       p++;
20496
20497       p = consume_improper_spaces (p, body);
20498
20499       /* Parse the formal argument list.  */
20500       while (*p && *p != ')')
20501         {
20502           /* Find the extent of the current argument name.  */
20503           const char *arg_start = p;
20504
20505           while (*p && *p != ',' && *p != ')' && *p != ' ')
20506             p++;
20507
20508           if (! *p || p == arg_start)
20509             dwarf2_macro_malformed_definition_complaint (body);
20510           else
20511             {
20512               /* Make sure argv has room for the new argument.  */
20513               if (argc >= argv_size)
20514                 {
20515                   argv_size *= 2;
20516                   argv = xrealloc (argv, argv_size * sizeof (*argv));
20517                 }
20518
20519               argv[argc++] = copy_string (arg_start, p - arg_start);
20520             }
20521
20522           p = consume_improper_spaces (p, body);
20523
20524           /* Consume the comma, if present.  */
20525           if (*p == ',')
20526             {
20527               p++;
20528
20529               p = consume_improper_spaces (p, body);
20530             }
20531         }
20532
20533       if (*p == ')')
20534         {
20535           p++;
20536
20537           if (*p == ' ')
20538             /* Perfectly formed definition, no complaints.  */
20539             macro_define_function (file, line, name,
20540                                    argc, (const char **) argv,
20541                                    p + 1);
20542           else if (*p == '\0')
20543             {
20544               /* Complain, but do define it.  */
20545               dwarf2_macro_malformed_definition_complaint (body);
20546               macro_define_function (file, line, name,
20547                                      argc, (const char **) argv,
20548                                      p);
20549             }
20550           else
20551             /* Just complain.  */
20552             dwarf2_macro_malformed_definition_complaint (body);
20553         }
20554       else
20555         /* Just complain.  */
20556         dwarf2_macro_malformed_definition_complaint (body);
20557
20558       xfree (name);
20559       {
20560         int i;
20561
20562         for (i = 0; i < argc; i++)
20563           xfree (argv[i]);
20564       }
20565       xfree (argv);
20566     }
20567   else
20568     dwarf2_macro_malformed_definition_complaint (body);
20569 }
20570
20571 /* Skip some bytes from BYTES according to the form given in FORM.
20572    Returns the new pointer.  */
20573
20574 static const gdb_byte *
20575 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
20576                  enum dwarf_form form,
20577                  unsigned int offset_size,
20578                  struct dwarf2_section_info *section)
20579 {
20580   unsigned int bytes_read;
20581
20582   switch (form)
20583     {
20584     case DW_FORM_data1:
20585     case DW_FORM_flag:
20586       ++bytes;
20587       break;
20588
20589     case DW_FORM_data2:
20590       bytes += 2;
20591       break;
20592
20593     case DW_FORM_data4:
20594       bytes += 4;
20595       break;
20596
20597     case DW_FORM_data8:
20598       bytes += 8;
20599       break;
20600
20601     case DW_FORM_string:
20602       read_direct_string (abfd, bytes, &bytes_read);
20603       bytes += bytes_read;
20604       break;
20605
20606     case DW_FORM_sec_offset:
20607     case DW_FORM_strp:
20608     case DW_FORM_GNU_strp_alt:
20609       bytes += offset_size;
20610       break;
20611
20612     case DW_FORM_block:
20613       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
20614       bytes += bytes_read;
20615       break;
20616
20617     case DW_FORM_block1:
20618       bytes += 1 + read_1_byte (abfd, bytes);
20619       break;
20620     case DW_FORM_block2:
20621       bytes += 2 + read_2_bytes (abfd, bytes);
20622       break;
20623     case DW_FORM_block4:
20624       bytes += 4 + read_4_bytes (abfd, bytes);
20625       break;
20626
20627     case DW_FORM_sdata:
20628     case DW_FORM_udata:
20629     case DW_FORM_GNU_addr_index:
20630     case DW_FORM_GNU_str_index:
20631       bytes = gdb_skip_leb128 (bytes, buffer_end);
20632       if (bytes == NULL)
20633         {
20634           dwarf2_section_buffer_overflow_complaint (section);
20635           return NULL;
20636         }
20637       break;
20638
20639     default:
20640       {
20641       complain:
20642         complaint (&symfile_complaints,
20643                    _("invalid form 0x%x in `%s'"),
20644                    form, get_section_name (section));
20645         return NULL;
20646       }
20647     }
20648
20649   return bytes;
20650 }
20651
20652 /* A helper for dwarf_decode_macros that handles skipping an unknown
20653    opcode.  Returns an updated pointer to the macro data buffer; or,
20654    on error, issues a complaint and returns NULL.  */
20655
20656 static const gdb_byte *
20657 skip_unknown_opcode (unsigned int opcode,
20658                      const gdb_byte **opcode_definitions,
20659                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20660                      bfd *abfd,
20661                      unsigned int offset_size,
20662                      struct dwarf2_section_info *section)
20663 {
20664   unsigned int bytes_read, i;
20665   unsigned long arg;
20666   const gdb_byte *defn;
20667
20668   if (opcode_definitions[opcode] == NULL)
20669     {
20670       complaint (&symfile_complaints,
20671                  _("unrecognized DW_MACFINO opcode 0x%x"),
20672                  opcode);
20673       return NULL;
20674     }
20675
20676   defn = opcode_definitions[opcode];
20677   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
20678   defn += bytes_read;
20679
20680   for (i = 0; i < arg; ++i)
20681     {
20682       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
20683                                  section);
20684       if (mac_ptr == NULL)
20685         {
20686           /* skip_form_bytes already issued the complaint.  */
20687           return NULL;
20688         }
20689     }
20690
20691   return mac_ptr;
20692 }
20693
20694 /* A helper function which parses the header of a macro section.
20695    If the macro section is the extended (for now called "GNU") type,
20696    then this updates *OFFSET_SIZE.  Returns a pointer to just after
20697    the header, or issues a complaint and returns NULL on error.  */
20698
20699 static const gdb_byte *
20700 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
20701                           bfd *abfd,
20702                           const gdb_byte *mac_ptr,
20703                           unsigned int *offset_size,
20704                           int section_is_gnu)
20705 {
20706   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
20707
20708   if (section_is_gnu)
20709     {
20710       unsigned int version, flags;
20711
20712       version = read_2_bytes (abfd, mac_ptr);
20713       if (version != 4)
20714         {
20715           complaint (&symfile_complaints,
20716                      _("unrecognized version `%d' in .debug_macro section"),
20717                      version);
20718           return NULL;
20719         }
20720       mac_ptr += 2;
20721
20722       flags = read_1_byte (abfd, mac_ptr);
20723       ++mac_ptr;
20724       *offset_size = (flags & 1) ? 8 : 4;
20725
20726       if ((flags & 2) != 0)
20727         /* We don't need the line table offset.  */
20728         mac_ptr += *offset_size;
20729
20730       /* Vendor opcode descriptions.  */
20731       if ((flags & 4) != 0)
20732         {
20733           unsigned int i, count;
20734
20735           count = read_1_byte (abfd, mac_ptr);
20736           ++mac_ptr;
20737           for (i = 0; i < count; ++i)
20738             {
20739               unsigned int opcode, bytes_read;
20740               unsigned long arg;
20741
20742               opcode = read_1_byte (abfd, mac_ptr);
20743               ++mac_ptr;
20744               opcode_definitions[opcode] = mac_ptr;
20745               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20746               mac_ptr += bytes_read;
20747               mac_ptr += arg;
20748             }
20749         }
20750     }
20751
20752   return mac_ptr;
20753 }
20754
20755 /* A helper for dwarf_decode_macros that handles the GNU extensions,
20756    including DW_MACRO_GNU_transparent_include.  */
20757
20758 static void
20759 dwarf_decode_macro_bytes (bfd *abfd,
20760                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20761                           struct macro_source_file *current_file,
20762                           struct line_header *lh, const char *comp_dir,
20763                           struct dwarf2_section_info *section,
20764                           int section_is_gnu, int section_is_dwz,
20765                           unsigned int offset_size,
20766                           struct objfile *objfile,
20767                           htab_t include_hash)
20768 {
20769   enum dwarf_macro_record_type macinfo_type;
20770   int at_commandline;
20771   const gdb_byte *opcode_definitions[256];
20772
20773   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20774                                       &offset_size, section_is_gnu);
20775   if (mac_ptr == NULL)
20776     {
20777       /* We already issued a complaint.  */
20778       return;
20779     }
20780
20781   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
20782      GDB is still reading the definitions from command line.  First
20783      DW_MACINFO_start_file will need to be ignored as it was already executed
20784      to create CURRENT_FILE for the main source holding also the command line
20785      definitions.  On first met DW_MACINFO_start_file this flag is reset to
20786      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
20787
20788   at_commandline = 1;
20789
20790   do
20791     {
20792       /* Do we at least have room for a macinfo type byte?  */
20793       if (mac_ptr >= mac_end)
20794         {
20795           dwarf2_section_buffer_overflow_complaint (section);
20796           break;
20797         }
20798
20799       macinfo_type = read_1_byte (abfd, mac_ptr);
20800       mac_ptr++;
20801
20802       /* Note that we rely on the fact that the corresponding GNU and
20803          DWARF constants are the same.  */
20804       switch (macinfo_type)
20805         {
20806           /* A zero macinfo type indicates the end of the macro
20807              information.  */
20808         case 0:
20809           break;
20810
20811         case DW_MACRO_GNU_define:
20812         case DW_MACRO_GNU_undef:
20813         case DW_MACRO_GNU_define_indirect:
20814         case DW_MACRO_GNU_undef_indirect:
20815         case DW_MACRO_GNU_define_indirect_alt:
20816         case DW_MACRO_GNU_undef_indirect_alt:
20817           {
20818             unsigned int bytes_read;
20819             int line;
20820             const char *body;
20821             int is_define;
20822
20823             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20824             mac_ptr += bytes_read;
20825
20826             if (macinfo_type == DW_MACRO_GNU_define
20827                 || macinfo_type == DW_MACRO_GNU_undef)
20828               {
20829                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
20830                 mac_ptr += bytes_read;
20831               }
20832             else
20833               {
20834                 LONGEST str_offset;
20835
20836                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
20837                 mac_ptr += offset_size;
20838
20839                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
20840                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
20841                     || section_is_dwz)
20842                   {
20843                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
20844
20845                     body = read_indirect_string_from_dwz (dwz, str_offset);
20846                   }
20847                 else
20848                   body = read_indirect_string_at_offset (abfd, str_offset);
20849               }
20850
20851             is_define = (macinfo_type == DW_MACRO_GNU_define
20852                          || macinfo_type == DW_MACRO_GNU_define_indirect
20853                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
20854             if (! current_file)
20855               {
20856                 /* DWARF violation as no main source is present.  */
20857                 complaint (&symfile_complaints,
20858                            _("debug info with no main source gives macro %s "
20859                              "on line %d: %s"),
20860                            is_define ? _("definition") : _("undefinition"),
20861                            line, body);
20862                 break;
20863               }
20864             if ((line == 0 && !at_commandline)
20865                 || (line != 0 && at_commandline))
20866               complaint (&symfile_complaints,
20867                          _("debug info gives %s macro %s with %s line %d: %s"),
20868                          at_commandline ? _("command-line") : _("in-file"),
20869                          is_define ? _("definition") : _("undefinition"),
20870                          line == 0 ? _("zero") : _("non-zero"), line, body);
20871
20872             if (is_define)
20873               parse_macro_definition (current_file, line, body);
20874             else
20875               {
20876                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
20877                             || macinfo_type == DW_MACRO_GNU_undef_indirect
20878                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
20879                 macro_undef (current_file, line, body);
20880               }
20881           }
20882           break;
20883
20884         case DW_MACRO_GNU_start_file:
20885           {
20886             unsigned int bytes_read;
20887             int line, file;
20888
20889             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20890             mac_ptr += bytes_read;
20891             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20892             mac_ptr += bytes_read;
20893
20894             if ((line == 0 && !at_commandline)
20895                 || (line != 0 && at_commandline))
20896               complaint (&symfile_complaints,
20897                          _("debug info gives source %d included "
20898                            "from %s at %s line %d"),
20899                          file, at_commandline ? _("command-line") : _("file"),
20900                          line == 0 ? _("zero") : _("non-zero"), line);
20901
20902             if (at_commandline)
20903               {
20904                 /* This DW_MACRO_GNU_start_file was executed in the
20905                    pass one.  */
20906                 at_commandline = 0;
20907               }
20908             else
20909               current_file = macro_start_file (file, line,
20910                                                current_file, comp_dir,
20911                                                lh, objfile);
20912           }
20913           break;
20914
20915         case DW_MACRO_GNU_end_file:
20916           if (! current_file)
20917             complaint (&symfile_complaints,
20918                        _("macro debug info has an unmatched "
20919                          "`close_file' directive"));
20920           else
20921             {
20922               current_file = current_file->included_by;
20923               if (! current_file)
20924                 {
20925                   enum dwarf_macro_record_type next_type;
20926
20927                   /* GCC circa March 2002 doesn't produce the zero
20928                      type byte marking the end of the compilation
20929                      unit.  Complain if it's not there, but exit no
20930                      matter what.  */
20931
20932                   /* Do we at least have room for a macinfo type byte?  */
20933                   if (mac_ptr >= mac_end)
20934                     {
20935                       dwarf2_section_buffer_overflow_complaint (section);
20936                       return;
20937                     }
20938
20939                   /* We don't increment mac_ptr here, so this is just
20940                      a look-ahead.  */
20941                   next_type = read_1_byte (abfd, mac_ptr);
20942                   if (next_type != 0)
20943                     complaint (&symfile_complaints,
20944                                _("no terminating 0-type entry for "
20945                                  "macros in `.debug_macinfo' section"));
20946
20947                   return;
20948                 }
20949             }
20950           break;
20951
20952         case DW_MACRO_GNU_transparent_include:
20953         case DW_MACRO_GNU_transparent_include_alt:
20954           {
20955             LONGEST offset;
20956             void **slot;
20957             bfd *include_bfd = abfd;
20958             struct dwarf2_section_info *include_section = section;
20959             struct dwarf2_section_info alt_section;
20960             const gdb_byte *include_mac_end = mac_end;
20961             int is_dwz = section_is_dwz;
20962             const gdb_byte *new_mac_ptr;
20963
20964             offset = read_offset_1 (abfd, mac_ptr, offset_size);
20965             mac_ptr += offset_size;
20966
20967             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
20968               {
20969                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
20970
20971                 dwarf2_read_section (dwarf2_per_objfile->objfile,
20972                                      &dwz->macro);
20973
20974                 include_section = &dwz->macro;
20975                 include_bfd = get_section_bfd_owner (include_section);
20976                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
20977                 is_dwz = 1;
20978               }
20979
20980             new_mac_ptr = include_section->buffer + offset;
20981             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
20982
20983             if (*slot != NULL)
20984               {
20985                 /* This has actually happened; see
20986                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
20987                 complaint (&symfile_complaints,
20988                            _("recursive DW_MACRO_GNU_transparent_include in "
20989                              ".debug_macro section"));
20990               }
20991             else
20992               {
20993                 *slot = (void *) new_mac_ptr;
20994
20995                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
20996                                           include_mac_end, current_file,
20997                                           lh, comp_dir,
20998                                           section, section_is_gnu, is_dwz,
20999                                           offset_size, objfile, include_hash);
21000
21001                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
21002               }
21003           }
21004           break;
21005
21006         case DW_MACINFO_vendor_ext:
21007           if (!section_is_gnu)
21008             {
21009               unsigned int bytes_read;
21010               int constant;
21011
21012               constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21013               mac_ptr += bytes_read;
21014               read_direct_string (abfd, mac_ptr, &bytes_read);
21015               mac_ptr += bytes_read;
21016
21017               /* We don't recognize any vendor extensions.  */
21018               break;
21019             }
21020           /* FALLTHROUGH */
21021
21022         default:
21023           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
21024                                          mac_ptr, mac_end, abfd, offset_size,
21025                                          section);
21026           if (mac_ptr == NULL)
21027             return;
21028           break;
21029         }
21030     } while (macinfo_type != 0);
21031 }
21032
21033 static void
21034 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
21035                      const char *comp_dir, int section_is_gnu)
21036 {
21037   struct objfile *objfile = dwarf2_per_objfile->objfile;
21038   struct line_header *lh = cu->line_header;
21039   bfd *abfd;
21040   const gdb_byte *mac_ptr, *mac_end;
21041   struct macro_source_file *current_file = 0;
21042   enum dwarf_macro_record_type macinfo_type;
21043   unsigned int offset_size = cu->header.offset_size;
21044   const gdb_byte *opcode_definitions[256];
21045   struct cleanup *cleanup;
21046   htab_t include_hash;
21047   void **slot;
21048   struct dwarf2_section_info *section;
21049   const char *section_name;
21050
21051   if (cu->dwo_unit != NULL)
21052     {
21053       if (section_is_gnu)
21054         {
21055           section = &cu->dwo_unit->dwo_file->sections.macro;
21056           section_name = ".debug_macro.dwo";
21057         }
21058       else
21059         {
21060           section = &cu->dwo_unit->dwo_file->sections.macinfo;
21061           section_name = ".debug_macinfo.dwo";
21062         }
21063     }
21064   else
21065     {
21066       if (section_is_gnu)
21067         {
21068           section = &dwarf2_per_objfile->macro;
21069           section_name = ".debug_macro";
21070         }
21071       else
21072         {
21073           section = &dwarf2_per_objfile->macinfo;
21074           section_name = ".debug_macinfo";
21075         }
21076     }
21077
21078   dwarf2_read_section (objfile, section);
21079   if (section->buffer == NULL)
21080     {
21081       complaint (&symfile_complaints, _("missing %s section"), section_name);
21082       return;
21083     }
21084   abfd = get_section_bfd_owner (section);
21085
21086   /* First pass: Find the name of the base filename.
21087      This filename is needed in order to process all macros whose definition
21088      (or undefinition) comes from the command line.  These macros are defined
21089      before the first DW_MACINFO_start_file entry, and yet still need to be
21090      associated to the base file.
21091
21092      To determine the base file name, we scan the macro definitions until we
21093      reach the first DW_MACINFO_start_file entry.  We then initialize
21094      CURRENT_FILE accordingly so that any macro definition found before the
21095      first DW_MACINFO_start_file can still be associated to the base file.  */
21096
21097   mac_ptr = section->buffer + offset;
21098   mac_end = section->buffer + section->size;
21099
21100   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21101                                       &offset_size, section_is_gnu);
21102   if (mac_ptr == NULL)
21103     {
21104       /* We already issued a complaint.  */
21105       return;
21106     }
21107
21108   do
21109     {
21110       /* Do we at least have room for a macinfo type byte?  */
21111       if (mac_ptr >= mac_end)
21112         {
21113           /* Complaint is printed during the second pass as GDB will probably
21114              stop the first pass earlier upon finding
21115              DW_MACINFO_start_file.  */
21116           break;
21117         }
21118
21119       macinfo_type = read_1_byte (abfd, mac_ptr);
21120       mac_ptr++;
21121
21122       /* Note that we rely on the fact that the corresponding GNU and
21123          DWARF constants are the same.  */
21124       switch (macinfo_type)
21125         {
21126           /* A zero macinfo type indicates the end of the macro
21127              information.  */
21128         case 0:
21129           break;
21130
21131         case DW_MACRO_GNU_define:
21132         case DW_MACRO_GNU_undef:
21133           /* Only skip the data by MAC_PTR.  */
21134           {
21135             unsigned int bytes_read;
21136
21137             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21138             mac_ptr += bytes_read;
21139             read_direct_string (abfd, mac_ptr, &bytes_read);
21140             mac_ptr += bytes_read;
21141           }
21142           break;
21143
21144         case DW_MACRO_GNU_start_file:
21145           {
21146             unsigned int bytes_read;
21147             int line, file;
21148
21149             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21150             mac_ptr += bytes_read;
21151             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21152             mac_ptr += bytes_read;
21153
21154             current_file = macro_start_file (file, line, current_file,
21155                                              comp_dir, lh, objfile);
21156           }
21157           break;
21158
21159         case DW_MACRO_GNU_end_file:
21160           /* No data to skip by MAC_PTR.  */
21161           break;
21162
21163         case DW_MACRO_GNU_define_indirect:
21164         case DW_MACRO_GNU_undef_indirect:
21165         case DW_MACRO_GNU_define_indirect_alt:
21166         case DW_MACRO_GNU_undef_indirect_alt:
21167           {
21168             unsigned int bytes_read;
21169
21170             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21171             mac_ptr += bytes_read;
21172             mac_ptr += offset_size;
21173           }
21174           break;
21175
21176         case DW_MACRO_GNU_transparent_include:
21177         case DW_MACRO_GNU_transparent_include_alt:
21178           /* Note that, according to the spec, a transparent include
21179              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
21180              skip this opcode.  */
21181           mac_ptr += offset_size;
21182           break;
21183
21184         case DW_MACINFO_vendor_ext:
21185           /* Only skip the data by MAC_PTR.  */
21186           if (!section_is_gnu)
21187             {
21188               unsigned int bytes_read;
21189
21190               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21191               mac_ptr += bytes_read;
21192               read_direct_string (abfd, mac_ptr, &bytes_read);
21193               mac_ptr += bytes_read;
21194             }
21195           /* FALLTHROUGH */
21196
21197         default:
21198           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
21199                                          mac_ptr, mac_end, abfd, offset_size,
21200                                          section);
21201           if (mac_ptr == NULL)
21202             return;
21203           break;
21204         }
21205     } while (macinfo_type != 0 && current_file == NULL);
21206
21207   /* Second pass: Process all entries.
21208
21209      Use the AT_COMMAND_LINE flag to determine whether we are still processing
21210      command-line macro definitions/undefinitions.  This flag is unset when we
21211      reach the first DW_MACINFO_start_file entry.  */
21212
21213   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21214                                     NULL, xcalloc, xfree);
21215   cleanup = make_cleanup_htab_delete (include_hash);
21216   mac_ptr = section->buffer + offset;
21217   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
21218   *slot = (void *) mac_ptr;
21219   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
21220                             current_file, lh, comp_dir, section,
21221                             section_is_gnu, 0,
21222                             offset_size, objfile, include_hash);
21223   do_cleanups (cleanup);
21224 }
21225
21226 /* Check if the attribute's form is a DW_FORM_block*
21227    if so return true else false.  */
21228
21229 static int
21230 attr_form_is_block (const struct attribute *attr)
21231 {
21232   return (attr == NULL ? 0 :
21233       attr->form == DW_FORM_block1
21234       || attr->form == DW_FORM_block2
21235       || attr->form == DW_FORM_block4
21236       || attr->form == DW_FORM_block
21237       || attr->form == DW_FORM_exprloc);
21238 }
21239
21240 /* Return non-zero if ATTR's value is a section offset --- classes
21241    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21242    You may use DW_UNSND (attr) to retrieve such offsets.
21243
21244    Section 7.5.4, "Attribute Encodings", explains that no attribute
21245    may have a value that belongs to more than one of these classes; it
21246    would be ambiguous if we did, because we use the same forms for all
21247    of them.  */
21248
21249 static int
21250 attr_form_is_section_offset (const struct attribute *attr)
21251 {
21252   return (attr->form == DW_FORM_data4
21253           || attr->form == DW_FORM_data8
21254           || attr->form == DW_FORM_sec_offset);
21255 }
21256
21257 /* Return non-zero if ATTR's value falls in the 'constant' class, or
21258    zero otherwise.  When this function returns true, you can apply
21259    dwarf2_get_attr_constant_value to it.
21260
21261    However, note that for some attributes you must check
21262    attr_form_is_section_offset before using this test.  DW_FORM_data4
21263    and DW_FORM_data8 are members of both the constant class, and of
21264    the classes that contain offsets into other debug sections
21265    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
21266    that, if an attribute's can be either a constant or one of the
21267    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21268    taken as section offsets, not constants.  */
21269
21270 static int
21271 attr_form_is_constant (const struct attribute *attr)
21272 {
21273   switch (attr->form)
21274     {
21275     case DW_FORM_sdata:
21276     case DW_FORM_udata:
21277     case DW_FORM_data1:
21278     case DW_FORM_data2:
21279     case DW_FORM_data4:
21280     case DW_FORM_data8:
21281       return 1;
21282     default:
21283       return 0;
21284     }
21285 }
21286
21287
21288 /* DW_ADDR is always stored already as sect_offset; despite for the forms
21289    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
21290
21291 static int
21292 attr_form_is_ref (const struct attribute *attr)
21293 {
21294   switch (attr->form)
21295     {
21296     case DW_FORM_ref_addr:
21297     case DW_FORM_ref1:
21298     case DW_FORM_ref2:
21299     case DW_FORM_ref4:
21300     case DW_FORM_ref8:
21301     case DW_FORM_ref_udata:
21302     case DW_FORM_GNU_ref_alt:
21303       return 1;
21304     default:
21305       return 0;
21306     }
21307 }
21308
21309 /* Return the .debug_loc section to use for CU.
21310    For DWO files use .debug_loc.dwo.  */
21311
21312 static struct dwarf2_section_info *
21313 cu_debug_loc_section (struct dwarf2_cu *cu)
21314 {
21315   if (cu->dwo_unit)
21316     return &cu->dwo_unit->dwo_file->sections.loc;
21317   return &dwarf2_per_objfile->loc;
21318 }
21319
21320 /* A helper function that fills in a dwarf2_loclist_baton.  */
21321
21322 static void
21323 fill_in_loclist_baton (struct dwarf2_cu *cu,
21324                        struct dwarf2_loclist_baton *baton,
21325                        const struct attribute *attr)
21326 {
21327   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21328
21329   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
21330
21331   baton->per_cu = cu->per_cu;
21332   gdb_assert (baton->per_cu);
21333   /* We don't know how long the location list is, but make sure we
21334      don't run off the edge of the section.  */
21335   baton->size = section->size - DW_UNSND (attr);
21336   baton->data = section->buffer + DW_UNSND (attr);
21337   baton->base_address = cu->base_address;
21338   baton->from_dwo = cu->dwo_unit != NULL;
21339 }
21340
21341 static void
21342 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
21343                              struct dwarf2_cu *cu, int is_block)
21344 {
21345   struct objfile *objfile = dwarf2_per_objfile->objfile;
21346   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21347
21348   if (attr_form_is_section_offset (attr)
21349       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
21350          the section.  If so, fall through to the complaint in the
21351          other branch.  */
21352       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
21353     {
21354       struct dwarf2_loclist_baton *baton;
21355
21356       baton = obstack_alloc (&objfile->objfile_obstack,
21357                              sizeof (struct dwarf2_loclist_baton));
21358
21359       fill_in_loclist_baton (cu, baton, attr);
21360
21361       if (cu->base_known == 0)
21362         complaint (&symfile_complaints,
21363                    _("Location list used without "
21364                      "specifying the CU base address."));
21365
21366       SYMBOL_ACLASS_INDEX (sym) = (is_block
21367                                    ? dwarf2_loclist_block_index
21368                                    : dwarf2_loclist_index);
21369       SYMBOL_LOCATION_BATON (sym) = baton;
21370     }
21371   else
21372     {
21373       struct dwarf2_locexpr_baton *baton;
21374
21375       baton = obstack_alloc (&objfile->objfile_obstack,
21376                              sizeof (struct dwarf2_locexpr_baton));
21377       baton->per_cu = cu->per_cu;
21378       gdb_assert (baton->per_cu);
21379
21380       if (attr_form_is_block (attr))
21381         {
21382           /* Note that we're just copying the block's data pointer
21383              here, not the actual data.  We're still pointing into the
21384              info_buffer for SYM's objfile; right now we never release
21385              that buffer, but when we do clean up properly this may
21386              need to change.  */
21387           baton->size = DW_BLOCK (attr)->size;
21388           baton->data = DW_BLOCK (attr)->data;
21389         }
21390       else
21391         {
21392           dwarf2_invalid_attrib_class_complaint ("location description",
21393                                                  SYMBOL_NATURAL_NAME (sym));
21394           baton->size = 0;
21395         }
21396
21397       SYMBOL_ACLASS_INDEX (sym) = (is_block
21398                                    ? dwarf2_locexpr_block_index
21399                                    : dwarf2_locexpr_index);
21400       SYMBOL_LOCATION_BATON (sym) = baton;
21401     }
21402 }
21403
21404 /* Return the OBJFILE associated with the compilation unit CU.  If CU
21405    came from a separate debuginfo file, then the master objfile is
21406    returned.  */
21407
21408 struct objfile *
21409 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21410 {
21411   struct objfile *objfile = per_cu->objfile;
21412
21413   /* Return the master objfile, so that we can report and look up the
21414      correct file containing this variable.  */
21415   if (objfile->separate_debug_objfile_backlink)
21416     objfile = objfile->separate_debug_objfile_backlink;
21417
21418   return objfile;
21419 }
21420
21421 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21422    (CU_HEADERP is unused in such case) or prepare a temporary copy at
21423    CU_HEADERP first.  */
21424
21425 static const struct comp_unit_head *
21426 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21427                        struct dwarf2_per_cu_data *per_cu)
21428 {
21429   const gdb_byte *info_ptr;
21430
21431   if (per_cu->cu)
21432     return &per_cu->cu->header;
21433
21434   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
21435
21436   memset (cu_headerp, 0, sizeof (*cu_headerp));
21437   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
21438
21439   return cu_headerp;
21440 }
21441
21442 /* Return the address size given in the compilation unit header for CU.  */
21443
21444 int
21445 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21446 {
21447   struct comp_unit_head cu_header_local;
21448   const struct comp_unit_head *cu_headerp;
21449
21450   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21451
21452   return cu_headerp->addr_size;
21453 }
21454
21455 /* Return the offset size given in the compilation unit header for CU.  */
21456
21457 int
21458 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21459 {
21460   struct comp_unit_head cu_header_local;
21461   const struct comp_unit_head *cu_headerp;
21462
21463   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21464
21465   return cu_headerp->offset_size;
21466 }
21467
21468 /* See its dwarf2loc.h declaration.  */
21469
21470 int
21471 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21472 {
21473   struct comp_unit_head cu_header_local;
21474   const struct comp_unit_head *cu_headerp;
21475
21476   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21477
21478   if (cu_headerp->version == 2)
21479     return cu_headerp->addr_size;
21480   else
21481     return cu_headerp->offset_size;
21482 }
21483
21484 /* Return the text offset of the CU.  The returned offset comes from
21485    this CU's objfile.  If this objfile came from a separate debuginfo
21486    file, then the offset may be different from the corresponding
21487    offset in the parent objfile.  */
21488
21489 CORE_ADDR
21490 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21491 {
21492   struct objfile *objfile = per_cu->objfile;
21493
21494   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21495 }
21496
21497 /* Locate the .debug_info compilation unit from CU's objfile which contains
21498    the DIE at OFFSET.  Raises an error on failure.  */
21499
21500 static struct dwarf2_per_cu_data *
21501 dwarf2_find_containing_comp_unit (sect_offset offset,
21502                                   unsigned int offset_in_dwz,
21503                                   struct objfile *objfile)
21504 {
21505   struct dwarf2_per_cu_data *this_cu;
21506   int low, high;
21507   const sect_offset *cu_off;
21508
21509   low = 0;
21510   high = dwarf2_per_objfile->n_comp_units - 1;
21511   while (high > low)
21512     {
21513       struct dwarf2_per_cu_data *mid_cu;
21514       int mid = low + (high - low) / 2;
21515
21516       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21517       cu_off = &mid_cu->offset;
21518       if (mid_cu->is_dwz > offset_in_dwz
21519           || (mid_cu->is_dwz == offset_in_dwz
21520               && cu_off->sect_off >= offset.sect_off))
21521         high = mid;
21522       else
21523         low = mid + 1;
21524     }
21525   gdb_assert (low == high);
21526   this_cu = dwarf2_per_objfile->all_comp_units[low];
21527   cu_off = &this_cu->offset;
21528   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
21529     {
21530       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
21531         error (_("Dwarf Error: could not find partial DIE containing "
21532                "offset 0x%lx [in module %s]"),
21533                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
21534
21535       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21536                   <= offset.sect_off);
21537       return dwarf2_per_objfile->all_comp_units[low-1];
21538     }
21539   else
21540     {
21541       this_cu = dwarf2_per_objfile->all_comp_units[low];
21542       if (low == dwarf2_per_objfile->n_comp_units - 1
21543           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21544         error (_("invalid dwarf2 offset %u"), offset.sect_off);
21545       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
21546       return this_cu;
21547     }
21548 }
21549
21550 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
21551
21552 static void
21553 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
21554 {
21555   memset (cu, 0, sizeof (*cu));
21556   per_cu->cu = cu;
21557   cu->per_cu = per_cu;
21558   cu->objfile = per_cu->objfile;
21559   obstack_init (&cu->comp_unit_obstack);
21560 }
21561
21562 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
21563
21564 static void
21565 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
21566                        enum language pretend_language)
21567 {
21568   struct attribute *attr;
21569
21570   /* Set the language we're debugging.  */
21571   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
21572   if (attr)
21573     set_cu_language (DW_UNSND (attr), cu);
21574   else
21575     {
21576       cu->language = pretend_language;
21577       cu->language_defn = language_def (cu->language);
21578     }
21579
21580   attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
21581   if (attr)
21582     cu->producer = DW_STRING (attr);
21583 }
21584
21585 /* Release one cached compilation unit, CU.  We unlink it from the tree
21586    of compilation units, but we don't remove it from the read_in_chain;
21587    the caller is responsible for that.
21588    NOTE: DATA is a void * because this function is also used as a
21589    cleanup routine.  */
21590
21591 static void
21592 free_heap_comp_unit (void *data)
21593 {
21594   struct dwarf2_cu *cu = data;
21595
21596   gdb_assert (cu->per_cu != NULL);
21597   cu->per_cu->cu = NULL;
21598   cu->per_cu = NULL;
21599
21600   obstack_free (&cu->comp_unit_obstack, NULL);
21601
21602   xfree (cu);
21603 }
21604
21605 /* This cleanup function is passed the address of a dwarf2_cu on the stack
21606    when we're finished with it.  We can't free the pointer itself, but be
21607    sure to unlink it from the cache.  Also release any associated storage.  */
21608
21609 static void
21610 free_stack_comp_unit (void *data)
21611 {
21612   struct dwarf2_cu *cu = data;
21613
21614   gdb_assert (cu->per_cu != NULL);
21615   cu->per_cu->cu = NULL;
21616   cu->per_cu = NULL;
21617
21618   obstack_free (&cu->comp_unit_obstack, NULL);
21619   cu->partial_dies = NULL;
21620 }
21621
21622 /* Free all cached compilation units.  */
21623
21624 static void
21625 free_cached_comp_units (void *data)
21626 {
21627   struct dwarf2_per_cu_data *per_cu, **last_chain;
21628
21629   per_cu = dwarf2_per_objfile->read_in_chain;
21630   last_chain = &dwarf2_per_objfile->read_in_chain;
21631   while (per_cu != NULL)
21632     {
21633       struct dwarf2_per_cu_data *next_cu;
21634
21635       next_cu = per_cu->cu->read_in_chain;
21636
21637       free_heap_comp_unit (per_cu->cu);
21638       *last_chain = next_cu;
21639
21640       per_cu = next_cu;
21641     }
21642 }
21643
21644 /* Increase the age counter on each cached compilation unit, and free
21645    any that are too old.  */
21646
21647 static void
21648 age_cached_comp_units (void)
21649 {
21650   struct dwarf2_per_cu_data *per_cu, **last_chain;
21651
21652   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
21653   per_cu = dwarf2_per_objfile->read_in_chain;
21654   while (per_cu != NULL)
21655     {
21656       per_cu->cu->last_used ++;
21657       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
21658         dwarf2_mark (per_cu->cu);
21659       per_cu = per_cu->cu->read_in_chain;
21660     }
21661
21662   per_cu = dwarf2_per_objfile->read_in_chain;
21663   last_chain = &dwarf2_per_objfile->read_in_chain;
21664   while (per_cu != NULL)
21665     {
21666       struct dwarf2_per_cu_data *next_cu;
21667
21668       next_cu = per_cu->cu->read_in_chain;
21669
21670       if (!per_cu->cu->mark)
21671         {
21672           free_heap_comp_unit (per_cu->cu);
21673           *last_chain = next_cu;
21674         }
21675       else
21676         last_chain = &per_cu->cu->read_in_chain;
21677
21678       per_cu = next_cu;
21679     }
21680 }
21681
21682 /* Remove a single compilation unit from the cache.  */
21683
21684 static void
21685 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
21686 {
21687   struct dwarf2_per_cu_data *per_cu, **last_chain;
21688
21689   per_cu = dwarf2_per_objfile->read_in_chain;
21690   last_chain = &dwarf2_per_objfile->read_in_chain;
21691   while (per_cu != NULL)
21692     {
21693       struct dwarf2_per_cu_data *next_cu;
21694
21695       next_cu = per_cu->cu->read_in_chain;
21696
21697       if (per_cu == target_per_cu)
21698         {
21699           free_heap_comp_unit (per_cu->cu);
21700           per_cu->cu = NULL;
21701           *last_chain = next_cu;
21702           break;
21703         }
21704       else
21705         last_chain = &per_cu->cu->read_in_chain;
21706
21707       per_cu = next_cu;
21708     }
21709 }
21710
21711 /* Release all extra memory associated with OBJFILE.  */
21712
21713 void
21714 dwarf2_free_objfile (struct objfile *objfile)
21715 {
21716   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
21717
21718   if (dwarf2_per_objfile == NULL)
21719     return;
21720
21721   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
21722   free_cached_comp_units (NULL);
21723
21724   if (dwarf2_per_objfile->quick_file_names_table)
21725     htab_delete (dwarf2_per_objfile->quick_file_names_table);
21726
21727   /* Everything else should be on the objfile obstack.  */
21728 }
21729
21730 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
21731    We store these in a hash table separate from the DIEs, and preserve them
21732    when the DIEs are flushed out of cache.
21733
21734    The CU "per_cu" pointer is needed because offset alone is not enough to
21735    uniquely identify the type.  A file may have multiple .debug_types sections,
21736    or the type may come from a DWO file.  Furthermore, while it's more logical
21737    to use per_cu->section+offset, with Fission the section with the data is in
21738    the DWO file but we don't know that section at the point we need it.
21739    We have to use something in dwarf2_per_cu_data (or the pointer to it)
21740    because we can enter the lookup routine, get_die_type_at_offset, from
21741    outside this file, and thus won't necessarily have PER_CU->cu.
21742    Fortunately, PER_CU is stable for the life of the objfile.  */
21743
21744 struct dwarf2_per_cu_offset_and_type
21745 {
21746   const struct dwarf2_per_cu_data *per_cu;
21747   sect_offset offset;
21748   struct type *type;
21749 };
21750
21751 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
21752
21753 static hashval_t
21754 per_cu_offset_and_type_hash (const void *item)
21755 {
21756   const struct dwarf2_per_cu_offset_and_type *ofs = item;
21757
21758   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
21759 }
21760
21761 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
21762
21763 static int
21764 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
21765 {
21766   const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
21767   const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
21768
21769   return (ofs_lhs->per_cu == ofs_rhs->per_cu
21770           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
21771 }
21772
21773 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
21774    table if necessary.  For convenience, return TYPE.
21775
21776    The DIEs reading must have careful ordering to:
21777     * Not cause infite loops trying to read in DIEs as a prerequisite for
21778       reading current DIE.
21779     * Not trying to dereference contents of still incompletely read in types
21780       while reading in other DIEs.
21781     * Enable referencing still incompletely read in types just by a pointer to
21782       the type without accessing its fields.
21783
21784    Therefore caller should follow these rules:
21785      * Try to fetch any prerequisite types we may need to build this DIE type
21786        before building the type and calling set_die_type.
21787      * After building type call set_die_type for current DIE as soon as
21788        possible before fetching more types to complete the current type.
21789      * Make the type as complete as possible before fetching more types.  */
21790
21791 static struct type *
21792 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21793 {
21794   struct dwarf2_per_cu_offset_and_type **slot, ofs;
21795   struct objfile *objfile = cu->objfile;
21796   struct attribute *attr;
21797   struct dynamic_prop prop;
21798
21799   /* For Ada types, make sure that the gnat-specific data is always
21800      initialized (if not already set).  There are a few types where
21801      we should not be doing so, because the type-specific area is
21802      already used to hold some other piece of info (eg: TYPE_CODE_FLT
21803      where the type-specific area is used to store the floatformat).
21804      But this is not a problem, because the gnat-specific information
21805      is actually not needed for these types.  */
21806   if (need_gnat_info (cu)
21807       && TYPE_CODE (type) != TYPE_CODE_FUNC
21808       && TYPE_CODE (type) != TYPE_CODE_FLT
21809       && !HAVE_GNAT_AUX_INFO (type))
21810     INIT_GNAT_SPECIFIC (type);
21811
21812   /* Read DW_AT_data_location and set in type.  */
21813   attr = dwarf2_attr (die, DW_AT_data_location, cu);
21814   if (attr_to_dynamic_prop (attr, die, cu, &prop))
21815     {
21816       TYPE_DATA_LOCATION (type)
21817         = obstack_alloc (&objfile->objfile_obstack, sizeof (prop));
21818       *TYPE_DATA_LOCATION (type) = prop;
21819     }
21820
21821   if (dwarf2_per_objfile->die_type_hash == NULL)
21822     {
21823       dwarf2_per_objfile->die_type_hash =
21824         htab_create_alloc_ex (127,
21825                               per_cu_offset_and_type_hash,
21826                               per_cu_offset_and_type_eq,
21827                               NULL,
21828                               &objfile->objfile_obstack,
21829                               hashtab_obstack_allocate,
21830                               dummy_obstack_deallocate);
21831     }
21832
21833   ofs.per_cu = cu->per_cu;
21834   ofs.offset = die->offset;
21835   ofs.type = type;
21836   slot = (struct dwarf2_per_cu_offset_and_type **)
21837     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
21838   if (*slot)
21839     complaint (&symfile_complaints,
21840                _("A problem internal to GDB: DIE 0x%x has type already set"),
21841                die->offset.sect_off);
21842   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
21843   **slot = ofs;
21844   return type;
21845 }
21846
21847 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
21848    or return NULL if the die does not have a saved type.  */
21849
21850 static struct type *
21851 get_die_type_at_offset (sect_offset offset,
21852                         struct dwarf2_per_cu_data *per_cu)
21853 {
21854   struct dwarf2_per_cu_offset_and_type *slot, ofs;
21855
21856   if (dwarf2_per_objfile->die_type_hash == NULL)
21857     return NULL;
21858
21859   ofs.per_cu = per_cu;
21860   ofs.offset = offset;
21861   slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
21862   if (slot)
21863     return slot->type;
21864   else
21865     return NULL;
21866 }
21867
21868 /* Look up the type for DIE in CU in die_type_hash,
21869    or return NULL if DIE does not have a saved type.  */
21870
21871 static struct type *
21872 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
21873 {
21874   return get_die_type_at_offset (die->offset, cu->per_cu);
21875 }
21876
21877 /* Add a dependence relationship from CU to REF_PER_CU.  */
21878
21879 static void
21880 dwarf2_add_dependence (struct dwarf2_cu *cu,
21881                        struct dwarf2_per_cu_data *ref_per_cu)
21882 {
21883   void **slot;
21884
21885   if (cu->dependencies == NULL)
21886     cu->dependencies
21887       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
21888                               NULL, &cu->comp_unit_obstack,
21889                               hashtab_obstack_allocate,
21890                               dummy_obstack_deallocate);
21891
21892   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
21893   if (*slot == NULL)
21894     *slot = ref_per_cu;
21895 }
21896
21897 /* Subroutine of dwarf2_mark to pass to htab_traverse.
21898    Set the mark field in every compilation unit in the
21899    cache that we must keep because we are keeping CU.  */
21900
21901 static int
21902 dwarf2_mark_helper (void **slot, void *data)
21903 {
21904   struct dwarf2_per_cu_data *per_cu;
21905
21906   per_cu = (struct dwarf2_per_cu_data *) *slot;
21907
21908   /* cu->dependencies references may not yet have been ever read if QUIT aborts
21909      reading of the chain.  As such dependencies remain valid it is not much
21910      useful to track and undo them during QUIT cleanups.  */
21911   if (per_cu->cu == NULL)
21912     return 1;
21913
21914   if (per_cu->cu->mark)
21915     return 1;
21916   per_cu->cu->mark = 1;
21917
21918   if (per_cu->cu->dependencies != NULL)
21919     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
21920
21921   return 1;
21922 }
21923
21924 /* Set the mark field in CU and in every other compilation unit in the
21925    cache that we must keep because we are keeping CU.  */
21926
21927 static void
21928 dwarf2_mark (struct dwarf2_cu *cu)
21929 {
21930   if (cu->mark)
21931     return;
21932   cu->mark = 1;
21933   if (cu->dependencies != NULL)
21934     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
21935 }
21936
21937 static void
21938 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
21939 {
21940   while (per_cu)
21941     {
21942       per_cu->cu->mark = 0;
21943       per_cu = per_cu->cu->read_in_chain;
21944     }
21945 }
21946
21947 /* Trivial hash function for partial_die_info: the hash value of a DIE
21948    is its offset in .debug_info for this objfile.  */
21949
21950 static hashval_t
21951 partial_die_hash (const void *item)
21952 {
21953   const struct partial_die_info *part_die = item;
21954
21955   return part_die->offset.sect_off;
21956 }
21957
21958 /* Trivial comparison function for partial_die_info structures: two DIEs
21959    are equal if they have the same offset.  */
21960
21961 static int
21962 partial_die_eq (const void *item_lhs, const void *item_rhs)
21963 {
21964   const struct partial_die_info *part_die_lhs = item_lhs;
21965   const struct partial_die_info *part_die_rhs = item_rhs;
21966
21967   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
21968 }
21969
21970 static struct cmd_list_element *set_dwarf2_cmdlist;
21971 static struct cmd_list_element *show_dwarf2_cmdlist;
21972
21973 static void
21974 set_dwarf2_cmd (char *args, int from_tty)
21975 {
21976   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", all_commands,
21977              gdb_stdout);
21978 }
21979
21980 static void
21981 show_dwarf2_cmd (char *args, int from_tty)
21982 {
21983   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
21984 }
21985
21986 /* Free data associated with OBJFILE, if necessary.  */
21987
21988 static void
21989 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
21990 {
21991   struct dwarf2_per_objfile *data = d;
21992   int ix;
21993
21994   /* Make sure we don't accidentally use dwarf2_per_objfile while
21995      cleaning up.  */
21996   dwarf2_per_objfile = NULL;
21997
21998   for (ix = 0; ix < data->n_comp_units; ++ix)
21999    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
22000
22001   for (ix = 0; ix < data->n_type_units; ++ix)
22002     VEC_free (dwarf2_per_cu_ptr,
22003               data->all_type_units[ix]->per_cu.imported_symtabs);
22004   xfree (data->all_type_units);
22005
22006   VEC_free (dwarf2_section_info_def, data->types);
22007
22008   if (data->dwo_files)
22009     free_dwo_files (data->dwo_files, objfile);
22010   if (data->dwp_file)
22011     gdb_bfd_unref (data->dwp_file->dbfd);
22012
22013   if (data->dwz_file && data->dwz_file->dwz_bfd)
22014     gdb_bfd_unref (data->dwz_file->dwz_bfd);
22015 }
22016
22017 \f
22018 /* The "save gdb-index" command.  */
22019
22020 /* The contents of the hash table we create when building the string
22021    table.  */
22022 struct strtab_entry
22023 {
22024   offset_type offset;
22025   const char *str;
22026 };
22027
22028 /* Hash function for a strtab_entry.
22029
22030    Function is used only during write_hash_table so no index format backward
22031    compatibility is needed.  */
22032
22033 static hashval_t
22034 hash_strtab_entry (const void *e)
22035 {
22036   const struct strtab_entry *entry = e;
22037   return mapped_index_string_hash (INT_MAX, entry->str);
22038 }
22039
22040 /* Equality function for a strtab_entry.  */
22041
22042 static int
22043 eq_strtab_entry (const void *a, const void *b)
22044 {
22045   const struct strtab_entry *ea = a;
22046   const struct strtab_entry *eb = b;
22047   return !strcmp (ea->str, eb->str);
22048 }
22049
22050 /* Create a strtab_entry hash table.  */
22051
22052 static htab_t
22053 create_strtab (void)
22054 {
22055   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22056                             xfree, xcalloc, xfree);
22057 }
22058
22059 /* Add a string to the constant pool.  Return the string's offset in
22060    host order.  */
22061
22062 static offset_type
22063 add_string (htab_t table, struct obstack *cpool, const char *str)
22064 {
22065   void **slot;
22066   struct strtab_entry entry;
22067   struct strtab_entry *result;
22068
22069   entry.str = str;
22070   slot = htab_find_slot (table, &entry, INSERT);
22071   if (*slot)
22072     result = *slot;
22073   else
22074     {
22075       result = XNEW (struct strtab_entry);
22076       result->offset = obstack_object_size (cpool);
22077       result->str = str;
22078       obstack_grow_str0 (cpool, str);
22079       *slot = result;
22080     }
22081   return result->offset;
22082 }
22083
22084 /* An entry in the symbol table.  */
22085 struct symtab_index_entry
22086 {
22087   /* The name of the symbol.  */
22088   const char *name;
22089   /* The offset of the name in the constant pool.  */
22090   offset_type index_offset;
22091   /* A sorted vector of the indices of all the CUs that hold an object
22092      of this name.  */
22093   VEC (offset_type) *cu_indices;
22094 };
22095
22096 /* The symbol table.  This is a power-of-2-sized hash table.  */
22097 struct mapped_symtab
22098 {
22099   offset_type n_elements;
22100   offset_type size;
22101   struct symtab_index_entry **data;
22102 };
22103
22104 /* Hash function for a symtab_index_entry.  */
22105
22106 static hashval_t
22107 hash_symtab_entry (const void *e)
22108 {
22109   const struct symtab_index_entry *entry = e;
22110   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22111                          sizeof (offset_type) * VEC_length (offset_type,
22112                                                             entry->cu_indices),
22113                          0);
22114 }
22115
22116 /* Equality function for a symtab_index_entry.  */
22117
22118 static int
22119 eq_symtab_entry (const void *a, const void *b)
22120 {
22121   const struct symtab_index_entry *ea = a;
22122   const struct symtab_index_entry *eb = b;
22123   int len = VEC_length (offset_type, ea->cu_indices);
22124   if (len != VEC_length (offset_type, eb->cu_indices))
22125     return 0;
22126   return !memcmp (VEC_address (offset_type, ea->cu_indices),
22127                   VEC_address (offset_type, eb->cu_indices),
22128                   sizeof (offset_type) * len);
22129 }
22130
22131 /* Destroy a symtab_index_entry.  */
22132
22133 static void
22134 delete_symtab_entry (void *p)
22135 {
22136   struct symtab_index_entry *entry = p;
22137   VEC_free (offset_type, entry->cu_indices);
22138   xfree (entry);
22139 }
22140
22141 /* Create a hash table holding symtab_index_entry objects.  */
22142
22143 static htab_t
22144 create_symbol_hash_table (void)
22145 {
22146   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22147                             delete_symtab_entry, xcalloc, xfree);
22148 }
22149
22150 /* Create a new mapped symtab object.  */
22151
22152 static struct mapped_symtab *
22153 create_mapped_symtab (void)
22154 {
22155   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22156   symtab->n_elements = 0;
22157   symtab->size = 1024;
22158   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22159   return symtab;
22160 }
22161
22162 /* Destroy a mapped_symtab.  */
22163
22164 static void
22165 cleanup_mapped_symtab (void *p)
22166 {
22167   struct mapped_symtab *symtab = p;
22168   /* The contents of the array are freed when the other hash table is
22169      destroyed.  */
22170   xfree (symtab->data);
22171   xfree (symtab);
22172 }
22173
22174 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
22175    the slot.
22176    
22177    Function is used only during write_hash_table so no index format backward
22178    compatibility is needed.  */
22179
22180 static struct symtab_index_entry **
22181 find_slot (struct mapped_symtab *symtab, const char *name)
22182 {
22183   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
22184
22185   index = hash & (symtab->size - 1);
22186   step = ((hash * 17) & (symtab->size - 1)) | 1;
22187
22188   for (;;)
22189     {
22190       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22191         return &symtab->data[index];
22192       index = (index + step) & (symtab->size - 1);
22193     }
22194 }
22195
22196 /* Expand SYMTAB's hash table.  */
22197
22198 static void
22199 hash_expand (struct mapped_symtab *symtab)
22200 {
22201   offset_type old_size = symtab->size;
22202   offset_type i;
22203   struct symtab_index_entry **old_entries = symtab->data;
22204
22205   symtab->size *= 2;
22206   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22207
22208   for (i = 0; i < old_size; ++i)
22209     {
22210       if (old_entries[i])
22211         {
22212           struct symtab_index_entry **slot = find_slot (symtab,
22213                                                         old_entries[i]->name);
22214           *slot = old_entries[i];
22215         }
22216     }
22217
22218   xfree (old_entries);
22219 }
22220
22221 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
22222    CU_INDEX is the index of the CU in which the symbol appears.
22223    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
22224
22225 static void
22226 add_index_entry (struct mapped_symtab *symtab, const char *name,
22227                  int is_static, gdb_index_symbol_kind kind,
22228                  offset_type cu_index)
22229 {
22230   struct symtab_index_entry **slot;
22231   offset_type cu_index_and_attrs;
22232
22233   ++symtab->n_elements;
22234   if (4 * symtab->n_elements / 3 >= symtab->size)
22235     hash_expand (symtab);
22236
22237   slot = find_slot (symtab, name);
22238   if (!*slot)
22239     {
22240       *slot = XNEW (struct symtab_index_entry);
22241       (*slot)->name = name;
22242       /* index_offset is set later.  */
22243       (*slot)->cu_indices = NULL;
22244     }
22245
22246   cu_index_and_attrs = 0;
22247   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22248   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22249   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22250
22251   /* We don't want to record an index value twice as we want to avoid the
22252      duplication.
22253      We process all global symbols and then all static symbols
22254      (which would allow us to avoid the duplication by only having to check
22255      the last entry pushed), but a symbol could have multiple kinds in one CU.
22256      To keep things simple we don't worry about the duplication here and
22257      sort and uniqufy the list after we've processed all symbols.  */
22258   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22259 }
22260
22261 /* qsort helper routine for uniquify_cu_indices.  */
22262
22263 static int
22264 offset_type_compare (const void *ap, const void *bp)
22265 {
22266   offset_type a = *(offset_type *) ap;
22267   offset_type b = *(offset_type *) bp;
22268
22269   return (a > b) - (b > a);
22270 }
22271
22272 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
22273
22274 static void
22275 uniquify_cu_indices (struct mapped_symtab *symtab)
22276 {
22277   int i;
22278
22279   for (i = 0; i < symtab->size; ++i)
22280     {
22281       struct symtab_index_entry *entry = symtab->data[i];
22282
22283       if (entry
22284           && entry->cu_indices != NULL)
22285         {
22286           unsigned int next_to_insert, next_to_check;
22287           offset_type last_value;
22288
22289           qsort (VEC_address (offset_type, entry->cu_indices),
22290                  VEC_length (offset_type, entry->cu_indices),
22291                  sizeof (offset_type), offset_type_compare);
22292
22293           last_value = VEC_index (offset_type, entry->cu_indices, 0);
22294           next_to_insert = 1;
22295           for (next_to_check = 1;
22296                next_to_check < VEC_length (offset_type, entry->cu_indices);
22297                ++next_to_check)
22298             {
22299               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22300                   != last_value)
22301                 {
22302                   last_value = VEC_index (offset_type, entry->cu_indices,
22303                                           next_to_check);
22304                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22305                                last_value);
22306                   ++next_to_insert;
22307                 }
22308             }
22309           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22310         }
22311     }
22312 }
22313
22314 /* Add a vector of indices to the constant pool.  */
22315
22316 static offset_type
22317 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
22318                       struct symtab_index_entry *entry)
22319 {
22320   void **slot;
22321
22322   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
22323   if (!*slot)
22324     {
22325       offset_type len = VEC_length (offset_type, entry->cu_indices);
22326       offset_type val = MAYBE_SWAP (len);
22327       offset_type iter;
22328       int i;
22329
22330       *slot = entry;
22331       entry->index_offset = obstack_object_size (cpool);
22332
22333       obstack_grow (cpool, &val, sizeof (val));
22334       for (i = 0;
22335            VEC_iterate (offset_type, entry->cu_indices, i, iter);
22336            ++i)
22337         {
22338           val = MAYBE_SWAP (iter);
22339           obstack_grow (cpool, &val, sizeof (val));
22340         }
22341     }
22342   else
22343     {
22344       struct symtab_index_entry *old_entry = *slot;
22345       entry->index_offset = old_entry->index_offset;
22346       entry = old_entry;
22347     }
22348   return entry->index_offset;
22349 }
22350
22351 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22352    constant pool entries going into the obstack CPOOL.  */
22353
22354 static void
22355 write_hash_table (struct mapped_symtab *symtab,
22356                   struct obstack *output, struct obstack *cpool)
22357 {
22358   offset_type i;
22359   htab_t symbol_hash_table;
22360   htab_t str_table;
22361
22362   symbol_hash_table = create_symbol_hash_table ();
22363   str_table = create_strtab ();
22364
22365   /* We add all the index vectors to the constant pool first, to
22366      ensure alignment is ok.  */
22367   for (i = 0; i < symtab->size; ++i)
22368     {
22369       if (symtab->data[i])
22370         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
22371     }
22372
22373   /* Now write out the hash table.  */
22374   for (i = 0; i < symtab->size; ++i)
22375     {
22376       offset_type str_off, vec_off;
22377
22378       if (symtab->data[i])
22379         {
22380           str_off = add_string (str_table, cpool, symtab->data[i]->name);
22381           vec_off = symtab->data[i]->index_offset;
22382         }
22383       else
22384         {
22385           /* While 0 is a valid constant pool index, it is not valid
22386              to have 0 for both offsets.  */
22387           str_off = 0;
22388           vec_off = 0;
22389         }
22390
22391       str_off = MAYBE_SWAP (str_off);
22392       vec_off = MAYBE_SWAP (vec_off);
22393
22394       obstack_grow (output, &str_off, sizeof (str_off));
22395       obstack_grow (output, &vec_off, sizeof (vec_off));
22396     }
22397
22398   htab_delete (str_table);
22399   htab_delete (symbol_hash_table);
22400 }
22401
22402 /* Struct to map psymtab to CU index in the index file.  */
22403 struct psymtab_cu_index_map
22404 {
22405   struct partial_symtab *psymtab;
22406   unsigned int cu_index;
22407 };
22408
22409 static hashval_t
22410 hash_psymtab_cu_index (const void *item)
22411 {
22412   const struct psymtab_cu_index_map *map = item;
22413
22414   return htab_hash_pointer (map->psymtab);
22415 }
22416
22417 static int
22418 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22419 {
22420   const struct psymtab_cu_index_map *lhs = item_lhs;
22421   const struct psymtab_cu_index_map *rhs = item_rhs;
22422
22423   return lhs->psymtab == rhs->psymtab;
22424 }
22425
22426 /* Helper struct for building the address table.  */
22427 struct addrmap_index_data
22428 {
22429   struct objfile *objfile;
22430   struct obstack *addr_obstack;
22431   htab_t cu_index_htab;
22432
22433   /* Non-zero if the previous_* fields are valid.
22434      We can't write an entry until we see the next entry (since it is only then
22435      that we know the end of the entry).  */
22436   int previous_valid;
22437   /* Index of the CU in the table of all CUs in the index file.  */
22438   unsigned int previous_cu_index;
22439   /* Start address of the CU.  */
22440   CORE_ADDR previous_cu_start;
22441 };
22442
22443 /* Write an address entry to OBSTACK.  */
22444
22445 static void
22446 add_address_entry (struct objfile *objfile, struct obstack *obstack,
22447                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
22448 {
22449   offset_type cu_index_to_write;
22450   gdb_byte addr[8];
22451   CORE_ADDR baseaddr;
22452
22453   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22454
22455   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22456   obstack_grow (obstack, addr, 8);
22457   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22458   obstack_grow (obstack, addr, 8);
22459   cu_index_to_write = MAYBE_SWAP (cu_index);
22460   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22461 }
22462
22463 /* Worker function for traversing an addrmap to build the address table.  */
22464
22465 static int
22466 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22467 {
22468   struct addrmap_index_data *data = datap;
22469   struct partial_symtab *pst = obj;
22470
22471   if (data->previous_valid)
22472     add_address_entry (data->objfile, data->addr_obstack,
22473                        data->previous_cu_start, start_addr,
22474                        data->previous_cu_index);
22475
22476   data->previous_cu_start = start_addr;
22477   if (pst != NULL)
22478     {
22479       struct psymtab_cu_index_map find_map, *map;
22480       find_map.psymtab = pst;
22481       map = htab_find (data->cu_index_htab, &find_map);
22482       gdb_assert (map != NULL);
22483       data->previous_cu_index = map->cu_index;
22484       data->previous_valid = 1;
22485     }
22486   else
22487       data->previous_valid = 0;
22488
22489   return 0;
22490 }
22491
22492 /* Write OBJFILE's address map to OBSTACK.
22493    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22494    in the index file.  */
22495
22496 static void
22497 write_address_map (struct objfile *objfile, struct obstack *obstack,
22498                    htab_t cu_index_htab)
22499 {
22500   struct addrmap_index_data addrmap_index_data;
22501
22502   /* When writing the address table, we have to cope with the fact that
22503      the addrmap iterator only provides the start of a region; we have to
22504      wait until the next invocation to get the start of the next region.  */
22505
22506   addrmap_index_data.objfile = objfile;
22507   addrmap_index_data.addr_obstack = obstack;
22508   addrmap_index_data.cu_index_htab = cu_index_htab;
22509   addrmap_index_data.previous_valid = 0;
22510
22511   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22512                    &addrmap_index_data);
22513
22514   /* It's highly unlikely the last entry (end address = 0xff...ff)
22515      is valid, but we should still handle it.
22516      The end address is recorded as the start of the next region, but that
22517      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
22518      anyway.  */
22519   if (addrmap_index_data.previous_valid)
22520     add_address_entry (objfile, obstack,
22521                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22522                        addrmap_index_data.previous_cu_index);
22523 }
22524
22525 /* Return the symbol kind of PSYM.  */
22526
22527 static gdb_index_symbol_kind
22528 symbol_kind (struct partial_symbol *psym)
22529 {
22530   domain_enum domain = PSYMBOL_DOMAIN (psym);
22531   enum address_class aclass = PSYMBOL_CLASS (psym);
22532
22533   switch (domain)
22534     {
22535     case VAR_DOMAIN:
22536       switch (aclass)
22537         {
22538         case LOC_BLOCK:
22539           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22540         case LOC_TYPEDEF:
22541           return GDB_INDEX_SYMBOL_KIND_TYPE;
22542         case LOC_COMPUTED:
22543         case LOC_CONST_BYTES:
22544         case LOC_OPTIMIZED_OUT:
22545         case LOC_STATIC:
22546           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22547         case LOC_CONST:
22548           /* Note: It's currently impossible to recognize psyms as enum values
22549              short of reading the type info.  For now punt.  */
22550           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22551         default:
22552           /* There are other LOC_FOO values that one might want to classify
22553              as variables, but dwarf2read.c doesn't currently use them.  */
22554           return GDB_INDEX_SYMBOL_KIND_OTHER;
22555         }
22556     case STRUCT_DOMAIN:
22557       return GDB_INDEX_SYMBOL_KIND_TYPE;
22558     default:
22559       return GDB_INDEX_SYMBOL_KIND_OTHER;
22560     }
22561 }
22562
22563 /* Add a list of partial symbols to SYMTAB.  */
22564
22565 static void
22566 write_psymbols (struct mapped_symtab *symtab,
22567                 htab_t psyms_seen,
22568                 struct partial_symbol **psymp,
22569                 int count,
22570                 offset_type cu_index,
22571                 int is_static)
22572 {
22573   for (; count-- > 0; ++psymp)
22574     {
22575       struct partial_symbol *psym = *psymp;
22576       void **slot;
22577
22578       if (SYMBOL_LANGUAGE (psym) == language_ada)
22579         error (_("Ada is not currently supported by the index"));
22580
22581       /* Only add a given psymbol once.  */
22582       slot = htab_find_slot (psyms_seen, psym, INSERT);
22583       if (!*slot)
22584         {
22585           gdb_index_symbol_kind kind = symbol_kind (psym);
22586
22587           *slot = psym;
22588           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
22589                            is_static, kind, cu_index);
22590         }
22591     }
22592 }
22593
22594 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
22595    exception if there is an error.  */
22596
22597 static void
22598 write_obstack (FILE *file, struct obstack *obstack)
22599 {
22600   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
22601               file)
22602       != obstack_object_size (obstack))
22603     error (_("couldn't data write to file"));
22604 }
22605
22606 /* Unlink a file if the argument is not NULL.  */
22607
22608 static void
22609 unlink_if_set (void *p)
22610 {
22611   char **filename = p;
22612   if (*filename)
22613     unlink (*filename);
22614 }
22615
22616 /* A helper struct used when iterating over debug_types.  */
22617 struct signatured_type_index_data
22618 {
22619   struct objfile *objfile;
22620   struct mapped_symtab *symtab;
22621   struct obstack *types_list;
22622   htab_t psyms_seen;
22623   int cu_index;
22624 };
22625
22626 /* A helper function that writes a single signatured_type to an
22627    obstack.  */
22628
22629 static int
22630 write_one_signatured_type (void **slot, void *d)
22631 {
22632   struct signatured_type_index_data *info = d;
22633   struct signatured_type *entry = (struct signatured_type *) *slot;
22634   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
22635   gdb_byte val[8];
22636
22637   write_psymbols (info->symtab,
22638                   info->psyms_seen,
22639                   info->objfile->global_psymbols.list
22640                   + psymtab->globals_offset,
22641                   psymtab->n_global_syms, info->cu_index,
22642                   0);
22643   write_psymbols (info->symtab,
22644                   info->psyms_seen,
22645                   info->objfile->static_psymbols.list
22646                   + psymtab->statics_offset,
22647                   psymtab->n_static_syms, info->cu_index,
22648                   1);
22649
22650   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22651                           entry->per_cu.offset.sect_off);
22652   obstack_grow (info->types_list, val, 8);
22653   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22654                           entry->type_offset_in_tu.cu_off);
22655   obstack_grow (info->types_list, val, 8);
22656   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
22657   obstack_grow (info->types_list, val, 8);
22658
22659   ++info->cu_index;
22660
22661   return 1;
22662 }
22663
22664 /* Recurse into all "included" dependencies and write their symbols as
22665    if they appeared in this psymtab.  */
22666
22667 static void
22668 recursively_write_psymbols (struct objfile *objfile,
22669                             struct partial_symtab *psymtab,
22670                             struct mapped_symtab *symtab,
22671                             htab_t psyms_seen,
22672                             offset_type cu_index)
22673 {
22674   int i;
22675
22676   for (i = 0; i < psymtab->number_of_dependencies; ++i)
22677     if (psymtab->dependencies[i]->user != NULL)
22678       recursively_write_psymbols (objfile, psymtab->dependencies[i],
22679                                   symtab, psyms_seen, cu_index);
22680
22681   write_psymbols (symtab,
22682                   psyms_seen,
22683                   objfile->global_psymbols.list + psymtab->globals_offset,
22684                   psymtab->n_global_syms, cu_index,
22685                   0);
22686   write_psymbols (symtab,
22687                   psyms_seen,
22688                   objfile->static_psymbols.list + psymtab->statics_offset,
22689                   psymtab->n_static_syms, cu_index,
22690                   1);
22691 }
22692
22693 /* Create an index file for OBJFILE in the directory DIR.  */
22694
22695 static void
22696 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
22697 {
22698   struct cleanup *cleanup;
22699   char *filename, *cleanup_filename;
22700   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
22701   struct obstack cu_list, types_cu_list;
22702   int i;
22703   FILE *out_file;
22704   struct mapped_symtab *symtab;
22705   offset_type val, size_of_contents, total_len;
22706   struct stat st;
22707   htab_t psyms_seen;
22708   htab_t cu_index_htab;
22709   struct psymtab_cu_index_map *psymtab_cu_index_map;
22710
22711   if (dwarf2_per_objfile->using_index)
22712     error (_("Cannot use an index to create the index"));
22713
22714   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
22715     error (_("Cannot make an index when the file has multiple .debug_types sections"));
22716
22717   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
22718     return;
22719
22720   if (stat (objfile_name (objfile), &st) < 0)
22721     perror_with_name (objfile_name (objfile));
22722
22723   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
22724                      INDEX_SUFFIX, (char *) NULL);
22725   cleanup = make_cleanup (xfree, filename);
22726
22727   out_file = gdb_fopen_cloexec (filename, "wb");
22728   if (!out_file)
22729     error (_("Can't open `%s' for writing"), filename);
22730
22731   cleanup_filename = filename;
22732   make_cleanup (unlink_if_set, &cleanup_filename);
22733
22734   symtab = create_mapped_symtab ();
22735   make_cleanup (cleanup_mapped_symtab, symtab);
22736
22737   obstack_init (&addr_obstack);
22738   make_cleanup_obstack_free (&addr_obstack);
22739
22740   obstack_init (&cu_list);
22741   make_cleanup_obstack_free (&cu_list);
22742
22743   obstack_init (&types_cu_list);
22744   make_cleanup_obstack_free (&types_cu_list);
22745
22746   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
22747                                   NULL, xcalloc, xfree);
22748   make_cleanup_htab_delete (psyms_seen);
22749
22750   /* While we're scanning CU's create a table that maps a psymtab pointer
22751      (which is what addrmap records) to its index (which is what is recorded
22752      in the index file).  This will later be needed to write the address
22753      table.  */
22754   cu_index_htab = htab_create_alloc (100,
22755                                      hash_psymtab_cu_index,
22756                                      eq_psymtab_cu_index,
22757                                      NULL, xcalloc, xfree);
22758   make_cleanup_htab_delete (cu_index_htab);
22759   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
22760     xmalloc (sizeof (struct psymtab_cu_index_map)
22761              * dwarf2_per_objfile->n_comp_units);
22762   make_cleanup (xfree, psymtab_cu_index_map);
22763
22764   /* The CU list is already sorted, so we don't need to do additional
22765      work here.  Also, the debug_types entries do not appear in
22766      all_comp_units, but only in their own hash table.  */
22767   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
22768     {
22769       struct dwarf2_per_cu_data *per_cu
22770         = dwarf2_per_objfile->all_comp_units[i];
22771       struct partial_symtab *psymtab = per_cu->v.psymtab;
22772       gdb_byte val[8];
22773       struct psymtab_cu_index_map *map;
22774       void **slot;
22775
22776       /* CU of a shared file from 'dwz -m' may be unused by this main file.
22777          It may be referenced from a local scope but in such case it does not
22778          need to be present in .gdb_index.  */
22779       if (psymtab == NULL)
22780         continue;
22781
22782       if (psymtab->user == NULL)
22783         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
22784
22785       map = &psymtab_cu_index_map[i];
22786       map->psymtab = psymtab;
22787       map->cu_index = i;
22788       slot = htab_find_slot (cu_index_htab, map, INSERT);
22789       gdb_assert (slot != NULL);
22790       gdb_assert (*slot == NULL);
22791       *slot = map;
22792
22793       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22794                               per_cu->offset.sect_off);
22795       obstack_grow (&cu_list, val, 8);
22796       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
22797       obstack_grow (&cu_list, val, 8);
22798     }
22799
22800   /* Dump the address map.  */
22801   write_address_map (objfile, &addr_obstack, cu_index_htab);
22802
22803   /* Write out the .debug_type entries, if any.  */
22804   if (dwarf2_per_objfile->signatured_types)
22805     {
22806       struct signatured_type_index_data sig_data;
22807
22808       sig_data.objfile = objfile;
22809       sig_data.symtab = symtab;
22810       sig_data.types_list = &types_cu_list;
22811       sig_data.psyms_seen = psyms_seen;
22812       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
22813       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
22814                               write_one_signatured_type, &sig_data);
22815     }
22816
22817   /* Now that we've processed all symbols we can shrink their cu_indices
22818      lists.  */
22819   uniquify_cu_indices (symtab);
22820
22821   obstack_init (&constant_pool);
22822   make_cleanup_obstack_free (&constant_pool);
22823   obstack_init (&symtab_obstack);
22824   make_cleanup_obstack_free (&symtab_obstack);
22825   write_hash_table (symtab, &symtab_obstack, &constant_pool);
22826
22827   obstack_init (&contents);
22828   make_cleanup_obstack_free (&contents);
22829   size_of_contents = 6 * sizeof (offset_type);
22830   total_len = size_of_contents;
22831
22832   /* The version number.  */
22833   val = MAYBE_SWAP (8);
22834   obstack_grow (&contents, &val, sizeof (val));
22835
22836   /* The offset of the CU list from the start of the file.  */
22837   val = MAYBE_SWAP (total_len);
22838   obstack_grow (&contents, &val, sizeof (val));
22839   total_len += obstack_object_size (&cu_list);
22840
22841   /* The offset of the types CU list from the start of the file.  */
22842   val = MAYBE_SWAP (total_len);
22843   obstack_grow (&contents, &val, sizeof (val));
22844   total_len += obstack_object_size (&types_cu_list);
22845
22846   /* The offset of the address table from the start of the file.  */
22847   val = MAYBE_SWAP (total_len);
22848   obstack_grow (&contents, &val, sizeof (val));
22849   total_len += obstack_object_size (&addr_obstack);
22850
22851   /* The offset of the symbol table from the start of the file.  */
22852   val = MAYBE_SWAP (total_len);
22853   obstack_grow (&contents, &val, sizeof (val));
22854   total_len += obstack_object_size (&symtab_obstack);
22855
22856   /* The offset of the constant pool from the start of the file.  */
22857   val = MAYBE_SWAP (total_len);
22858   obstack_grow (&contents, &val, sizeof (val));
22859   total_len += obstack_object_size (&constant_pool);
22860
22861   gdb_assert (obstack_object_size (&contents) == size_of_contents);
22862
22863   write_obstack (out_file, &contents);
22864   write_obstack (out_file, &cu_list);
22865   write_obstack (out_file, &types_cu_list);
22866   write_obstack (out_file, &addr_obstack);
22867   write_obstack (out_file, &symtab_obstack);
22868   write_obstack (out_file, &constant_pool);
22869
22870   fclose (out_file);
22871
22872   /* We want to keep the file, so we set cleanup_filename to NULL
22873      here.  See unlink_if_set.  */
22874   cleanup_filename = NULL;
22875
22876   do_cleanups (cleanup);
22877 }
22878
22879 /* Implementation of the `save gdb-index' command.
22880    
22881    Note that the file format used by this command is documented in the
22882    GDB manual.  Any changes here must be documented there.  */
22883
22884 static void
22885 save_gdb_index_command (char *arg, int from_tty)
22886 {
22887   struct objfile *objfile;
22888
22889   if (!arg || !*arg)
22890     error (_("usage: save gdb-index DIRECTORY"));
22891
22892   ALL_OBJFILES (objfile)
22893   {
22894     struct stat st;
22895
22896     /* If the objfile does not correspond to an actual file, skip it.  */
22897     if (stat (objfile_name (objfile), &st) < 0)
22898       continue;
22899
22900     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22901     if (dwarf2_per_objfile)
22902       {
22903         volatile struct gdb_exception except;
22904
22905         TRY_CATCH (except, RETURN_MASK_ERROR)
22906           {
22907             write_psymtabs_to_index (objfile, arg);
22908           }
22909         if (except.reason < 0)
22910           exception_fprintf (gdb_stderr, except,
22911                              _("Error while writing index for `%s': "),
22912                              objfile_name (objfile));
22913       }
22914   }
22915 }
22916
22917 \f
22918
22919 int dwarf2_always_disassemble;
22920
22921 static void
22922 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
22923                                 struct cmd_list_element *c, const char *value)
22924 {
22925   fprintf_filtered (file,
22926                     _("Whether to always disassemble "
22927                       "DWARF expressions is %s.\n"),
22928                     value);
22929 }
22930
22931 static void
22932 show_check_physname (struct ui_file *file, int from_tty,
22933                      struct cmd_list_element *c, const char *value)
22934 {
22935   fprintf_filtered (file,
22936                     _("Whether to check \"physname\" is %s.\n"),
22937                     value);
22938 }
22939
22940 void _initialize_dwarf2_read (void);
22941
22942 void
22943 _initialize_dwarf2_read (void)
22944 {
22945   struct cmd_list_element *c;
22946
22947   dwarf2_objfile_data_key
22948     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
22949
22950   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
22951 Set DWARF 2 specific variables.\n\
22952 Configure DWARF 2 variables such as the cache size"),
22953                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
22954                   0/*allow-unknown*/, &maintenance_set_cmdlist);
22955
22956   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
22957 Show DWARF 2 specific variables\n\
22958 Show DWARF 2 variables such as the cache size"),
22959                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
22960                   0/*allow-unknown*/, &maintenance_show_cmdlist);
22961
22962   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
22963                             &dwarf2_max_cache_age, _("\
22964 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
22965 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
22966 A higher limit means that cached compilation units will be stored\n\
22967 in memory longer, and more total memory will be used.  Zero disables\n\
22968 caching, which can slow down startup."),
22969                             NULL,
22970                             show_dwarf2_max_cache_age,
22971                             &set_dwarf2_cmdlist,
22972                             &show_dwarf2_cmdlist);
22973
22974   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
22975                            &dwarf2_always_disassemble, _("\
22976 Set whether `info address' always disassembles DWARF expressions."), _("\
22977 Show whether `info address' always disassembles DWARF expressions."), _("\
22978 When enabled, DWARF expressions are always printed in an assembly-like\n\
22979 syntax.  When disabled, expressions will be printed in a more\n\
22980 conversational style, when possible."),
22981                            NULL,
22982                            show_dwarf2_always_disassemble,
22983                            &set_dwarf2_cmdlist,
22984                            &show_dwarf2_cmdlist);
22985
22986   add_setshow_zuinteger_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
22987 Set debugging of the dwarf2 reader."), _("\
22988 Show debugging of the dwarf2 reader."), _("\
22989 When enabled (non-zero), debugging messages are printed during dwarf2\n\
22990 reading and symtab expansion.  A value of 1 (one) provides basic\n\
22991 information.  A value greater than 1 provides more verbose information."),
22992                             NULL,
22993                             NULL,
22994                             &setdebuglist, &showdebuglist);
22995
22996   add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
22997 Set debugging of the dwarf2 DIE reader."), _("\
22998 Show debugging of the dwarf2 DIE reader."), _("\
22999 When enabled (non-zero), DIEs are dumped after they are read in.\n\
23000 The value is the maximum depth to print."),
23001                              NULL,
23002                              NULL,
23003                              &setdebuglist, &showdebuglist);
23004
23005   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23006 Set cross-checking of \"physname\" code against demangler."), _("\
23007 Show cross-checking of \"physname\" code against demangler."), _("\
23008 When enabled, GDB's internal \"physname\" code is checked against\n\
23009 the demangler."),
23010                            NULL, show_check_physname,
23011                            &setdebuglist, &showdebuglist);
23012
23013   add_setshow_boolean_cmd ("use-deprecated-index-sections",
23014                            no_class, &use_deprecated_index_sections, _("\
23015 Set whether to use deprecated gdb_index sections."), _("\
23016 Show whether to use deprecated gdb_index sections."), _("\
23017 When enabled, deprecated .gdb_index sections are used anyway.\n\
23018 Normally they are ignored either because of a missing feature or\n\
23019 performance issue.\n\
23020 Warning: This option must be enabled before gdb reads the file."),
23021                            NULL,
23022                            NULL,
23023                            &setlist, &showlist);
23024
23025   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
23026                _("\
23027 Save a gdb-index file.\n\
23028 Usage: save gdb-index DIRECTORY"),
23029                &save_cmdlist);
23030   set_cmd_completer (c, filename_completer);
23031
23032   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23033                                                         &dwarf2_locexpr_funcs);
23034   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23035                                                         &dwarf2_loclist_funcs);
23036
23037   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23038                                         &dwarf2_block_frame_base_locexpr_funcs);
23039   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23040                                         &dwarf2_block_frame_base_loclist_funcs);
23041 }