read_cutu_die_from_dwo: Misc minor cleanups.
[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 "exceptions.h"
59 #include <sys/stat.h>
60 #include "completer.h"
61 #include "vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "filestuff.h"
72 #include "build-id.h"
73
74 #include <fcntl.h>
75 #include <string.h>
76 #include "gdb_assert.h"
77 #include <sys/types.h>
78
79 typedef struct symbol *symbolp;
80 DEF_VEC_P (symbolp);
81
82 /* When == 1, print basic high level tracing messages.
83    When > 1, be more verbose.
84    This is in contrast to the low level DIE reading of dwarf2_die_debug.  */
85 static unsigned int dwarf2_read_debug = 0;
86
87 /* When non-zero, dump DIEs after they are read in.  */
88 static unsigned int dwarf2_die_debug = 0;
89
90 /* When non-zero, cross-check physname against demangler.  */
91 static int check_physname = 0;
92
93 /* When non-zero, do not reject deprecated .gdb_index sections.  */
94 static int use_deprecated_index_sections = 0;
95
96 static const struct objfile_data *dwarf2_objfile_data_key;
97
98 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
99
100 static int dwarf2_locexpr_index;
101 static int dwarf2_loclist_index;
102 static int dwarf2_locexpr_block_index;
103 static int dwarf2_loclist_block_index;
104
105 /* A descriptor for dwarf sections.
106
107    S.ASECTION, SIZE are typically initialized when the objfile is first
108    scanned.  BUFFER, READIN are filled in later when the section is read.
109    If the section contained compressed data then SIZE is updated to record
110    the uncompressed size of the section.
111
112    DWP file format V2 introduces a wrinkle that is easiest to handle by
113    creating the concept of virtual sections contained within a real section.
114    In DWP V2 the sections of the input DWO files are concatenated together
115    into one section, but section offsets are kept relative to the original
116    input section.
117    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
118    the real section this "virtual" section is contained in, and BUFFER,SIZE
119    describe the virtual section.  */
120
121 struct dwarf2_section_info
122 {
123   union
124   {
125     /* If this is a real section, the bfd section.  */
126     asection *asection;
127     /* If this is a virtual section, pointer to the containing ("real")
128        section.  */
129     struct dwarf2_section_info *containing_section;
130   } s;
131   /* Pointer to section data, only valid if readin.  */
132   const gdb_byte *buffer;
133   /* The size of the section, real or virtual.  */
134   bfd_size_type size;
135   /* If this is a virtual section, the offset in the real section.
136      Only valid if is_virtual.  */
137   bfd_size_type virtual_offset;
138   /* True if we have tried to read this section.  */
139   char readin;
140   /* True if this is a virtual section, False otherwise.
141      This specifies which of s.asection and s.containing_section to use.  */
142   char is_virtual;
143 };
144
145 typedef struct dwarf2_section_info dwarf2_section_info_def;
146 DEF_VEC_O (dwarf2_section_info_def);
147
148 /* All offsets in the index are of this type.  It must be
149    architecture-independent.  */
150 typedef uint32_t offset_type;
151
152 DEF_VEC_I (offset_type);
153
154 /* Ensure only legit values are used.  */
155 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
156   do { \
157     gdb_assert ((unsigned int) (value) <= 1); \
158     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
159   } while (0)
160
161 /* Ensure only legit values are used.  */
162 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
163   do { \
164     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
165                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
166     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
167   } while (0)
168
169 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
170 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
171   do { \
172     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
173     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
174   } while (0)
175
176 /* A description of the mapped index.  The file format is described in
177    a comment by the code that writes the index.  */
178 struct mapped_index
179 {
180   /* Index data format version.  */
181   int version;
182
183   /* The total length of the buffer.  */
184   off_t total_size;
185
186   /* A pointer to the address table data.  */
187   const gdb_byte *address_table;
188
189   /* Size of the address table data in bytes.  */
190   offset_type address_table_size;
191
192   /* The symbol table, implemented as a hash table.  */
193   const offset_type *symbol_table;
194
195   /* Size in slots, each slot is 2 offset_types.  */
196   offset_type symbol_table_slots;
197
198   /* A pointer to the constant pool.  */
199   const char *constant_pool;
200 };
201
202 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
203 DEF_VEC_P (dwarf2_per_cu_ptr);
204
205 /* Collection of data recorded per objfile.
206    This hangs off of dwarf2_objfile_data_key.  */
207
208 struct dwarf2_per_objfile
209 {
210   struct dwarf2_section_info info;
211   struct dwarf2_section_info abbrev;
212   struct dwarf2_section_info line;
213   struct dwarf2_section_info loc;
214   struct dwarf2_section_info macinfo;
215   struct dwarf2_section_info macro;
216   struct dwarf2_section_info str;
217   struct dwarf2_section_info ranges;
218   struct dwarf2_section_info addr;
219   struct dwarf2_section_info frame;
220   struct dwarf2_section_info eh_frame;
221   struct dwarf2_section_info gdb_index;
222
223   VEC (dwarf2_section_info_def) *types;
224
225   /* Back link.  */
226   struct objfile *objfile;
227
228   /* Table of all the compilation units.  This is used to locate
229      the target compilation unit of a particular reference.  */
230   struct dwarf2_per_cu_data **all_comp_units;
231
232   /* The number of compilation units in ALL_COMP_UNITS.  */
233   int n_comp_units;
234
235   /* The number of .debug_types-related CUs.  */
236   int n_type_units;
237
238   /* The .debug_types-related CUs (TUs).
239      This is stored in malloc space because we may realloc it.  */
240   struct signatured_type **all_type_units;
241
242   /* The number of entries in all_type_unit_groups.  */
243   int n_type_unit_groups;
244
245   /* Table of type unit groups.
246      This exists to make it easy to iterate over all CUs and TU groups.  */
247   struct type_unit_group **all_type_unit_groups;
248
249   /* Table of struct type_unit_group objects.
250      The hash key is the DW_AT_stmt_list value.  */
251   htab_t type_unit_groups;
252
253   /* A table mapping .debug_types signatures to its signatured_type entry.
254      This is NULL if the .debug_types section hasn't been read in yet.  */
255   htab_t signatured_types;
256
257   /* Type unit statistics, to see how well the scaling improvements
258      are doing.  */
259   struct tu_stats
260   {
261     int nr_uniq_abbrev_tables;
262     int nr_symtabs;
263     int nr_symtab_sharers;
264     int nr_stmt_less_type_units;
265   } tu_stats;
266
267   /* A chain of compilation units that are currently read in, so that
268      they can be freed later.  */
269   struct dwarf2_per_cu_data *read_in_chain;
270
271   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
272      This is NULL if the table hasn't been allocated yet.  */
273   htab_t dwo_files;
274
275   /* Non-zero if we've check for whether there is a DWP file.  */
276   int dwp_checked;
277
278   /* The DWP file if there is one, or NULL.  */
279   struct dwp_file *dwp_file;
280
281   /* The shared '.dwz' file, if one exists.  This is used when the
282      original data was compressed using 'dwz -m'.  */
283   struct dwz_file *dwz_file;
284
285   /* A flag indicating wether this objfile has a section loaded at a
286      VMA of 0.  */
287   int has_section_at_zero;
288
289   /* True if we are using the mapped index,
290      or we are faking it for OBJF_READNOW's sake.  */
291   unsigned char using_index;
292
293   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
294   struct mapped_index *index_table;
295
296   /* When using index_table, this keeps track of all quick_file_names entries.
297      TUs typically share line table entries with a CU, so we maintain a
298      separate table of all line table entries to support the sharing.
299      Note that while there can be way more TUs than CUs, we've already
300      sorted all the TUs into "type unit groups", grouped by their
301      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
302      CU and its associated TU group if there is one.  */
303   htab_t quick_file_names_table;
304
305   /* Set during partial symbol reading, to prevent queueing of full
306      symbols.  */
307   int reading_partial_symbols;
308
309   /* Table mapping type DIEs to their struct type *.
310      This is NULL if not allocated yet.
311      The mapping is done via (CU/TU + DIE offset) -> type.  */
312   htab_t die_type_hash;
313
314   /* The CUs we recently read.  */
315   VEC (dwarf2_per_cu_ptr) *just_read_cus;
316 };
317
318 static struct dwarf2_per_objfile *dwarf2_per_objfile;
319
320 /* Default names of the debugging sections.  */
321
322 /* Note that if the debugging section has been compressed, it might
323    have a name like .zdebug_info.  */
324
325 static const struct dwarf2_debug_sections dwarf2_elf_names =
326 {
327   { ".debug_info", ".zdebug_info" },
328   { ".debug_abbrev", ".zdebug_abbrev" },
329   { ".debug_line", ".zdebug_line" },
330   { ".debug_loc", ".zdebug_loc" },
331   { ".debug_macinfo", ".zdebug_macinfo" },
332   { ".debug_macro", ".zdebug_macro" },
333   { ".debug_str", ".zdebug_str" },
334   { ".debug_ranges", ".zdebug_ranges" },
335   { ".debug_types", ".zdebug_types" },
336   { ".debug_addr", ".zdebug_addr" },
337   { ".debug_frame", ".zdebug_frame" },
338   { ".eh_frame", NULL },
339   { ".gdb_index", ".zgdb_index" },
340   23
341 };
342
343 /* List of DWO/DWP sections.  */
344
345 static const struct dwop_section_names
346 {
347   struct dwarf2_section_names abbrev_dwo;
348   struct dwarf2_section_names info_dwo;
349   struct dwarf2_section_names line_dwo;
350   struct dwarf2_section_names loc_dwo;
351   struct dwarf2_section_names macinfo_dwo;
352   struct dwarf2_section_names macro_dwo;
353   struct dwarf2_section_names str_dwo;
354   struct dwarf2_section_names str_offsets_dwo;
355   struct dwarf2_section_names types_dwo;
356   struct dwarf2_section_names cu_index;
357   struct dwarf2_section_names tu_index;
358 }
359 dwop_section_names =
360 {
361   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
362   { ".debug_info.dwo", ".zdebug_info.dwo" },
363   { ".debug_line.dwo", ".zdebug_line.dwo" },
364   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
365   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
366   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
367   { ".debug_str.dwo", ".zdebug_str.dwo" },
368   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
369   { ".debug_types.dwo", ".zdebug_types.dwo" },
370   { ".debug_cu_index", ".zdebug_cu_index" },
371   { ".debug_tu_index", ".zdebug_tu_index" },
372 };
373
374 /* local data types */
375
376 /* The data in a compilation unit header, after target2host
377    translation, looks like this.  */
378 struct comp_unit_head
379 {
380   unsigned int length;
381   short version;
382   unsigned char addr_size;
383   unsigned char signed_addr_p;
384   sect_offset abbrev_offset;
385
386   /* Size of file offsets; either 4 or 8.  */
387   unsigned int offset_size;
388
389   /* Size of the length field; either 4 or 12.  */
390   unsigned int initial_length_size;
391
392   /* Offset to the first byte of this compilation unit header in the
393      .debug_info section, for resolving relative reference dies.  */
394   sect_offset offset;
395
396   /* Offset to first die in this cu from the start of the cu.
397      This will be the first byte following the compilation unit header.  */
398   cu_offset first_die_offset;
399 };
400
401 /* Type used for delaying computation of method physnames.
402    See comments for compute_delayed_physnames.  */
403 struct delayed_method_info
404 {
405   /* The type to which the method is attached, i.e., its parent class.  */
406   struct type *type;
407
408   /* The index of the method in the type's function fieldlists.  */
409   int fnfield_index;
410
411   /* The index of the method in the fieldlist.  */
412   int index;
413
414   /* The name of the DIE.  */
415   const char *name;
416
417   /*  The DIE associated with this method.  */
418   struct die_info *die;
419 };
420
421 typedef struct delayed_method_info delayed_method_info;
422 DEF_VEC_O (delayed_method_info);
423
424 /* Internal state when decoding a particular compilation unit.  */
425 struct dwarf2_cu
426 {
427   /* The objfile containing this compilation unit.  */
428   struct objfile *objfile;
429
430   /* The header of the compilation unit.  */
431   struct comp_unit_head header;
432
433   /* Base address of this compilation unit.  */
434   CORE_ADDR base_address;
435
436   /* Non-zero if base_address has been set.  */
437   int base_known;
438
439   /* The language we are debugging.  */
440   enum language language;
441   const struct language_defn *language_defn;
442
443   const char *producer;
444
445   /* The generic symbol table building routines have separate lists for
446      file scope symbols and all all other scopes (local scopes).  So
447      we need to select the right one to pass to add_symbol_to_list().
448      We do it by keeping a pointer to the correct list in list_in_scope.
449
450      FIXME: The original dwarf code just treated the file scope as the
451      first local scope, and all other local scopes as nested local
452      scopes, and worked fine.  Check to see if we really need to
453      distinguish these in buildsym.c.  */
454   struct pending **list_in_scope;
455
456   /* The abbrev table for this CU.
457      Normally this points to the abbrev table in the objfile.
458      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
459   struct abbrev_table *abbrev_table;
460
461   /* Hash table holding all the loaded partial DIEs
462      with partial_die->offset.SECT_OFF as hash.  */
463   htab_t partial_dies;
464
465   /* Storage for things with the same lifetime as this read-in compilation
466      unit, including partial DIEs.  */
467   struct obstack comp_unit_obstack;
468
469   /* When multiple dwarf2_cu structures are living in memory, this field
470      chains them all together, so that they can be released efficiently.
471      We will probably also want a generation counter so that most-recently-used
472      compilation units are cached...  */
473   struct dwarf2_per_cu_data *read_in_chain;
474
475   /* Backlink to our per_cu entry.  */
476   struct dwarf2_per_cu_data *per_cu;
477
478   /* How many compilation units ago was this CU last referenced?  */
479   int last_used;
480
481   /* A hash table of DIE cu_offset for following references with
482      die_info->offset.sect_off as hash.  */
483   htab_t die_hash;
484
485   /* Full DIEs if read in.  */
486   struct die_info *dies;
487
488   /* A set of pointers to dwarf2_per_cu_data objects for compilation
489      units referenced by this one.  Only set during full symbol processing;
490      partial symbol tables do not have dependencies.  */
491   htab_t dependencies;
492
493   /* Header data from the line table, during full symbol processing.  */
494   struct line_header *line_header;
495
496   /* A list of methods which need to have physnames computed
497      after all type information has been read.  */
498   VEC (delayed_method_info) *method_list;
499
500   /* To be copied to symtab->call_site_htab.  */
501   htab_t call_site_htab;
502
503   /* Non-NULL if this CU came from a DWO file.
504      There is an invariant here that is important to remember:
505      Except for attributes copied from the top level DIE in the "main"
506      (or "stub") file in preparation for reading the DWO file
507      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
508      Either there isn't a DWO file (in which case this is NULL and the point
509      is moot), or there is and either we're not going to read it (in which
510      case this is NULL) or there is and we are reading it (in which case this
511      is non-NULL).  */
512   struct dwo_unit *dwo_unit;
513
514   /* The DW_AT_addr_base attribute if present, zero otherwise
515      (zero is a valid value though).
516      Note this value comes from the stub CU/TU's DIE.  */
517   ULONGEST addr_base;
518
519   /* The DW_AT_ranges_base attribute if present, zero otherwise
520      (zero is a valid value though).
521      Note this value comes from the stub CU/TU's DIE.
522      Also note that the value is zero in the non-DWO case so this value can
523      be used without needing to know whether DWO files are in use or not.
524      N.B. This does not apply to DW_AT_ranges appearing in
525      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
526      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
527      DW_AT_ranges_base *would* have to be applied, and we'd have to care
528      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
529   ULONGEST ranges_base;
530
531   /* Mark used when releasing cached dies.  */
532   unsigned int mark : 1;
533
534   /* This CU references .debug_loc.  See the symtab->locations_valid field.
535      This test is imperfect as there may exist optimized debug code not using
536      any location list and still facing inlining issues if handled as
537      unoptimized code.  For a future better test see GCC PR other/32998.  */
538   unsigned int has_loclist : 1;
539
540   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
541      if all the producer_is_* fields are valid.  This information is cached
542      because profiling CU expansion showed excessive time spent in
543      producer_is_gxx_lt_4_6.  */
544   unsigned int checked_producer : 1;
545   unsigned int producer_is_gxx_lt_4_6 : 1;
546   unsigned int producer_is_gcc_lt_4_3 : 1;
547   unsigned int producer_is_icc : 1;
548
549   /* When set, the file that we're processing is known to have
550      debugging info for C++ namespaces.  GCC 3.3.x did not produce
551      this information, but later versions do.  */
552
553   unsigned int processing_has_namespace_info : 1;
554 };
555
556 /* Persistent data held for a compilation unit, even when not
557    processing it.  We put a pointer to this structure in the
558    read_symtab_private field of the psymtab.  */
559
560 struct dwarf2_per_cu_data
561 {
562   /* The start offset and length of this compilation unit.
563      NOTE: Unlike comp_unit_head.length, this length includes
564      initial_length_size.
565      If the DIE refers to a DWO file, this is always of the original die,
566      not the DWO file.  */
567   sect_offset offset;
568   unsigned int length;
569
570   /* Flag indicating this compilation unit will be read in before
571      any of the current compilation units are processed.  */
572   unsigned int queued : 1;
573
574   /* This flag will be set when reading partial DIEs if we need to load
575      absolutely all DIEs for this compilation unit, instead of just the ones
576      we think are interesting.  It gets set if we look for a DIE in the
577      hash table and don't find it.  */
578   unsigned int load_all_dies : 1;
579
580   /* Non-zero if this CU is from .debug_types.
581      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
582      this is non-zero.  */
583   unsigned int is_debug_types : 1;
584
585   /* Non-zero if this CU is from the .dwz file.  */
586   unsigned int is_dwz : 1;
587
588   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
589      This flag is only valid if is_debug_types is true.
590      We can't read a CU directly from a DWO file: There are required
591      attributes in the stub.  */
592   unsigned int reading_dwo_directly : 1;
593
594   /* Non-zero if the TU has been read.
595      This is used to assist the "Stay in DWO Optimization" for Fission:
596      When reading a DWO, it's faster to read TUs from the DWO instead of
597      fetching them from random other DWOs (due to comdat folding).
598      If the TU has already been read, the optimization is unnecessary
599      (and unwise - we don't want to change where gdb thinks the TU lives
600      "midflight").
601      This flag is only valid if is_debug_types is true.  */
602   unsigned int tu_read : 1;
603
604   /* The section this CU/TU lives in.
605      If the DIE refers to a DWO file, this is always the original die,
606      not the DWO file.  */
607   struct dwarf2_section_info *section;
608
609   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
610      of the CU cache it gets reset to NULL again.  */
611   struct dwarf2_cu *cu;
612
613   /* The corresponding objfile.
614      Normally we can get the objfile from dwarf2_per_objfile.
615      However we can enter this file with just a "per_cu" handle.  */
616   struct objfile *objfile;
617
618   /* When using partial symbol tables, the 'psymtab' field is active.
619      Otherwise the 'quick' field is active.  */
620   union
621   {
622     /* The partial symbol table associated with this compilation unit,
623        or NULL for unread partial units.  */
624     struct partial_symtab *psymtab;
625
626     /* Data needed by the "quick" functions.  */
627     struct dwarf2_per_cu_quick_data *quick;
628   } v;
629
630   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
631      while reading psymtabs, used to compute the psymtab dependencies,
632      and then cleared.  Then it is filled in again while reading full
633      symbols, and only deleted when the objfile is destroyed.
634
635      This is also used to work around a difference between the way gold
636      generates .gdb_index version <=7 and the way gdb does.  Arguably this
637      is a gold bug.  For symbols coming from TUs, gold records in the index
638      the CU that includes the TU instead of the TU itself.  This breaks
639      dw2_lookup_symbol: It assumes that if the index says symbol X lives
640      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
641      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
642      we need to look in TU Z to find X.  Fortunately, this is akin to
643      DW_TAG_imported_unit, so we just use the same mechanism: For
644      .gdb_index version <=7 this also records the TUs that the CU referred
645      to.  Concurrently with this change gdb was modified to emit version 8
646      indices so we only pay a price for gold generated indices.
647      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
648   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
649 };
650
651 /* Entry in the signatured_types hash table.  */
652
653 struct signatured_type
654 {
655   /* The "per_cu" object of this type.
656      This struct is used iff per_cu.is_debug_types.
657      N.B.: This is the first member so that it's easy to convert pointers
658      between them.  */
659   struct dwarf2_per_cu_data per_cu;
660
661   /* The type's signature.  */
662   ULONGEST signature;
663
664   /* Offset in the TU of the type's DIE, as read from the TU header.
665      If this TU is a DWO stub and the definition lives in a DWO file
666      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
667   cu_offset type_offset_in_tu;
668
669   /* Offset in the section of the type's DIE.
670      If the definition lives in a DWO file, this is the offset in the
671      .debug_types.dwo section.
672      The value is zero until the actual value is known.
673      Zero is otherwise not a valid section offset.  */
674   sect_offset type_offset_in_section;
675
676   /* Type units are grouped by their DW_AT_stmt_list entry so that they
677      can share them.  This points to the containing symtab.  */
678   struct type_unit_group *type_unit_group;
679
680   /* The type.
681      The first time we encounter this type we fully read it in and install it
682      in the symbol tables.  Subsequent times we only need the type.  */
683   struct type *type;
684
685   /* Containing DWO unit.
686      This field is valid iff per_cu.reading_dwo_directly.  */
687   struct dwo_unit *dwo_unit;
688 };
689
690 typedef struct signatured_type *sig_type_ptr;
691 DEF_VEC_P (sig_type_ptr);
692
693 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
694    This includes type_unit_group and quick_file_names.  */
695
696 struct stmt_list_hash
697 {
698   /* The DWO unit this table is from or NULL if there is none.  */
699   struct dwo_unit *dwo_unit;
700
701   /* Offset in .debug_line or .debug_line.dwo.  */
702   sect_offset line_offset;
703 };
704
705 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
706    an object of this type.  */
707
708 struct type_unit_group
709 {
710   /* dwarf2read.c's main "handle" on a TU symtab.
711      To simplify things we create an artificial CU that "includes" all the
712      type units using this stmt_list so that the rest of the code still has
713      a "per_cu" handle on the symtab.
714      This PER_CU is recognized by having no section.  */
715 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
716   struct dwarf2_per_cu_data per_cu;
717
718   /* The TUs that share this DW_AT_stmt_list entry.
719      This is added to while parsing type units to build partial symtabs,
720      and is deleted afterwards and not used again.  */
721   VEC (sig_type_ptr) *tus;
722
723   /* The primary symtab.
724      Type units in a group needn't all be defined in the same source file,
725      so we create an essentially anonymous symtab as the primary symtab.  */
726   struct symtab *primary_symtab;
727
728   /* The data used to construct the hash key.  */
729   struct stmt_list_hash hash;
730
731   /* The number of symtabs from the line header.
732      The value here must match line_header.num_file_names.  */
733   unsigned int num_symtabs;
734
735   /* The symbol tables for this TU (obtained from the files listed in
736      DW_AT_stmt_list).
737      WARNING: The order of entries here must match the order of entries
738      in the line header.  After the first TU using this type_unit_group, the
739      line header for the subsequent TUs is recreated from this.  This is done
740      because we need to use the same symtabs for each TU using the same
741      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
742      there's no guarantee the line header doesn't have duplicate entries.  */
743   struct symtab **symtabs;
744 };
745
746 /* These sections are what may appear in a (real or virtual) DWO file.  */
747
748 struct dwo_sections
749 {
750   struct dwarf2_section_info abbrev;
751   struct dwarf2_section_info line;
752   struct dwarf2_section_info loc;
753   struct dwarf2_section_info macinfo;
754   struct dwarf2_section_info macro;
755   struct dwarf2_section_info str;
756   struct dwarf2_section_info str_offsets;
757   /* In the case of a virtual DWO file, these two are unused.  */
758   struct dwarf2_section_info info;
759   VEC (dwarf2_section_info_def) *types;
760 };
761
762 /* CUs/TUs in DWP/DWO files.  */
763
764 struct dwo_unit
765 {
766   /* Backlink to the containing struct dwo_file.  */
767   struct dwo_file *dwo_file;
768
769   /* The "id" that distinguishes this CU/TU.
770      .debug_info calls this "dwo_id", .debug_types calls this "signature".
771      Since signatures came first, we stick with it for consistency.  */
772   ULONGEST signature;
773
774   /* The section this CU/TU lives in, in the DWO file.  */
775   struct dwarf2_section_info *section;
776
777   /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section.  */
778   sect_offset offset;
779   unsigned int length;
780
781   /* For types, offset in the type's DIE of the type defined by this TU.  */
782   cu_offset type_offset_in_tu;
783 };
784
785 /* include/dwarf2.h defines the DWP section codes.
786    It defines a max value but it doesn't define a min value, which we
787    use for error checking, so provide one.  */
788
789 enum dwp_v2_section_ids
790 {
791   DW_SECT_MIN = 1
792 };
793
794 /* Data for one DWO file.
795
796    This includes virtual DWO files (a virtual DWO file is a DWO file as it
797    appears in a DWP file).  DWP files don't really have DWO files per se -
798    comdat folding of types "loses" the DWO file they came from, and from
799    a high level view DWP files appear to contain a mass of random types.
800    However, to maintain consistency with the non-DWP case we pretend DWP
801    files contain virtual DWO files, and we assign each TU with one virtual
802    DWO file (generally based on the line and abbrev section offsets -
803    a heuristic that seems to work in practice).  */
804
805 struct dwo_file
806 {
807   /* The DW_AT_GNU_dwo_name attribute.
808      For virtual DWO files the name is constructed from the section offsets
809      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
810      from related CU+TUs.  */
811   const char *dwo_name;
812
813   /* The DW_AT_comp_dir attribute.  */
814   const char *comp_dir;
815
816   /* The bfd, when the file is open.  Otherwise this is NULL.
817      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
818   bfd *dbfd;
819
820   /* The sections that make up this DWO file.
821      Remember that for virtual DWO files in DWP V2, these are virtual
822      sections (for lack of a better name).  */
823   struct dwo_sections sections;
824
825   /* The CU in the file.
826      We only support one because having more than one requires hacking the
827      dwo_name of each to match, which is highly unlikely to happen.
828      Doing this means all TUs can share comp_dir: We also assume that
829      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
830   struct dwo_unit *cu;
831
832   /* Table of TUs in the file.
833      Each element is a struct dwo_unit.  */
834   htab_t tus;
835 };
836
837 /* These sections are what may appear in a DWP file.  */
838
839 struct dwp_sections
840 {
841   /* These are used by both DWP version 1 and 2.  */
842   struct dwarf2_section_info str;
843   struct dwarf2_section_info cu_index;
844   struct dwarf2_section_info tu_index;
845
846   /* These are only used by DWP version 2 files.
847      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
848      sections are referenced by section number, and are not recorded here.
849      In DWP version 2 there is at most one copy of all these sections, each
850      section being (effectively) comprised of the concatenation of all of the
851      individual sections that exist in the version 1 format.
852      To keep the code simple we treat each of these concatenated pieces as a
853      section itself (a virtual section?).  */
854   struct dwarf2_section_info abbrev;
855   struct dwarf2_section_info info;
856   struct dwarf2_section_info line;
857   struct dwarf2_section_info loc;
858   struct dwarf2_section_info macinfo;
859   struct dwarf2_section_info macro;
860   struct dwarf2_section_info str_offsets;
861   struct dwarf2_section_info types;
862 };
863
864 /* These sections are what may appear in a virtual DWO file in DWP version 1.
865    A virtual DWO file is a DWO file as it appears in a DWP file.  */
866
867 struct virtual_v1_dwo_sections
868 {
869   struct dwarf2_section_info abbrev;
870   struct dwarf2_section_info line;
871   struct dwarf2_section_info loc;
872   struct dwarf2_section_info macinfo;
873   struct dwarf2_section_info macro;
874   struct dwarf2_section_info str_offsets;
875   /* Each DWP hash table entry records one CU or one TU.
876      That is recorded here, and copied to dwo_unit.section.  */
877   struct dwarf2_section_info info_or_types;
878 };
879
880 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
881    In version 2, the sections of the DWO files are concatenated together
882    and stored in one section of that name.  Thus each ELF section contains
883    several "virtual" sections.  */
884
885 struct virtual_v2_dwo_sections
886 {
887   bfd_size_type abbrev_offset;
888   bfd_size_type abbrev_size;
889
890   bfd_size_type line_offset;
891   bfd_size_type line_size;
892
893   bfd_size_type loc_offset;
894   bfd_size_type loc_size;
895
896   bfd_size_type macinfo_offset;
897   bfd_size_type macinfo_size;
898
899   bfd_size_type macro_offset;
900   bfd_size_type macro_size;
901
902   bfd_size_type str_offsets_offset;
903   bfd_size_type str_offsets_size;
904
905   /* Each DWP hash table entry records one CU or one TU.
906      That is recorded here, and copied to dwo_unit.section.  */
907   bfd_size_type info_or_types_offset;
908   bfd_size_type info_or_types_size;
909 };
910
911 /* Contents of DWP hash tables.  */
912
913 struct dwp_hash_table
914 {
915   uint32_t version, nr_columns;
916   uint32_t nr_units, nr_slots;
917   const gdb_byte *hash_table, *unit_table;
918   union
919   {
920     struct
921     {
922       const gdb_byte *indices;
923     } v1;
924     struct
925     {
926       /* This is indexed by column number and gives the id of the section
927          in that column.  */
928 #define MAX_NR_V2_DWO_SECTIONS \
929   (1 /* .debug_info or .debug_types */ \
930    + 1 /* .debug_abbrev */ \
931    + 1 /* .debug_line */ \
932    + 1 /* .debug_loc */ \
933    + 1 /* .debug_str_offsets */ \
934    + 1 /* .debug_macro or .debug_macinfo */)
935       int section_ids[MAX_NR_V2_DWO_SECTIONS];
936       const gdb_byte *offsets;
937       const gdb_byte *sizes;
938     } v2;
939   } section_pool;
940 };
941
942 /* Data for one DWP file.  */
943
944 struct dwp_file
945 {
946   /* Name of the file.  */
947   const char *name;
948
949   /* File format version.  */
950   int version;
951
952   /* The bfd.  */
953   bfd *dbfd;
954
955   /* Section info for this file.  */
956   struct dwp_sections sections;
957
958   /* Table of CUs in the file.  */
959   const struct dwp_hash_table *cus;
960
961   /* Table of TUs in the file.  */
962   const struct dwp_hash_table *tus;
963
964   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
965   htab_t loaded_cus;
966   htab_t loaded_tus;
967
968   /* Table to map ELF section numbers to their sections.
969      This is only needed for the DWP V1 file format.  */
970   unsigned int num_sections;
971   asection **elf_sections;
972 };
973
974 /* This represents a '.dwz' file.  */
975
976 struct dwz_file
977 {
978   /* A dwz file can only contain a few sections.  */
979   struct dwarf2_section_info abbrev;
980   struct dwarf2_section_info info;
981   struct dwarf2_section_info str;
982   struct dwarf2_section_info line;
983   struct dwarf2_section_info macro;
984   struct dwarf2_section_info gdb_index;
985
986   /* The dwz's BFD.  */
987   bfd *dwz_bfd;
988 };
989
990 /* Struct used to pass misc. parameters to read_die_and_children, et
991    al.  which are used for both .debug_info and .debug_types dies.
992    All parameters here are unchanging for the life of the call.  This
993    struct exists to abstract away the constant parameters of die reading.  */
994
995 struct die_reader_specs
996 {
997   /* The bfd of die_section.  */
998   bfd* abfd;
999
1000   /* The CU of the DIE we are parsing.  */
1001   struct dwarf2_cu *cu;
1002
1003   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
1004   struct dwo_file *dwo_file;
1005
1006   /* The section the die comes from.
1007      This is either .debug_info or .debug_types, or the .dwo variants.  */
1008   struct dwarf2_section_info *die_section;
1009
1010   /* die_section->buffer.  */
1011   const gdb_byte *buffer;
1012
1013   /* The end of the buffer.  */
1014   const gdb_byte *buffer_end;
1015
1016   /* The value of the DW_AT_comp_dir attribute.  */
1017   const char *comp_dir;
1018 };
1019
1020 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1021 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1022                                       const gdb_byte *info_ptr,
1023                                       struct die_info *comp_unit_die,
1024                                       int has_children,
1025                                       void *data);
1026
1027 /* The line number information for a compilation unit (found in the
1028    .debug_line section) begins with a "statement program header",
1029    which contains the following information.  */
1030 struct line_header
1031 {
1032   unsigned int total_length;
1033   unsigned short version;
1034   unsigned int header_length;
1035   unsigned char minimum_instruction_length;
1036   unsigned char maximum_ops_per_instruction;
1037   unsigned char default_is_stmt;
1038   int line_base;
1039   unsigned char line_range;
1040   unsigned char opcode_base;
1041
1042   /* standard_opcode_lengths[i] is the number of operands for the
1043      standard opcode whose value is i.  This means that
1044      standard_opcode_lengths[0] is unused, and the last meaningful
1045      element is standard_opcode_lengths[opcode_base - 1].  */
1046   unsigned char *standard_opcode_lengths;
1047
1048   /* The include_directories table.  NOTE!  These strings are not
1049      allocated with xmalloc; instead, they are pointers into
1050      debug_line_buffer.  If you try to free them, `free' will get
1051      indigestion.  */
1052   unsigned int num_include_dirs, include_dirs_size;
1053   const char **include_dirs;
1054
1055   /* The file_names table.  NOTE!  These strings are not allocated
1056      with xmalloc; instead, they are pointers into debug_line_buffer.
1057      Don't try to free them directly.  */
1058   unsigned int num_file_names, file_names_size;
1059   struct file_entry
1060   {
1061     const char *name;
1062     unsigned int dir_index;
1063     unsigned int mod_time;
1064     unsigned int length;
1065     int included_p; /* Non-zero if referenced by the Line Number Program.  */
1066     struct symtab *symtab; /* The associated symbol table, if any.  */
1067   } *file_names;
1068
1069   /* The start and end of the statement program following this
1070      header.  These point into dwarf2_per_objfile->line_buffer.  */
1071   const gdb_byte *statement_program_start, *statement_program_end;
1072 };
1073
1074 /* When we construct a partial symbol table entry we only
1075    need this much information.  */
1076 struct partial_die_info
1077   {
1078     /* Offset of this DIE.  */
1079     sect_offset offset;
1080
1081     /* DWARF-2 tag for this DIE.  */
1082     ENUM_BITFIELD(dwarf_tag) tag : 16;
1083
1084     /* Assorted flags describing the data found in this DIE.  */
1085     unsigned int has_children : 1;
1086     unsigned int is_external : 1;
1087     unsigned int is_declaration : 1;
1088     unsigned int has_type : 1;
1089     unsigned int has_specification : 1;
1090     unsigned int has_pc_info : 1;
1091     unsigned int may_be_inlined : 1;
1092
1093     /* Flag set if the SCOPE field of this structure has been
1094        computed.  */
1095     unsigned int scope_set : 1;
1096
1097     /* Flag set if the DIE has a byte_size attribute.  */
1098     unsigned int has_byte_size : 1;
1099
1100     /* Flag set if any of the DIE's children are template arguments.  */
1101     unsigned int has_template_arguments : 1;
1102
1103     /* Flag set if fixup_partial_die has been called on this die.  */
1104     unsigned int fixup_called : 1;
1105
1106     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1107     unsigned int is_dwz : 1;
1108
1109     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1110     unsigned int spec_is_dwz : 1;
1111
1112     /* The name of this DIE.  Normally the value of DW_AT_name, but
1113        sometimes a default name for unnamed DIEs.  */
1114     const char *name;
1115
1116     /* The linkage name, if present.  */
1117     const char *linkage_name;
1118
1119     /* The scope to prepend to our children.  This is generally
1120        allocated on the comp_unit_obstack, so will disappear
1121        when this compilation unit leaves the cache.  */
1122     const char *scope;
1123
1124     /* Some data associated with the partial DIE.  The tag determines
1125        which field is live.  */
1126     union
1127     {
1128       /* The location description associated with this DIE, if any.  */
1129       struct dwarf_block *locdesc;
1130       /* The offset of an import, for DW_TAG_imported_unit.  */
1131       sect_offset offset;
1132     } d;
1133
1134     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1135     CORE_ADDR lowpc;
1136     CORE_ADDR highpc;
1137
1138     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1139        DW_AT_sibling, if any.  */
1140     /* NOTE: This member isn't strictly necessary, read_partial_die could
1141        return DW_AT_sibling values to its caller load_partial_dies.  */
1142     const gdb_byte *sibling;
1143
1144     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1145        DW_AT_specification (or DW_AT_abstract_origin or
1146        DW_AT_extension).  */
1147     sect_offset spec_offset;
1148
1149     /* Pointers to this DIE's parent, first child, and next sibling,
1150        if any.  */
1151     struct partial_die_info *die_parent, *die_child, *die_sibling;
1152   };
1153
1154 /* This data structure holds the information of an abbrev.  */
1155 struct abbrev_info
1156   {
1157     unsigned int number;        /* number identifying abbrev */
1158     enum dwarf_tag tag;         /* dwarf tag */
1159     unsigned short has_children;                /* boolean */
1160     unsigned short num_attrs;   /* number of attributes */
1161     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1162     struct abbrev_info *next;   /* next in chain */
1163   };
1164
1165 struct attr_abbrev
1166   {
1167     ENUM_BITFIELD(dwarf_attribute) name : 16;
1168     ENUM_BITFIELD(dwarf_form) form : 16;
1169   };
1170
1171 /* Size of abbrev_table.abbrev_hash_table.  */
1172 #define ABBREV_HASH_SIZE 121
1173
1174 /* Top level data structure to contain an abbreviation table.  */
1175
1176 struct abbrev_table
1177 {
1178   /* Where the abbrev table came from.
1179      This is used as a sanity check when the table is used.  */
1180   sect_offset offset;
1181
1182   /* Storage for the abbrev table.  */
1183   struct obstack abbrev_obstack;
1184
1185   /* Hash table of abbrevs.
1186      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1187      It could be statically allocated, but the previous code didn't so we
1188      don't either.  */
1189   struct abbrev_info **abbrevs;
1190 };
1191
1192 /* Attributes have a name and a value.  */
1193 struct attribute
1194   {
1195     ENUM_BITFIELD(dwarf_attribute) name : 16;
1196     ENUM_BITFIELD(dwarf_form) form : 15;
1197
1198     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1199        field should be in u.str (existing only for DW_STRING) but it is kept
1200        here for better struct attribute alignment.  */
1201     unsigned int string_is_canonical : 1;
1202
1203     union
1204       {
1205         const char *str;
1206         struct dwarf_block *blk;
1207         ULONGEST unsnd;
1208         LONGEST snd;
1209         CORE_ADDR addr;
1210         ULONGEST signature;
1211       }
1212     u;
1213   };
1214
1215 /* This data structure holds a complete die structure.  */
1216 struct die_info
1217   {
1218     /* DWARF-2 tag for this DIE.  */
1219     ENUM_BITFIELD(dwarf_tag) tag : 16;
1220
1221     /* Number of attributes */
1222     unsigned char num_attrs;
1223
1224     /* True if we're presently building the full type name for the
1225        type derived from this DIE.  */
1226     unsigned char building_fullname : 1;
1227
1228     /* True if this die is in process.  PR 16581.  */
1229     unsigned char in_process : 1;
1230
1231     /* Abbrev number */
1232     unsigned int abbrev;
1233
1234     /* Offset in .debug_info or .debug_types section.  */
1235     sect_offset offset;
1236
1237     /* The dies in a compilation unit form an n-ary tree.  PARENT
1238        points to this die's parent; CHILD points to the first child of
1239        this node; and all the children of a given node are chained
1240        together via their SIBLING fields.  */
1241     struct die_info *child;     /* Its first child, if any.  */
1242     struct die_info *sibling;   /* Its next sibling, if any.  */
1243     struct die_info *parent;    /* Its parent, if any.  */
1244
1245     /* An array of attributes, with NUM_ATTRS elements.  There may be
1246        zero, but it's not common and zero-sized arrays are not
1247        sufficiently portable C.  */
1248     struct attribute attrs[1];
1249   };
1250
1251 /* Get at parts of an attribute structure.  */
1252
1253 #define DW_STRING(attr)    ((attr)->u.str)
1254 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1255 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1256 #define DW_BLOCK(attr)     ((attr)->u.blk)
1257 #define DW_SND(attr)       ((attr)->u.snd)
1258 #define DW_ADDR(attr)      ((attr)->u.addr)
1259 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1260
1261 /* Blocks are a bunch of untyped bytes.  */
1262 struct dwarf_block
1263   {
1264     size_t size;
1265
1266     /* Valid only if SIZE is not zero.  */
1267     const gdb_byte *data;
1268   };
1269
1270 #ifndef ATTR_ALLOC_CHUNK
1271 #define ATTR_ALLOC_CHUNK 4
1272 #endif
1273
1274 /* Allocate fields for structs, unions and enums in this size.  */
1275 #ifndef DW_FIELD_ALLOC_CHUNK
1276 #define DW_FIELD_ALLOC_CHUNK 4
1277 #endif
1278
1279 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1280    but this would require a corresponding change in unpack_field_as_long
1281    and friends.  */
1282 static int bits_per_byte = 8;
1283
1284 /* The routines that read and process dies for a C struct or C++ class
1285    pass lists of data member fields and lists of member function fields
1286    in an instance of a field_info structure, as defined below.  */
1287 struct field_info
1288   {
1289     /* List of data member and baseclasses fields.  */
1290     struct nextfield
1291       {
1292         struct nextfield *next;
1293         int accessibility;
1294         int virtuality;
1295         struct field field;
1296       }
1297      *fields, *baseclasses;
1298
1299     /* Number of fields (including baseclasses).  */
1300     int nfields;
1301
1302     /* Number of baseclasses.  */
1303     int nbaseclasses;
1304
1305     /* Set if the accesibility of one of the fields is not public.  */
1306     int non_public_fields;
1307
1308     /* Member function fields array, entries are allocated in the order they
1309        are encountered in the object file.  */
1310     struct nextfnfield
1311       {
1312         struct nextfnfield *next;
1313         struct fn_field fnfield;
1314       }
1315      *fnfields;
1316
1317     /* Member function fieldlist array, contains name of possibly overloaded
1318        member function, number of overloaded member functions and a pointer
1319        to the head of the member function field chain.  */
1320     struct fnfieldlist
1321       {
1322         const char *name;
1323         int length;
1324         struct nextfnfield *head;
1325       }
1326      *fnfieldlists;
1327
1328     /* Number of entries in the fnfieldlists array.  */
1329     int nfnfields;
1330
1331     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1332        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1333     struct typedef_field_list
1334       {
1335         struct typedef_field field;
1336         struct typedef_field_list *next;
1337       }
1338     *typedef_field_list;
1339     unsigned typedef_field_list_count;
1340   };
1341
1342 /* One item on the queue of compilation units to read in full symbols
1343    for.  */
1344 struct dwarf2_queue_item
1345 {
1346   struct dwarf2_per_cu_data *per_cu;
1347   enum language pretend_language;
1348   struct dwarf2_queue_item *next;
1349 };
1350
1351 /* The current queue.  */
1352 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1353
1354 /* Loaded secondary compilation units are kept in memory until they
1355    have not been referenced for the processing of this many
1356    compilation units.  Set this to zero to disable caching.  Cache
1357    sizes of up to at least twenty will improve startup time for
1358    typical inter-CU-reference binaries, at an obvious memory cost.  */
1359 static int dwarf2_max_cache_age = 5;
1360 static void
1361 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1362                            struct cmd_list_element *c, const char *value)
1363 {
1364   fprintf_filtered (file, _("The upper bound on the age of cached "
1365                             "dwarf2 compilation units is %s.\n"),
1366                     value);
1367 }
1368 \f
1369 /* local function prototypes */
1370
1371 static const char *get_section_name (const struct dwarf2_section_info *);
1372
1373 static const char *get_section_file_name (const struct dwarf2_section_info *);
1374
1375 static void dwarf2_locate_sections (bfd *, asection *, void *);
1376
1377 static void dwarf2_find_base_address (struct die_info *die,
1378                                       struct dwarf2_cu *cu);
1379
1380 static struct partial_symtab *create_partial_symtab
1381   (struct dwarf2_per_cu_data *per_cu, const char *name);
1382
1383 static void dwarf2_build_psymtabs_hard (struct objfile *);
1384
1385 static void scan_partial_symbols (struct partial_die_info *,
1386                                   CORE_ADDR *, CORE_ADDR *,
1387                                   int, struct dwarf2_cu *);
1388
1389 static void add_partial_symbol (struct partial_die_info *,
1390                                 struct dwarf2_cu *);
1391
1392 static void add_partial_namespace (struct partial_die_info *pdi,
1393                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1394                                    int need_pc, struct dwarf2_cu *cu);
1395
1396 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1397                                 CORE_ADDR *highpc, int need_pc,
1398                                 struct dwarf2_cu *cu);
1399
1400 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1401                                      struct dwarf2_cu *cu);
1402
1403 static void add_partial_subprogram (struct partial_die_info *pdi,
1404                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1405                                     int need_pc, struct dwarf2_cu *cu);
1406
1407 static void dwarf2_read_symtab (struct partial_symtab *,
1408                                 struct objfile *);
1409
1410 static void psymtab_to_symtab_1 (struct partial_symtab *);
1411
1412 static struct abbrev_info *abbrev_table_lookup_abbrev
1413   (const struct abbrev_table *, unsigned int);
1414
1415 static struct abbrev_table *abbrev_table_read_table
1416   (struct dwarf2_section_info *, sect_offset);
1417
1418 static void abbrev_table_free (struct abbrev_table *);
1419
1420 static void abbrev_table_free_cleanup (void *);
1421
1422 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1423                                  struct dwarf2_section_info *);
1424
1425 static void dwarf2_free_abbrev_table (void *);
1426
1427 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1428
1429 static struct partial_die_info *load_partial_dies
1430   (const struct die_reader_specs *, const gdb_byte *, int);
1431
1432 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1433                                          struct partial_die_info *,
1434                                          struct abbrev_info *,
1435                                          unsigned int,
1436                                          const gdb_byte *);
1437
1438 static struct partial_die_info *find_partial_die (sect_offset, int,
1439                                                   struct dwarf2_cu *);
1440
1441 static void fixup_partial_die (struct partial_die_info *,
1442                                struct dwarf2_cu *);
1443
1444 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1445                                        struct attribute *, struct attr_abbrev *,
1446                                        const gdb_byte *);
1447
1448 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1449
1450 static int read_1_signed_byte (bfd *, const gdb_byte *);
1451
1452 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1453
1454 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1455
1456 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1457
1458 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1459                                unsigned int *);
1460
1461 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1462
1463 static LONGEST read_checked_initial_length_and_offset
1464   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1465    unsigned int *, unsigned int *);
1466
1467 static LONGEST read_offset (bfd *, const gdb_byte *,
1468                             const struct comp_unit_head *,
1469                             unsigned int *);
1470
1471 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1472
1473 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1474                                        sect_offset);
1475
1476 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1477
1478 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1479
1480 static const char *read_indirect_string (bfd *, const gdb_byte *,
1481                                          const struct comp_unit_head *,
1482                                          unsigned int *);
1483
1484 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1485
1486 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1487
1488 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1489
1490 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1491                                               const gdb_byte *,
1492                                               unsigned int *);
1493
1494 static const char *read_str_index (const struct die_reader_specs *reader,
1495                                    struct dwarf2_cu *cu, ULONGEST str_index);
1496
1497 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1498
1499 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1500                                       struct dwarf2_cu *);
1501
1502 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1503                                                 unsigned int);
1504
1505 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1506                                struct dwarf2_cu *cu);
1507
1508 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1509
1510 static struct die_info *die_specification (struct die_info *die,
1511                                            struct dwarf2_cu **);
1512
1513 static void free_line_header (struct line_header *lh);
1514
1515 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1516                                                      struct dwarf2_cu *cu);
1517
1518 static void dwarf_decode_lines (struct line_header *, const char *,
1519                                 struct dwarf2_cu *, struct partial_symtab *,
1520                                 int);
1521
1522 static void dwarf2_start_subfile (const char *, const char *, const char *);
1523
1524 static void dwarf2_start_symtab (struct dwarf2_cu *,
1525                                  const char *, const char *, CORE_ADDR);
1526
1527 static struct symbol *new_symbol (struct die_info *, struct type *,
1528                                   struct dwarf2_cu *);
1529
1530 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1531                                        struct dwarf2_cu *, struct symbol *);
1532
1533 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1534                                 struct dwarf2_cu *);
1535
1536 static void dwarf2_const_value_attr (const struct attribute *attr,
1537                                      struct type *type,
1538                                      const char *name,
1539                                      struct obstack *obstack,
1540                                      struct dwarf2_cu *cu, LONGEST *value,
1541                                      const gdb_byte **bytes,
1542                                      struct dwarf2_locexpr_baton **baton);
1543
1544 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1545
1546 static int need_gnat_info (struct dwarf2_cu *);
1547
1548 static struct type *die_descriptive_type (struct die_info *,
1549                                           struct dwarf2_cu *);
1550
1551 static void set_descriptive_type (struct type *, struct die_info *,
1552                                   struct dwarf2_cu *);
1553
1554 static struct type *die_containing_type (struct die_info *,
1555                                          struct dwarf2_cu *);
1556
1557 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1558                                      struct dwarf2_cu *);
1559
1560 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1561
1562 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1563
1564 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1565
1566 static char *typename_concat (struct obstack *obs, const char *prefix,
1567                               const char *suffix, int physname,
1568                               struct dwarf2_cu *cu);
1569
1570 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1571
1572 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1573
1574 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1575
1576 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1577
1578 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1579
1580 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1581                                struct dwarf2_cu *, struct partial_symtab *);
1582
1583 static int dwarf2_get_pc_bounds (struct die_info *,
1584                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1585                                  struct partial_symtab *);
1586
1587 static void get_scope_pc_bounds (struct die_info *,
1588                                  CORE_ADDR *, CORE_ADDR *,
1589                                  struct dwarf2_cu *);
1590
1591 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1592                                         CORE_ADDR, struct dwarf2_cu *);
1593
1594 static void dwarf2_add_field (struct field_info *, struct die_info *,
1595                               struct dwarf2_cu *);
1596
1597 static void dwarf2_attach_fields_to_type (struct field_info *,
1598                                           struct type *, struct dwarf2_cu *);
1599
1600 static void dwarf2_add_member_fn (struct field_info *,
1601                                   struct die_info *, struct type *,
1602                                   struct dwarf2_cu *);
1603
1604 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1605                                              struct type *,
1606                                              struct dwarf2_cu *);
1607
1608 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1609
1610 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1611
1612 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1613
1614 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1615
1616 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1617
1618 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1619
1620 static struct type *read_module_type (struct die_info *die,
1621                                       struct dwarf2_cu *cu);
1622
1623 static const char *namespace_name (struct die_info *die,
1624                                    int *is_anonymous, struct dwarf2_cu *);
1625
1626 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1627
1628 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1629
1630 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1631                                                        struct dwarf2_cu *);
1632
1633 static struct die_info *read_die_and_siblings_1
1634   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1635    struct die_info *);
1636
1637 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1638                                                const gdb_byte *info_ptr,
1639                                                const gdb_byte **new_info_ptr,
1640                                                struct die_info *parent);
1641
1642 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1643                                         struct die_info **, const gdb_byte *,
1644                                         int *, int);
1645
1646 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1647                                       struct die_info **, const gdb_byte *,
1648                                       int *);
1649
1650 static void process_die (struct die_info *, struct dwarf2_cu *);
1651
1652 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1653                                              struct obstack *);
1654
1655 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1656
1657 static const char *dwarf2_full_name (const char *name,
1658                                      struct die_info *die,
1659                                      struct dwarf2_cu *cu);
1660
1661 static const char *dwarf2_physname (const char *name, struct die_info *die,
1662                                     struct dwarf2_cu *cu);
1663
1664 static struct die_info *dwarf2_extension (struct die_info *die,
1665                                           struct dwarf2_cu **);
1666
1667 static const char *dwarf_tag_name (unsigned int);
1668
1669 static const char *dwarf_attr_name (unsigned int);
1670
1671 static const char *dwarf_form_name (unsigned int);
1672
1673 static char *dwarf_bool_name (unsigned int);
1674
1675 static const char *dwarf_type_encoding_name (unsigned int);
1676
1677 static struct die_info *sibling_die (struct die_info *);
1678
1679 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1680
1681 static void dump_die_for_error (struct die_info *);
1682
1683 static void dump_die_1 (struct ui_file *, int level, int max_level,
1684                         struct die_info *);
1685
1686 /*static*/ void dump_die (struct die_info *, int max_level);
1687
1688 static void store_in_ref_table (struct die_info *,
1689                                 struct dwarf2_cu *);
1690
1691 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1692
1693 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1694
1695 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1696                                                const struct attribute *,
1697                                                struct dwarf2_cu **);
1698
1699 static struct die_info *follow_die_ref (struct die_info *,
1700                                         const struct attribute *,
1701                                         struct dwarf2_cu **);
1702
1703 static struct die_info *follow_die_sig (struct die_info *,
1704                                         const struct attribute *,
1705                                         struct dwarf2_cu **);
1706
1707 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1708                                          struct dwarf2_cu *);
1709
1710 static struct type *get_DW_AT_signature_type (struct die_info *,
1711                                               const struct attribute *,
1712                                               struct dwarf2_cu *);
1713
1714 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1715
1716 static void read_signatured_type (struct signatured_type *);
1717
1718 static struct type_unit_group *get_type_unit_group
1719     (struct dwarf2_cu *, const struct attribute *);
1720
1721 static void build_type_unit_groups (die_reader_func_ftype *, void *);
1722
1723 /* memory allocation interface */
1724
1725 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1726
1727 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1728
1729 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int,
1730                                  const char *, int);
1731
1732 static int attr_form_is_block (const struct attribute *);
1733
1734 static int attr_form_is_section_offset (const struct attribute *);
1735
1736 static int attr_form_is_constant (const struct attribute *);
1737
1738 static int attr_form_is_ref (const struct attribute *);
1739
1740 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1741                                    struct dwarf2_loclist_baton *baton,
1742                                    const struct attribute *attr);
1743
1744 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1745                                          struct symbol *sym,
1746                                          struct dwarf2_cu *cu,
1747                                          int is_block);
1748
1749 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1750                                      const gdb_byte *info_ptr,
1751                                      struct abbrev_info *abbrev);
1752
1753 static void free_stack_comp_unit (void *);
1754
1755 static hashval_t partial_die_hash (const void *item);
1756
1757 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1758
1759 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1760   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1761
1762 static void init_one_comp_unit (struct dwarf2_cu *cu,
1763                                 struct dwarf2_per_cu_data *per_cu);
1764
1765 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1766                                    struct die_info *comp_unit_die,
1767                                    enum language pretend_language);
1768
1769 static void free_heap_comp_unit (void *);
1770
1771 static void free_cached_comp_units (void *);
1772
1773 static void age_cached_comp_units (void);
1774
1775 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1776
1777 static struct type *set_die_type (struct die_info *, struct type *,
1778                                   struct dwarf2_cu *);
1779
1780 static void create_all_comp_units (struct objfile *);
1781
1782 static int create_all_type_units (struct objfile *);
1783
1784 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1785                                  enum language);
1786
1787 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1788                                     enum language);
1789
1790 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1791                                     enum language);
1792
1793 static void dwarf2_add_dependence (struct dwarf2_cu *,
1794                                    struct dwarf2_per_cu_data *);
1795
1796 static void dwarf2_mark (struct dwarf2_cu *);
1797
1798 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1799
1800 static struct type *get_die_type_at_offset (sect_offset,
1801                                             struct dwarf2_per_cu_data *);
1802
1803 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1804
1805 static void dwarf2_release_queue (void *dummy);
1806
1807 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1808                              enum language pretend_language);
1809
1810 static void process_queue (void);
1811
1812 static void find_file_and_directory (struct die_info *die,
1813                                      struct dwarf2_cu *cu,
1814                                      const char **name, const char **comp_dir);
1815
1816 static char *file_full_name (int file, struct line_header *lh,
1817                              const char *comp_dir);
1818
1819 static const gdb_byte *read_and_check_comp_unit_head
1820   (struct comp_unit_head *header,
1821    struct dwarf2_section_info *section,
1822    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1823    int is_debug_types_section);
1824
1825 static void init_cutu_and_read_dies
1826   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1827    int use_existing_cu, int keep,
1828    die_reader_func_ftype *die_reader_func, void *data);
1829
1830 static void init_cutu_and_read_dies_simple
1831   (struct dwarf2_per_cu_data *this_cu,
1832    die_reader_func_ftype *die_reader_func, void *data);
1833
1834 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1835
1836 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1837
1838 static struct dwo_unit *lookup_dwo_unit_in_dwp
1839   (struct dwp_file *dwp_file, const char *comp_dir,
1840    ULONGEST signature, int is_debug_types);
1841
1842 static struct dwp_file *get_dwp_file (void);
1843
1844 static struct dwo_unit *lookup_dwo_comp_unit
1845   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1846
1847 static struct dwo_unit *lookup_dwo_type_unit
1848   (struct signatured_type *, const char *, const char *);
1849
1850 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1851
1852 static void free_dwo_file_cleanup (void *);
1853
1854 static void process_cu_includes (void);
1855
1856 static void check_producer (struct dwarf2_cu *cu);
1857 \f
1858 /* Various complaints about symbol reading that don't abort the process.  */
1859
1860 static void
1861 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1862 {
1863   complaint (&symfile_complaints,
1864              _("statement list doesn't fit in .debug_line section"));
1865 }
1866
1867 static void
1868 dwarf2_debug_line_missing_file_complaint (void)
1869 {
1870   complaint (&symfile_complaints,
1871              _(".debug_line section has line data without a file"));
1872 }
1873
1874 static void
1875 dwarf2_debug_line_missing_end_sequence_complaint (void)
1876 {
1877   complaint (&symfile_complaints,
1878              _(".debug_line section has line "
1879                "program sequence without an end"));
1880 }
1881
1882 static void
1883 dwarf2_complex_location_expr_complaint (void)
1884 {
1885   complaint (&symfile_complaints, _("location expression too complex"));
1886 }
1887
1888 static void
1889 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1890                                               int arg3)
1891 {
1892   complaint (&symfile_complaints,
1893              _("const value length mismatch for '%s', got %d, expected %d"),
1894              arg1, arg2, arg3);
1895 }
1896
1897 static void
1898 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1899 {
1900   complaint (&symfile_complaints,
1901              _("debug info runs off end of %s section"
1902                " [in module %s]"),
1903              get_section_name (section),
1904              get_section_file_name (section));
1905 }
1906
1907 static void
1908 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1909 {
1910   complaint (&symfile_complaints,
1911              _("macro debug info contains a "
1912                "malformed macro definition:\n`%s'"),
1913              arg1);
1914 }
1915
1916 static void
1917 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1918 {
1919   complaint (&symfile_complaints,
1920              _("invalid attribute class or form for '%s' in '%s'"),
1921              arg1, arg2);
1922 }
1923 \f
1924 #if WORDS_BIGENDIAN
1925
1926 /* Convert VALUE between big- and little-endian.  */
1927 static offset_type
1928 byte_swap (offset_type value)
1929 {
1930   offset_type result;
1931
1932   result = (value & 0xff) << 24;
1933   result |= (value & 0xff00) << 8;
1934   result |= (value & 0xff0000) >> 8;
1935   result |= (value & 0xff000000) >> 24;
1936   return result;
1937 }
1938
1939 #define MAYBE_SWAP(V)  byte_swap (V)
1940
1941 #else
1942 #define MAYBE_SWAP(V) (V)
1943 #endif /* WORDS_BIGENDIAN */
1944
1945 /* Read the given attribute value as an address, taking the attribute's
1946    form into account.  */
1947
1948 static CORE_ADDR
1949 attr_value_as_address (struct attribute *attr)
1950 {
1951   CORE_ADDR addr;
1952
1953   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
1954     {
1955       /* Aside from a few clearly defined exceptions, attributes that
1956          contain an address must always be in DW_FORM_addr form.
1957          Unfortunately, some compilers happen to be violating this
1958          requirement by encoding addresses using other forms, such
1959          as DW_FORM_data4 for example.  For those broken compilers,
1960          we try to do our best, without any guarantee of success,
1961          to interpret the address correctly.  It would also be nice
1962          to generate a complaint, but that would require us to maintain
1963          a list of legitimate cases where a non-address form is allowed,
1964          as well as update callers to pass in at least the CU's DWARF
1965          version.  This is more overhead than what we're willing to
1966          expand for a pretty rare case.  */
1967       addr = DW_UNSND (attr);
1968     }
1969   else
1970     addr = DW_ADDR (attr);
1971
1972   return addr;
1973 }
1974
1975 /* The suffix for an index file.  */
1976 #define INDEX_SUFFIX ".gdb-index"
1977
1978 /* Try to locate the sections we need for DWARF 2 debugging
1979    information and return true if we have enough to do something.
1980    NAMES points to the dwarf2 section names, or is NULL if the standard
1981    ELF names are used.  */
1982
1983 int
1984 dwarf2_has_info (struct objfile *objfile,
1985                  const struct dwarf2_debug_sections *names)
1986 {
1987   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1988   if (!dwarf2_per_objfile)
1989     {
1990       /* Initialize per-objfile state.  */
1991       struct dwarf2_per_objfile *data
1992         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1993
1994       memset (data, 0, sizeof (*data));
1995       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1996       dwarf2_per_objfile = data;
1997
1998       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
1999                              (void *) names);
2000       dwarf2_per_objfile->objfile = objfile;
2001     }
2002   return (!dwarf2_per_objfile->info.is_virtual
2003           && dwarf2_per_objfile->info.s.asection != NULL
2004           && !dwarf2_per_objfile->abbrev.is_virtual
2005           && dwarf2_per_objfile->abbrev.s.asection != NULL);
2006 }
2007
2008 /* Return the containing section of virtual section SECTION.  */
2009
2010 static struct dwarf2_section_info *
2011 get_containing_section (const struct dwarf2_section_info *section)
2012 {
2013   gdb_assert (section->is_virtual);
2014   return section->s.containing_section;
2015 }
2016
2017 /* Return the bfd owner of SECTION.  */
2018
2019 static struct bfd *
2020 get_section_bfd_owner (const struct dwarf2_section_info *section)
2021 {
2022   if (section->is_virtual)
2023     {
2024       section = get_containing_section (section);
2025       gdb_assert (!section->is_virtual);
2026     }
2027   return section->s.asection->owner;
2028 }
2029
2030 /* Return the bfd section of SECTION.
2031    Returns NULL if the section is not present.  */
2032
2033 static asection *
2034 get_section_bfd_section (const struct dwarf2_section_info *section)
2035 {
2036   if (section->is_virtual)
2037     {
2038       section = get_containing_section (section);
2039       gdb_assert (!section->is_virtual);
2040     }
2041   return section->s.asection;
2042 }
2043
2044 /* Return the name of SECTION.  */
2045
2046 static const char *
2047 get_section_name (const struct dwarf2_section_info *section)
2048 {
2049   asection *sectp = get_section_bfd_section (section);
2050
2051   gdb_assert (sectp != NULL);
2052   return bfd_section_name (get_section_bfd_owner (section), sectp);
2053 }
2054
2055 /* Return the name of the file SECTION is in.  */
2056
2057 static const char *
2058 get_section_file_name (const struct dwarf2_section_info *section)
2059 {
2060   bfd *abfd = get_section_bfd_owner (section);
2061
2062   return bfd_get_filename (abfd);
2063 }
2064
2065 /* Return the id of SECTION.
2066    Returns 0 if SECTION doesn't exist.  */
2067
2068 static int
2069 get_section_id (const struct dwarf2_section_info *section)
2070 {
2071   asection *sectp = get_section_bfd_section (section);
2072
2073   if (sectp == NULL)
2074     return 0;
2075   return sectp->id;
2076 }
2077
2078 /* Return the flags of SECTION.
2079    SECTION (or containing section if this is a virtual section) must exist.  */
2080
2081 static int
2082 get_section_flags (const struct dwarf2_section_info *section)
2083 {
2084   asection *sectp = get_section_bfd_section (section);
2085
2086   gdb_assert (sectp != NULL);
2087   return bfd_get_section_flags (sectp->owner, sectp);
2088 }
2089
2090 /* When loading sections, we look either for uncompressed section or for
2091    compressed section names.  */
2092
2093 static int
2094 section_is_p (const char *section_name,
2095               const struct dwarf2_section_names *names)
2096 {
2097   if (names->normal != NULL
2098       && strcmp (section_name, names->normal) == 0)
2099     return 1;
2100   if (names->compressed != NULL
2101       && strcmp (section_name, names->compressed) == 0)
2102     return 1;
2103   return 0;
2104 }
2105
2106 /* This function is mapped across the sections and remembers the
2107    offset and size of each of the debugging sections we are interested
2108    in.  */
2109
2110 static void
2111 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2112 {
2113   const struct dwarf2_debug_sections *names;
2114   flagword aflag = bfd_get_section_flags (abfd, sectp);
2115
2116   if (vnames == NULL)
2117     names = &dwarf2_elf_names;
2118   else
2119     names = (const struct dwarf2_debug_sections *) vnames;
2120
2121   if ((aflag & SEC_HAS_CONTENTS) == 0)
2122     {
2123     }
2124   else if (section_is_p (sectp->name, &names->info))
2125     {
2126       dwarf2_per_objfile->info.s.asection = sectp;
2127       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2128     }
2129   else if (section_is_p (sectp->name, &names->abbrev))
2130     {
2131       dwarf2_per_objfile->abbrev.s.asection = sectp;
2132       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2133     }
2134   else if (section_is_p (sectp->name, &names->line))
2135     {
2136       dwarf2_per_objfile->line.s.asection = sectp;
2137       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2138     }
2139   else if (section_is_p (sectp->name, &names->loc))
2140     {
2141       dwarf2_per_objfile->loc.s.asection = sectp;
2142       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2143     }
2144   else if (section_is_p (sectp->name, &names->macinfo))
2145     {
2146       dwarf2_per_objfile->macinfo.s.asection = sectp;
2147       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2148     }
2149   else if (section_is_p (sectp->name, &names->macro))
2150     {
2151       dwarf2_per_objfile->macro.s.asection = sectp;
2152       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2153     }
2154   else if (section_is_p (sectp->name, &names->str))
2155     {
2156       dwarf2_per_objfile->str.s.asection = sectp;
2157       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2158     }
2159   else if (section_is_p (sectp->name, &names->addr))
2160     {
2161       dwarf2_per_objfile->addr.s.asection = sectp;
2162       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2163     }
2164   else if (section_is_p (sectp->name, &names->frame))
2165     {
2166       dwarf2_per_objfile->frame.s.asection = sectp;
2167       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2168     }
2169   else if (section_is_p (sectp->name, &names->eh_frame))
2170     {
2171       dwarf2_per_objfile->eh_frame.s.asection = sectp;
2172       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2173     }
2174   else if (section_is_p (sectp->name, &names->ranges))
2175     {
2176       dwarf2_per_objfile->ranges.s.asection = sectp;
2177       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2178     }
2179   else if (section_is_p (sectp->name, &names->types))
2180     {
2181       struct dwarf2_section_info type_section;
2182
2183       memset (&type_section, 0, sizeof (type_section));
2184       type_section.s.asection = sectp;
2185       type_section.size = bfd_get_section_size (sectp);
2186
2187       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2188                      &type_section);
2189     }
2190   else if (section_is_p (sectp->name, &names->gdb_index))
2191     {
2192       dwarf2_per_objfile->gdb_index.s.asection = sectp;
2193       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2194     }
2195
2196   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2197       && bfd_section_vma (abfd, sectp) == 0)
2198     dwarf2_per_objfile->has_section_at_zero = 1;
2199 }
2200
2201 /* A helper function that decides whether a section is empty,
2202    or not present.  */
2203
2204 static int
2205 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2206 {
2207   if (section->is_virtual)
2208     return section->size == 0;
2209   return section->s.asection == NULL || section->size == 0;
2210 }
2211
2212 /* Read the contents of the section INFO.
2213    OBJFILE is the main object file, but not necessarily the file where
2214    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2215    of the DWO file.
2216    If the section is compressed, uncompress it before returning.  */
2217
2218 static void
2219 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2220 {
2221   asection *sectp;
2222   bfd *abfd;
2223   gdb_byte *buf, *retbuf;
2224
2225   if (info->readin)
2226     return;
2227   info->buffer = NULL;
2228   info->readin = 1;
2229
2230   if (dwarf2_section_empty_p (info))
2231     return;
2232
2233   sectp = get_section_bfd_section (info);
2234
2235   /* If this is a virtual section we need to read in the real one first.  */
2236   if (info->is_virtual)
2237     {
2238       struct dwarf2_section_info *containing_section =
2239         get_containing_section (info);
2240
2241       gdb_assert (sectp != NULL);
2242       if ((sectp->flags & SEC_RELOC) != 0)
2243         {
2244           error (_("Dwarf Error: DWP format V2 with relocations is not"
2245                    " supported in section %s [in module %s]"),
2246                  get_section_name (info), get_section_file_name (info));
2247         }
2248       dwarf2_read_section (objfile, containing_section);
2249       /* Other code should have already caught virtual sections that don't
2250          fit.  */
2251       gdb_assert (info->virtual_offset + info->size
2252                   <= containing_section->size);
2253       /* If the real section is empty or there was a problem reading the
2254          section we shouldn't get here.  */
2255       gdb_assert (containing_section->buffer != NULL);
2256       info->buffer = containing_section->buffer + info->virtual_offset;
2257       return;
2258     }
2259
2260   /* If the section has relocations, we must read it ourselves.
2261      Otherwise we attach it to the BFD.  */
2262   if ((sectp->flags & SEC_RELOC) == 0)
2263     {
2264       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2265       return;
2266     }
2267
2268   buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2269   info->buffer = buf;
2270
2271   /* When debugging .o files, we may need to apply relocations; see
2272      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2273      We never compress sections in .o files, so we only need to
2274      try this when the section is not compressed.  */
2275   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2276   if (retbuf != NULL)
2277     {
2278       info->buffer = retbuf;
2279       return;
2280     }
2281
2282   abfd = get_section_bfd_owner (info);
2283   gdb_assert (abfd != NULL);
2284
2285   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2286       || bfd_bread (buf, info->size, abfd) != info->size)
2287     {
2288       error (_("Dwarf Error: Can't read DWARF data"
2289                " in section %s [in module %s]"),
2290              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2291     }
2292 }
2293
2294 /* A helper function that returns the size of a section in a safe way.
2295    If you are positive that the section has been read before using the
2296    size, then it is safe to refer to the dwarf2_section_info object's
2297    "size" field directly.  In other cases, you must call this
2298    function, because for compressed sections the size field is not set
2299    correctly until the section has been read.  */
2300
2301 static bfd_size_type
2302 dwarf2_section_size (struct objfile *objfile,
2303                      struct dwarf2_section_info *info)
2304 {
2305   if (!info->readin)
2306     dwarf2_read_section (objfile, info);
2307   return info->size;
2308 }
2309
2310 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2311    SECTION_NAME.  */
2312
2313 void
2314 dwarf2_get_section_info (struct objfile *objfile,
2315                          enum dwarf2_section_enum sect,
2316                          asection **sectp, const gdb_byte **bufp,
2317                          bfd_size_type *sizep)
2318 {
2319   struct dwarf2_per_objfile *data
2320     = objfile_data (objfile, dwarf2_objfile_data_key);
2321   struct dwarf2_section_info *info;
2322
2323   /* We may see an objfile without any DWARF, in which case we just
2324      return nothing.  */
2325   if (data == NULL)
2326     {
2327       *sectp = NULL;
2328       *bufp = NULL;
2329       *sizep = 0;
2330       return;
2331     }
2332   switch (sect)
2333     {
2334     case DWARF2_DEBUG_FRAME:
2335       info = &data->frame;
2336       break;
2337     case DWARF2_EH_FRAME:
2338       info = &data->eh_frame;
2339       break;
2340     default:
2341       gdb_assert_not_reached ("unexpected section");
2342     }
2343
2344   dwarf2_read_section (objfile, info);
2345
2346   *sectp = get_section_bfd_section (info);
2347   *bufp = info->buffer;
2348   *sizep = info->size;
2349 }
2350
2351 /* A helper function to find the sections for a .dwz file.  */
2352
2353 static void
2354 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2355 {
2356   struct dwz_file *dwz_file = arg;
2357
2358   /* Note that we only support the standard ELF names, because .dwz
2359      is ELF-only (at the time of writing).  */
2360   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2361     {
2362       dwz_file->abbrev.s.asection = sectp;
2363       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2364     }
2365   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2366     {
2367       dwz_file->info.s.asection = sectp;
2368       dwz_file->info.size = bfd_get_section_size (sectp);
2369     }
2370   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2371     {
2372       dwz_file->str.s.asection = sectp;
2373       dwz_file->str.size = bfd_get_section_size (sectp);
2374     }
2375   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2376     {
2377       dwz_file->line.s.asection = sectp;
2378       dwz_file->line.size = bfd_get_section_size (sectp);
2379     }
2380   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2381     {
2382       dwz_file->macro.s.asection = sectp;
2383       dwz_file->macro.size = bfd_get_section_size (sectp);
2384     }
2385   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2386     {
2387       dwz_file->gdb_index.s.asection = sectp;
2388       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2389     }
2390 }
2391
2392 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2393    there is no .gnu_debugaltlink section in the file.  Error if there
2394    is such a section but the file cannot be found.  */
2395
2396 static struct dwz_file *
2397 dwarf2_get_dwz_file (void)
2398 {
2399   bfd *dwz_bfd;
2400   char *data;
2401   struct cleanup *cleanup;
2402   const char *filename;
2403   struct dwz_file *result;
2404   bfd_size_type buildid_len_arg;
2405   size_t buildid_len;
2406   bfd_byte *buildid;
2407
2408   if (dwarf2_per_objfile->dwz_file != NULL)
2409     return dwarf2_per_objfile->dwz_file;
2410
2411   bfd_set_error (bfd_error_no_error);
2412   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2413                                       &buildid_len_arg, &buildid);
2414   if (data == NULL)
2415     {
2416       if (bfd_get_error () == bfd_error_no_error)
2417         return NULL;
2418       error (_("could not read '.gnu_debugaltlink' section: %s"),
2419              bfd_errmsg (bfd_get_error ()));
2420     }
2421   cleanup = make_cleanup (xfree, data);
2422   make_cleanup (xfree, buildid);
2423
2424   buildid_len = (size_t) buildid_len_arg;
2425
2426   filename = (const char *) data;
2427   if (!IS_ABSOLUTE_PATH (filename))
2428     {
2429       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2430       char *rel;
2431
2432       make_cleanup (xfree, abs);
2433       abs = ldirname (abs);
2434       make_cleanup (xfree, abs);
2435
2436       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2437       make_cleanup (xfree, rel);
2438       filename = rel;
2439     }
2440
2441   /* First try the file name given in the section.  If that doesn't
2442      work, try to use the build-id instead.  */
2443   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2444   if (dwz_bfd != NULL)
2445     {
2446       if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2447         {
2448           gdb_bfd_unref (dwz_bfd);
2449           dwz_bfd = NULL;
2450         }
2451     }
2452
2453   if (dwz_bfd == NULL)
2454     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2455
2456   if (dwz_bfd == NULL)
2457     error (_("could not find '.gnu_debugaltlink' file for %s"),
2458            objfile_name (dwarf2_per_objfile->objfile));
2459
2460   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2461                            struct dwz_file);
2462   result->dwz_bfd = dwz_bfd;
2463
2464   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2465
2466   do_cleanups (cleanup);
2467
2468   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
2469   dwarf2_per_objfile->dwz_file = result;
2470   return result;
2471 }
2472 \f
2473 /* DWARF quick_symbols_functions support.  */
2474
2475 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2476    unique line tables, so we maintain a separate table of all .debug_line
2477    derived entries to support the sharing.
2478    All the quick functions need is the list of file names.  We discard the
2479    line_header when we're done and don't need to record it here.  */
2480 struct quick_file_names
2481 {
2482   /* The data used to construct the hash key.  */
2483   struct stmt_list_hash hash;
2484
2485   /* The number of entries in file_names, real_names.  */
2486   unsigned int num_file_names;
2487
2488   /* The file names from the line table, after being run through
2489      file_full_name.  */
2490   const char **file_names;
2491
2492   /* The file names from the line table after being run through
2493      gdb_realpath.  These are computed lazily.  */
2494   const char **real_names;
2495 };
2496
2497 /* When using the index (and thus not using psymtabs), each CU has an
2498    object of this type.  This is used to hold information needed by
2499    the various "quick" methods.  */
2500 struct dwarf2_per_cu_quick_data
2501 {
2502   /* The file table.  This can be NULL if there was no file table
2503      or it's currently not read in.
2504      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2505   struct quick_file_names *file_names;
2506
2507   /* The corresponding symbol table.  This is NULL if symbols for this
2508      CU have not yet been read.  */
2509   struct symtab *symtab;
2510
2511   /* A temporary mark bit used when iterating over all CUs in
2512      expand_symtabs_matching.  */
2513   unsigned int mark : 1;
2514
2515   /* True if we've tried to read the file table and found there isn't one.
2516      There will be no point in trying to read it again next time.  */
2517   unsigned int no_file_data : 1;
2518 };
2519
2520 /* Utility hash function for a stmt_list_hash.  */
2521
2522 static hashval_t
2523 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2524 {
2525   hashval_t v = 0;
2526
2527   if (stmt_list_hash->dwo_unit != NULL)
2528     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2529   v += stmt_list_hash->line_offset.sect_off;
2530   return v;
2531 }
2532
2533 /* Utility equality function for a stmt_list_hash.  */
2534
2535 static int
2536 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2537                     const struct stmt_list_hash *rhs)
2538 {
2539   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2540     return 0;
2541   if (lhs->dwo_unit != NULL
2542       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2543     return 0;
2544
2545   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2546 }
2547
2548 /* Hash function for a quick_file_names.  */
2549
2550 static hashval_t
2551 hash_file_name_entry (const void *e)
2552 {
2553   const struct quick_file_names *file_data = e;
2554
2555   return hash_stmt_list_entry (&file_data->hash);
2556 }
2557
2558 /* Equality function for a quick_file_names.  */
2559
2560 static int
2561 eq_file_name_entry (const void *a, const void *b)
2562 {
2563   const struct quick_file_names *ea = a;
2564   const struct quick_file_names *eb = b;
2565
2566   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2567 }
2568
2569 /* Delete function for a quick_file_names.  */
2570
2571 static void
2572 delete_file_name_entry (void *e)
2573 {
2574   struct quick_file_names *file_data = e;
2575   int i;
2576
2577   for (i = 0; i < file_data->num_file_names; ++i)
2578     {
2579       xfree ((void*) file_data->file_names[i]);
2580       if (file_data->real_names)
2581         xfree ((void*) file_data->real_names[i]);
2582     }
2583
2584   /* The space for the struct itself lives on objfile_obstack,
2585      so we don't free it here.  */
2586 }
2587
2588 /* Create a quick_file_names hash table.  */
2589
2590 static htab_t
2591 create_quick_file_names_table (unsigned int nr_initial_entries)
2592 {
2593   return htab_create_alloc (nr_initial_entries,
2594                             hash_file_name_entry, eq_file_name_entry,
2595                             delete_file_name_entry, xcalloc, xfree);
2596 }
2597
2598 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2599    have to be created afterwards.  You should call age_cached_comp_units after
2600    processing PER_CU->CU.  dw2_setup must have been already called.  */
2601
2602 static void
2603 load_cu (struct dwarf2_per_cu_data *per_cu)
2604 {
2605   if (per_cu->is_debug_types)
2606     load_full_type_unit (per_cu);
2607   else
2608     load_full_comp_unit (per_cu, language_minimal);
2609
2610   gdb_assert (per_cu->cu != NULL);
2611
2612   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2613 }
2614
2615 /* Read in the symbols for PER_CU.  */
2616
2617 static void
2618 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2619 {
2620   struct cleanup *back_to;
2621
2622   /* Skip type_unit_groups, reading the type units they contain
2623      is handled elsewhere.  */
2624   if (IS_TYPE_UNIT_GROUP (per_cu))
2625     return;
2626
2627   back_to = make_cleanup (dwarf2_release_queue, NULL);
2628
2629   if (dwarf2_per_objfile->using_index
2630       ? per_cu->v.quick->symtab == NULL
2631       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2632     {
2633       queue_comp_unit (per_cu, language_minimal);
2634       load_cu (per_cu);
2635
2636       /* If we just loaded a CU from a DWO, and we're working with an index
2637          that may badly handle TUs, load all the TUs in that DWO as well.
2638          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2639       if (!per_cu->is_debug_types
2640           && per_cu->cu->dwo_unit != NULL
2641           && dwarf2_per_objfile->index_table != NULL
2642           && dwarf2_per_objfile->index_table->version <= 7
2643           /* DWP files aren't supported yet.  */
2644           && get_dwp_file () == NULL)
2645         queue_and_load_all_dwo_tus (per_cu);
2646     }
2647
2648   process_queue ();
2649
2650   /* Age the cache, releasing compilation units that have not
2651      been used recently.  */
2652   age_cached_comp_units ();
2653
2654   do_cleanups (back_to);
2655 }
2656
2657 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2658    the objfile from which this CU came.  Returns the resulting symbol
2659    table.  */
2660
2661 static struct symtab *
2662 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2663 {
2664   gdb_assert (dwarf2_per_objfile->using_index);
2665   if (!per_cu->v.quick->symtab)
2666     {
2667       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2668       increment_reading_symtab ();
2669       dw2_do_instantiate_symtab (per_cu);
2670       process_cu_includes ();
2671       do_cleanups (back_to);
2672     }
2673   return per_cu->v.quick->symtab;
2674 }
2675
2676 /* Return the CU given its index.
2677
2678    This is intended for loops like:
2679
2680    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2681                     + dwarf2_per_objfile->n_type_units); ++i)
2682      {
2683        struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2684
2685        ...;
2686      }
2687 */
2688
2689 static struct dwarf2_per_cu_data *
2690 dw2_get_cu (int index)
2691 {
2692   if (index >= dwarf2_per_objfile->n_comp_units)
2693     {
2694       index -= dwarf2_per_objfile->n_comp_units;
2695       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2696       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2697     }
2698
2699   return dwarf2_per_objfile->all_comp_units[index];
2700 }
2701
2702 /* Return the primary CU given its index.
2703    The difference between this function and dw2_get_cu is in the handling
2704    of type units (TUs).  Here we return the type_unit_group object.
2705
2706    This is intended for loops like:
2707
2708    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2709                     + dwarf2_per_objfile->n_type_unit_groups); ++i)
2710      {
2711        struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
2712
2713        ...;
2714      }
2715 */
2716
2717 static struct dwarf2_per_cu_data *
2718 dw2_get_primary_cu (int index)
2719 {
2720   if (index >= dwarf2_per_objfile->n_comp_units)
2721     {
2722       index -= dwarf2_per_objfile->n_comp_units;
2723       gdb_assert (index < dwarf2_per_objfile->n_type_unit_groups);
2724       return &dwarf2_per_objfile->all_type_unit_groups[index]->per_cu;
2725     }
2726
2727   return dwarf2_per_objfile->all_comp_units[index];
2728 }
2729
2730 /* A helper for create_cus_from_index that handles a given list of
2731    CUs.  */
2732
2733 static void
2734 create_cus_from_index_list (struct objfile *objfile,
2735                             const gdb_byte *cu_list, offset_type n_elements,
2736                             struct dwarf2_section_info *section,
2737                             int is_dwz,
2738                             int base_offset)
2739 {
2740   offset_type i;
2741
2742   for (i = 0; i < n_elements; i += 2)
2743     {
2744       struct dwarf2_per_cu_data *the_cu;
2745       ULONGEST offset, length;
2746
2747       gdb_static_assert (sizeof (ULONGEST) >= 8);
2748       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2749       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2750       cu_list += 2 * 8;
2751
2752       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2753                                struct dwarf2_per_cu_data);
2754       the_cu->offset.sect_off = offset;
2755       the_cu->length = length;
2756       the_cu->objfile = objfile;
2757       the_cu->section = section;
2758       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2759                                         struct dwarf2_per_cu_quick_data);
2760       the_cu->is_dwz = is_dwz;
2761       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2762     }
2763 }
2764
2765 /* Read the CU list from the mapped index, and use it to create all
2766    the CU objects for this objfile.  */
2767
2768 static void
2769 create_cus_from_index (struct objfile *objfile,
2770                        const gdb_byte *cu_list, offset_type cu_list_elements,
2771                        const gdb_byte *dwz_list, offset_type dwz_elements)
2772 {
2773   struct dwz_file *dwz;
2774
2775   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2776   dwarf2_per_objfile->all_comp_units
2777     = obstack_alloc (&objfile->objfile_obstack,
2778                      dwarf2_per_objfile->n_comp_units
2779                      * sizeof (struct dwarf2_per_cu_data *));
2780
2781   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2782                               &dwarf2_per_objfile->info, 0, 0);
2783
2784   if (dwz_elements == 0)
2785     return;
2786
2787   dwz = dwarf2_get_dwz_file ();
2788   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2789                               cu_list_elements / 2);
2790 }
2791
2792 /* Create the signatured type hash table from the index.  */
2793
2794 static void
2795 create_signatured_type_table_from_index (struct objfile *objfile,
2796                                          struct dwarf2_section_info *section,
2797                                          const gdb_byte *bytes,
2798                                          offset_type elements)
2799 {
2800   offset_type i;
2801   htab_t sig_types_hash;
2802
2803   dwarf2_per_objfile->n_type_units = elements / 3;
2804   dwarf2_per_objfile->all_type_units
2805     = xmalloc (dwarf2_per_objfile->n_type_units
2806                * sizeof (struct signatured_type *));
2807
2808   sig_types_hash = allocate_signatured_type_table (objfile);
2809
2810   for (i = 0; i < elements; i += 3)
2811     {
2812       struct signatured_type *sig_type;
2813       ULONGEST offset, type_offset_in_tu, signature;
2814       void **slot;
2815
2816       gdb_static_assert (sizeof (ULONGEST) >= 8);
2817       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2818       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2819                                                     BFD_ENDIAN_LITTLE);
2820       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2821       bytes += 3 * 8;
2822
2823       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2824                                  struct signatured_type);
2825       sig_type->signature = signature;
2826       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2827       sig_type->per_cu.is_debug_types = 1;
2828       sig_type->per_cu.section = section;
2829       sig_type->per_cu.offset.sect_off = offset;
2830       sig_type->per_cu.objfile = objfile;
2831       sig_type->per_cu.v.quick
2832         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2833                           struct dwarf2_per_cu_quick_data);
2834
2835       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2836       *slot = sig_type;
2837
2838       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2839     }
2840
2841   dwarf2_per_objfile->signatured_types = sig_types_hash;
2842 }
2843
2844 /* Read the address map data from the mapped index, and use it to
2845    populate the objfile's psymtabs_addrmap.  */
2846
2847 static void
2848 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2849 {
2850   const gdb_byte *iter, *end;
2851   struct obstack temp_obstack;
2852   struct addrmap *mutable_map;
2853   struct cleanup *cleanup;
2854   CORE_ADDR baseaddr;
2855
2856   obstack_init (&temp_obstack);
2857   cleanup = make_cleanup_obstack_free (&temp_obstack);
2858   mutable_map = addrmap_create_mutable (&temp_obstack);
2859
2860   iter = index->address_table;
2861   end = iter + index->address_table_size;
2862
2863   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2864
2865   while (iter < end)
2866     {
2867       ULONGEST hi, lo, cu_index;
2868       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2869       iter += 8;
2870       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2871       iter += 8;
2872       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2873       iter += 4;
2874
2875       if (lo > hi)
2876         {
2877           complaint (&symfile_complaints,
2878                      _(".gdb_index address table has invalid range (%s - %s)"),
2879                      hex_string (lo), hex_string (hi));
2880           continue;
2881         }
2882
2883       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2884         {
2885           complaint (&symfile_complaints,
2886                      _(".gdb_index address table has invalid CU number %u"),
2887                      (unsigned) cu_index);
2888           continue;
2889         }
2890
2891       addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
2892                          dw2_get_cu (cu_index));
2893     }
2894
2895   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2896                                                     &objfile->objfile_obstack);
2897   do_cleanups (cleanup);
2898 }
2899
2900 /* The hash function for strings in the mapped index.  This is the same as
2901    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2902    implementation.  This is necessary because the hash function is tied to the
2903    format of the mapped index file.  The hash values do not have to match with
2904    SYMBOL_HASH_NEXT.
2905    
2906    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2907
2908 static hashval_t
2909 mapped_index_string_hash (int index_version, const void *p)
2910 {
2911   const unsigned char *str = (const unsigned char *) p;
2912   hashval_t r = 0;
2913   unsigned char c;
2914
2915   while ((c = *str++) != 0)
2916     {
2917       if (index_version >= 5)
2918         c = tolower (c);
2919       r = r * 67 + c - 113;
2920     }
2921
2922   return r;
2923 }
2924
2925 /* Find a slot in the mapped index INDEX for the object named NAME.
2926    If NAME is found, set *VEC_OUT to point to the CU vector in the
2927    constant pool and return 1.  If NAME cannot be found, return 0.  */
2928
2929 static int
2930 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2931                           offset_type **vec_out)
2932 {
2933   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2934   offset_type hash;
2935   offset_type slot, step;
2936   int (*cmp) (const char *, const char *);
2937
2938   if (current_language->la_language == language_cplus
2939       || current_language->la_language == language_java
2940       || current_language->la_language == language_fortran)
2941     {
2942       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2943          not contain any.  */
2944       const char *paren = strchr (name, '(');
2945
2946       if (paren)
2947         {
2948           char *dup;
2949
2950           dup = xmalloc (paren - name + 1);
2951           memcpy (dup, name, paren - name);
2952           dup[paren - name] = 0;
2953
2954           make_cleanup (xfree, dup);
2955           name = dup;
2956         }
2957     }
2958
2959   /* Index version 4 did not support case insensitive searches.  But the
2960      indices for case insensitive languages are built in lowercase, therefore
2961      simulate our NAME being searched is also lowercased.  */
2962   hash = mapped_index_string_hash ((index->version == 4
2963                                     && case_sensitivity == case_sensitive_off
2964                                     ? 5 : index->version),
2965                                    name);
2966
2967   slot = hash & (index->symbol_table_slots - 1);
2968   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2969   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2970
2971   for (;;)
2972     {
2973       /* Convert a slot number to an offset into the table.  */
2974       offset_type i = 2 * slot;
2975       const char *str;
2976       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2977         {
2978           do_cleanups (back_to);
2979           return 0;
2980         }
2981
2982       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2983       if (!cmp (name, str))
2984         {
2985           *vec_out = (offset_type *) (index->constant_pool
2986                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2987           do_cleanups (back_to);
2988           return 1;
2989         }
2990
2991       slot = (slot + step) & (index->symbol_table_slots - 1);
2992     }
2993 }
2994
2995 /* A helper function that reads the .gdb_index from SECTION and fills
2996    in MAP.  FILENAME is the name of the file containing the section;
2997    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
2998    ok to use deprecated sections.
2999
3000    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3001    out parameters that are filled in with information about the CU and
3002    TU lists in the section.
3003
3004    Returns 1 if all went well, 0 otherwise.  */
3005
3006 static int
3007 read_index_from_section (struct objfile *objfile,
3008                          const char *filename,
3009                          int deprecated_ok,
3010                          struct dwarf2_section_info *section,
3011                          struct mapped_index *map,
3012                          const gdb_byte **cu_list,
3013                          offset_type *cu_list_elements,
3014                          const gdb_byte **types_list,
3015                          offset_type *types_list_elements)
3016 {
3017   const gdb_byte *addr;
3018   offset_type version;
3019   offset_type *metadata;
3020   int i;
3021
3022   if (dwarf2_section_empty_p (section))
3023     return 0;
3024
3025   /* Older elfutils strip versions could keep the section in the main
3026      executable while splitting it for the separate debug info file.  */
3027   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3028     return 0;
3029
3030   dwarf2_read_section (objfile, section);
3031
3032   addr = section->buffer;
3033   /* Version check.  */
3034   version = MAYBE_SWAP (*(offset_type *) addr);
3035   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3036      causes the index to behave very poorly for certain requests.  Version 3
3037      contained incomplete addrmap.  So, it seems better to just ignore such
3038      indices.  */
3039   if (version < 4)
3040     {
3041       static int warning_printed = 0;
3042       if (!warning_printed)
3043         {
3044           warning (_("Skipping obsolete .gdb_index section in %s."),
3045                    filename);
3046           warning_printed = 1;
3047         }
3048       return 0;
3049     }
3050   /* Index version 4 uses a different hash function than index version
3051      5 and later.
3052
3053      Versions earlier than 6 did not emit psymbols for inlined
3054      functions.  Using these files will cause GDB not to be able to
3055      set breakpoints on inlined functions by name, so we ignore these
3056      indices unless the user has done
3057      "set use-deprecated-index-sections on".  */
3058   if (version < 6 && !deprecated_ok)
3059     {
3060       static int warning_printed = 0;
3061       if (!warning_printed)
3062         {
3063           warning (_("\
3064 Skipping deprecated .gdb_index section in %s.\n\
3065 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3066 to use the section anyway."),
3067                    filename);
3068           warning_printed = 1;
3069         }
3070       return 0;
3071     }
3072   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3073      of the TU (for symbols coming from TUs),
3074      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3075      Plus gold-generated indices can have duplicate entries for global symbols,
3076      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3077      These are just performance bugs, and we can't distinguish gdb-generated
3078      indices from gold-generated ones, so issue no warning here.  */
3079
3080   /* Indexes with higher version than the one supported by GDB may be no
3081      longer backward compatible.  */
3082   if (version > 8)
3083     return 0;
3084
3085   map->version = version;
3086   map->total_size = section->size;
3087
3088   metadata = (offset_type *) (addr + sizeof (offset_type));
3089
3090   i = 0;
3091   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3092   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3093                        / 8);
3094   ++i;
3095
3096   *types_list = addr + MAYBE_SWAP (metadata[i]);
3097   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3098                            - MAYBE_SWAP (metadata[i]))
3099                           / 8);
3100   ++i;
3101
3102   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3103   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3104                              - MAYBE_SWAP (metadata[i]));
3105   ++i;
3106
3107   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3108   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3109                               - MAYBE_SWAP (metadata[i]))
3110                              / (2 * sizeof (offset_type)));
3111   ++i;
3112
3113   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3114
3115   return 1;
3116 }
3117
3118
3119 /* Read the index file.  If everything went ok, initialize the "quick"
3120    elements of all the CUs and return 1.  Otherwise, return 0.  */
3121
3122 static int
3123 dwarf2_read_index (struct objfile *objfile)
3124 {
3125   struct mapped_index local_map, *map;
3126   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3127   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3128   struct dwz_file *dwz;
3129
3130   if (!read_index_from_section (objfile, objfile_name (objfile),
3131                                 use_deprecated_index_sections,
3132                                 &dwarf2_per_objfile->gdb_index, &local_map,
3133                                 &cu_list, &cu_list_elements,
3134                                 &types_list, &types_list_elements))
3135     return 0;
3136
3137   /* Don't use the index if it's empty.  */
3138   if (local_map.symbol_table_slots == 0)
3139     return 0;
3140
3141   /* If there is a .dwz file, read it so we can get its CU list as
3142      well.  */
3143   dwz = dwarf2_get_dwz_file ();
3144   if (dwz != NULL)
3145     {
3146       struct mapped_index dwz_map;
3147       const gdb_byte *dwz_types_ignore;
3148       offset_type dwz_types_elements_ignore;
3149
3150       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3151                                     1,
3152                                     &dwz->gdb_index, &dwz_map,
3153                                     &dwz_list, &dwz_list_elements,
3154                                     &dwz_types_ignore,
3155                                     &dwz_types_elements_ignore))
3156         {
3157           warning (_("could not read '.gdb_index' section from %s; skipping"),
3158                    bfd_get_filename (dwz->dwz_bfd));
3159           return 0;
3160         }
3161     }
3162
3163   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3164                          dwz_list_elements);
3165
3166   if (types_list_elements)
3167     {
3168       struct dwarf2_section_info *section;
3169
3170       /* We can only handle a single .debug_types when we have an
3171          index.  */
3172       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3173         return 0;
3174
3175       section = VEC_index (dwarf2_section_info_def,
3176                            dwarf2_per_objfile->types, 0);
3177
3178       create_signatured_type_table_from_index (objfile, section, types_list,
3179                                                types_list_elements);
3180     }
3181
3182   create_addrmap_from_index (objfile, &local_map);
3183
3184   map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3185   *map = local_map;
3186
3187   dwarf2_per_objfile->index_table = map;
3188   dwarf2_per_objfile->using_index = 1;
3189   dwarf2_per_objfile->quick_file_names_table =
3190     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3191
3192   return 1;
3193 }
3194
3195 /* A helper for the "quick" functions which sets the global
3196    dwarf2_per_objfile according to OBJFILE.  */
3197
3198 static void
3199 dw2_setup (struct objfile *objfile)
3200 {
3201   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3202   gdb_assert (dwarf2_per_objfile);
3203 }
3204
3205 /* die_reader_func for dw2_get_file_names.  */
3206
3207 static void
3208 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3209                            const gdb_byte *info_ptr,
3210                            struct die_info *comp_unit_die,
3211                            int has_children,
3212                            void *data)
3213 {
3214   struct dwarf2_cu *cu = reader->cu;
3215   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3216   struct objfile *objfile = dwarf2_per_objfile->objfile;
3217   struct dwarf2_per_cu_data *lh_cu;
3218   struct line_header *lh;
3219   struct attribute *attr;
3220   int i;
3221   const char *name, *comp_dir;
3222   void **slot;
3223   struct quick_file_names *qfn;
3224   unsigned int line_offset;
3225
3226   gdb_assert (! this_cu->is_debug_types);
3227
3228   /* Our callers never want to match partial units -- instead they
3229      will match the enclosing full CU.  */
3230   if (comp_unit_die->tag == DW_TAG_partial_unit)
3231     {
3232       this_cu->v.quick->no_file_data = 1;
3233       return;
3234     }
3235
3236   lh_cu = this_cu;
3237   lh = NULL;
3238   slot = NULL;
3239   line_offset = 0;
3240
3241   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3242   if (attr)
3243     {
3244       struct quick_file_names find_entry;
3245
3246       line_offset = DW_UNSND (attr);
3247
3248       /* We may have already read in this line header (TU line header sharing).
3249          If we have we're done.  */
3250       find_entry.hash.dwo_unit = cu->dwo_unit;
3251       find_entry.hash.line_offset.sect_off = line_offset;
3252       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3253                              &find_entry, INSERT);
3254       if (*slot != NULL)
3255         {
3256           lh_cu->v.quick->file_names = *slot;
3257           return;
3258         }
3259
3260       lh = dwarf_decode_line_header (line_offset, cu);
3261     }
3262   if (lh == NULL)
3263     {
3264       lh_cu->v.quick->no_file_data = 1;
3265       return;
3266     }
3267
3268   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
3269   qfn->hash.dwo_unit = cu->dwo_unit;
3270   qfn->hash.line_offset.sect_off = line_offset;
3271   gdb_assert (slot != NULL);
3272   *slot = qfn;
3273
3274   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3275
3276   qfn->num_file_names = lh->num_file_names;
3277   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3278                                    lh->num_file_names * sizeof (char *));
3279   for (i = 0; i < lh->num_file_names; ++i)
3280     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3281   qfn->real_names = NULL;
3282
3283   free_line_header (lh);
3284
3285   lh_cu->v.quick->file_names = qfn;
3286 }
3287
3288 /* A helper for the "quick" functions which attempts to read the line
3289    table for THIS_CU.  */
3290
3291 static struct quick_file_names *
3292 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3293 {
3294   /* This should never be called for TUs.  */
3295   gdb_assert (! this_cu->is_debug_types);
3296   /* Nor type unit groups.  */
3297   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3298
3299   if (this_cu->v.quick->file_names != NULL)
3300     return this_cu->v.quick->file_names;
3301   /* If we know there is no line data, no point in looking again.  */
3302   if (this_cu->v.quick->no_file_data)
3303     return NULL;
3304
3305   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3306
3307   if (this_cu->v.quick->no_file_data)
3308     return NULL;
3309   return this_cu->v.quick->file_names;
3310 }
3311
3312 /* A helper for the "quick" functions which computes and caches the
3313    real path for a given file name from the line table.  */
3314
3315 static const char *
3316 dw2_get_real_path (struct objfile *objfile,
3317                    struct quick_file_names *qfn, int index)
3318 {
3319   if (qfn->real_names == NULL)
3320     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3321                                       qfn->num_file_names, char *);
3322
3323   if (qfn->real_names[index] == NULL)
3324     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3325
3326   return qfn->real_names[index];
3327 }
3328
3329 static struct symtab *
3330 dw2_find_last_source_symtab (struct objfile *objfile)
3331 {
3332   int index;
3333
3334   dw2_setup (objfile);
3335   index = dwarf2_per_objfile->n_comp_units - 1;
3336   return dw2_instantiate_symtab (dw2_get_cu (index));
3337 }
3338
3339 /* Traversal function for dw2_forget_cached_source_info.  */
3340
3341 static int
3342 dw2_free_cached_file_names (void **slot, void *info)
3343 {
3344   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3345
3346   if (file_data->real_names)
3347     {
3348       int i;
3349
3350       for (i = 0; i < file_data->num_file_names; ++i)
3351         {
3352           xfree ((void*) file_data->real_names[i]);
3353           file_data->real_names[i] = NULL;
3354         }
3355     }
3356
3357   return 1;
3358 }
3359
3360 static void
3361 dw2_forget_cached_source_info (struct objfile *objfile)
3362 {
3363   dw2_setup (objfile);
3364
3365   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3366                           dw2_free_cached_file_names, NULL);
3367 }
3368
3369 /* Helper function for dw2_map_symtabs_matching_filename that expands
3370    the symtabs and calls the iterator.  */
3371
3372 static int
3373 dw2_map_expand_apply (struct objfile *objfile,
3374                       struct dwarf2_per_cu_data *per_cu,
3375                       const char *name, const char *real_path,
3376                       int (*callback) (struct symtab *, void *),
3377                       void *data)
3378 {
3379   struct symtab *last_made = objfile->symtabs;
3380
3381   /* Don't visit already-expanded CUs.  */
3382   if (per_cu->v.quick->symtab)
3383     return 0;
3384
3385   /* This may expand more than one symtab, and we want to iterate over
3386      all of them.  */
3387   dw2_instantiate_symtab (per_cu);
3388
3389   return iterate_over_some_symtabs (name, real_path, callback, data,
3390                                     objfile->symtabs, last_made);
3391 }
3392
3393 /* Implementation of the map_symtabs_matching_filename method.  */
3394
3395 static int
3396 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3397                                    const char *real_path,
3398                                    int (*callback) (struct symtab *, void *),
3399                                    void *data)
3400 {
3401   int i;
3402   const char *name_basename = lbasename (name);
3403
3404   dw2_setup (objfile);
3405
3406   /* The rule is CUs specify all the files, including those used by
3407      any TU, so there's no need to scan TUs here.  */
3408
3409   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3410     {
3411       int j;
3412       struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3413       struct quick_file_names *file_data;
3414
3415       /* We only need to look at symtabs not already expanded.  */
3416       if (per_cu->v.quick->symtab)
3417         continue;
3418
3419       file_data = dw2_get_file_names (per_cu);
3420       if (file_data == NULL)
3421         continue;
3422
3423       for (j = 0; j < file_data->num_file_names; ++j)
3424         {
3425           const char *this_name = file_data->file_names[j];
3426           const char *this_real_name;
3427
3428           if (compare_filenames_for_search (this_name, name))
3429             {
3430               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3431                                         callback, data))
3432                 return 1;
3433               continue;
3434             }
3435
3436           /* Before we invoke realpath, which can get expensive when many
3437              files are involved, do a quick comparison of the basenames.  */
3438           if (! basenames_may_differ
3439               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3440             continue;
3441
3442           this_real_name = dw2_get_real_path (objfile, file_data, j);
3443           if (compare_filenames_for_search (this_real_name, name))
3444             {
3445               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3446                                         callback, data))
3447                 return 1;
3448               continue;
3449             }
3450
3451           if (real_path != NULL)
3452             {
3453               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3454               gdb_assert (IS_ABSOLUTE_PATH (name));
3455               if (this_real_name != NULL
3456                   && FILENAME_CMP (real_path, this_real_name) == 0)
3457                 {
3458                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3459                                             callback, data))
3460                     return 1;
3461                   continue;
3462                 }
3463             }
3464         }
3465     }
3466
3467   return 0;
3468 }
3469
3470 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3471
3472 struct dw2_symtab_iterator
3473 {
3474   /* The internalized form of .gdb_index.  */
3475   struct mapped_index *index;
3476   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3477   int want_specific_block;
3478   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3479      Unused if !WANT_SPECIFIC_BLOCK.  */
3480   int block_index;
3481   /* The kind of symbol we're looking for.  */
3482   domain_enum domain;
3483   /* The list of CUs from the index entry of the symbol,
3484      or NULL if not found.  */
3485   offset_type *vec;
3486   /* The next element in VEC to look at.  */
3487   int next;
3488   /* The number of elements in VEC, or zero if there is no match.  */
3489   int length;
3490   /* Have we seen a global version of the symbol?
3491      If so we can ignore all further global instances.
3492      This is to work around gold/15646, inefficient gold-generated
3493      indices.  */
3494   int global_seen;
3495 };
3496
3497 /* Initialize the index symtab iterator ITER.
3498    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3499    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3500
3501 static void
3502 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3503                       struct mapped_index *index,
3504                       int want_specific_block,
3505                       int block_index,
3506                       domain_enum domain,
3507                       const char *name)
3508 {
3509   iter->index = index;
3510   iter->want_specific_block = want_specific_block;
3511   iter->block_index = block_index;
3512   iter->domain = domain;
3513   iter->next = 0;
3514   iter->global_seen = 0;
3515
3516   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3517     iter->length = MAYBE_SWAP (*iter->vec);
3518   else
3519     {
3520       iter->vec = NULL;
3521       iter->length = 0;
3522     }
3523 }
3524
3525 /* Return the next matching CU or NULL if there are no more.  */
3526
3527 static struct dwarf2_per_cu_data *
3528 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3529 {
3530   for ( ; iter->next < iter->length; ++iter->next)
3531     {
3532       offset_type cu_index_and_attrs =
3533         MAYBE_SWAP (iter->vec[iter->next + 1]);
3534       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3535       struct dwarf2_per_cu_data *per_cu;
3536       int want_static = iter->block_index != GLOBAL_BLOCK;
3537       /* This value is only valid for index versions >= 7.  */
3538       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3539       gdb_index_symbol_kind symbol_kind =
3540         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3541       /* Only check the symbol attributes if they're present.
3542          Indices prior to version 7 don't record them,
3543          and indices >= 7 may elide them for certain symbols
3544          (gold does this).  */
3545       int attrs_valid =
3546         (iter->index->version >= 7
3547          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3548
3549       /* Don't crash on bad data.  */
3550       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3551                        + dwarf2_per_objfile->n_type_units))
3552         {
3553           complaint (&symfile_complaints,
3554                      _(".gdb_index entry has bad CU index"
3555                        " [in module %s]"),
3556                      objfile_name (dwarf2_per_objfile->objfile));
3557           continue;
3558         }
3559
3560       per_cu = dw2_get_cu (cu_index);
3561
3562       /* Skip if already read in.  */
3563       if (per_cu->v.quick->symtab)
3564         continue;
3565
3566       /* Check static vs global.  */
3567       if (attrs_valid)
3568         {
3569           if (iter->want_specific_block
3570               && want_static != is_static)
3571             continue;
3572           /* Work around gold/15646.  */
3573           if (!is_static && iter->global_seen)
3574             continue;
3575           if (!is_static)
3576             iter->global_seen = 1;
3577         }
3578
3579       /* Only check the symbol's kind if it has one.  */
3580       if (attrs_valid)
3581         {
3582           switch (iter->domain)
3583             {
3584             case VAR_DOMAIN:
3585               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3586                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3587                   /* Some types are also in VAR_DOMAIN.  */
3588                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3589                 continue;
3590               break;
3591             case STRUCT_DOMAIN:
3592               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3593                 continue;
3594               break;
3595             case LABEL_DOMAIN:
3596               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3597                 continue;
3598               break;
3599             default:
3600               break;
3601             }
3602         }
3603
3604       ++iter->next;
3605       return per_cu;
3606     }
3607
3608   return NULL;
3609 }
3610
3611 static struct symtab *
3612 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3613                    const char *name, domain_enum domain)
3614 {
3615   struct symtab *stab_best = NULL;
3616   struct mapped_index *index;
3617
3618   dw2_setup (objfile);
3619
3620   index = dwarf2_per_objfile->index_table;
3621
3622   /* index is NULL if OBJF_READNOW.  */
3623   if (index)
3624     {
3625       struct dw2_symtab_iterator iter;
3626       struct dwarf2_per_cu_data *per_cu;
3627
3628       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3629
3630       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3631         {
3632           struct symbol *sym = NULL;
3633           struct symtab *stab = dw2_instantiate_symtab (per_cu);
3634
3635           /* Some caution must be observed with overloaded functions
3636              and methods, since the index will not contain any overload
3637              information (but NAME might contain it).  */
3638           if (stab->primary)
3639             {
3640               struct blockvector *bv = BLOCKVECTOR (stab);
3641               struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3642
3643               sym = lookup_block_symbol (block, name, domain);
3644             }
3645
3646           if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3647             {
3648               if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3649                 return stab;
3650
3651               stab_best = stab;
3652             }
3653
3654           /* Keep looking through other CUs.  */
3655         }
3656     }
3657
3658   return stab_best;
3659 }
3660
3661 static void
3662 dw2_print_stats (struct objfile *objfile)
3663 {
3664   int i, total, count;
3665
3666   dw2_setup (objfile);
3667   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3668   count = 0;
3669   for (i = 0; i < total; ++i)
3670     {
3671       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3672
3673       if (!per_cu->v.quick->symtab)
3674         ++count;
3675     }
3676   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3677   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3678 }
3679
3680 /* This dumps minimal information about the index.
3681    It is called via "mt print objfiles".
3682    One use is to verify .gdb_index has been loaded by the
3683    gdb.dwarf2/gdb-index.exp testcase.  */
3684
3685 static void
3686 dw2_dump (struct objfile *objfile)
3687 {
3688   dw2_setup (objfile);
3689   gdb_assert (dwarf2_per_objfile->using_index);
3690   printf_filtered (".gdb_index:");
3691   if (dwarf2_per_objfile->index_table != NULL)
3692     {
3693       printf_filtered (" version %d\n",
3694                        dwarf2_per_objfile->index_table->version);
3695     }
3696   else
3697     printf_filtered (" faked for \"readnow\"\n");
3698   printf_filtered ("\n");
3699 }
3700
3701 static void
3702 dw2_relocate (struct objfile *objfile,
3703               const struct section_offsets *new_offsets,
3704               const struct section_offsets *delta)
3705 {
3706   /* There's nothing to relocate here.  */
3707 }
3708
3709 static void
3710 dw2_expand_symtabs_for_function (struct objfile *objfile,
3711                                  const char *func_name)
3712 {
3713   struct mapped_index *index;
3714
3715   dw2_setup (objfile);
3716
3717   index = dwarf2_per_objfile->index_table;
3718
3719   /* index is NULL if OBJF_READNOW.  */
3720   if (index)
3721     {
3722       struct dw2_symtab_iterator iter;
3723       struct dwarf2_per_cu_data *per_cu;
3724
3725       /* Note: It doesn't matter what we pass for block_index here.  */
3726       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3727                             func_name);
3728
3729       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3730         dw2_instantiate_symtab (per_cu);
3731     }
3732 }
3733
3734 static void
3735 dw2_expand_all_symtabs (struct objfile *objfile)
3736 {
3737   int i;
3738
3739   dw2_setup (objfile);
3740
3741   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3742                    + dwarf2_per_objfile->n_type_units); ++i)
3743     {
3744       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3745
3746       dw2_instantiate_symtab (per_cu);
3747     }
3748 }
3749
3750 static void
3751 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3752                                   const char *fullname)
3753 {
3754   int i;
3755
3756   dw2_setup (objfile);
3757
3758   /* We don't need to consider type units here.
3759      This is only called for examining code, e.g. expand_line_sal.
3760      There can be an order of magnitude (or more) more type units
3761      than comp units, and we avoid them if we can.  */
3762
3763   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3764     {
3765       int j;
3766       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3767       struct quick_file_names *file_data;
3768
3769       /* We only need to look at symtabs not already expanded.  */
3770       if (per_cu->v.quick->symtab)
3771         continue;
3772
3773       file_data = dw2_get_file_names (per_cu);
3774       if (file_data == NULL)
3775         continue;
3776
3777       for (j = 0; j < file_data->num_file_names; ++j)
3778         {
3779           const char *this_fullname = file_data->file_names[j];
3780
3781           if (filename_cmp (this_fullname, fullname) == 0)
3782             {
3783               dw2_instantiate_symtab (per_cu);
3784               break;
3785             }
3786         }
3787     }
3788 }
3789
3790 static void
3791 dw2_map_matching_symbols (struct objfile *objfile,
3792                           const char * name, domain_enum namespace,
3793                           int global,
3794                           int (*callback) (struct block *,
3795                                            struct symbol *, void *),
3796                           void *data, symbol_compare_ftype *match,
3797                           symbol_compare_ftype *ordered_compare)
3798 {
3799   /* Currently unimplemented; used for Ada.  The function can be called if the
3800      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3801      does not look for non-Ada symbols this function should just return.  */
3802 }
3803
3804 static void
3805 dw2_expand_symtabs_matching
3806   (struct objfile *objfile,
3807    expand_symtabs_file_matcher_ftype *file_matcher,
3808    expand_symtabs_symbol_matcher_ftype *symbol_matcher,
3809    enum search_domain kind,
3810    void *data)
3811 {
3812   int i;
3813   offset_type iter;
3814   struct mapped_index *index;
3815
3816   dw2_setup (objfile);
3817
3818   /* index_table is NULL if OBJF_READNOW.  */
3819   if (!dwarf2_per_objfile->index_table)
3820     return;
3821   index = dwarf2_per_objfile->index_table;
3822
3823   if (file_matcher != NULL)
3824     {
3825       struct cleanup *cleanup;
3826       htab_t visited_found, visited_not_found;
3827
3828       visited_found = htab_create_alloc (10,
3829                                          htab_hash_pointer, htab_eq_pointer,
3830                                          NULL, xcalloc, xfree);
3831       cleanup = make_cleanup_htab_delete (visited_found);
3832       visited_not_found = htab_create_alloc (10,
3833                                              htab_hash_pointer, htab_eq_pointer,
3834                                              NULL, xcalloc, xfree);
3835       make_cleanup_htab_delete (visited_not_found);
3836
3837       /* The rule is CUs specify all the files, including those used by
3838          any TU, so there's no need to scan TUs here.  */
3839
3840       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3841         {
3842           int j;
3843           struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3844           struct quick_file_names *file_data;
3845           void **slot;
3846
3847           per_cu->v.quick->mark = 0;
3848
3849           /* We only need to look at symtabs not already expanded.  */
3850           if (per_cu->v.quick->symtab)
3851             continue;
3852
3853           file_data = dw2_get_file_names (per_cu);
3854           if (file_data == NULL)
3855             continue;
3856
3857           if (htab_find (visited_not_found, file_data) != NULL)
3858             continue;
3859           else if (htab_find (visited_found, file_data) != NULL)
3860             {
3861               per_cu->v.quick->mark = 1;
3862               continue;
3863             }
3864
3865           for (j = 0; j < file_data->num_file_names; ++j)
3866             {
3867               const char *this_real_name;
3868
3869               if (file_matcher (file_data->file_names[j], data, 0))
3870                 {
3871                   per_cu->v.quick->mark = 1;
3872                   break;
3873                 }
3874
3875               /* Before we invoke realpath, which can get expensive when many
3876                  files are involved, do a quick comparison of the basenames.  */
3877               if (!basenames_may_differ
3878                   && !file_matcher (lbasename (file_data->file_names[j]),
3879                                     data, 1))
3880                 continue;
3881
3882               this_real_name = dw2_get_real_path (objfile, file_data, j);
3883               if (file_matcher (this_real_name, data, 0))
3884                 {
3885                   per_cu->v.quick->mark = 1;
3886                   break;
3887                 }
3888             }
3889
3890           slot = htab_find_slot (per_cu->v.quick->mark
3891                                  ? visited_found
3892                                  : visited_not_found,
3893                                  file_data, INSERT);
3894           *slot = file_data;
3895         }
3896
3897       do_cleanups (cleanup);
3898     }
3899
3900   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3901     {
3902       offset_type idx = 2 * iter;
3903       const char *name;
3904       offset_type *vec, vec_len, vec_idx;
3905       int global_seen = 0;
3906
3907       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3908         continue;
3909
3910       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3911
3912       if (! (*symbol_matcher) (name, data))
3913         continue;
3914
3915       /* The name was matched, now expand corresponding CUs that were
3916          marked.  */
3917       vec = (offset_type *) (index->constant_pool
3918                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3919       vec_len = MAYBE_SWAP (vec[0]);
3920       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3921         {
3922           struct dwarf2_per_cu_data *per_cu;
3923           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
3924           /* This value is only valid for index versions >= 7.  */
3925           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3926           gdb_index_symbol_kind symbol_kind =
3927             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3928           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3929           /* Only check the symbol attributes if they're present.
3930              Indices prior to version 7 don't record them,
3931              and indices >= 7 may elide them for certain symbols
3932              (gold does this).  */
3933           int attrs_valid =
3934             (index->version >= 7
3935              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3936
3937           /* Work around gold/15646.  */
3938           if (attrs_valid)
3939             {
3940               if (!is_static && global_seen)
3941                 continue;
3942               if (!is_static)
3943                 global_seen = 1;
3944             }
3945
3946           /* Only check the symbol's kind if it has one.  */
3947           if (attrs_valid)
3948             {
3949               switch (kind)
3950                 {
3951                 case VARIABLES_DOMAIN:
3952                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3953                     continue;
3954                   break;
3955                 case FUNCTIONS_DOMAIN:
3956                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3957                     continue;
3958                   break;
3959                 case TYPES_DOMAIN:
3960                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3961                     continue;
3962                   break;
3963                 default:
3964                   break;
3965                 }
3966             }
3967
3968           /* Don't crash on bad data.  */
3969           if (cu_index >= (dwarf2_per_objfile->n_comp_units
3970                            + dwarf2_per_objfile->n_type_units))
3971             {
3972               complaint (&symfile_complaints,
3973                          _(".gdb_index entry has bad CU index"
3974                            " [in module %s]"), objfile_name (objfile));
3975               continue;
3976             }
3977
3978           per_cu = dw2_get_cu (cu_index);
3979           if (file_matcher == NULL || per_cu->v.quick->mark)
3980             dw2_instantiate_symtab (per_cu);
3981         }
3982     }
3983 }
3984
3985 /* A helper for dw2_find_pc_sect_symtab which finds the most specific
3986    symtab.  */
3987
3988 static struct symtab *
3989 recursively_find_pc_sect_symtab (struct symtab *symtab, CORE_ADDR pc)
3990 {
3991   int i;
3992
3993   if (BLOCKVECTOR (symtab) != NULL
3994       && blockvector_contains_pc (BLOCKVECTOR (symtab), pc))
3995     return symtab;
3996
3997   if (symtab->includes == NULL)
3998     return NULL;
3999
4000   for (i = 0; symtab->includes[i]; ++i)
4001     {
4002       struct symtab *s = symtab->includes[i];
4003
4004       s = recursively_find_pc_sect_symtab (s, pc);
4005       if (s != NULL)
4006         return s;
4007     }
4008
4009   return NULL;
4010 }
4011
4012 static struct symtab *
4013 dw2_find_pc_sect_symtab (struct objfile *objfile,
4014                          struct bound_minimal_symbol msymbol,
4015                          CORE_ADDR pc,
4016                          struct obj_section *section,
4017                          int warn_if_readin)
4018 {
4019   struct dwarf2_per_cu_data *data;
4020   struct symtab *result;
4021
4022   dw2_setup (objfile);
4023
4024   if (!objfile->psymtabs_addrmap)
4025     return NULL;
4026
4027   data = addrmap_find (objfile->psymtabs_addrmap, pc);
4028   if (!data)
4029     return NULL;
4030
4031   if (warn_if_readin && data->v.quick->symtab)
4032     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4033              paddress (get_objfile_arch (objfile), pc));
4034
4035   result = recursively_find_pc_sect_symtab (dw2_instantiate_symtab (data), pc);
4036   gdb_assert (result != NULL);
4037   return result;
4038 }
4039
4040 static void
4041 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4042                           void *data, int need_fullname)
4043 {
4044   int i;
4045   struct cleanup *cleanup;
4046   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4047                                       NULL, xcalloc, xfree);
4048
4049   cleanup = make_cleanup_htab_delete (visited);
4050   dw2_setup (objfile);
4051
4052   /* The rule is CUs specify all the files, including those used by
4053      any TU, so there's no need to scan TUs here.
4054      We can ignore file names coming from already-expanded CUs.  */
4055
4056   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4057     {
4058       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4059
4060       if (per_cu->v.quick->symtab)
4061         {
4062           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4063                                         INSERT);
4064
4065           *slot = per_cu->v.quick->file_names;
4066         }
4067     }
4068
4069   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4070     {
4071       int j;
4072       struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
4073       struct quick_file_names *file_data;
4074       void **slot;
4075
4076       /* We only need to look at symtabs not already expanded.  */
4077       if (per_cu->v.quick->symtab)
4078         continue;
4079
4080       file_data = dw2_get_file_names (per_cu);
4081       if (file_data == NULL)
4082         continue;
4083
4084       slot = htab_find_slot (visited, file_data, INSERT);
4085       if (*slot)
4086         {
4087           /* Already visited.  */
4088           continue;
4089         }
4090       *slot = file_data;
4091
4092       for (j = 0; j < file_data->num_file_names; ++j)
4093         {
4094           const char *this_real_name;
4095
4096           if (need_fullname)
4097             this_real_name = dw2_get_real_path (objfile, file_data, j);
4098           else
4099             this_real_name = NULL;
4100           (*fun) (file_data->file_names[j], this_real_name, data);
4101         }
4102     }
4103
4104   do_cleanups (cleanup);
4105 }
4106
4107 static int
4108 dw2_has_symbols (struct objfile *objfile)
4109 {
4110   return 1;
4111 }
4112
4113 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4114 {
4115   dw2_has_symbols,
4116   dw2_find_last_source_symtab,
4117   dw2_forget_cached_source_info,
4118   dw2_map_symtabs_matching_filename,
4119   dw2_lookup_symbol,
4120   dw2_print_stats,
4121   dw2_dump,
4122   dw2_relocate,
4123   dw2_expand_symtabs_for_function,
4124   dw2_expand_all_symtabs,
4125   dw2_expand_symtabs_with_fullname,
4126   dw2_map_matching_symbols,
4127   dw2_expand_symtabs_matching,
4128   dw2_find_pc_sect_symtab,
4129   dw2_map_symbol_filenames
4130 };
4131
4132 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4133    file will use psymtabs, or 1 if using the GNU index.  */
4134
4135 int
4136 dwarf2_initialize_objfile (struct objfile *objfile)
4137 {
4138   /* If we're about to read full symbols, don't bother with the
4139      indices.  In this case we also don't care if some other debug
4140      format is making psymtabs, because they are all about to be
4141      expanded anyway.  */
4142   if ((objfile->flags & OBJF_READNOW))
4143     {
4144       int i;
4145
4146       dwarf2_per_objfile->using_index = 1;
4147       create_all_comp_units (objfile);
4148       create_all_type_units (objfile);
4149       dwarf2_per_objfile->quick_file_names_table =
4150         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4151
4152       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4153                        + dwarf2_per_objfile->n_type_units); ++i)
4154         {
4155           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4156
4157           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4158                                             struct dwarf2_per_cu_quick_data);
4159         }
4160
4161       /* Return 1 so that gdb sees the "quick" functions.  However,
4162          these functions will be no-ops because we will have expanded
4163          all symtabs.  */
4164       return 1;
4165     }
4166
4167   if (dwarf2_read_index (objfile))
4168     return 1;
4169
4170   return 0;
4171 }
4172
4173 \f
4174
4175 /* Build a partial symbol table.  */
4176
4177 void
4178 dwarf2_build_psymtabs (struct objfile *objfile)
4179 {
4180   volatile struct gdb_exception except;
4181
4182   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4183     {
4184       init_psymbol_list (objfile, 1024);
4185     }
4186
4187   TRY_CATCH (except, RETURN_MASK_ERROR)
4188     {
4189       /* This isn't really ideal: all the data we allocate on the
4190          objfile's obstack is still uselessly kept around.  However,
4191          freeing it seems unsafe.  */
4192       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4193
4194       dwarf2_build_psymtabs_hard (objfile);
4195       discard_cleanups (cleanups);
4196     }
4197   if (except.reason < 0)
4198     exception_print (gdb_stderr, except);
4199 }
4200
4201 /* Return the total length of the CU described by HEADER.  */
4202
4203 static unsigned int
4204 get_cu_length (const struct comp_unit_head *header)
4205 {
4206   return header->initial_length_size + header->length;
4207 }
4208
4209 /* Return TRUE if OFFSET is within CU_HEADER.  */
4210
4211 static inline int
4212 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4213 {
4214   sect_offset bottom = { cu_header->offset.sect_off };
4215   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4216
4217   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4218 }
4219
4220 /* Find the base address of the compilation unit for range lists and
4221    location lists.  It will normally be specified by DW_AT_low_pc.
4222    In DWARF-3 draft 4, the base address could be overridden by
4223    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4224    compilation units with discontinuous ranges.  */
4225
4226 static void
4227 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4228 {
4229   struct attribute *attr;
4230
4231   cu->base_known = 0;
4232   cu->base_address = 0;
4233
4234   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4235   if (attr)
4236     {
4237       cu->base_address = attr_value_as_address (attr);
4238       cu->base_known = 1;
4239     }
4240   else
4241     {
4242       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4243       if (attr)
4244         {
4245           cu->base_address = attr_value_as_address (attr);
4246           cu->base_known = 1;
4247         }
4248     }
4249 }
4250
4251 /* Read in the comp unit header information from the debug_info at info_ptr.
4252    NOTE: This leaves members offset, first_die_offset to be filled in
4253    by the caller.  */
4254
4255 static const gdb_byte *
4256 read_comp_unit_head (struct comp_unit_head *cu_header,
4257                      const gdb_byte *info_ptr, bfd *abfd)
4258 {
4259   int signed_addr;
4260   unsigned int bytes_read;
4261
4262   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4263   cu_header->initial_length_size = bytes_read;
4264   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4265   info_ptr += bytes_read;
4266   cu_header->version = read_2_bytes (abfd, info_ptr);
4267   info_ptr += 2;
4268   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4269                                              &bytes_read);
4270   info_ptr += bytes_read;
4271   cu_header->addr_size = read_1_byte (abfd, info_ptr);
4272   info_ptr += 1;
4273   signed_addr = bfd_get_sign_extend_vma (abfd);
4274   if (signed_addr < 0)
4275     internal_error (__FILE__, __LINE__,
4276                     _("read_comp_unit_head: dwarf from non elf file"));
4277   cu_header->signed_addr_p = signed_addr;
4278
4279   return info_ptr;
4280 }
4281
4282 /* Helper function that returns the proper abbrev section for
4283    THIS_CU.  */
4284
4285 static struct dwarf2_section_info *
4286 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4287 {
4288   struct dwarf2_section_info *abbrev;
4289
4290   if (this_cu->is_dwz)
4291     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4292   else
4293     abbrev = &dwarf2_per_objfile->abbrev;
4294
4295   return abbrev;
4296 }
4297
4298 /* Subroutine of read_and_check_comp_unit_head and
4299    read_and_check_type_unit_head to simplify them.
4300    Perform various error checking on the header.  */
4301
4302 static void
4303 error_check_comp_unit_head (struct comp_unit_head *header,
4304                             struct dwarf2_section_info *section,
4305                             struct dwarf2_section_info *abbrev_section)
4306 {
4307   bfd *abfd = get_section_bfd_owner (section);
4308   const char *filename = get_section_file_name (section);
4309
4310   if (header->version != 2 && header->version != 3 && header->version != 4)
4311     error (_("Dwarf Error: wrong version in compilation unit header "
4312            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4313            filename);
4314
4315   if (header->abbrev_offset.sect_off
4316       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4317     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4318            "(offset 0x%lx + 6) [in module %s]"),
4319            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4320            filename);
4321
4322   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4323      avoid potential 32-bit overflow.  */
4324   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4325       > section->size)
4326     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4327            "(offset 0x%lx + 0) [in module %s]"),
4328            (long) header->length, (long) header->offset.sect_off,
4329            filename);
4330 }
4331
4332 /* Read in a CU/TU header and perform some basic error checking.
4333    The contents of the header are stored in HEADER.
4334    The result is a pointer to the start of the first DIE.  */
4335
4336 static const gdb_byte *
4337 read_and_check_comp_unit_head (struct comp_unit_head *header,
4338                                struct dwarf2_section_info *section,
4339                                struct dwarf2_section_info *abbrev_section,
4340                                const gdb_byte *info_ptr,
4341                                int is_debug_types_section)
4342 {
4343   const gdb_byte *beg_of_comp_unit = info_ptr;
4344   bfd *abfd = get_section_bfd_owner (section);
4345
4346   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4347
4348   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4349
4350   /* If we're reading a type unit, skip over the signature and
4351      type_offset fields.  */
4352   if (is_debug_types_section)
4353     info_ptr += 8 /*signature*/ + header->offset_size;
4354
4355   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4356
4357   error_check_comp_unit_head (header, section, abbrev_section);
4358
4359   return info_ptr;
4360 }
4361
4362 /* Read in the types comp unit header information from .debug_types entry at
4363    types_ptr.  The result is a pointer to one past the end of the header.  */
4364
4365 static const gdb_byte *
4366 read_and_check_type_unit_head (struct comp_unit_head *header,
4367                                struct dwarf2_section_info *section,
4368                                struct dwarf2_section_info *abbrev_section,
4369                                const gdb_byte *info_ptr,
4370                                ULONGEST *signature,
4371                                cu_offset *type_offset_in_tu)
4372 {
4373   const gdb_byte *beg_of_comp_unit = info_ptr;
4374   bfd *abfd = get_section_bfd_owner (section);
4375
4376   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4377
4378   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4379
4380   /* If we're reading a type unit, skip over the signature and
4381      type_offset fields.  */
4382   if (signature != NULL)
4383     *signature = read_8_bytes (abfd, info_ptr);
4384   info_ptr += 8;
4385   if (type_offset_in_tu != NULL)
4386     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4387                                                header->offset_size);
4388   info_ptr += header->offset_size;
4389
4390   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4391
4392   error_check_comp_unit_head (header, section, abbrev_section);
4393
4394   return info_ptr;
4395 }
4396
4397 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4398
4399 static sect_offset
4400 read_abbrev_offset (struct dwarf2_section_info *section,
4401                     sect_offset offset)
4402 {
4403   bfd *abfd = get_section_bfd_owner (section);
4404   const gdb_byte *info_ptr;
4405   unsigned int length, initial_length_size, offset_size;
4406   sect_offset abbrev_offset;
4407
4408   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4409   info_ptr = section->buffer + offset.sect_off;
4410   length = read_initial_length (abfd, info_ptr, &initial_length_size);
4411   offset_size = initial_length_size == 4 ? 4 : 8;
4412   info_ptr += initial_length_size + 2 /*version*/;
4413   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4414   return abbrev_offset;
4415 }
4416
4417 /* Allocate a new partial symtab for file named NAME and mark this new
4418    partial symtab as being an include of PST.  */
4419
4420 static void
4421 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4422                                struct objfile *objfile)
4423 {
4424   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4425
4426   if (!IS_ABSOLUTE_PATH (subpst->filename))
4427     {
4428       /* It shares objfile->objfile_obstack.  */
4429       subpst->dirname = pst->dirname;
4430     }
4431
4432   subpst->section_offsets = pst->section_offsets;
4433   subpst->textlow = 0;
4434   subpst->texthigh = 0;
4435
4436   subpst->dependencies = (struct partial_symtab **)
4437     obstack_alloc (&objfile->objfile_obstack,
4438                    sizeof (struct partial_symtab *));
4439   subpst->dependencies[0] = pst;
4440   subpst->number_of_dependencies = 1;
4441
4442   subpst->globals_offset = 0;
4443   subpst->n_global_syms = 0;
4444   subpst->statics_offset = 0;
4445   subpst->n_static_syms = 0;
4446   subpst->symtab = NULL;
4447   subpst->read_symtab = pst->read_symtab;
4448   subpst->readin = 0;
4449
4450   /* No private part is necessary for include psymtabs.  This property
4451      can be used to differentiate between such include psymtabs and
4452      the regular ones.  */
4453   subpst->read_symtab_private = NULL;
4454 }
4455
4456 /* Read the Line Number Program data and extract the list of files
4457    included by the source file represented by PST.  Build an include
4458    partial symtab for each of these included files.  */
4459
4460 static void
4461 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4462                                struct die_info *die,
4463                                struct partial_symtab *pst)
4464 {
4465   struct line_header *lh = NULL;
4466   struct attribute *attr;
4467
4468   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4469   if (attr)
4470     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4471   if (lh == NULL)
4472     return;  /* No linetable, so no includes.  */
4473
4474   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4475   dwarf_decode_lines (lh, pst->dirname, cu, pst, 1);
4476
4477   free_line_header (lh);
4478 }
4479
4480 static hashval_t
4481 hash_signatured_type (const void *item)
4482 {
4483   const struct signatured_type *sig_type = item;
4484
4485   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4486   return sig_type->signature;
4487 }
4488
4489 static int
4490 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4491 {
4492   const struct signatured_type *lhs = item_lhs;
4493   const struct signatured_type *rhs = item_rhs;
4494
4495   return lhs->signature == rhs->signature;
4496 }
4497
4498 /* Allocate a hash table for signatured types.  */
4499
4500 static htab_t
4501 allocate_signatured_type_table (struct objfile *objfile)
4502 {
4503   return htab_create_alloc_ex (41,
4504                                hash_signatured_type,
4505                                eq_signatured_type,
4506                                NULL,
4507                                &objfile->objfile_obstack,
4508                                hashtab_obstack_allocate,
4509                                dummy_obstack_deallocate);
4510 }
4511
4512 /* A helper function to add a signatured type CU to a table.  */
4513
4514 static int
4515 add_signatured_type_cu_to_table (void **slot, void *datum)
4516 {
4517   struct signatured_type *sigt = *slot;
4518   struct signatured_type ***datap = datum;
4519
4520   **datap = sigt;
4521   ++*datap;
4522
4523   return 1;
4524 }
4525
4526 /* Create the hash table of all entries in the .debug_types
4527    (or .debug_types.dwo) section(s).
4528    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4529    otherwise it is NULL.
4530
4531    The result is a pointer to the hash table or NULL if there are no types.
4532
4533    Note: This function processes DWO files only, not DWP files.  */
4534
4535 static htab_t
4536 create_debug_types_hash_table (struct dwo_file *dwo_file,
4537                                VEC (dwarf2_section_info_def) *types)
4538 {
4539   struct objfile *objfile = dwarf2_per_objfile->objfile;
4540   htab_t types_htab = NULL;
4541   int ix;
4542   struct dwarf2_section_info *section;
4543   struct dwarf2_section_info *abbrev_section;
4544
4545   if (VEC_empty (dwarf2_section_info_def, types))
4546     return NULL;
4547
4548   abbrev_section = (dwo_file != NULL
4549                     ? &dwo_file->sections.abbrev
4550                     : &dwarf2_per_objfile->abbrev);
4551
4552   if (dwarf2_read_debug)
4553     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4554                         dwo_file ? ".dwo" : "",
4555                         get_section_file_name (abbrev_section));
4556
4557   for (ix = 0;
4558        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4559        ++ix)
4560     {
4561       bfd *abfd;
4562       const gdb_byte *info_ptr, *end_ptr;
4563
4564       dwarf2_read_section (objfile, section);
4565       info_ptr = section->buffer;
4566
4567       if (info_ptr == NULL)
4568         continue;
4569
4570       /* We can't set abfd until now because the section may be empty or
4571          not present, in which case the bfd is unknown.  */
4572       abfd = get_section_bfd_owner (section);
4573
4574       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4575          because we don't need to read any dies: the signature is in the
4576          header.  */
4577
4578       end_ptr = info_ptr + section->size;
4579       while (info_ptr < end_ptr)
4580         {
4581           sect_offset offset;
4582           cu_offset type_offset_in_tu;
4583           ULONGEST signature;
4584           struct signatured_type *sig_type;
4585           struct dwo_unit *dwo_tu;
4586           void **slot;
4587           const gdb_byte *ptr = info_ptr;
4588           struct comp_unit_head header;
4589           unsigned int length;
4590
4591           offset.sect_off = ptr - section->buffer;
4592
4593           /* We need to read the type's signature in order to build the hash
4594              table, but we don't need anything else just yet.  */
4595
4596           ptr = read_and_check_type_unit_head (&header, section,
4597                                                abbrev_section, ptr,
4598                                                &signature, &type_offset_in_tu);
4599
4600           length = get_cu_length (&header);
4601
4602           /* Skip dummy type units.  */
4603           if (ptr >= info_ptr + length
4604               || peek_abbrev_code (abfd, ptr) == 0)
4605             {
4606               info_ptr += length;
4607               continue;
4608             }
4609
4610           if (types_htab == NULL)
4611             {
4612               if (dwo_file)
4613                 types_htab = allocate_dwo_unit_table (objfile);
4614               else
4615                 types_htab = allocate_signatured_type_table (objfile);
4616             }
4617
4618           if (dwo_file)
4619             {
4620               sig_type = NULL;
4621               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4622                                        struct dwo_unit);
4623               dwo_tu->dwo_file = dwo_file;
4624               dwo_tu->signature = signature;
4625               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4626               dwo_tu->section = section;
4627               dwo_tu->offset = offset;
4628               dwo_tu->length = length;
4629             }
4630           else
4631             {
4632               /* N.B.: type_offset is not usable if this type uses a DWO file.
4633                  The real type_offset is in the DWO file.  */
4634               dwo_tu = NULL;
4635               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4636                                          struct signatured_type);
4637               sig_type->signature = signature;
4638               sig_type->type_offset_in_tu = type_offset_in_tu;
4639               sig_type->per_cu.objfile = objfile;
4640               sig_type->per_cu.is_debug_types = 1;
4641               sig_type->per_cu.section = section;
4642               sig_type->per_cu.offset = offset;
4643               sig_type->per_cu.length = length;
4644             }
4645
4646           slot = htab_find_slot (types_htab,
4647                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4648                                  INSERT);
4649           gdb_assert (slot != NULL);
4650           if (*slot != NULL)
4651             {
4652               sect_offset dup_offset;
4653
4654               if (dwo_file)
4655                 {
4656                   const struct dwo_unit *dup_tu = *slot;
4657
4658                   dup_offset = dup_tu->offset;
4659                 }
4660               else
4661                 {
4662                   const struct signatured_type *dup_tu = *slot;
4663
4664                   dup_offset = dup_tu->per_cu.offset;
4665                 }
4666
4667               complaint (&symfile_complaints,
4668                          _("debug type entry at offset 0x%x is duplicate to"
4669                            " the entry at offset 0x%x, signature %s"),
4670                          offset.sect_off, dup_offset.sect_off,
4671                          hex_string (signature));
4672             }
4673           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4674
4675           if (dwarf2_read_debug > 1)
4676             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4677                                 offset.sect_off,
4678                                 hex_string (signature));
4679
4680           info_ptr += length;
4681         }
4682     }
4683
4684   return types_htab;
4685 }
4686
4687 /* Create the hash table of all entries in the .debug_types section,
4688    and initialize all_type_units.
4689    The result is zero if there is an error (e.g. missing .debug_types section),
4690    otherwise non-zero.  */
4691
4692 static int
4693 create_all_type_units (struct objfile *objfile)
4694 {
4695   htab_t types_htab;
4696   struct signatured_type **iter;
4697
4698   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4699   if (types_htab == NULL)
4700     {
4701       dwarf2_per_objfile->signatured_types = NULL;
4702       return 0;
4703     }
4704
4705   dwarf2_per_objfile->signatured_types = types_htab;
4706
4707   dwarf2_per_objfile->n_type_units = htab_elements (types_htab);
4708   dwarf2_per_objfile->all_type_units
4709     = xmalloc (dwarf2_per_objfile->n_type_units
4710                * sizeof (struct signatured_type *));
4711   iter = &dwarf2_per_objfile->all_type_units[0];
4712   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4713   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4714               == dwarf2_per_objfile->n_type_units);
4715
4716   return 1;
4717 }
4718
4719 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4720    Fill in SIG_ENTRY with DWO_ENTRY.  */
4721
4722 static void
4723 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4724                                   struct signatured_type *sig_entry,
4725                                   struct dwo_unit *dwo_entry)
4726 {
4727   /* Make sure we're not clobbering something we don't expect to.  */
4728   gdb_assert (! sig_entry->per_cu.queued);
4729   gdb_assert (sig_entry->per_cu.cu == NULL);
4730   gdb_assert (sig_entry->per_cu.v.quick != NULL);
4731   gdb_assert (sig_entry->per_cu.v.quick->symtab == NULL);
4732   gdb_assert (sig_entry->signature == dwo_entry->signature);
4733   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4734   gdb_assert (sig_entry->type_unit_group == NULL);
4735   gdb_assert (sig_entry->dwo_unit == NULL);
4736
4737   sig_entry->per_cu.section = dwo_entry->section;
4738   sig_entry->per_cu.offset = dwo_entry->offset;
4739   sig_entry->per_cu.length = dwo_entry->length;
4740   sig_entry->per_cu.reading_dwo_directly = 1;
4741   sig_entry->per_cu.objfile = objfile;
4742   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4743   sig_entry->dwo_unit = dwo_entry;
4744 }
4745
4746 /* Subroutine of lookup_signatured_type.
4747    If we haven't read the TU yet, create the signatured_type data structure
4748    for a TU to be read in directly from a DWO file, bypassing the stub.
4749    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4750    using .gdb_index, then when reading a CU we want to stay in the DWO file
4751    containing that CU.  Otherwise we could end up reading several other DWO
4752    files (due to comdat folding) to process the transitive closure of all the
4753    mentioned TUs, and that can be slow.  The current DWO file will have every
4754    type signature that it needs.
4755    We only do this for .gdb_index because in the psymtab case we already have
4756    to read all the DWOs to build the type unit groups.  */
4757
4758 static struct signatured_type *
4759 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4760 {
4761   struct objfile *objfile = dwarf2_per_objfile->objfile;
4762   struct dwo_file *dwo_file;
4763   struct dwo_unit find_dwo_entry, *dwo_entry;
4764   struct signatured_type find_sig_entry, *sig_entry;
4765
4766   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4767
4768   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4769      dwo_unit of the TU itself.  */
4770   dwo_file = cu->dwo_unit->dwo_file;
4771
4772   /* We only ever need to read in one copy of a signatured type.
4773      Just use the global signatured_types array.  If this is the first time
4774      we're reading this type, replace the recorded data from .gdb_index with
4775      this TU.  */
4776
4777   if (dwarf2_per_objfile->signatured_types == NULL)
4778     return NULL;
4779   find_sig_entry.signature = sig;
4780   sig_entry = htab_find (dwarf2_per_objfile->signatured_types, &find_sig_entry);
4781   if (sig_entry == NULL)
4782     return NULL;
4783
4784   /* We can get here with the TU already read, *or* in the process of being
4785      read.  Don't reassign it if that's the case.  Also note that if the TU is
4786      already being read, it may not have come from a DWO, the program may be
4787      a mix of Fission-compiled code and non-Fission-compiled code.  */
4788   /* Have we already tried to read this TU?  */
4789   if (sig_entry->per_cu.tu_read)
4790     return sig_entry;
4791
4792   /* Ok, this is the first time we're reading this TU.  */
4793   if (dwo_file->tus == NULL)
4794     return NULL;
4795   find_dwo_entry.signature = sig;
4796   dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4797   if (dwo_entry == NULL)
4798     return NULL;
4799
4800   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4801   sig_entry->per_cu.tu_read = 1;
4802   return sig_entry;
4803 }
4804
4805 /* Subroutine of lookup_dwp_signatured_type.
4806    Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.  */
4807
4808 static struct signatured_type *
4809 add_type_unit (ULONGEST sig)
4810 {
4811   struct objfile *objfile = dwarf2_per_objfile->objfile;
4812   int n_type_units = dwarf2_per_objfile->n_type_units;
4813   struct signatured_type *sig_type;
4814   void **slot;
4815
4816   ++n_type_units;
4817   dwarf2_per_objfile->all_type_units =
4818     xrealloc (dwarf2_per_objfile->all_type_units,
4819               n_type_units * sizeof (struct signatured_type *));
4820   dwarf2_per_objfile->n_type_units = n_type_units;
4821   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4822                              struct signatured_type);
4823   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4824   sig_type->signature = sig;
4825   sig_type->per_cu.is_debug_types = 1;
4826   sig_type->per_cu.v.quick =
4827     OBSTACK_ZALLOC (&objfile->objfile_obstack,
4828                     struct dwarf2_per_cu_quick_data);
4829   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4830                          sig_type, INSERT);
4831   gdb_assert (*slot == NULL);
4832   *slot = sig_type;
4833   /* The rest of sig_type must be filled in by the caller.  */
4834   return sig_type;
4835 }
4836
4837 /* Subroutine of lookup_signatured_type.
4838    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4839    then try the DWP file.
4840    Normally this "can't happen", but if there's a bug in signature
4841    generation and/or the DWP file is built incorrectly, it can happen.
4842    Using the type directly from the DWP file means we don't have the stub
4843    which has some useful attributes (e.g., DW_AT_comp_dir), but they're
4844    not critical.  [Eventually the stub may go away for type units anyway.]  */
4845
4846 static struct signatured_type *
4847 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4848 {
4849   struct objfile *objfile = dwarf2_per_objfile->objfile;
4850   struct dwp_file *dwp_file = get_dwp_file ();
4851   struct dwo_unit *dwo_entry;
4852   struct signatured_type find_sig_entry, *sig_entry;
4853
4854   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4855   gdb_assert (dwp_file != NULL);
4856
4857   if (dwarf2_per_objfile->signatured_types != NULL)
4858     {
4859       find_sig_entry.signature = sig;
4860       sig_entry = htab_find (dwarf2_per_objfile->signatured_types,
4861                              &find_sig_entry);
4862       if (sig_entry != NULL)
4863         return sig_entry;
4864     }
4865
4866   /* This is the "shouldn't happen" case.
4867      Try the DWP file and hope for the best.  */
4868   if (dwp_file->tus == NULL)
4869     return NULL;
4870   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4871                                       sig, 1 /* is_debug_types */);
4872   if (dwo_entry == NULL)
4873     return NULL;
4874
4875   sig_entry = add_type_unit (sig);
4876   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4877
4878   /* The caller will signal a complaint if we return NULL.
4879      Here we don't return NULL but we still want to complain.  */
4880   complaint (&symfile_complaints,
4881              _("Bad type signature %s referenced by %s at 0x%x,"
4882                " coping by using copy in DWP [in module %s]"),
4883              hex_string (sig),
4884              cu->per_cu->is_debug_types ? "TU" : "CU",
4885              cu->per_cu->offset.sect_off,
4886              objfile_name (objfile));
4887
4888   return sig_entry;
4889 }
4890
4891 /* Lookup a signature based type for DW_FORM_ref_sig8.
4892    Returns NULL if signature SIG is not present in the table.
4893    It is up to the caller to complain about this.  */
4894
4895 static struct signatured_type *
4896 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4897 {
4898   if (cu->dwo_unit
4899       && dwarf2_per_objfile->using_index)
4900     {
4901       /* We're in a DWO/DWP file, and we're using .gdb_index.
4902          These cases require special processing.  */
4903       if (get_dwp_file () == NULL)
4904         return lookup_dwo_signatured_type (cu, sig);
4905       else
4906         return lookup_dwp_signatured_type (cu, sig);
4907     }
4908   else
4909     {
4910       struct signatured_type find_entry, *entry;
4911
4912       if (dwarf2_per_objfile->signatured_types == NULL)
4913         return NULL;
4914       find_entry.signature = sig;
4915       entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
4916       return entry;
4917     }
4918 }
4919 \f
4920 /* Low level DIE reading support.  */
4921
4922 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
4923
4924 static void
4925 init_cu_die_reader (struct die_reader_specs *reader,
4926                     struct dwarf2_cu *cu,
4927                     struct dwarf2_section_info *section,
4928                     struct dwo_file *dwo_file)
4929 {
4930   gdb_assert (section->readin && section->buffer != NULL);
4931   reader->abfd = get_section_bfd_owner (section);
4932   reader->cu = cu;
4933   reader->dwo_file = dwo_file;
4934   reader->die_section = section;
4935   reader->buffer = section->buffer;
4936   reader->buffer_end = section->buffer + section->size;
4937   reader->comp_dir = NULL;
4938 }
4939
4940 /* Subroutine of init_cutu_and_read_dies to simplify it.
4941    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
4942    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
4943    already.
4944
4945    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
4946    from it to the DIE in the DWO.  If NULL we are skipping the stub.
4947    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
4948    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
4949    attribute of the referencing CU.  Exactly one of STUB_COMP_UNIT_DIE and
4950    STUB_COMP_DIR must be non-NULL.
4951    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
4952    are filled in with the info of the DIE from the DWO file.
4953    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
4954    provided an abbrev table to use.
4955    The result is non-zero if a valid (non-dummy) DIE was found.  */
4956
4957 static int
4958 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
4959                         struct dwo_unit *dwo_unit,
4960                         int abbrev_table_provided,
4961                         struct die_info *stub_comp_unit_die,
4962                         const char *stub_comp_dir,
4963                         struct die_reader_specs *result_reader,
4964                         const gdb_byte **result_info_ptr,
4965                         struct die_info **result_comp_unit_die,
4966                         int *result_has_children)
4967 {
4968   struct objfile *objfile = dwarf2_per_objfile->objfile;
4969   struct dwarf2_cu *cu = this_cu->cu;
4970   struct dwarf2_section_info *section;
4971   bfd *abfd;
4972   const gdb_byte *begin_info_ptr, *info_ptr;
4973   const char *comp_dir_string;
4974   ULONGEST signature; /* Or dwo_id.  */
4975   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
4976   int i,num_extra_attrs;
4977   struct dwarf2_section_info *dwo_abbrev_section;
4978   struct attribute *attr;
4979   struct die_info *comp_unit_die;
4980
4981   /* Exactly one of these must be provided.  */
4982   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) == 1);
4983
4984   /* These attributes aren't processed until later:
4985      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
4986      However, the attribute is found in the stub which we won't have later.
4987      In order to not impose this complication on the rest of the code,
4988      we read them here and copy them to the DWO CU/TU die.  */
4989
4990   stmt_list = NULL;
4991   low_pc = NULL;
4992   high_pc = NULL;
4993   ranges = NULL;
4994   comp_dir = NULL;
4995
4996   if (stub_comp_unit_die != NULL)
4997     {
4998       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
4999          DWO file.  */
5000       if (! this_cu->is_debug_types)
5001         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5002       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5003       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5004       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5005       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5006
5007       /* There should be a DW_AT_addr_base attribute here (if needed).
5008          We need the value before we can process DW_FORM_GNU_addr_index.  */
5009       cu->addr_base = 0;
5010       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5011       if (attr)
5012         cu->addr_base = DW_UNSND (attr);
5013
5014       /* There should be a DW_AT_ranges_base attribute here (if needed).
5015          We need the value before we can process DW_AT_ranges.  */
5016       cu->ranges_base = 0;
5017       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5018       if (attr)
5019         cu->ranges_base = DW_UNSND (attr);
5020     }
5021   else if (stub_comp_dir != NULL)
5022     {
5023       /* Reconstruct the comp_dir attribute to simplify the code below.  */
5024       comp_dir = (struct attribute *)
5025         obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5026       comp_dir->name = DW_AT_comp_dir;
5027       comp_dir->form = DW_FORM_string;
5028       DW_STRING_IS_CANONICAL (comp_dir) = 0;
5029       DW_STRING (comp_dir) = stub_comp_dir;
5030     }
5031
5032   /* Set up for reading the DWO CU/TU.  */
5033   cu->dwo_unit = dwo_unit;
5034   section = dwo_unit->section;
5035   dwarf2_read_section (objfile, section);
5036   abfd = get_section_bfd_owner (section);
5037   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5038   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5039   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5040
5041   if (this_cu->is_debug_types)
5042     {
5043       ULONGEST header_signature;
5044       cu_offset type_offset_in_tu;
5045       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5046
5047       info_ptr = read_and_check_type_unit_head (&cu->header, section,
5048                                                 dwo_abbrev_section,
5049                                                 info_ptr,
5050                                                 &header_signature,
5051                                                 &type_offset_in_tu);
5052       /* This is not an assert because it can be caused by bad debug info.  */
5053       if (sig_type->signature != header_signature)
5054         {
5055           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5056                    " TU at offset 0x%x [in module %s]"),
5057                  hex_string (sig_type->signature),
5058                  hex_string (header_signature),
5059                  dwo_unit->offset.sect_off,
5060                  bfd_get_filename (abfd));
5061         }
5062       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5063       /* For DWOs coming from DWP files, we don't know the CU length
5064          nor the type's offset in the TU until now.  */
5065       dwo_unit->length = get_cu_length (&cu->header);
5066       dwo_unit->type_offset_in_tu = type_offset_in_tu;
5067
5068       /* Establish the type offset that can be used to lookup the type.
5069          For DWO files, we don't know it until now.  */
5070       sig_type->type_offset_in_section.sect_off =
5071         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5072     }
5073   else
5074     {
5075       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5076                                                 dwo_abbrev_section,
5077                                                 info_ptr, 0);
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          until now.  */
5081       dwo_unit->length = get_cu_length (&cu->header);
5082     }
5083
5084   /* Replace the CU's original abbrev table with the DWO's.
5085      Reminder: We can't read the abbrev table until we've read the header.  */
5086   if (abbrev_table_provided)
5087     {
5088       /* Don't free the provided abbrev table, the caller of
5089          init_cutu_and_read_dies owns it.  */
5090       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5091       /* Ensure the DWO abbrev table gets freed.  */
5092       make_cleanup (dwarf2_free_abbrev_table, cu);
5093     }
5094   else
5095     {
5096       dwarf2_free_abbrev_table (cu);
5097       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5098       /* Leave any existing abbrev table cleanup as is.  */
5099     }
5100
5101   /* Read in the die, but leave space to copy over the attributes
5102      from the stub.  This has the benefit of simplifying the rest of
5103      the code - all the work to maintain the illusion of a single
5104      DW_TAG_{compile,type}_unit DIE is done here.  */
5105   num_extra_attrs = ((stmt_list != NULL)
5106                      + (low_pc != NULL)
5107                      + (high_pc != NULL)
5108                      + (ranges != NULL)
5109                      + (comp_dir != NULL));
5110   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5111                               result_has_children, num_extra_attrs);
5112
5113   /* Copy over the attributes from the stub to the DIE we just read in.  */
5114   comp_unit_die = *result_comp_unit_die;
5115   i = comp_unit_die->num_attrs;
5116   if (stmt_list != NULL)
5117     comp_unit_die->attrs[i++] = *stmt_list;
5118   if (low_pc != NULL)
5119     comp_unit_die->attrs[i++] = *low_pc;
5120   if (high_pc != NULL)
5121     comp_unit_die->attrs[i++] = *high_pc;
5122   if (ranges != NULL)
5123     comp_unit_die->attrs[i++] = *ranges;
5124   if (comp_dir != NULL)
5125     comp_unit_die->attrs[i++] = *comp_dir;
5126   comp_unit_die->num_attrs += num_extra_attrs;
5127
5128   if (dwarf2_die_debug)
5129     {
5130       fprintf_unfiltered (gdb_stdlog,
5131                           "Read die from %s@0x%x of %s:\n",
5132                           get_section_name (section),
5133                           (unsigned) (begin_info_ptr - section->buffer),
5134                           bfd_get_filename (abfd));
5135       dump_die (comp_unit_die, dwarf2_die_debug);
5136     }
5137
5138   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5139      TUs by skipping the stub and going directly to the entry in the DWO file.
5140      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5141      to get it via circuitous means.  Blech.  */
5142   if (comp_dir != NULL)
5143     result_reader->comp_dir = DW_STRING (comp_dir);
5144
5145   /* Skip dummy compilation units.  */
5146   if (info_ptr >= begin_info_ptr + dwo_unit->length
5147       || peek_abbrev_code (abfd, info_ptr) == 0)
5148     return 0;
5149
5150   *result_info_ptr = info_ptr;
5151   return 1;
5152 }
5153
5154 /* Subroutine of init_cutu_and_read_dies to simplify it.
5155    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5156    Returns NULL if the specified DWO unit cannot be found.  */
5157
5158 static struct dwo_unit *
5159 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5160                  struct die_info *comp_unit_die)
5161 {
5162   struct dwarf2_cu *cu = this_cu->cu;
5163   struct attribute *attr;
5164   ULONGEST signature;
5165   struct dwo_unit *dwo_unit;
5166   const char *comp_dir, *dwo_name;
5167
5168   gdb_assert (cu != NULL);
5169
5170   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5171   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5172   gdb_assert (attr != NULL);
5173   dwo_name = DW_STRING (attr);
5174   comp_dir = NULL;
5175   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5176   if (attr)
5177     comp_dir = DW_STRING (attr);
5178
5179   if (this_cu->is_debug_types)
5180     {
5181       struct signatured_type *sig_type;
5182
5183       /* Since this_cu is the first member of struct signatured_type,
5184          we can go from a pointer to one to a pointer to the other.  */
5185       sig_type = (struct signatured_type *) this_cu;
5186       signature = sig_type->signature;
5187       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5188     }
5189   else
5190     {
5191       struct attribute *attr;
5192
5193       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5194       if (! attr)
5195         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5196                  " [in module %s]"),
5197                dwo_name, objfile_name (this_cu->objfile));
5198       signature = DW_UNSND (attr);
5199       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5200                                        signature);
5201     }
5202
5203   return dwo_unit;
5204 }
5205
5206 /* Subroutine of init_cutu_and_read_dies to simplify it.
5207    Read a TU directly from a DWO file, bypassing the stub.  */
5208
5209 static void
5210 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu, int keep,
5211                            die_reader_func_ftype *die_reader_func,
5212                            void *data)
5213 {
5214   struct dwarf2_cu *cu;
5215   struct signatured_type *sig_type;
5216   struct cleanup *cleanups, *free_cu_cleanup;
5217   struct die_reader_specs reader;
5218   const gdb_byte *info_ptr;
5219   struct die_info *comp_unit_die;
5220   int has_children;
5221
5222   /* Verify we can do the following downcast, and that we have the
5223      data we need.  */
5224   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5225   sig_type = (struct signatured_type *) this_cu;
5226   gdb_assert (sig_type->dwo_unit != NULL);
5227
5228   cleanups = make_cleanup (null_cleanup, NULL);
5229
5230   gdb_assert (this_cu->cu == NULL);
5231   cu = xmalloc (sizeof (*cu));
5232   init_one_comp_unit (cu, this_cu);
5233   /* If an error occurs while loading, release our storage.  */
5234   free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5235
5236   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5237                               0 /* abbrev_table_provided */,
5238                               NULL /* stub_comp_unit_die */,
5239                               sig_type->dwo_unit->dwo_file->comp_dir,
5240                               &reader, &info_ptr,
5241                               &comp_unit_die, &has_children) == 0)
5242     {
5243       /* Dummy die.  */
5244       do_cleanups (cleanups);
5245       return;
5246     }
5247
5248   /* All the "real" work is done here.  */
5249   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5250
5251   /* This duplicates some code in init_cutu_and_read_dies,
5252      but the alternative is making the latter more complex.
5253      This function is only for the special case of using DWO files directly:
5254      no point in overly complicating the general case just to handle this.  */
5255   if (keep)
5256     {
5257       /* We've successfully allocated this compilation unit.  Let our
5258          caller clean it up when finished with it.  */
5259       discard_cleanups (free_cu_cleanup);
5260
5261       /* We can only discard free_cu_cleanup and all subsequent cleanups.
5262          So we have to manually free the abbrev table.  */
5263       dwarf2_free_abbrev_table (cu);
5264
5265       /* Link this CU into read_in_chain.  */
5266       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5267       dwarf2_per_objfile->read_in_chain = this_cu;
5268     }
5269   else
5270     do_cleanups (free_cu_cleanup);
5271
5272   do_cleanups (cleanups);
5273 }
5274
5275 /* Initialize a CU (or TU) and read its DIEs.
5276    If the CU defers to a DWO file, read the DWO file as well.
5277
5278    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5279    Otherwise the table specified in the comp unit header is read in and used.
5280    This is an optimization for when we already have the abbrev table.
5281
5282    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5283    Otherwise, a new CU is allocated with xmalloc.
5284
5285    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5286    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5287
5288    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5289    linker) then DIE_READER_FUNC will not get called.  */
5290
5291 static void
5292 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5293                          struct abbrev_table *abbrev_table,
5294                          int use_existing_cu, int keep,
5295                          die_reader_func_ftype *die_reader_func,
5296                          void *data)
5297 {
5298   struct objfile *objfile = dwarf2_per_objfile->objfile;
5299   struct dwarf2_section_info *section = this_cu->section;
5300   bfd *abfd = get_section_bfd_owner (section);
5301   struct dwarf2_cu *cu;
5302   const gdb_byte *begin_info_ptr, *info_ptr;
5303   struct die_reader_specs reader;
5304   struct die_info *comp_unit_die;
5305   int has_children;
5306   struct attribute *attr;
5307   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5308   struct signatured_type *sig_type = NULL;
5309   struct dwarf2_section_info *abbrev_section;
5310   /* Non-zero if CU currently points to a DWO file and we need to
5311      reread it.  When this happens we need to reread the skeleton die
5312      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5313   int rereading_dwo_cu = 0;
5314
5315   if (dwarf2_die_debug)
5316     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5317                         this_cu->is_debug_types ? "type" : "comp",
5318                         this_cu->offset.sect_off);
5319
5320   if (use_existing_cu)
5321     gdb_assert (keep);
5322
5323   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5324      file (instead of going through the stub), short-circuit all of this.  */
5325   if (this_cu->reading_dwo_directly)
5326     {
5327       /* Narrow down the scope of possibilities to have to understand.  */
5328       gdb_assert (this_cu->is_debug_types);
5329       gdb_assert (abbrev_table == NULL);
5330       gdb_assert (!use_existing_cu);
5331       init_tu_and_read_dwo_dies (this_cu, keep, die_reader_func, data);
5332       return;
5333     }
5334
5335   cleanups = make_cleanup (null_cleanup, NULL);
5336
5337   /* This is cheap if the section is already read in.  */
5338   dwarf2_read_section (objfile, section);
5339
5340   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5341
5342   abbrev_section = get_abbrev_section_for_cu (this_cu);
5343
5344   if (use_existing_cu && this_cu->cu != NULL)
5345     {
5346       cu = this_cu->cu;
5347
5348       /* If this CU is from a DWO file we need to start over, we need to
5349          refetch the attributes from the skeleton CU.
5350          This could be optimized by retrieving those attributes from when we
5351          were here the first time: the previous comp_unit_die was stored in
5352          comp_unit_obstack.  But there's no data yet that we need this
5353          optimization.  */
5354       if (cu->dwo_unit != NULL)
5355         rereading_dwo_cu = 1;
5356     }
5357   else
5358     {
5359       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5360       gdb_assert (this_cu->cu == NULL);
5361
5362       cu = xmalloc (sizeof (*cu));
5363       init_one_comp_unit (cu, this_cu);
5364
5365       /* If an error occurs while loading, release our storage.  */
5366       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5367     }
5368
5369   /* Get the header.  */
5370   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5371     {
5372       /* We already have the header, there's no need to read it in again.  */
5373       info_ptr += cu->header.first_die_offset.cu_off;
5374     }
5375   else
5376     {
5377       if (this_cu->is_debug_types)
5378         {
5379           ULONGEST signature;
5380           cu_offset type_offset_in_tu;
5381
5382           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5383                                                     abbrev_section, info_ptr,
5384                                                     &signature,
5385                                                     &type_offset_in_tu);
5386
5387           /* Since per_cu is the first member of struct signatured_type,
5388              we can go from a pointer to one to a pointer to the other.  */
5389           sig_type = (struct signatured_type *) this_cu;
5390           gdb_assert (sig_type->signature == signature);
5391           gdb_assert (sig_type->type_offset_in_tu.cu_off
5392                       == type_offset_in_tu.cu_off);
5393           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5394
5395           /* LENGTH has not been set yet for type units if we're
5396              using .gdb_index.  */
5397           this_cu->length = get_cu_length (&cu->header);
5398
5399           /* Establish the type offset that can be used to lookup the type.  */
5400           sig_type->type_offset_in_section.sect_off =
5401             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5402         }
5403       else
5404         {
5405           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5406                                                     abbrev_section,
5407                                                     info_ptr, 0);
5408
5409           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5410           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5411         }
5412     }
5413
5414   /* Skip dummy compilation units.  */
5415   if (info_ptr >= begin_info_ptr + this_cu->length
5416       || peek_abbrev_code (abfd, info_ptr) == 0)
5417     {
5418       do_cleanups (cleanups);
5419       return;
5420     }
5421
5422   /* If we don't have them yet, read the abbrevs for this compilation unit.
5423      And if we need to read them now, make sure they're freed when we're
5424      done.  Note that it's important that if the CU had an abbrev table
5425      on entry we don't free it when we're done: Somewhere up the call stack
5426      it may be in use.  */
5427   if (abbrev_table != NULL)
5428     {
5429       gdb_assert (cu->abbrev_table == NULL);
5430       gdb_assert (cu->header.abbrev_offset.sect_off
5431                   == abbrev_table->offset.sect_off);
5432       cu->abbrev_table = abbrev_table;
5433     }
5434   else if (cu->abbrev_table == NULL)
5435     {
5436       dwarf2_read_abbrevs (cu, abbrev_section);
5437       make_cleanup (dwarf2_free_abbrev_table, cu);
5438     }
5439   else if (rereading_dwo_cu)
5440     {
5441       dwarf2_free_abbrev_table (cu);
5442       dwarf2_read_abbrevs (cu, abbrev_section);
5443     }
5444
5445   /* Read the top level CU/TU die.  */
5446   init_cu_die_reader (&reader, cu, section, NULL);
5447   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5448
5449   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5450      from the DWO file.
5451      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5452      DWO CU, that this test will fail (the attribute will not be present).  */
5453   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5454   if (attr)
5455     {
5456       struct dwo_unit *dwo_unit;
5457       struct die_info *dwo_comp_unit_die;
5458
5459       if (has_children)
5460         {
5461           complaint (&symfile_complaints,
5462                      _("compilation unit with DW_AT_GNU_dwo_name"
5463                        " has children (offset 0x%x) [in module %s]"),
5464                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5465         }
5466       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5467       if (dwo_unit != NULL)
5468         {
5469           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5470                                       abbrev_table != NULL,
5471                                       comp_unit_die, NULL,
5472                                       &reader, &info_ptr,
5473                                       &dwo_comp_unit_die, &has_children) == 0)
5474             {
5475               /* Dummy die.  */
5476               do_cleanups (cleanups);
5477               return;
5478             }
5479           comp_unit_die = dwo_comp_unit_die;
5480         }
5481       else
5482         {
5483           /* Yikes, we couldn't find the rest of the DIE, we only have
5484              the stub.  A complaint has already been logged.  There's
5485              not much more we can do except pass on the stub DIE to
5486              die_reader_func.  We don't want to throw an error on bad
5487              debug info.  */
5488         }
5489     }
5490
5491   /* All of the above is setup for this call.  Yikes.  */
5492   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5493
5494   /* Done, clean up.  */
5495   if (free_cu_cleanup != NULL)
5496     {
5497       if (keep)
5498         {
5499           /* We've successfully allocated this compilation unit.  Let our
5500              caller clean it up when finished with it.  */
5501           discard_cleanups (free_cu_cleanup);
5502
5503           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5504              So we have to manually free the abbrev table.  */
5505           dwarf2_free_abbrev_table (cu);
5506
5507           /* Link this CU into read_in_chain.  */
5508           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5509           dwarf2_per_objfile->read_in_chain = this_cu;
5510         }
5511       else
5512         do_cleanups (free_cu_cleanup);
5513     }
5514
5515   do_cleanups (cleanups);
5516 }
5517
5518 /* Read CU/TU THIS_CU in section SECTION,
5519    but do not follow DW_AT_GNU_dwo_name if present.
5520    DWOP_FILE, if non-NULL, is the DWO/DWP file to read (the caller is assumed
5521    to have already done the lookup to find the DWO/DWP file).
5522
5523    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5524    THIS_CU->is_debug_types, but nothing else.
5525
5526    We fill in THIS_CU->length.
5527
5528    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5529    linker) then DIE_READER_FUNC will not get called.
5530
5531    THIS_CU->cu is always freed when done.
5532    This is done in order to not leave THIS_CU->cu in a state where we have
5533    to care whether it refers to the "main" CU or the DWO CU.  */
5534
5535 static void
5536 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5537                                    struct dwarf2_section_info *abbrev_section,
5538                                    struct dwo_file *dwo_file,
5539                                    die_reader_func_ftype *die_reader_func,
5540                                    void *data)
5541 {
5542   struct objfile *objfile = dwarf2_per_objfile->objfile;
5543   struct dwarf2_section_info *section = this_cu->section;
5544   bfd *abfd = get_section_bfd_owner (section);
5545   struct dwarf2_cu cu;
5546   const gdb_byte *begin_info_ptr, *info_ptr;
5547   struct die_reader_specs reader;
5548   struct cleanup *cleanups;
5549   struct die_info *comp_unit_die;
5550   int has_children;
5551
5552   if (dwarf2_die_debug)
5553     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5554                         this_cu->is_debug_types ? "type" : "comp",
5555                         this_cu->offset.sect_off);
5556
5557   gdb_assert (this_cu->cu == NULL);
5558
5559   /* This is cheap if the section is already read in.  */
5560   dwarf2_read_section (objfile, section);
5561
5562   init_one_comp_unit (&cu, this_cu);
5563
5564   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5565
5566   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5567   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5568                                             abbrev_section, info_ptr,
5569                                             this_cu->is_debug_types);
5570
5571   this_cu->length = get_cu_length (&cu.header);
5572
5573   /* Skip dummy compilation units.  */
5574   if (info_ptr >= begin_info_ptr + this_cu->length
5575       || peek_abbrev_code (abfd, info_ptr) == 0)
5576     {
5577       do_cleanups (cleanups);
5578       return;
5579     }
5580
5581   dwarf2_read_abbrevs (&cu, abbrev_section);
5582   make_cleanup (dwarf2_free_abbrev_table, &cu);
5583
5584   init_cu_die_reader (&reader, &cu, section, dwo_file);
5585   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5586
5587   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5588
5589   do_cleanups (cleanups);
5590 }
5591
5592 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5593    does not lookup the specified DWO file.
5594    This cannot be used to read DWO files.
5595
5596    THIS_CU->cu is always freed when done.
5597    This is done in order to not leave THIS_CU->cu in a state where we have
5598    to care whether it refers to the "main" CU or the DWO CU.
5599    We can revisit this if the data shows there's a performance issue.  */
5600
5601 static void
5602 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5603                                 die_reader_func_ftype *die_reader_func,
5604                                 void *data)
5605 {
5606   init_cutu_and_read_dies_no_follow (this_cu,
5607                                      get_abbrev_section_for_cu (this_cu),
5608                                      NULL,
5609                                      die_reader_func, data);
5610 }
5611 \f
5612 /* Type Unit Groups.
5613
5614    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5615    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5616    so that all types coming from the same compilation (.o file) are grouped
5617    together.  A future step could be to put the types in the same symtab as
5618    the CU the types ultimately came from.  */
5619
5620 static hashval_t
5621 hash_type_unit_group (const void *item)
5622 {
5623   const struct type_unit_group *tu_group = item;
5624
5625   return hash_stmt_list_entry (&tu_group->hash);
5626 }
5627
5628 static int
5629 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5630 {
5631   const struct type_unit_group *lhs = item_lhs;
5632   const struct type_unit_group *rhs = item_rhs;
5633
5634   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5635 }
5636
5637 /* Allocate a hash table for type unit groups.  */
5638
5639 static htab_t
5640 allocate_type_unit_groups_table (void)
5641 {
5642   return htab_create_alloc_ex (3,
5643                                hash_type_unit_group,
5644                                eq_type_unit_group,
5645                                NULL,
5646                                &dwarf2_per_objfile->objfile->objfile_obstack,
5647                                hashtab_obstack_allocate,
5648                                dummy_obstack_deallocate);
5649 }
5650
5651 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5652    partial symtabs.  We combine several TUs per psymtab to not let the size
5653    of any one psymtab grow too big.  */
5654 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5655 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5656
5657 /* Helper routine for get_type_unit_group.
5658    Create the type_unit_group object used to hold one or more TUs.  */
5659
5660 static struct type_unit_group *
5661 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5662 {
5663   struct objfile *objfile = dwarf2_per_objfile->objfile;
5664   struct dwarf2_per_cu_data *per_cu;
5665   struct type_unit_group *tu_group;
5666
5667   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5668                              struct type_unit_group);
5669   per_cu = &tu_group->per_cu;
5670   per_cu->objfile = objfile;
5671
5672   if (dwarf2_per_objfile->using_index)
5673     {
5674       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5675                                         struct dwarf2_per_cu_quick_data);
5676     }
5677   else
5678     {
5679       unsigned int line_offset = line_offset_struct.sect_off;
5680       struct partial_symtab *pst;
5681       char *name;
5682
5683       /* Give the symtab a useful name for debug purposes.  */
5684       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5685         name = xstrprintf ("<type_units_%d>",
5686                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5687       else
5688         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5689
5690       pst = create_partial_symtab (per_cu, name);
5691       pst->anonymous = 1;
5692
5693       xfree (name);
5694     }
5695
5696   tu_group->hash.dwo_unit = cu->dwo_unit;
5697   tu_group->hash.line_offset = line_offset_struct;
5698
5699   return tu_group;
5700 }
5701
5702 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5703    STMT_LIST is a DW_AT_stmt_list attribute.  */
5704
5705 static struct type_unit_group *
5706 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5707 {
5708   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5709   struct type_unit_group *tu_group;
5710   void **slot;
5711   unsigned int line_offset;
5712   struct type_unit_group type_unit_group_for_lookup;
5713
5714   if (dwarf2_per_objfile->type_unit_groups == NULL)
5715     {
5716       dwarf2_per_objfile->type_unit_groups =
5717         allocate_type_unit_groups_table ();
5718     }
5719
5720   /* Do we need to create a new group, or can we use an existing one?  */
5721
5722   if (stmt_list)
5723     {
5724       line_offset = DW_UNSND (stmt_list);
5725       ++tu_stats->nr_symtab_sharers;
5726     }
5727   else
5728     {
5729       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5730          We can do various things here like create one group per TU or
5731          spread them over multiple groups to split up the expansion work.
5732          To avoid worst case scenarios (too many groups or too large groups)
5733          we, umm, group them in bunches.  */
5734       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5735                      | (tu_stats->nr_stmt_less_type_units
5736                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5737       ++tu_stats->nr_stmt_less_type_units;
5738     }
5739
5740   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5741   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5742   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5743                          &type_unit_group_for_lookup, INSERT);
5744   if (*slot != NULL)
5745     {
5746       tu_group = *slot;
5747       gdb_assert (tu_group != NULL);
5748     }
5749   else
5750     {
5751       sect_offset line_offset_struct;
5752
5753       line_offset_struct.sect_off = line_offset;
5754       tu_group = create_type_unit_group (cu, line_offset_struct);
5755       *slot = tu_group;
5756       ++tu_stats->nr_symtabs;
5757     }
5758
5759   return tu_group;
5760 }
5761
5762 /* Struct used to sort TUs by their abbreviation table offset.  */
5763
5764 struct tu_abbrev_offset
5765 {
5766   struct signatured_type *sig_type;
5767   sect_offset abbrev_offset;
5768 };
5769
5770 /* Helper routine for build_type_unit_groups, passed to qsort.  */
5771
5772 static int
5773 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
5774 {
5775   const struct tu_abbrev_offset * const *a = ap;
5776   const struct tu_abbrev_offset * const *b = bp;
5777   unsigned int aoff = (*a)->abbrev_offset.sect_off;
5778   unsigned int boff = (*b)->abbrev_offset.sect_off;
5779
5780   return (aoff > boff) - (aoff < boff);
5781 }
5782
5783 /* A helper function to add a type_unit_group to a table.  */
5784
5785 static int
5786 add_type_unit_group_to_table (void **slot, void *datum)
5787 {
5788   struct type_unit_group *tu_group = *slot;
5789   struct type_unit_group ***datap = datum;
5790
5791   **datap = tu_group;
5792   ++*datap;
5793
5794   return 1;
5795 }
5796
5797 /* Efficiently read all the type units, calling init_cutu_and_read_dies on
5798    each one passing FUNC,DATA.
5799
5800    The efficiency is because we sort TUs by the abbrev table they use and
5801    only read each abbrev table once.  In one program there are 200K TUs
5802    sharing 8K abbrev tables.
5803
5804    The main purpose of this function is to support building the
5805    dwarf2_per_objfile->type_unit_groups table.
5806    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
5807    can collapse the search space by grouping them by stmt_list.
5808    The savings can be significant, in the same program from above the 200K TUs
5809    share 8K stmt_list tables.
5810
5811    FUNC is expected to call get_type_unit_group, which will create the
5812    struct type_unit_group if necessary and add it to
5813    dwarf2_per_objfile->type_unit_groups.  */
5814
5815 static void
5816 build_type_unit_groups (die_reader_func_ftype *func, void *data)
5817 {
5818   struct objfile *objfile = dwarf2_per_objfile->objfile;
5819   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5820   struct cleanup *cleanups;
5821   struct abbrev_table *abbrev_table;
5822   sect_offset abbrev_offset;
5823   struct tu_abbrev_offset *sorted_by_abbrev;
5824   struct type_unit_group **iter;
5825   int i;
5826
5827   /* It's up to the caller to not call us multiple times.  */
5828   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
5829
5830   if (dwarf2_per_objfile->n_type_units == 0)
5831     return;
5832
5833   /* TUs typically share abbrev tables, and there can be way more TUs than
5834      abbrev tables.  Sort by abbrev table to reduce the number of times we
5835      read each abbrev table in.
5836      Alternatives are to punt or to maintain a cache of abbrev tables.
5837      This is simpler and efficient enough for now.
5838
5839      Later we group TUs by their DW_AT_stmt_list value (as this defines the
5840      symtab to use).  Typically TUs with the same abbrev offset have the same
5841      stmt_list value too so in practice this should work well.
5842
5843      The basic algorithm here is:
5844
5845       sort TUs by abbrev table
5846       for each TU with same abbrev table:
5847         read abbrev table if first user
5848         read TU top level DIE
5849           [IWBN if DWO skeletons had DW_AT_stmt_list]
5850         call FUNC  */
5851
5852   if (dwarf2_read_debug)
5853     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
5854
5855   /* Sort in a separate table to maintain the order of all_type_units
5856      for .gdb_index: TU indices directly index all_type_units.  */
5857   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
5858                               dwarf2_per_objfile->n_type_units);
5859   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5860     {
5861       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
5862
5863       sorted_by_abbrev[i].sig_type = sig_type;
5864       sorted_by_abbrev[i].abbrev_offset =
5865         read_abbrev_offset (sig_type->per_cu.section,
5866                             sig_type->per_cu.offset);
5867     }
5868   cleanups = make_cleanup (xfree, sorted_by_abbrev);
5869   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
5870          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
5871
5872   /* Note: In the .gdb_index case, get_type_unit_group may have already been
5873      called any number of times, so we don't reset tu_stats here.  */
5874
5875   abbrev_offset.sect_off = ~(unsigned) 0;
5876   abbrev_table = NULL;
5877   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
5878
5879   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5880     {
5881       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
5882
5883       /* Switch to the next abbrev table if necessary.  */
5884       if (abbrev_table == NULL
5885           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
5886         {
5887           if (abbrev_table != NULL)
5888             {
5889               abbrev_table_free (abbrev_table);
5890               /* Reset to NULL in case abbrev_table_read_table throws
5891                  an error: abbrev_table_free_cleanup will get called.  */
5892               abbrev_table = NULL;
5893             }
5894           abbrev_offset = tu->abbrev_offset;
5895           abbrev_table =
5896             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
5897                                      abbrev_offset);
5898           ++tu_stats->nr_uniq_abbrev_tables;
5899         }
5900
5901       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
5902                                func, data);
5903     }
5904
5905   /* type_unit_groups can be NULL if there is an error in the debug info.
5906      Just create an empty table so the rest of gdb doesn't have to watch
5907      for this error case.  */
5908   if (dwarf2_per_objfile->type_unit_groups == NULL)
5909     {
5910       dwarf2_per_objfile->type_unit_groups =
5911         allocate_type_unit_groups_table ();
5912       dwarf2_per_objfile->n_type_unit_groups = 0;
5913     }
5914
5915   /* Create a vector of pointers to primary type units to make it easy to
5916      iterate over them and CUs.  See dw2_get_primary_cu.  */
5917   dwarf2_per_objfile->n_type_unit_groups =
5918     htab_elements (dwarf2_per_objfile->type_unit_groups);
5919   dwarf2_per_objfile->all_type_unit_groups =
5920     obstack_alloc (&objfile->objfile_obstack,
5921                    dwarf2_per_objfile->n_type_unit_groups
5922                    * sizeof (struct type_unit_group *));
5923   iter = &dwarf2_per_objfile->all_type_unit_groups[0];
5924   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
5925                           add_type_unit_group_to_table, &iter);
5926   gdb_assert (iter - &dwarf2_per_objfile->all_type_unit_groups[0]
5927               == dwarf2_per_objfile->n_type_unit_groups);
5928
5929   do_cleanups (cleanups);
5930
5931   if (dwarf2_read_debug)
5932     {
5933       fprintf_unfiltered (gdb_stdlog, "Done building type unit groups:\n");
5934       fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
5935                           dwarf2_per_objfile->n_type_units);
5936       fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
5937                           tu_stats->nr_uniq_abbrev_tables);
5938       fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
5939                           tu_stats->nr_symtabs);
5940       fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
5941                           tu_stats->nr_symtab_sharers);
5942       fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
5943                           tu_stats->nr_stmt_less_type_units);
5944     }
5945 }
5946 \f
5947 /* Partial symbol tables.  */
5948
5949 /* Create a psymtab named NAME and assign it to PER_CU.
5950
5951    The caller must fill in the following details:
5952    dirname, textlow, texthigh.  */
5953
5954 static struct partial_symtab *
5955 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5956 {
5957   struct objfile *objfile = per_cu->objfile;
5958   struct partial_symtab *pst;
5959
5960   pst = start_psymtab_common (objfile, objfile->section_offsets,
5961                               name, 0,
5962                               objfile->global_psymbols.next,
5963                               objfile->static_psymbols.next);
5964
5965   pst->psymtabs_addrmap_supported = 1;
5966
5967   /* This is the glue that links PST into GDB's symbol API.  */
5968   pst->read_symtab_private = per_cu;
5969   pst->read_symtab = dwarf2_read_symtab;
5970   per_cu->v.psymtab = pst;
5971
5972   return pst;
5973 }
5974
5975 /* The DATA object passed to process_psymtab_comp_unit_reader has this
5976    type.  */
5977
5978 struct process_psymtab_comp_unit_data
5979 {
5980   /* True if we are reading a DW_TAG_partial_unit.  */
5981
5982   int want_partial_unit;
5983
5984   /* The "pretend" language that is used if the CU doesn't declare a
5985      language.  */
5986
5987   enum language pretend_language;
5988 };
5989
5990 /* die_reader_func for process_psymtab_comp_unit.  */
5991
5992 static void
5993 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5994                                   const gdb_byte *info_ptr,
5995                                   struct die_info *comp_unit_die,
5996                                   int has_children,
5997                                   void *data)
5998 {
5999   struct dwarf2_cu *cu = reader->cu;
6000   struct objfile *objfile = cu->objfile;
6001   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6002   struct attribute *attr;
6003   CORE_ADDR baseaddr;
6004   CORE_ADDR best_lowpc = 0, best_highpc = 0;
6005   struct partial_symtab *pst;
6006   int has_pc_info;
6007   const char *filename;
6008   struct process_psymtab_comp_unit_data *info = data;
6009
6010   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
6011     return;
6012
6013   gdb_assert (! per_cu->is_debug_types);
6014
6015   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
6016
6017   cu->list_in_scope = &file_symbols;
6018
6019   /* Allocate a new partial symbol table structure.  */
6020   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
6021   if (attr == NULL || !DW_STRING (attr))
6022     filename = "";
6023   else
6024     filename = DW_STRING (attr);
6025
6026   pst = create_partial_symtab (per_cu, filename);
6027
6028   /* This must be done before calling dwarf2_build_include_psymtabs.  */
6029   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
6030   if (attr != NULL)
6031     pst->dirname = DW_STRING (attr);
6032
6033   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6034
6035   dwarf2_find_base_address (comp_unit_die, cu);
6036
6037   /* Possibly set the default values of LOWPC and HIGHPC from
6038      `DW_AT_ranges'.  */
6039   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
6040                                       &best_highpc, cu, pst);
6041   if (has_pc_info == 1 && best_lowpc < best_highpc)
6042     /* Store the contiguous range if it is not empty; it can be empty for
6043        CUs with no code.  */
6044     addrmap_set_empty (objfile->psymtabs_addrmap,
6045                        best_lowpc + baseaddr,
6046                        best_highpc + baseaddr - 1, pst);
6047
6048   /* Check if comp unit has_children.
6049      If so, read the rest of the partial symbols from this comp unit.
6050      If not, there's no more debug_info for this comp unit.  */
6051   if (has_children)
6052     {
6053       struct partial_die_info *first_die;
6054       CORE_ADDR lowpc, highpc;
6055
6056       lowpc = ((CORE_ADDR) -1);
6057       highpc = ((CORE_ADDR) 0);
6058
6059       first_die = load_partial_dies (reader, info_ptr, 1);
6060
6061       scan_partial_symbols (first_die, &lowpc, &highpc,
6062                             ! has_pc_info, cu);
6063
6064       /* If we didn't find a lowpc, set it to highpc to avoid
6065          complaints from `maint check'.  */
6066       if (lowpc == ((CORE_ADDR) -1))
6067         lowpc = highpc;
6068
6069       /* If the compilation unit didn't have an explicit address range,
6070          then use the information extracted from its child dies.  */
6071       if (! has_pc_info)
6072         {
6073           best_lowpc = lowpc;
6074           best_highpc = highpc;
6075         }
6076     }
6077   pst->textlow = best_lowpc + baseaddr;
6078   pst->texthigh = best_highpc + baseaddr;
6079
6080   pst->n_global_syms = objfile->global_psymbols.next -
6081     (objfile->global_psymbols.list + pst->globals_offset);
6082   pst->n_static_syms = objfile->static_psymbols.next -
6083     (objfile->static_psymbols.list + pst->statics_offset);
6084   sort_pst_symbols (objfile, pst);
6085
6086   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6087     {
6088       int i;
6089       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6090       struct dwarf2_per_cu_data *iter;
6091
6092       /* Fill in 'dependencies' here; we fill in 'users' in a
6093          post-pass.  */
6094       pst->number_of_dependencies = len;
6095       pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6096                                          len * sizeof (struct symtab *));
6097       for (i = 0;
6098            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6099                         i, iter);
6100            ++i)
6101         pst->dependencies[i] = iter->v.psymtab;
6102
6103       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6104     }
6105
6106   /* Get the list of files included in the current compilation unit,
6107      and build a psymtab for each of them.  */
6108   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6109
6110   if (dwarf2_read_debug)
6111     {
6112       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6113
6114       fprintf_unfiltered (gdb_stdlog,
6115                           "Psymtab for %s unit @0x%x: %s - %s"
6116                           ", %d global, %d static syms\n",
6117                           per_cu->is_debug_types ? "type" : "comp",
6118                           per_cu->offset.sect_off,
6119                           paddress (gdbarch, pst->textlow),
6120                           paddress (gdbarch, pst->texthigh),
6121                           pst->n_global_syms, pst->n_static_syms);
6122     }
6123 }
6124
6125 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6126    Process compilation unit THIS_CU for a psymtab.  */
6127
6128 static void
6129 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
6130                            int want_partial_unit,
6131                            enum language pretend_language)
6132 {
6133   struct process_psymtab_comp_unit_data info;
6134
6135   /* If this compilation unit was already read in, free the
6136      cached copy in order to read it in again.  This is
6137      necessary because we skipped some symbols when we first
6138      read in the compilation unit (see load_partial_dies).
6139      This problem could be avoided, but the benefit is unclear.  */
6140   if (this_cu->cu != NULL)
6141     free_one_cached_comp_unit (this_cu);
6142
6143   gdb_assert (! this_cu->is_debug_types);
6144   info.want_partial_unit = want_partial_unit;
6145   info.pretend_language = pretend_language;
6146   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6147                            process_psymtab_comp_unit_reader,
6148                            &info);
6149
6150   /* Age out any secondary CUs.  */
6151   age_cached_comp_units ();
6152 }
6153
6154 /* Reader function for build_type_psymtabs.  */
6155
6156 static void
6157 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6158                             const gdb_byte *info_ptr,
6159                             struct die_info *type_unit_die,
6160                             int has_children,
6161                             void *data)
6162 {
6163   struct objfile *objfile = dwarf2_per_objfile->objfile;
6164   struct dwarf2_cu *cu = reader->cu;
6165   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6166   struct signatured_type *sig_type;
6167   struct type_unit_group *tu_group;
6168   struct attribute *attr;
6169   struct partial_die_info *first_die;
6170   CORE_ADDR lowpc, highpc;
6171   struct partial_symtab *pst;
6172
6173   gdb_assert (data == NULL);
6174   gdb_assert (per_cu->is_debug_types);
6175   sig_type = (struct signatured_type *) per_cu;
6176
6177   if (! has_children)
6178     return;
6179
6180   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6181   tu_group = get_type_unit_group (cu, attr);
6182
6183   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6184
6185   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6186   cu->list_in_scope = &file_symbols;
6187   pst = create_partial_symtab (per_cu, "");
6188   pst->anonymous = 1;
6189
6190   first_die = load_partial_dies (reader, info_ptr, 1);
6191
6192   lowpc = (CORE_ADDR) -1;
6193   highpc = (CORE_ADDR) 0;
6194   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6195
6196   pst->n_global_syms = objfile->global_psymbols.next -
6197     (objfile->global_psymbols.list + pst->globals_offset);
6198   pst->n_static_syms = objfile->static_psymbols.next -
6199     (objfile->static_psymbols.list + pst->statics_offset);
6200   sort_pst_symbols (objfile, pst);
6201 }
6202
6203 /* Traversal function for build_type_psymtabs.  */
6204
6205 static int
6206 build_type_psymtab_dependencies (void **slot, void *info)
6207 {
6208   struct objfile *objfile = dwarf2_per_objfile->objfile;
6209   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6210   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6211   struct partial_symtab *pst = per_cu->v.psymtab;
6212   int len = VEC_length (sig_type_ptr, tu_group->tus);
6213   struct signatured_type *iter;
6214   int i;
6215
6216   gdb_assert (len > 0);
6217   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6218
6219   pst->number_of_dependencies = len;
6220   pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6221                                      len * sizeof (struct psymtab *));
6222   for (i = 0;
6223        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6224        ++i)
6225     {
6226       gdb_assert (iter->per_cu.is_debug_types);
6227       pst->dependencies[i] = iter->per_cu.v.psymtab;
6228       iter->type_unit_group = tu_group;
6229     }
6230
6231   VEC_free (sig_type_ptr, tu_group->tus);
6232
6233   return 1;
6234 }
6235
6236 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6237    Build partial symbol tables for the .debug_types comp-units.  */
6238
6239 static void
6240 build_type_psymtabs (struct objfile *objfile)
6241 {
6242   if (! create_all_type_units (objfile))
6243     return;
6244
6245   build_type_unit_groups (build_type_psymtabs_reader, NULL);
6246
6247   /* Now that all TUs have been processed we can fill in the dependencies.  */
6248   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6249                           build_type_psymtab_dependencies, NULL);
6250 }
6251
6252 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6253
6254 static void
6255 psymtabs_addrmap_cleanup (void *o)
6256 {
6257   struct objfile *objfile = o;
6258
6259   objfile->psymtabs_addrmap = NULL;
6260 }
6261
6262 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6263
6264 static void
6265 set_partial_user (struct objfile *objfile)
6266 {
6267   int i;
6268
6269   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6270     {
6271       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
6272       struct partial_symtab *pst = per_cu->v.psymtab;
6273       int j;
6274
6275       if (pst == NULL)
6276         continue;
6277
6278       for (j = 0; j < pst->number_of_dependencies; ++j)
6279         {
6280           /* Set the 'user' field only if it is not already set.  */
6281           if (pst->dependencies[j]->user == NULL)
6282             pst->dependencies[j]->user = pst;
6283         }
6284     }
6285 }
6286
6287 /* Build the partial symbol table by doing a quick pass through the
6288    .debug_info and .debug_abbrev sections.  */
6289
6290 static void
6291 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6292 {
6293   struct cleanup *back_to, *addrmap_cleanup;
6294   struct obstack temp_obstack;
6295   int i;
6296
6297   if (dwarf2_read_debug)
6298     {
6299       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6300                           objfile_name (objfile));
6301     }
6302
6303   dwarf2_per_objfile->reading_partial_symbols = 1;
6304
6305   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6306
6307   /* Any cached compilation units will be linked by the per-objfile
6308      read_in_chain.  Make sure to free them when we're done.  */
6309   back_to = make_cleanup (free_cached_comp_units, NULL);
6310
6311   build_type_psymtabs (objfile);
6312
6313   create_all_comp_units (objfile);
6314
6315   /* Create a temporary address map on a temporary obstack.  We later
6316      copy this to the final obstack.  */
6317   obstack_init (&temp_obstack);
6318   make_cleanup_obstack_free (&temp_obstack);
6319   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6320   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6321
6322   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6323     {
6324       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
6325
6326       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6327     }
6328
6329   set_partial_user (objfile);
6330
6331   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6332                                                     &objfile->objfile_obstack);
6333   discard_cleanups (addrmap_cleanup);
6334
6335   do_cleanups (back_to);
6336
6337   if (dwarf2_read_debug)
6338     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6339                         objfile_name (objfile));
6340 }
6341
6342 /* die_reader_func for load_partial_comp_unit.  */
6343
6344 static void
6345 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6346                                const gdb_byte *info_ptr,
6347                                struct die_info *comp_unit_die,
6348                                int has_children,
6349                                void *data)
6350 {
6351   struct dwarf2_cu *cu = reader->cu;
6352
6353   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6354
6355   /* Check if comp unit has_children.
6356      If so, read the rest of the partial symbols from this comp unit.
6357      If not, there's no more debug_info for this comp unit.  */
6358   if (has_children)
6359     load_partial_dies (reader, info_ptr, 0);
6360 }
6361
6362 /* Load the partial DIEs for a secondary CU into memory.
6363    This is also used when rereading a primary CU with load_all_dies.  */
6364
6365 static void
6366 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6367 {
6368   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6369                            load_partial_comp_unit_reader, NULL);
6370 }
6371
6372 static void
6373 read_comp_units_from_section (struct objfile *objfile,
6374                               struct dwarf2_section_info *section,
6375                               unsigned int is_dwz,
6376                               int *n_allocated,
6377                               int *n_comp_units,
6378                               struct dwarf2_per_cu_data ***all_comp_units)
6379 {
6380   const gdb_byte *info_ptr;
6381   bfd *abfd = get_section_bfd_owner (section);
6382
6383   if (dwarf2_read_debug)
6384     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6385                         get_section_name (section),
6386                         get_section_file_name (section));
6387
6388   dwarf2_read_section (objfile, section);
6389
6390   info_ptr = section->buffer;
6391
6392   while (info_ptr < section->buffer + section->size)
6393     {
6394       unsigned int length, initial_length_size;
6395       struct dwarf2_per_cu_data *this_cu;
6396       sect_offset offset;
6397
6398       offset.sect_off = info_ptr - section->buffer;
6399
6400       /* Read just enough information to find out where the next
6401          compilation unit is.  */
6402       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6403
6404       /* Save the compilation unit for later lookup.  */
6405       this_cu = obstack_alloc (&objfile->objfile_obstack,
6406                                sizeof (struct dwarf2_per_cu_data));
6407       memset (this_cu, 0, sizeof (*this_cu));
6408       this_cu->offset = offset;
6409       this_cu->length = length + initial_length_size;
6410       this_cu->is_dwz = is_dwz;
6411       this_cu->objfile = objfile;
6412       this_cu->section = section;
6413
6414       if (*n_comp_units == *n_allocated)
6415         {
6416           *n_allocated *= 2;
6417           *all_comp_units = xrealloc (*all_comp_units,
6418                                       *n_allocated
6419                                       * sizeof (struct dwarf2_per_cu_data *));
6420         }
6421       (*all_comp_units)[*n_comp_units] = this_cu;
6422       ++*n_comp_units;
6423
6424       info_ptr = info_ptr + this_cu->length;
6425     }
6426 }
6427
6428 /* Create a list of all compilation units in OBJFILE.
6429    This is only done for -readnow and building partial symtabs.  */
6430
6431 static void
6432 create_all_comp_units (struct objfile *objfile)
6433 {
6434   int n_allocated;
6435   int n_comp_units;
6436   struct dwarf2_per_cu_data **all_comp_units;
6437   struct dwz_file *dwz;
6438
6439   n_comp_units = 0;
6440   n_allocated = 10;
6441   all_comp_units = xmalloc (n_allocated
6442                             * sizeof (struct dwarf2_per_cu_data *));
6443
6444   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6445                                 &n_allocated, &n_comp_units, &all_comp_units);
6446
6447   dwz = dwarf2_get_dwz_file ();
6448   if (dwz != NULL)
6449     read_comp_units_from_section (objfile, &dwz->info, 1,
6450                                   &n_allocated, &n_comp_units,
6451                                   &all_comp_units);
6452
6453   dwarf2_per_objfile->all_comp_units
6454     = obstack_alloc (&objfile->objfile_obstack,
6455                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6456   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6457           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6458   xfree (all_comp_units);
6459   dwarf2_per_objfile->n_comp_units = n_comp_units;
6460 }
6461
6462 /* Process all loaded DIEs for compilation unit CU, starting at
6463    FIRST_DIE.  The caller should pass NEED_PC == 1 if the compilation
6464    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6465    DW_AT_ranges).  If NEED_PC is set, then this function will set
6466    *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
6467    and record the covered ranges in the addrmap.  */
6468
6469 static void
6470 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6471                       CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6472 {
6473   struct partial_die_info *pdi;
6474
6475   /* Now, march along the PDI's, descending into ones which have
6476      interesting children but skipping the children of the other ones,
6477      until we reach the end of the compilation unit.  */
6478
6479   pdi = first_die;
6480
6481   while (pdi != NULL)
6482     {
6483       fixup_partial_die (pdi, cu);
6484
6485       /* Anonymous namespaces or modules have no name but have interesting
6486          children, so we need to look at them.  Ditto for anonymous
6487          enums.  */
6488
6489       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6490           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6491           || pdi->tag == DW_TAG_imported_unit)
6492         {
6493           switch (pdi->tag)
6494             {
6495             case DW_TAG_subprogram:
6496               add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6497               break;
6498             case DW_TAG_constant:
6499             case DW_TAG_variable:
6500             case DW_TAG_typedef:
6501             case DW_TAG_union_type:
6502               if (!pdi->is_declaration)
6503                 {
6504                   add_partial_symbol (pdi, cu);
6505                 }
6506               break;
6507             case DW_TAG_class_type:
6508             case DW_TAG_interface_type:
6509             case DW_TAG_structure_type:
6510               if (!pdi->is_declaration)
6511                 {
6512                   add_partial_symbol (pdi, cu);
6513                 }
6514               break;
6515             case DW_TAG_enumeration_type:
6516               if (!pdi->is_declaration)
6517                 add_partial_enumeration (pdi, cu);
6518               break;
6519             case DW_TAG_base_type:
6520             case DW_TAG_subrange_type:
6521               /* File scope base type definitions are added to the partial
6522                  symbol table.  */
6523               add_partial_symbol (pdi, cu);
6524               break;
6525             case DW_TAG_namespace:
6526               add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
6527               break;
6528             case DW_TAG_module:
6529               add_partial_module (pdi, lowpc, highpc, need_pc, cu);
6530               break;
6531             case DW_TAG_imported_unit:
6532               {
6533                 struct dwarf2_per_cu_data *per_cu;
6534
6535                 /* For now we don't handle imported units in type units.  */
6536                 if (cu->per_cu->is_debug_types)
6537                   {
6538                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6539                              " supported in type units [in module %s]"),
6540                            objfile_name (cu->objfile));
6541                   }
6542
6543                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6544                                                            pdi->is_dwz,
6545                                                            cu->objfile);
6546
6547                 /* Go read the partial unit, if needed.  */
6548                 if (per_cu->v.psymtab == NULL)
6549                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6550
6551                 VEC_safe_push (dwarf2_per_cu_ptr,
6552                                cu->per_cu->imported_symtabs, per_cu);
6553               }
6554               break;
6555             case DW_TAG_imported_declaration:
6556               add_partial_symbol (pdi, cu);
6557               break;
6558             default:
6559               break;
6560             }
6561         }
6562
6563       /* If the die has a sibling, skip to the sibling.  */
6564
6565       pdi = pdi->die_sibling;
6566     }
6567 }
6568
6569 /* Functions used to compute the fully scoped name of a partial DIE.
6570
6571    Normally, this is simple.  For C++, the parent DIE's fully scoped
6572    name is concatenated with "::" and the partial DIE's name.  For
6573    Java, the same thing occurs except that "." is used instead of "::".
6574    Enumerators are an exception; they use the scope of their parent
6575    enumeration type, i.e. the name of the enumeration type is not
6576    prepended to the enumerator.
6577
6578    There are two complexities.  One is DW_AT_specification; in this
6579    case "parent" means the parent of the target of the specification,
6580    instead of the direct parent of the DIE.  The other is compilers
6581    which do not emit DW_TAG_namespace; in this case we try to guess
6582    the fully qualified name of structure types from their members'
6583    linkage names.  This must be done using the DIE's children rather
6584    than the children of any DW_AT_specification target.  We only need
6585    to do this for structures at the top level, i.e. if the target of
6586    any DW_AT_specification (if any; otherwise the DIE itself) does not
6587    have a parent.  */
6588
6589 /* Compute the scope prefix associated with PDI's parent, in
6590    compilation unit CU.  The result will be allocated on CU's
6591    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6592    field.  NULL is returned if no prefix is necessary.  */
6593 static const char *
6594 partial_die_parent_scope (struct partial_die_info *pdi,
6595                           struct dwarf2_cu *cu)
6596 {
6597   const char *grandparent_scope;
6598   struct partial_die_info *parent, *real_pdi;
6599
6600   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6601      then this means the parent of the specification DIE.  */
6602
6603   real_pdi = pdi;
6604   while (real_pdi->has_specification)
6605     real_pdi = find_partial_die (real_pdi->spec_offset,
6606                                  real_pdi->spec_is_dwz, cu);
6607
6608   parent = real_pdi->die_parent;
6609   if (parent == NULL)
6610     return NULL;
6611
6612   if (parent->scope_set)
6613     return parent->scope;
6614
6615   fixup_partial_die (parent, cu);
6616
6617   grandparent_scope = partial_die_parent_scope (parent, cu);
6618
6619   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6620      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6621      Work around this problem here.  */
6622   if (cu->language == language_cplus
6623       && parent->tag == DW_TAG_namespace
6624       && strcmp (parent->name, "::") == 0
6625       && grandparent_scope == NULL)
6626     {
6627       parent->scope = NULL;
6628       parent->scope_set = 1;
6629       return NULL;
6630     }
6631
6632   if (pdi->tag == DW_TAG_enumerator)
6633     /* Enumerators should not get the name of the enumeration as a prefix.  */
6634     parent->scope = grandparent_scope;
6635   else if (parent->tag == DW_TAG_namespace
6636       || parent->tag == DW_TAG_module
6637       || parent->tag == DW_TAG_structure_type
6638       || parent->tag == DW_TAG_class_type
6639       || parent->tag == DW_TAG_interface_type
6640       || parent->tag == DW_TAG_union_type
6641       || parent->tag == DW_TAG_enumeration_type)
6642     {
6643       if (grandparent_scope == NULL)
6644         parent->scope = parent->name;
6645       else
6646         parent->scope = typename_concat (&cu->comp_unit_obstack,
6647                                          grandparent_scope,
6648                                          parent->name, 0, cu);
6649     }
6650   else
6651     {
6652       /* FIXME drow/2004-04-01: What should we be doing with
6653          function-local names?  For partial symbols, we should probably be
6654          ignoring them.  */
6655       complaint (&symfile_complaints,
6656                  _("unhandled containing DIE tag %d for DIE at %d"),
6657                  parent->tag, pdi->offset.sect_off);
6658       parent->scope = grandparent_scope;
6659     }
6660
6661   parent->scope_set = 1;
6662   return parent->scope;
6663 }
6664
6665 /* Return the fully scoped name associated with PDI, from compilation unit
6666    CU.  The result will be allocated with malloc.  */
6667
6668 static char *
6669 partial_die_full_name (struct partial_die_info *pdi,
6670                        struct dwarf2_cu *cu)
6671 {
6672   const char *parent_scope;
6673
6674   /* If this is a template instantiation, we can not work out the
6675      template arguments from partial DIEs.  So, unfortunately, we have
6676      to go through the full DIEs.  At least any work we do building
6677      types here will be reused if full symbols are loaded later.  */
6678   if (pdi->has_template_arguments)
6679     {
6680       fixup_partial_die (pdi, cu);
6681
6682       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6683         {
6684           struct die_info *die;
6685           struct attribute attr;
6686           struct dwarf2_cu *ref_cu = cu;
6687
6688           /* DW_FORM_ref_addr is using section offset.  */
6689           attr.name = 0;
6690           attr.form = DW_FORM_ref_addr;
6691           attr.u.unsnd = pdi->offset.sect_off;
6692           die = follow_die_ref (NULL, &attr, &ref_cu);
6693
6694           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6695         }
6696     }
6697
6698   parent_scope = partial_die_parent_scope (pdi, cu);
6699   if (parent_scope == NULL)
6700     return NULL;
6701   else
6702     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6703 }
6704
6705 static void
6706 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6707 {
6708   struct objfile *objfile = cu->objfile;
6709   CORE_ADDR addr = 0;
6710   const char *actual_name = NULL;
6711   CORE_ADDR baseaddr;
6712   char *built_actual_name;
6713
6714   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6715
6716   built_actual_name = partial_die_full_name (pdi, cu);
6717   if (built_actual_name != NULL)
6718     actual_name = built_actual_name;
6719
6720   if (actual_name == NULL)
6721     actual_name = pdi->name;
6722
6723   switch (pdi->tag)
6724     {
6725     case DW_TAG_subprogram:
6726       if (pdi->is_external || cu->language == language_ada)
6727         {
6728           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6729              of the global scope.  But in Ada, we want to be able to access
6730              nested procedures globally.  So all Ada subprograms are stored
6731              in the global scope.  */
6732           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6733              mst_text, objfile); */
6734           add_psymbol_to_list (actual_name, strlen (actual_name),
6735                                built_actual_name != NULL,
6736                                VAR_DOMAIN, LOC_BLOCK,
6737                                &objfile->global_psymbols,
6738                                0, pdi->lowpc + baseaddr,
6739                                cu->language, objfile);
6740         }
6741       else
6742         {
6743           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6744              mst_file_text, objfile); */
6745           add_psymbol_to_list (actual_name, strlen (actual_name),
6746                                built_actual_name != NULL,
6747                                VAR_DOMAIN, LOC_BLOCK,
6748                                &objfile->static_psymbols,
6749                                0, pdi->lowpc + baseaddr,
6750                                cu->language, objfile);
6751         }
6752       break;
6753     case DW_TAG_constant:
6754       {
6755         struct psymbol_allocation_list *list;
6756
6757         if (pdi->is_external)
6758           list = &objfile->global_psymbols;
6759         else
6760           list = &objfile->static_psymbols;
6761         add_psymbol_to_list (actual_name, strlen (actual_name),
6762                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6763                              list, 0, 0, cu->language, objfile);
6764       }
6765       break;
6766     case DW_TAG_variable:
6767       if (pdi->d.locdesc)
6768         addr = decode_locdesc (pdi->d.locdesc, cu);
6769
6770       if (pdi->d.locdesc
6771           && addr == 0
6772           && !dwarf2_per_objfile->has_section_at_zero)
6773         {
6774           /* A global or static variable may also have been stripped
6775              out by the linker if unused, in which case its address
6776              will be nullified; do not add such variables into partial
6777              symbol table then.  */
6778         }
6779       else if (pdi->is_external)
6780         {
6781           /* Global Variable.
6782              Don't enter into the minimal symbol tables as there is
6783              a minimal symbol table entry from the ELF symbols already.
6784              Enter into partial symbol table if it has a location
6785              descriptor or a type.
6786              If the location descriptor is missing, new_symbol will create
6787              a LOC_UNRESOLVED symbol, the address of the variable will then
6788              be determined from the minimal symbol table whenever the variable
6789              is referenced.
6790              The address for the partial symbol table entry is not
6791              used by GDB, but it comes in handy for debugging partial symbol
6792              table building.  */
6793
6794           if (pdi->d.locdesc || pdi->has_type)
6795             add_psymbol_to_list (actual_name, strlen (actual_name),
6796                                  built_actual_name != NULL,
6797                                  VAR_DOMAIN, LOC_STATIC,
6798                                  &objfile->global_psymbols,
6799                                  0, addr + baseaddr,
6800                                  cu->language, objfile);
6801         }
6802       else
6803         {
6804           /* Static Variable.  Skip symbols without location descriptors.  */
6805           if (pdi->d.locdesc == NULL)
6806             {
6807               xfree (built_actual_name);
6808               return;
6809             }
6810           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
6811              mst_file_data, objfile); */
6812           add_psymbol_to_list (actual_name, strlen (actual_name),
6813                                built_actual_name != NULL,
6814                                VAR_DOMAIN, LOC_STATIC,
6815                                &objfile->static_psymbols,
6816                                0, addr + baseaddr,
6817                                cu->language, objfile);
6818         }
6819       break;
6820     case DW_TAG_typedef:
6821     case DW_TAG_base_type:
6822     case DW_TAG_subrange_type:
6823       add_psymbol_to_list (actual_name, strlen (actual_name),
6824                            built_actual_name != NULL,
6825                            VAR_DOMAIN, LOC_TYPEDEF,
6826                            &objfile->static_psymbols,
6827                            0, (CORE_ADDR) 0, cu->language, objfile);
6828       break;
6829     case DW_TAG_imported_declaration:
6830     case DW_TAG_namespace:
6831       add_psymbol_to_list (actual_name, strlen (actual_name),
6832                            built_actual_name != NULL,
6833                            VAR_DOMAIN, LOC_TYPEDEF,
6834                            &objfile->global_psymbols,
6835                            0, (CORE_ADDR) 0, cu->language, objfile);
6836       break;
6837     case DW_TAG_module:
6838       add_psymbol_to_list (actual_name, strlen (actual_name),
6839                            built_actual_name != NULL,
6840                            MODULE_DOMAIN, LOC_TYPEDEF,
6841                            &objfile->global_psymbols,
6842                            0, (CORE_ADDR) 0, cu->language, objfile);
6843       break;
6844     case DW_TAG_class_type:
6845     case DW_TAG_interface_type:
6846     case DW_TAG_structure_type:
6847     case DW_TAG_union_type:
6848     case DW_TAG_enumeration_type:
6849       /* Skip external references.  The DWARF standard says in the section
6850          about "Structure, Union, and Class Type Entries": "An incomplete
6851          structure, union or class type is represented by a structure,
6852          union or class entry that does not have a byte size attribute
6853          and that has a DW_AT_declaration attribute."  */
6854       if (!pdi->has_byte_size && pdi->is_declaration)
6855         {
6856           xfree (built_actual_name);
6857           return;
6858         }
6859
6860       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
6861          static vs. global.  */
6862       add_psymbol_to_list (actual_name, strlen (actual_name),
6863                            built_actual_name != NULL,
6864                            STRUCT_DOMAIN, LOC_TYPEDEF,
6865                            (cu->language == language_cplus
6866                             || cu->language == language_java)
6867                            ? &objfile->global_psymbols
6868                            : &objfile->static_psymbols,
6869                            0, (CORE_ADDR) 0, cu->language, objfile);
6870
6871       break;
6872     case DW_TAG_enumerator:
6873       add_psymbol_to_list (actual_name, strlen (actual_name),
6874                            built_actual_name != NULL,
6875                            VAR_DOMAIN, LOC_CONST,
6876                            (cu->language == language_cplus
6877                             || cu->language == language_java)
6878                            ? &objfile->global_psymbols
6879                            : &objfile->static_psymbols,
6880                            0, (CORE_ADDR) 0, cu->language, objfile);
6881       break;
6882     default:
6883       break;
6884     }
6885
6886   xfree (built_actual_name);
6887 }
6888
6889 /* Read a partial die corresponding to a namespace; also, add a symbol
6890    corresponding to that namespace to the symbol table.  NAMESPACE is
6891    the name of the enclosing namespace.  */
6892
6893 static void
6894 add_partial_namespace (struct partial_die_info *pdi,
6895                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
6896                        int need_pc, struct dwarf2_cu *cu)
6897 {
6898   /* Add a symbol for the namespace.  */
6899
6900   add_partial_symbol (pdi, cu);
6901
6902   /* Now scan partial symbols in that namespace.  */
6903
6904   if (pdi->has_children)
6905     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6906 }
6907
6908 /* Read a partial die corresponding to a Fortran module.  */
6909
6910 static void
6911 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
6912                     CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6913 {
6914   /* Add a symbol for the namespace.  */
6915
6916   add_partial_symbol (pdi, cu);
6917
6918   /* Now scan partial symbols in that module.  */
6919
6920   if (pdi->has_children)
6921     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6922 }
6923
6924 /* Read a partial die corresponding to a subprogram and create a partial
6925    symbol for that subprogram.  When the CU language allows it, this
6926    routine also defines a partial symbol for each nested subprogram
6927    that this subprogram contains.
6928
6929    DIE my also be a lexical block, in which case we simply search
6930    recursively for suprograms defined inside that lexical block.
6931    Again, this is only performed when the CU language allows this
6932    type of definitions.  */
6933
6934 static void
6935 add_partial_subprogram (struct partial_die_info *pdi,
6936                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
6937                         int need_pc, struct dwarf2_cu *cu)
6938 {
6939   if (pdi->tag == DW_TAG_subprogram)
6940     {
6941       if (pdi->has_pc_info)
6942         {
6943           if (pdi->lowpc < *lowpc)
6944             *lowpc = pdi->lowpc;
6945           if (pdi->highpc > *highpc)
6946             *highpc = pdi->highpc;
6947           if (need_pc)
6948             {
6949               CORE_ADDR baseaddr;
6950               struct objfile *objfile = cu->objfile;
6951
6952               baseaddr = ANOFFSET (objfile->section_offsets,
6953                                    SECT_OFF_TEXT (objfile));
6954               addrmap_set_empty (objfile->psymtabs_addrmap,
6955                                  pdi->lowpc + baseaddr,
6956                                  pdi->highpc - 1 + baseaddr,
6957                                  cu->per_cu->v.psymtab);
6958             }
6959         }
6960
6961       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
6962         {
6963           if (!pdi->is_declaration)
6964             /* Ignore subprogram DIEs that do not have a name, they are
6965                illegal.  Do not emit a complaint at this point, we will
6966                do so when we convert this psymtab into a symtab.  */
6967             if (pdi->name)
6968               add_partial_symbol (pdi, cu);
6969         }
6970     }
6971
6972   if (! pdi->has_children)
6973     return;
6974
6975   if (cu->language == language_ada)
6976     {
6977       pdi = pdi->die_child;
6978       while (pdi != NULL)
6979         {
6980           fixup_partial_die (pdi, cu);
6981           if (pdi->tag == DW_TAG_subprogram
6982               || pdi->tag == DW_TAG_lexical_block)
6983             add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6984           pdi = pdi->die_sibling;
6985         }
6986     }
6987 }
6988
6989 /* Read a partial die corresponding to an enumeration type.  */
6990
6991 static void
6992 add_partial_enumeration (struct partial_die_info *enum_pdi,
6993                          struct dwarf2_cu *cu)
6994 {
6995   struct partial_die_info *pdi;
6996
6997   if (enum_pdi->name != NULL)
6998     add_partial_symbol (enum_pdi, cu);
6999
7000   pdi = enum_pdi->die_child;
7001   while (pdi)
7002     {
7003       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
7004         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
7005       else
7006         add_partial_symbol (pdi, cu);
7007       pdi = pdi->die_sibling;
7008     }
7009 }
7010
7011 /* Return the initial uleb128 in the die at INFO_PTR.  */
7012
7013 static unsigned int
7014 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
7015 {
7016   unsigned int bytes_read;
7017
7018   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7019 }
7020
7021 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7022    Return the corresponding abbrev, or NULL if the number is zero (indicating
7023    an empty DIE).  In either case *BYTES_READ will be set to the length of
7024    the initial number.  */
7025
7026 static struct abbrev_info *
7027 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
7028                  struct dwarf2_cu *cu)
7029 {
7030   bfd *abfd = cu->objfile->obfd;
7031   unsigned int abbrev_number;
7032   struct abbrev_info *abbrev;
7033
7034   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7035
7036   if (abbrev_number == 0)
7037     return NULL;
7038
7039   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
7040   if (!abbrev)
7041     {
7042       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
7043              abbrev_number, bfd_get_filename (abfd));
7044     }
7045
7046   return abbrev;
7047 }
7048
7049 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7050    Returns a pointer to the end of a series of DIEs, terminated by an empty
7051    DIE.  Any children of the skipped DIEs will also be skipped.  */
7052
7053 static const gdb_byte *
7054 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
7055 {
7056   struct dwarf2_cu *cu = reader->cu;
7057   struct abbrev_info *abbrev;
7058   unsigned int bytes_read;
7059
7060   while (1)
7061     {
7062       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7063       if (abbrev == NULL)
7064         return info_ptr + bytes_read;
7065       else
7066         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7067     }
7068 }
7069
7070 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7071    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7072    abbrev corresponding to that skipped uleb128 should be passed in
7073    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7074    children.  */
7075
7076 static const gdb_byte *
7077 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7078               struct abbrev_info *abbrev)
7079 {
7080   unsigned int bytes_read;
7081   struct attribute attr;
7082   bfd *abfd = reader->abfd;
7083   struct dwarf2_cu *cu = reader->cu;
7084   const gdb_byte *buffer = reader->buffer;
7085   const gdb_byte *buffer_end = reader->buffer_end;
7086   const gdb_byte *start_info_ptr = info_ptr;
7087   unsigned int form, i;
7088
7089   for (i = 0; i < abbrev->num_attrs; i++)
7090     {
7091       /* The only abbrev we care about is DW_AT_sibling.  */
7092       if (abbrev->attrs[i].name == DW_AT_sibling)
7093         {
7094           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7095           if (attr.form == DW_FORM_ref_addr)
7096             complaint (&symfile_complaints,
7097                        _("ignoring absolute DW_AT_sibling"));
7098           else
7099             {
7100               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7101               const gdb_byte *sibling_ptr = buffer + off;
7102
7103               if (sibling_ptr < info_ptr)
7104                 complaint (&symfile_complaints,
7105                            _("DW_AT_sibling points backwards"));
7106               else
7107                 return sibling_ptr;
7108             }
7109         }
7110
7111       /* If it isn't DW_AT_sibling, skip this attribute.  */
7112       form = abbrev->attrs[i].form;
7113     skip_attribute:
7114       switch (form)
7115         {
7116         case DW_FORM_ref_addr:
7117           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7118              and later it is offset sized.  */
7119           if (cu->header.version == 2)
7120             info_ptr += cu->header.addr_size;
7121           else
7122             info_ptr += cu->header.offset_size;
7123           break;
7124         case DW_FORM_GNU_ref_alt:
7125           info_ptr += cu->header.offset_size;
7126           break;
7127         case DW_FORM_addr:
7128           info_ptr += cu->header.addr_size;
7129           break;
7130         case DW_FORM_data1:
7131         case DW_FORM_ref1:
7132         case DW_FORM_flag:
7133           info_ptr += 1;
7134           break;
7135         case DW_FORM_flag_present:
7136           break;
7137         case DW_FORM_data2:
7138         case DW_FORM_ref2:
7139           info_ptr += 2;
7140           break;
7141         case DW_FORM_data4:
7142         case DW_FORM_ref4:
7143           info_ptr += 4;
7144           break;
7145         case DW_FORM_data8:
7146         case DW_FORM_ref8:
7147         case DW_FORM_ref_sig8:
7148           info_ptr += 8;
7149           break;
7150         case DW_FORM_string:
7151           read_direct_string (abfd, info_ptr, &bytes_read);
7152           info_ptr += bytes_read;
7153           break;
7154         case DW_FORM_sec_offset:
7155         case DW_FORM_strp:
7156         case DW_FORM_GNU_strp_alt:
7157           info_ptr += cu->header.offset_size;
7158           break;
7159         case DW_FORM_exprloc:
7160         case DW_FORM_block:
7161           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7162           info_ptr += bytes_read;
7163           break;
7164         case DW_FORM_block1:
7165           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7166           break;
7167         case DW_FORM_block2:
7168           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7169           break;
7170         case DW_FORM_block4:
7171           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7172           break;
7173         case DW_FORM_sdata:
7174         case DW_FORM_udata:
7175         case DW_FORM_ref_udata:
7176         case DW_FORM_GNU_addr_index:
7177         case DW_FORM_GNU_str_index:
7178           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7179           break;
7180         case DW_FORM_indirect:
7181           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7182           info_ptr += bytes_read;
7183           /* We need to continue parsing from here, so just go back to
7184              the top.  */
7185           goto skip_attribute;
7186
7187         default:
7188           error (_("Dwarf Error: Cannot handle %s "
7189                    "in DWARF reader [in module %s]"),
7190                  dwarf_form_name (form),
7191                  bfd_get_filename (abfd));
7192         }
7193     }
7194
7195   if (abbrev->has_children)
7196     return skip_children (reader, info_ptr);
7197   else
7198     return info_ptr;
7199 }
7200
7201 /* Locate ORIG_PDI's sibling.
7202    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7203
7204 static const gdb_byte *
7205 locate_pdi_sibling (const struct die_reader_specs *reader,
7206                     struct partial_die_info *orig_pdi,
7207                     const gdb_byte *info_ptr)
7208 {
7209   /* Do we know the sibling already?  */
7210
7211   if (orig_pdi->sibling)
7212     return orig_pdi->sibling;
7213
7214   /* Are there any children to deal with?  */
7215
7216   if (!orig_pdi->has_children)
7217     return info_ptr;
7218
7219   /* Skip the children the long way.  */
7220
7221   return skip_children (reader, info_ptr);
7222 }
7223
7224 /* Expand this partial symbol table into a full symbol table.  SELF is
7225    not NULL.  */
7226
7227 static void
7228 dwarf2_read_symtab (struct partial_symtab *self,
7229                     struct objfile *objfile)
7230 {
7231   if (self->readin)
7232     {
7233       warning (_("bug: psymtab for %s is already read in."),
7234                self->filename);
7235     }
7236   else
7237     {
7238       if (info_verbose)
7239         {
7240           printf_filtered (_("Reading in symbols for %s..."),
7241                            self->filename);
7242           gdb_flush (gdb_stdout);
7243         }
7244
7245       /* Restore our global data.  */
7246       dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
7247
7248       /* If this psymtab is constructed from a debug-only objfile, the
7249          has_section_at_zero flag will not necessarily be correct.  We
7250          can get the correct value for this flag by looking at the data
7251          associated with the (presumably stripped) associated objfile.  */
7252       if (objfile->separate_debug_objfile_backlink)
7253         {
7254           struct dwarf2_per_objfile *dpo_backlink
7255             = objfile_data (objfile->separate_debug_objfile_backlink,
7256                             dwarf2_objfile_data_key);
7257
7258           dwarf2_per_objfile->has_section_at_zero
7259             = dpo_backlink->has_section_at_zero;
7260         }
7261
7262       dwarf2_per_objfile->reading_partial_symbols = 0;
7263
7264       psymtab_to_symtab_1 (self);
7265
7266       /* Finish up the debug error message.  */
7267       if (info_verbose)
7268         printf_filtered (_("done.\n"));
7269     }
7270
7271   process_cu_includes ();
7272 }
7273 \f
7274 /* Reading in full CUs.  */
7275
7276 /* Add PER_CU to the queue.  */
7277
7278 static void
7279 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7280                  enum language pretend_language)
7281 {
7282   struct dwarf2_queue_item *item;
7283
7284   per_cu->queued = 1;
7285   item = xmalloc (sizeof (*item));
7286   item->per_cu = per_cu;
7287   item->pretend_language = pretend_language;
7288   item->next = NULL;
7289
7290   if (dwarf2_queue == NULL)
7291     dwarf2_queue = item;
7292   else
7293     dwarf2_queue_tail->next = item;
7294
7295   dwarf2_queue_tail = item;
7296 }
7297
7298 /* If PER_CU is not yet queued, add it to the queue.
7299    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7300    dependency.
7301    The result is non-zero if PER_CU was queued, otherwise the result is zero
7302    meaning either PER_CU is already queued or it is already loaded.
7303
7304    N.B. There is an invariant here that if a CU is queued then it is loaded.
7305    The caller is required to load PER_CU if we return non-zero.  */
7306
7307 static int
7308 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7309                        struct dwarf2_per_cu_data *per_cu,
7310                        enum language pretend_language)
7311 {
7312   /* We may arrive here during partial symbol reading, if we need full
7313      DIEs to process an unusual case (e.g. template arguments).  Do
7314      not queue PER_CU, just tell our caller to load its DIEs.  */
7315   if (dwarf2_per_objfile->reading_partial_symbols)
7316     {
7317       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7318         return 1;
7319       return 0;
7320     }
7321
7322   /* Mark the dependence relation so that we don't flush PER_CU
7323      too early.  */
7324   if (dependent_cu != NULL)
7325     dwarf2_add_dependence (dependent_cu, per_cu);
7326
7327   /* If it's already on the queue, we have nothing to do.  */
7328   if (per_cu->queued)
7329     return 0;
7330
7331   /* If the compilation unit is already loaded, just mark it as
7332      used.  */
7333   if (per_cu->cu != NULL)
7334     {
7335       per_cu->cu->last_used = 0;
7336       return 0;
7337     }
7338
7339   /* Add it to the queue.  */
7340   queue_comp_unit (per_cu, pretend_language);
7341
7342   return 1;
7343 }
7344
7345 /* Process the queue.  */
7346
7347 static void
7348 process_queue (void)
7349 {
7350   struct dwarf2_queue_item *item, *next_item;
7351
7352   if (dwarf2_read_debug)
7353     {
7354       fprintf_unfiltered (gdb_stdlog,
7355                           "Expanding one or more symtabs of objfile %s ...\n",
7356                           objfile_name (dwarf2_per_objfile->objfile));
7357     }
7358
7359   /* The queue starts out with one item, but following a DIE reference
7360      may load a new CU, adding it to the end of the queue.  */
7361   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7362     {
7363       if (dwarf2_per_objfile->using_index
7364           ? !item->per_cu->v.quick->symtab
7365           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7366         {
7367           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7368           unsigned int debug_print_threshold;
7369           char buf[100];
7370
7371           if (per_cu->is_debug_types)
7372             {
7373               struct signatured_type *sig_type =
7374                 (struct signatured_type *) per_cu;
7375
7376               sprintf (buf, "TU %s at offset 0x%x",
7377                        hex_string (sig_type->signature),
7378                        per_cu->offset.sect_off);
7379               /* There can be 100s of TUs.
7380                  Only print them in verbose mode.  */
7381               debug_print_threshold = 2;
7382             }
7383           else
7384             {
7385               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7386               debug_print_threshold = 1;
7387             }
7388
7389           if (dwarf2_read_debug >= debug_print_threshold)
7390             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7391
7392           if (per_cu->is_debug_types)
7393             process_full_type_unit (per_cu, item->pretend_language);
7394           else
7395             process_full_comp_unit (per_cu, item->pretend_language);
7396
7397           if (dwarf2_read_debug >= debug_print_threshold)
7398             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7399         }
7400
7401       item->per_cu->queued = 0;
7402       next_item = item->next;
7403       xfree (item);
7404     }
7405
7406   dwarf2_queue_tail = NULL;
7407
7408   if (dwarf2_read_debug)
7409     {
7410       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7411                           objfile_name (dwarf2_per_objfile->objfile));
7412     }
7413 }
7414
7415 /* Free all allocated queue entries.  This function only releases anything if
7416    an error was thrown; if the queue was processed then it would have been
7417    freed as we went along.  */
7418
7419 static void
7420 dwarf2_release_queue (void *dummy)
7421 {
7422   struct dwarf2_queue_item *item, *last;
7423
7424   item = dwarf2_queue;
7425   while (item)
7426     {
7427       /* Anything still marked queued is likely to be in an
7428          inconsistent state, so discard it.  */
7429       if (item->per_cu->queued)
7430         {
7431           if (item->per_cu->cu != NULL)
7432             free_one_cached_comp_unit (item->per_cu);
7433           item->per_cu->queued = 0;
7434         }
7435
7436       last = item;
7437       item = item->next;
7438       xfree (last);
7439     }
7440
7441   dwarf2_queue = dwarf2_queue_tail = NULL;
7442 }
7443
7444 /* Read in full symbols for PST, and anything it depends on.  */
7445
7446 static void
7447 psymtab_to_symtab_1 (struct partial_symtab *pst)
7448 {
7449   struct dwarf2_per_cu_data *per_cu;
7450   int i;
7451
7452   if (pst->readin)
7453     return;
7454
7455   for (i = 0; i < pst->number_of_dependencies; i++)
7456     if (!pst->dependencies[i]->readin
7457         && pst->dependencies[i]->user == NULL)
7458       {
7459         /* Inform about additional files that need to be read in.  */
7460         if (info_verbose)
7461           {
7462             /* FIXME: i18n: Need to make this a single string.  */
7463             fputs_filtered (" ", gdb_stdout);
7464             wrap_here ("");
7465             fputs_filtered ("and ", gdb_stdout);
7466             wrap_here ("");
7467             printf_filtered ("%s...", pst->dependencies[i]->filename);
7468             wrap_here ("");     /* Flush output.  */
7469             gdb_flush (gdb_stdout);
7470           }
7471         psymtab_to_symtab_1 (pst->dependencies[i]);
7472       }
7473
7474   per_cu = pst->read_symtab_private;
7475
7476   if (per_cu == NULL)
7477     {
7478       /* It's an include file, no symbols to read for it.
7479          Everything is in the parent symtab.  */
7480       pst->readin = 1;
7481       return;
7482     }
7483
7484   dw2_do_instantiate_symtab (per_cu);
7485 }
7486
7487 /* Trivial hash function for die_info: the hash value of a DIE
7488    is its offset in .debug_info for this objfile.  */
7489
7490 static hashval_t
7491 die_hash (const void *item)
7492 {
7493   const struct die_info *die = item;
7494
7495   return die->offset.sect_off;
7496 }
7497
7498 /* Trivial comparison function for die_info structures: two DIEs
7499    are equal if they have the same offset.  */
7500
7501 static int
7502 die_eq (const void *item_lhs, const void *item_rhs)
7503 {
7504   const struct die_info *die_lhs = item_lhs;
7505   const struct die_info *die_rhs = item_rhs;
7506
7507   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7508 }
7509
7510 /* die_reader_func for load_full_comp_unit.
7511    This is identical to read_signatured_type_reader,
7512    but is kept separate for now.  */
7513
7514 static void
7515 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7516                             const gdb_byte *info_ptr,
7517                             struct die_info *comp_unit_die,
7518                             int has_children,
7519                             void *data)
7520 {
7521   struct dwarf2_cu *cu = reader->cu;
7522   enum language *language_ptr = data;
7523
7524   gdb_assert (cu->die_hash == NULL);
7525   cu->die_hash =
7526     htab_create_alloc_ex (cu->header.length / 12,
7527                           die_hash,
7528                           die_eq,
7529                           NULL,
7530                           &cu->comp_unit_obstack,
7531                           hashtab_obstack_allocate,
7532                           dummy_obstack_deallocate);
7533
7534   if (has_children)
7535     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7536                                                   &info_ptr, comp_unit_die);
7537   cu->dies = comp_unit_die;
7538   /* comp_unit_die is not stored in die_hash, no need.  */
7539
7540   /* We try not to read any attributes in this function, because not
7541      all CUs needed for references have been loaded yet, and symbol
7542      table processing isn't initialized.  But we have to set the CU language,
7543      or we won't be able to build types correctly.
7544      Similarly, if we do not read the producer, we can not apply
7545      producer-specific interpretation.  */
7546   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7547 }
7548
7549 /* Load the DIEs associated with PER_CU into memory.  */
7550
7551 static void
7552 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7553                      enum language pretend_language)
7554 {
7555   gdb_assert (! this_cu->is_debug_types);
7556
7557   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7558                            load_full_comp_unit_reader, &pretend_language);
7559 }
7560
7561 /* Add a DIE to the delayed physname list.  */
7562
7563 static void
7564 add_to_method_list (struct type *type, int fnfield_index, int index,
7565                     const char *name, struct die_info *die,
7566                     struct dwarf2_cu *cu)
7567 {
7568   struct delayed_method_info mi;
7569   mi.type = type;
7570   mi.fnfield_index = fnfield_index;
7571   mi.index = index;
7572   mi.name = name;
7573   mi.die = die;
7574   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7575 }
7576
7577 /* A cleanup for freeing the delayed method list.  */
7578
7579 static void
7580 free_delayed_list (void *ptr)
7581 {
7582   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7583   if (cu->method_list != NULL)
7584     {
7585       VEC_free (delayed_method_info, cu->method_list);
7586       cu->method_list = NULL;
7587     }
7588 }
7589
7590 /* Compute the physnames of any methods on the CU's method list.
7591
7592    The computation of method physnames is delayed in order to avoid the
7593    (bad) condition that one of the method's formal parameters is of an as yet
7594    incomplete type.  */
7595
7596 static void
7597 compute_delayed_physnames (struct dwarf2_cu *cu)
7598 {
7599   int i;
7600   struct delayed_method_info *mi;
7601   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7602     {
7603       const char *physname;
7604       struct fn_fieldlist *fn_flp
7605         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7606       physname = dwarf2_physname (mi->name, mi->die, cu);
7607       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
7608     }
7609 }
7610
7611 /* Go objects should be embedded in a DW_TAG_module DIE,
7612    and it's not clear if/how imported objects will appear.
7613    To keep Go support simple until that's worked out,
7614    go back through what we've read and create something usable.
7615    We could do this while processing each DIE, and feels kinda cleaner,
7616    but that way is more invasive.
7617    This is to, for example, allow the user to type "p var" or "b main"
7618    without having to specify the package name, and allow lookups
7619    of module.object to work in contexts that use the expression
7620    parser.  */
7621
7622 static void
7623 fixup_go_packaging (struct dwarf2_cu *cu)
7624 {
7625   char *package_name = NULL;
7626   struct pending *list;
7627   int i;
7628
7629   for (list = global_symbols; list != NULL; list = list->next)
7630     {
7631       for (i = 0; i < list->nsyms; ++i)
7632         {
7633           struct symbol *sym = list->symbol[i];
7634
7635           if (SYMBOL_LANGUAGE (sym) == language_go
7636               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7637             {
7638               char *this_package_name = go_symbol_package_name (sym);
7639
7640               if (this_package_name == NULL)
7641                 continue;
7642               if (package_name == NULL)
7643                 package_name = this_package_name;
7644               else
7645                 {
7646                   if (strcmp (package_name, this_package_name) != 0)
7647                     complaint (&symfile_complaints,
7648                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7649                                (SYMBOL_SYMTAB (sym)
7650                           ? symtab_to_filename_for_display (SYMBOL_SYMTAB (sym))
7651                                 : objfile_name (cu->objfile)),
7652                                this_package_name, package_name);
7653                   xfree (this_package_name);
7654                 }
7655             }
7656         }
7657     }
7658
7659   if (package_name != NULL)
7660     {
7661       struct objfile *objfile = cu->objfile;
7662       const char *saved_package_name = obstack_copy0 (&objfile->objfile_obstack,
7663                                                       package_name,
7664                                                       strlen (package_name));
7665       struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
7666                                      saved_package_name, objfile);
7667       struct symbol *sym;
7668
7669       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7670
7671       sym = allocate_symbol (objfile);
7672       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7673       SYMBOL_SET_NAMES (sym, saved_package_name,
7674                         strlen (saved_package_name), 0, objfile);
7675       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7676          e.g., "main" finds the "main" module and not C's main().  */
7677       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7678       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7679       SYMBOL_TYPE (sym) = type;
7680
7681       add_symbol_to_list (sym, &global_symbols);
7682
7683       xfree (package_name);
7684     }
7685 }
7686
7687 /* Return the symtab for PER_CU.  This works properly regardless of
7688    whether we're using the index or psymtabs.  */
7689
7690 static struct symtab *
7691 get_symtab (struct dwarf2_per_cu_data *per_cu)
7692 {
7693   return (dwarf2_per_objfile->using_index
7694           ? per_cu->v.quick->symtab
7695           : per_cu->v.psymtab->symtab);
7696 }
7697
7698 /* A helper function for computing the list of all symbol tables
7699    included by PER_CU.  */
7700
7701 static void
7702 recursively_compute_inclusions (VEC (symtab_ptr) **result,
7703                                 htab_t all_children, htab_t all_type_symtabs,
7704                                 struct dwarf2_per_cu_data *per_cu,
7705                                 struct symtab *immediate_parent)
7706 {
7707   void **slot;
7708   int ix;
7709   struct symtab *symtab;
7710   struct dwarf2_per_cu_data *iter;
7711
7712   slot = htab_find_slot (all_children, per_cu, INSERT);
7713   if (*slot != NULL)
7714     {
7715       /* This inclusion and its children have been processed.  */
7716       return;
7717     }
7718
7719   *slot = per_cu;
7720   /* Only add a CU if it has a symbol table.  */
7721   symtab = get_symtab (per_cu);
7722   if (symtab != NULL)
7723     {
7724       /* If this is a type unit only add its symbol table if we haven't
7725          seen it yet (type unit per_cu's can share symtabs).  */
7726       if (per_cu->is_debug_types)
7727         {
7728           slot = htab_find_slot (all_type_symtabs, symtab, INSERT);
7729           if (*slot == NULL)
7730             {
7731               *slot = symtab;
7732               VEC_safe_push (symtab_ptr, *result, symtab);
7733               if (symtab->user == NULL)
7734                 symtab->user = immediate_parent;
7735             }
7736         }
7737       else
7738         {
7739           VEC_safe_push (symtab_ptr, *result, symtab);
7740           if (symtab->user == NULL)
7741             symtab->user = immediate_parent;
7742         }
7743     }
7744
7745   for (ix = 0;
7746        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7747        ++ix)
7748     {
7749       recursively_compute_inclusions (result, all_children,
7750                                       all_type_symtabs, iter, symtab);
7751     }
7752 }
7753
7754 /* Compute the symtab 'includes' fields for the symtab related to
7755    PER_CU.  */
7756
7757 static void
7758 compute_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7759 {
7760   gdb_assert (! per_cu->is_debug_types);
7761
7762   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7763     {
7764       int ix, len;
7765       struct dwarf2_per_cu_data *per_cu_iter;
7766       struct symtab *symtab_iter;
7767       VEC (symtab_ptr) *result_symtabs = NULL;
7768       htab_t all_children, all_type_symtabs;
7769       struct symtab *symtab = get_symtab (per_cu);
7770
7771       /* If we don't have a symtab, we can just skip this case.  */
7772       if (symtab == NULL)
7773         return;
7774
7775       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7776                                         NULL, xcalloc, xfree);
7777       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7778                                             NULL, xcalloc, xfree);
7779
7780       for (ix = 0;
7781            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7782                         ix, per_cu_iter);
7783            ++ix)
7784         {
7785           recursively_compute_inclusions (&result_symtabs, all_children,
7786                                           all_type_symtabs, per_cu_iter,
7787                                           symtab);
7788         }
7789
7790       /* Now we have a transitive closure of all the included symtabs.  */
7791       len = VEC_length (symtab_ptr, result_symtabs);
7792       symtab->includes
7793         = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7794                          (len + 1) * sizeof (struct symtab *));
7795       for (ix = 0;
7796            VEC_iterate (symtab_ptr, result_symtabs, ix, symtab_iter);
7797            ++ix)
7798         symtab->includes[ix] = symtab_iter;
7799       symtab->includes[len] = NULL;
7800
7801       VEC_free (symtab_ptr, result_symtabs);
7802       htab_delete (all_children);
7803       htab_delete (all_type_symtabs);
7804     }
7805 }
7806
7807 /* Compute the 'includes' field for the symtabs of all the CUs we just
7808    read.  */
7809
7810 static void
7811 process_cu_includes (void)
7812 {
7813   int ix;
7814   struct dwarf2_per_cu_data *iter;
7815
7816   for (ix = 0;
7817        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7818                     ix, iter);
7819        ++ix)
7820     {
7821       if (! iter->is_debug_types)
7822         compute_symtab_includes (iter);
7823     }
7824
7825   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
7826 }
7827
7828 /* Generate full symbol information for PER_CU, whose DIEs have
7829    already been loaded into memory.  */
7830
7831 static void
7832 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
7833                         enum language pretend_language)
7834 {
7835   struct dwarf2_cu *cu = per_cu->cu;
7836   struct objfile *objfile = per_cu->objfile;
7837   CORE_ADDR lowpc, highpc;
7838   struct symtab *symtab;
7839   struct cleanup *back_to, *delayed_list_cleanup;
7840   CORE_ADDR baseaddr;
7841   struct block *static_block;
7842
7843   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7844
7845   buildsym_init ();
7846   back_to = make_cleanup (really_free_pendings, NULL);
7847   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7848
7849   cu->list_in_scope = &file_symbols;
7850
7851   cu->language = pretend_language;
7852   cu->language_defn = language_def (cu->language);
7853
7854   /* Do line number decoding in read_file_scope () */
7855   process_die (cu->dies, cu);
7856
7857   /* For now fudge the Go package.  */
7858   if (cu->language == language_go)
7859     fixup_go_packaging (cu);
7860
7861   /* Now that we have processed all the DIEs in the CU, all the types 
7862      should be complete, and it should now be safe to compute all of the
7863      physnames.  */
7864   compute_delayed_physnames (cu);
7865   do_cleanups (delayed_list_cleanup);
7866
7867   /* Some compilers don't define a DW_AT_high_pc attribute for the
7868      compilation unit.  If the DW_AT_high_pc is missing, synthesize
7869      it, by scanning the DIE's below the compilation unit.  */
7870   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
7871
7872   static_block
7873     = end_symtab_get_static_block (highpc + baseaddr, objfile, 0, 1);
7874
7875   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
7876      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
7877      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
7878      addrmap to help ensure it has an accurate map of pc values belonging to
7879      this comp unit.  */
7880   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
7881
7882   symtab = end_symtab_from_static_block (static_block, objfile,
7883                                          SECT_OFF_TEXT (objfile), 0);
7884
7885   if (symtab != NULL)
7886     {
7887       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
7888
7889       /* Set symtab language to language from DW_AT_language.  If the
7890          compilation is from a C file generated by language preprocessors, do
7891          not set the language if it was already deduced by start_subfile.  */
7892       if (!(cu->language == language_c && symtab->language != language_c))
7893         symtab->language = cu->language;
7894
7895       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
7896          produce DW_AT_location with location lists but it can be possibly
7897          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
7898          there were bugs in prologue debug info, fixed later in GCC-4.5
7899          by "unwind info for epilogues" patch (which is not directly related).
7900
7901          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
7902          needed, it would be wrong due to missing DW_AT_producer there.
7903
7904          Still one can confuse GDB by using non-standard GCC compilation
7905          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
7906          */ 
7907       if (cu->has_loclist && gcc_4_minor >= 5)
7908         symtab->locations_valid = 1;
7909
7910       if (gcc_4_minor >= 5)
7911         symtab->epilogue_unwind_valid = 1;
7912
7913       symtab->call_site_htab = cu->call_site_htab;
7914     }
7915
7916   if (dwarf2_per_objfile->using_index)
7917     per_cu->v.quick->symtab = symtab;
7918   else
7919     {
7920       struct partial_symtab *pst = per_cu->v.psymtab;
7921       pst->symtab = symtab;
7922       pst->readin = 1;
7923     }
7924
7925   /* Push it for inclusion processing later.  */
7926   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
7927
7928   do_cleanups (back_to);
7929 }
7930
7931 /* Generate full symbol information for type unit PER_CU, whose DIEs have
7932    already been loaded into memory.  */
7933
7934 static void
7935 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
7936                         enum language pretend_language)
7937 {
7938   struct dwarf2_cu *cu = per_cu->cu;
7939   struct objfile *objfile = per_cu->objfile;
7940   struct symtab *symtab;
7941   struct cleanup *back_to, *delayed_list_cleanup;
7942   struct signatured_type *sig_type;
7943
7944   gdb_assert (per_cu->is_debug_types);
7945   sig_type = (struct signatured_type *) per_cu;
7946
7947   buildsym_init ();
7948   back_to = make_cleanup (really_free_pendings, NULL);
7949   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7950
7951   cu->list_in_scope = &file_symbols;
7952
7953   cu->language = pretend_language;
7954   cu->language_defn = language_def (cu->language);
7955
7956   /* The symbol tables are set up in read_type_unit_scope.  */
7957   process_die (cu->dies, cu);
7958
7959   /* For now fudge the Go package.  */
7960   if (cu->language == language_go)
7961     fixup_go_packaging (cu);
7962
7963   /* Now that we have processed all the DIEs in the CU, all the types 
7964      should be complete, and it should now be safe to compute all of the
7965      physnames.  */
7966   compute_delayed_physnames (cu);
7967   do_cleanups (delayed_list_cleanup);
7968
7969   /* TUs share symbol tables.
7970      If this is the first TU to use this symtab, complete the construction
7971      of it with end_expandable_symtab.  Otherwise, complete the addition of
7972      this TU's symbols to the existing symtab.  */
7973   if (sig_type->type_unit_group->primary_symtab == NULL)
7974     {
7975       symtab = end_expandable_symtab (0, objfile, SECT_OFF_TEXT (objfile));
7976       sig_type->type_unit_group->primary_symtab = symtab;
7977
7978       if (symtab != NULL)
7979         {
7980           /* Set symtab language to language from DW_AT_language.  If the
7981              compilation is from a C file generated by language preprocessors,
7982              do not set the language if it was already deduced by
7983              start_subfile.  */
7984           if (!(cu->language == language_c && symtab->language != language_c))
7985             symtab->language = cu->language;
7986         }
7987     }
7988   else
7989     {
7990       augment_type_symtab (objfile,
7991                            sig_type->type_unit_group->primary_symtab);
7992       symtab = sig_type->type_unit_group->primary_symtab;
7993     }
7994
7995   if (dwarf2_per_objfile->using_index)
7996     per_cu->v.quick->symtab = symtab;
7997   else
7998     {
7999       struct partial_symtab *pst = per_cu->v.psymtab;
8000       pst->symtab = symtab;
8001       pst->readin = 1;
8002     }
8003
8004   do_cleanups (back_to);
8005 }
8006
8007 /* Process an imported unit DIE.  */
8008
8009 static void
8010 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8011 {
8012   struct attribute *attr;
8013
8014   /* For now we don't handle imported units in type units.  */
8015   if (cu->per_cu->is_debug_types)
8016     {
8017       error (_("Dwarf Error: DW_TAG_imported_unit is not"
8018                " supported in type units [in module %s]"),
8019              objfile_name (cu->objfile));
8020     }
8021
8022   attr = dwarf2_attr (die, DW_AT_import, cu);
8023   if (attr != NULL)
8024     {
8025       struct dwarf2_per_cu_data *per_cu;
8026       struct symtab *imported_symtab;
8027       sect_offset offset;
8028       int is_dwz;
8029
8030       offset = dwarf2_get_ref_die_offset (attr);
8031       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8032       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
8033
8034       /* If necessary, add it to the queue and load its DIEs.  */
8035       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8036         load_full_comp_unit (per_cu, cu->language);
8037
8038       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8039                      per_cu);
8040     }
8041 }
8042
8043 /* Reset the in_process bit of a die.  */
8044
8045 static void
8046 reset_die_in_process (void *arg)
8047 {
8048   struct die_info *die = arg;
8049
8050   die->in_process = 0;
8051 }
8052
8053 /* Process a die and its children.  */
8054
8055 static void
8056 process_die (struct die_info *die, struct dwarf2_cu *cu)
8057 {
8058   struct cleanup *in_process;
8059
8060   /* We should only be processing those not already in process.  */
8061   gdb_assert (!die->in_process);
8062
8063   die->in_process = 1;
8064   in_process = make_cleanup (reset_die_in_process,die);
8065
8066   switch (die->tag)
8067     {
8068     case DW_TAG_padding:
8069       break;
8070     case DW_TAG_compile_unit:
8071     case DW_TAG_partial_unit:
8072       read_file_scope (die, cu);
8073       break;
8074     case DW_TAG_type_unit:
8075       read_type_unit_scope (die, cu);
8076       break;
8077     case DW_TAG_subprogram:
8078     case DW_TAG_inlined_subroutine:
8079       read_func_scope (die, cu);
8080       break;
8081     case DW_TAG_lexical_block:
8082     case DW_TAG_try_block:
8083     case DW_TAG_catch_block:
8084       read_lexical_block_scope (die, cu);
8085       break;
8086     case DW_TAG_GNU_call_site:
8087       read_call_site_scope (die, cu);
8088       break;
8089     case DW_TAG_class_type:
8090     case DW_TAG_interface_type:
8091     case DW_TAG_structure_type:
8092     case DW_TAG_union_type:
8093       process_structure_scope (die, cu);
8094       break;
8095     case DW_TAG_enumeration_type:
8096       process_enumeration_scope (die, cu);
8097       break;
8098
8099     /* These dies have a type, but processing them does not create
8100        a symbol or recurse to process the children.  Therefore we can
8101        read them on-demand through read_type_die.  */
8102     case DW_TAG_subroutine_type:
8103     case DW_TAG_set_type:
8104     case DW_TAG_array_type:
8105     case DW_TAG_pointer_type:
8106     case DW_TAG_ptr_to_member_type:
8107     case DW_TAG_reference_type:
8108     case DW_TAG_string_type:
8109       break;
8110
8111     case DW_TAG_base_type:
8112     case DW_TAG_subrange_type:
8113     case DW_TAG_typedef:
8114       /* Add a typedef symbol for the type definition, if it has a
8115          DW_AT_name.  */
8116       new_symbol (die, read_type_die (die, cu), cu);
8117       break;
8118     case DW_TAG_common_block:
8119       read_common_block (die, cu);
8120       break;
8121     case DW_TAG_common_inclusion:
8122       break;
8123     case DW_TAG_namespace:
8124       cu->processing_has_namespace_info = 1;
8125       read_namespace (die, cu);
8126       break;
8127     case DW_TAG_module:
8128       cu->processing_has_namespace_info = 1;
8129       read_module (die, cu);
8130       break;
8131     case DW_TAG_imported_declaration:
8132       cu->processing_has_namespace_info = 1;
8133       if (read_namespace_alias (die, cu))
8134         break;
8135       /* The declaration is not a global namespace alias: fall through.  */
8136     case DW_TAG_imported_module:
8137       cu->processing_has_namespace_info = 1;
8138       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8139                                  || cu->language != language_fortran))
8140         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8141                    dwarf_tag_name (die->tag));
8142       read_import_statement (die, cu);
8143       break;
8144
8145     case DW_TAG_imported_unit:
8146       process_imported_unit_die (die, cu);
8147       break;
8148
8149     default:
8150       new_symbol (die, NULL, cu);
8151       break;
8152     }
8153
8154   do_cleanups (in_process);
8155 }
8156 \f
8157 /* DWARF name computation.  */
8158
8159 /* A helper function for dwarf2_compute_name which determines whether DIE
8160    needs to have the name of the scope prepended to the name listed in the
8161    die.  */
8162
8163 static int
8164 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8165 {
8166   struct attribute *attr;
8167
8168   switch (die->tag)
8169     {
8170     case DW_TAG_namespace:
8171     case DW_TAG_typedef:
8172     case DW_TAG_class_type:
8173     case DW_TAG_interface_type:
8174     case DW_TAG_structure_type:
8175     case DW_TAG_union_type:
8176     case DW_TAG_enumeration_type:
8177     case DW_TAG_enumerator:
8178     case DW_TAG_subprogram:
8179     case DW_TAG_member:
8180     case DW_TAG_imported_declaration:
8181       return 1;
8182
8183     case DW_TAG_variable:
8184     case DW_TAG_constant:
8185       /* We only need to prefix "globally" visible variables.  These include
8186          any variable marked with DW_AT_external or any variable that
8187          lives in a namespace.  [Variables in anonymous namespaces
8188          require prefixing, but they are not DW_AT_external.]  */
8189
8190       if (dwarf2_attr (die, DW_AT_specification, cu))
8191         {
8192           struct dwarf2_cu *spec_cu = cu;
8193
8194           return die_needs_namespace (die_specification (die, &spec_cu),
8195                                       spec_cu);
8196         }
8197
8198       attr = dwarf2_attr (die, DW_AT_external, cu);
8199       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8200           && die->parent->tag != DW_TAG_module)
8201         return 0;
8202       /* A variable in a lexical block of some kind does not need a
8203          namespace, even though in C++ such variables may be external
8204          and have a mangled name.  */
8205       if (die->parent->tag ==  DW_TAG_lexical_block
8206           || die->parent->tag ==  DW_TAG_try_block
8207           || die->parent->tag ==  DW_TAG_catch_block
8208           || die->parent->tag == DW_TAG_subprogram)
8209         return 0;
8210       return 1;
8211
8212     default:
8213       return 0;
8214     }
8215 }
8216
8217 /* Retrieve the last character from a mem_file.  */
8218
8219 static void
8220 do_ui_file_peek_last (void *object, const char *buffer, long length)
8221 {
8222   char *last_char_p = (char *) object;
8223
8224   if (length > 0)
8225     *last_char_p = buffer[length - 1];
8226 }
8227
8228 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8229    compute the physname for the object, which include a method's:
8230    - formal parameters (C++/Java),
8231    - receiver type (Go),
8232    - return type (Java).
8233
8234    The term "physname" is a bit confusing.
8235    For C++, for example, it is the demangled name.
8236    For Go, for example, it's the mangled name.
8237
8238    For Ada, return the DIE's linkage name rather than the fully qualified
8239    name.  PHYSNAME is ignored..
8240
8241    The result is allocated on the objfile_obstack and canonicalized.  */
8242
8243 static const char *
8244 dwarf2_compute_name (const char *name,
8245                      struct die_info *die, struct dwarf2_cu *cu,
8246                      int physname)
8247 {
8248   struct objfile *objfile = cu->objfile;
8249
8250   if (name == NULL)
8251     name = dwarf2_name (die, cu);
8252
8253   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8254      compute it by typename_concat inside GDB.  */
8255   if (cu->language == language_ada
8256       || (cu->language == language_fortran && physname))
8257     {
8258       /* For Ada unit, we prefer the linkage name over the name, as
8259          the former contains the exported name, which the user expects
8260          to be able to reference.  Ideally, we want the user to be able
8261          to reference this entity using either natural or linkage name,
8262          but we haven't started looking at this enhancement yet.  */
8263       struct attribute *attr;
8264
8265       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8266       if (attr == NULL)
8267         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8268       if (attr && DW_STRING (attr))
8269         return DW_STRING (attr);
8270     }
8271
8272   /* These are the only languages we know how to qualify names in.  */
8273   if (name != NULL
8274       && (cu->language == language_cplus || cu->language == language_java
8275           || cu->language == language_fortran))
8276     {
8277       if (die_needs_namespace (die, cu))
8278         {
8279           long length;
8280           const char *prefix;
8281           struct ui_file *buf;
8282
8283           prefix = determine_prefix (die, cu);
8284           buf = mem_fileopen ();
8285           if (*prefix != '\0')
8286             {
8287               char *prefixed_name = typename_concat (NULL, prefix, name,
8288                                                      physname, cu);
8289
8290               fputs_unfiltered (prefixed_name, buf);
8291               xfree (prefixed_name);
8292             }
8293           else
8294             fputs_unfiltered (name, buf);
8295
8296           /* Template parameters may be specified in the DIE's DW_AT_name, or
8297              as children with DW_TAG_template_type_param or
8298              DW_TAG_value_type_param.  If the latter, add them to the name
8299              here.  If the name already has template parameters, then
8300              skip this step; some versions of GCC emit both, and
8301              it is more efficient to use the pre-computed name.
8302
8303              Something to keep in mind about this process: it is very
8304              unlikely, or in some cases downright impossible, to produce
8305              something that will match the mangled name of a function.
8306              If the definition of the function has the same debug info,
8307              we should be able to match up with it anyway.  But fallbacks
8308              using the minimal symbol, for instance to find a method
8309              implemented in a stripped copy of libstdc++, will not work.
8310              If we do not have debug info for the definition, we will have to
8311              match them up some other way.
8312
8313              When we do name matching there is a related problem with function
8314              templates; two instantiated function templates are allowed to
8315              differ only by their return types, which we do not add here.  */
8316
8317           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8318             {
8319               struct attribute *attr;
8320               struct die_info *child;
8321               int first = 1;
8322
8323               die->building_fullname = 1;
8324
8325               for (child = die->child; child != NULL; child = child->sibling)
8326                 {
8327                   struct type *type;
8328                   LONGEST value;
8329                   const gdb_byte *bytes;
8330                   struct dwarf2_locexpr_baton *baton;
8331                   struct value *v;
8332
8333                   if (child->tag != DW_TAG_template_type_param
8334                       && child->tag != DW_TAG_template_value_param)
8335                     continue;
8336
8337                   if (first)
8338                     {
8339                       fputs_unfiltered ("<", buf);
8340                       first = 0;
8341                     }
8342                   else
8343                     fputs_unfiltered (", ", buf);
8344
8345                   attr = dwarf2_attr (child, DW_AT_type, cu);
8346                   if (attr == NULL)
8347                     {
8348                       complaint (&symfile_complaints,
8349                                  _("template parameter missing DW_AT_type"));
8350                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
8351                       continue;
8352                     }
8353                   type = die_type (child, cu);
8354
8355                   if (child->tag == DW_TAG_template_type_param)
8356                     {
8357                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
8358                       continue;
8359                     }
8360
8361                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8362                   if (attr == NULL)
8363                     {
8364                       complaint (&symfile_complaints,
8365                                  _("template parameter missing "
8366                                    "DW_AT_const_value"));
8367                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
8368                       continue;
8369                     }
8370
8371                   dwarf2_const_value_attr (attr, type, name,
8372                                            &cu->comp_unit_obstack, cu,
8373                                            &value, &bytes, &baton);
8374
8375                   if (TYPE_NOSIGN (type))
8376                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8377                        changed, this can use value_print instead.  */
8378                     c_printchar (value, type, buf);
8379                   else
8380                     {
8381                       struct value_print_options opts;
8382
8383                       if (baton != NULL)
8384                         v = dwarf2_evaluate_loc_desc (type, NULL,
8385                                                       baton->data,
8386                                                       baton->size,
8387                                                       baton->per_cu);
8388                       else if (bytes != NULL)
8389                         {
8390                           v = allocate_value (type);
8391                           memcpy (value_contents_writeable (v), bytes,
8392                                   TYPE_LENGTH (type));
8393                         }
8394                       else
8395                         v = value_from_longest (type, value);
8396
8397                       /* Specify decimal so that we do not depend on
8398                          the radix.  */
8399                       get_formatted_print_options (&opts, 'd');
8400                       opts.raw = 1;
8401                       value_print (v, buf, &opts);
8402                       release_value (v);
8403                       value_free (v);
8404                     }
8405                 }
8406
8407               die->building_fullname = 0;
8408
8409               if (!first)
8410                 {
8411                   /* Close the argument list, with a space if necessary
8412                      (nested templates).  */
8413                   char last_char = '\0';
8414                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8415                   if (last_char == '>')
8416                     fputs_unfiltered (" >", buf);
8417                   else
8418                     fputs_unfiltered (">", buf);
8419                 }
8420             }
8421
8422           /* For Java and C++ methods, append formal parameter type
8423              information, if PHYSNAME.  */
8424
8425           if (physname && die->tag == DW_TAG_subprogram
8426               && (cu->language == language_cplus
8427                   || cu->language == language_java))
8428             {
8429               struct type *type = read_type_die (die, cu);
8430
8431               c_type_print_args (type, buf, 1, cu->language,
8432                                  &type_print_raw_options);
8433
8434               if (cu->language == language_java)
8435                 {
8436                   /* For java, we must append the return type to method
8437                      names.  */
8438                   if (die->tag == DW_TAG_subprogram)
8439                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
8440                                      0, 0, &type_print_raw_options);
8441                 }
8442               else if (cu->language == language_cplus)
8443                 {
8444                   /* Assume that an artificial first parameter is
8445                      "this", but do not crash if it is not.  RealView
8446                      marks unnamed (and thus unused) parameters as
8447                      artificial; there is no way to differentiate
8448                      the two cases.  */
8449                   if (TYPE_NFIELDS (type) > 0
8450                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8451                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8452                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8453                                                                         0))))
8454                     fputs_unfiltered (" const", buf);
8455                 }
8456             }
8457
8458           name = ui_file_obsavestring (buf, &objfile->objfile_obstack,
8459                                        &length);
8460           ui_file_delete (buf);
8461
8462           if (cu->language == language_cplus)
8463             {
8464               const char *cname
8465                 = dwarf2_canonicalize_name (name, cu,
8466                                             &objfile->objfile_obstack);
8467
8468               if (cname != NULL)
8469                 name = cname;
8470             }
8471         }
8472     }
8473
8474   return name;
8475 }
8476
8477 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8478    If scope qualifiers are appropriate they will be added.  The result
8479    will be allocated on the objfile_obstack, or NULL if the DIE does
8480    not have a name.  NAME may either be from a previous call to
8481    dwarf2_name or NULL.
8482
8483    The output string will be canonicalized (if C++/Java).  */
8484
8485 static const char *
8486 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8487 {
8488   return dwarf2_compute_name (name, die, cu, 0);
8489 }
8490
8491 /* Construct a physname for the given DIE in CU.  NAME may either be
8492    from a previous call to dwarf2_name or NULL.  The result will be
8493    allocated on the objfile_objstack or NULL if the DIE does not have a
8494    name.
8495
8496    The output string will be canonicalized (if C++/Java).  */
8497
8498 static const char *
8499 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8500 {
8501   struct objfile *objfile = cu->objfile;
8502   struct attribute *attr;
8503   const char *retval, *mangled = NULL, *canon = NULL;
8504   struct cleanup *back_to;
8505   int need_copy = 1;
8506
8507   /* In this case dwarf2_compute_name is just a shortcut not building anything
8508      on its own.  */
8509   if (!die_needs_namespace (die, cu))
8510     return dwarf2_compute_name (name, die, cu, 1);
8511
8512   back_to = make_cleanup (null_cleanup, NULL);
8513
8514   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8515   if (!attr)
8516     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8517
8518   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8519      has computed.  */
8520   if (attr && DW_STRING (attr))
8521     {
8522       char *demangled;
8523
8524       mangled = DW_STRING (attr);
8525
8526       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8527          type.  It is easier for GDB users to search for such functions as
8528          `name(params)' than `long name(params)'.  In such case the minimal
8529          symbol names do not match the full symbol names but for template
8530          functions there is never a need to look up their definition from their
8531          declaration so the only disadvantage remains the minimal symbol
8532          variant `long name(params)' does not have the proper inferior type.
8533          */
8534
8535       if (cu->language == language_go)
8536         {
8537           /* This is a lie, but we already lie to the caller new_symbol_full.
8538              new_symbol_full assumes we return the mangled name.
8539              This just undoes that lie until things are cleaned up.  */
8540           demangled = NULL;
8541         }
8542       else
8543         {
8544           demangled = gdb_demangle (mangled,
8545                                     (DMGL_PARAMS | DMGL_ANSI
8546                                      | (cu->language == language_java
8547                                         ? DMGL_JAVA | DMGL_RET_POSTFIX
8548                                         : DMGL_RET_DROP)));
8549         }
8550       if (demangled)
8551         {
8552           make_cleanup (xfree, demangled);
8553           canon = demangled;
8554         }
8555       else
8556         {
8557           canon = mangled;
8558           need_copy = 0;
8559         }
8560     }
8561
8562   if (canon == NULL || check_physname)
8563     {
8564       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8565
8566       if (canon != NULL && strcmp (physname, canon) != 0)
8567         {
8568           /* It may not mean a bug in GDB.  The compiler could also
8569              compute DW_AT_linkage_name incorrectly.  But in such case
8570              GDB would need to be bug-to-bug compatible.  */
8571
8572           complaint (&symfile_complaints,
8573                      _("Computed physname <%s> does not match demangled <%s> "
8574                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8575                      physname, canon, mangled, die->offset.sect_off,
8576                      objfile_name (objfile));
8577
8578           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8579              is available here - over computed PHYSNAME.  It is safer
8580              against both buggy GDB and buggy compilers.  */
8581
8582           retval = canon;
8583         }
8584       else
8585         {
8586           retval = physname;
8587           need_copy = 0;
8588         }
8589     }
8590   else
8591     retval = canon;
8592
8593   if (need_copy)
8594     retval = obstack_copy0 (&objfile->objfile_obstack, retval, strlen (retval));
8595
8596   do_cleanups (back_to);
8597   return retval;
8598 }
8599
8600 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8601    a new symbol for it.
8602
8603    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8604
8605 static int
8606 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8607 {
8608   struct attribute *attr;
8609
8610   /* If the die does not have a name, this is not a namespace
8611      alias.  */
8612   attr = dwarf2_attr (die, DW_AT_name, cu);
8613   if (attr != NULL)
8614     {
8615       int num;
8616       struct die_info *d = die;
8617       struct dwarf2_cu *imported_cu = cu;
8618
8619       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8620          keep inspecting DIEs until we hit the underlying import.  */
8621 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8622       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8623         {
8624           attr = dwarf2_attr (d, DW_AT_import, cu);
8625           if (attr == NULL)
8626             break;
8627
8628           d = follow_die_ref (d, attr, &imported_cu);
8629           if (d->tag != DW_TAG_imported_declaration)
8630             break;
8631         }
8632
8633       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8634         {
8635           complaint (&symfile_complaints,
8636                      _("DIE at 0x%x has too many recursively imported "
8637                        "declarations"), d->offset.sect_off);
8638           return 0;
8639         }
8640
8641       if (attr != NULL)
8642         {
8643           struct type *type;
8644           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8645
8646           type = get_die_type_at_offset (offset, cu->per_cu);
8647           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8648             {
8649               /* This declaration is a global namespace alias.  Add
8650                  a symbol for it whose type is the aliased namespace.  */
8651               new_symbol (die, type, cu);
8652               return 1;
8653             }
8654         }
8655     }
8656
8657   return 0;
8658 }
8659
8660 /* Read the import statement specified by the given die and record it.  */
8661
8662 static void
8663 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8664 {
8665   struct objfile *objfile = cu->objfile;
8666   struct attribute *import_attr;
8667   struct die_info *imported_die, *child_die;
8668   struct dwarf2_cu *imported_cu;
8669   const char *imported_name;
8670   const char *imported_name_prefix;
8671   const char *canonical_name;
8672   const char *import_alias;
8673   const char *imported_declaration = NULL;
8674   const char *import_prefix;
8675   VEC (const_char_ptr) *excludes = NULL;
8676   struct cleanup *cleanups;
8677
8678   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8679   if (import_attr == NULL)
8680     {
8681       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8682                  dwarf_tag_name (die->tag));
8683       return;
8684     }
8685
8686   imported_cu = cu;
8687   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8688   imported_name = dwarf2_name (imported_die, imported_cu);
8689   if (imported_name == NULL)
8690     {
8691       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8692
8693         The import in the following code:
8694         namespace A
8695           {
8696             typedef int B;
8697           }
8698
8699         int main ()
8700           {
8701             using A::B;
8702             B b;
8703             return b;
8704           }
8705
8706         ...
8707          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8708             <52>   DW_AT_decl_file   : 1
8709             <53>   DW_AT_decl_line   : 6
8710             <54>   DW_AT_import      : <0x75>
8711          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8712             <59>   DW_AT_name        : B
8713             <5b>   DW_AT_decl_file   : 1
8714             <5c>   DW_AT_decl_line   : 2
8715             <5d>   DW_AT_type        : <0x6e>
8716         ...
8717          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8718             <76>   DW_AT_byte_size   : 4
8719             <77>   DW_AT_encoding    : 5        (signed)
8720
8721         imports the wrong die ( 0x75 instead of 0x58 ).
8722         This case will be ignored until the gcc bug is fixed.  */
8723       return;
8724     }
8725
8726   /* Figure out the local name after import.  */
8727   import_alias = dwarf2_name (die, cu);
8728
8729   /* Figure out where the statement is being imported to.  */
8730   import_prefix = determine_prefix (die, cu);
8731
8732   /* Figure out what the scope of the imported die is and prepend it
8733      to the name of the imported die.  */
8734   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8735
8736   if (imported_die->tag != DW_TAG_namespace
8737       && imported_die->tag != DW_TAG_module)
8738     {
8739       imported_declaration = imported_name;
8740       canonical_name = imported_name_prefix;
8741     }
8742   else if (strlen (imported_name_prefix) > 0)
8743     canonical_name = obconcat (&objfile->objfile_obstack,
8744                                imported_name_prefix, "::", imported_name,
8745                                (char *) NULL);
8746   else
8747     canonical_name = imported_name;
8748
8749   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8750
8751   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8752     for (child_die = die->child; child_die && child_die->tag;
8753          child_die = sibling_die (child_die))
8754       {
8755         /* DWARF-4: A Fortran use statement with a “rename list” may be
8756            represented by an imported module entry with an import attribute
8757            referring to the module and owned entries corresponding to those
8758            entities that are renamed as part of being imported.  */
8759
8760         if (child_die->tag != DW_TAG_imported_declaration)
8761           {
8762             complaint (&symfile_complaints,
8763                        _("child DW_TAG_imported_declaration expected "
8764                          "- DIE at 0x%x [in module %s]"),
8765                        child_die->offset.sect_off, objfile_name (objfile));
8766             continue;
8767           }
8768
8769         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8770         if (import_attr == NULL)
8771           {
8772             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8773                        dwarf_tag_name (child_die->tag));
8774             continue;
8775           }
8776
8777         imported_cu = cu;
8778         imported_die = follow_die_ref_or_sig (child_die, import_attr,
8779                                               &imported_cu);
8780         imported_name = dwarf2_name (imported_die, imported_cu);
8781         if (imported_name == NULL)
8782           {
8783             complaint (&symfile_complaints,
8784                        _("child DW_TAG_imported_declaration has unknown "
8785                          "imported name - DIE at 0x%x [in module %s]"),
8786                        child_die->offset.sect_off, objfile_name (objfile));
8787             continue;
8788           }
8789
8790         VEC_safe_push (const_char_ptr, excludes, imported_name);
8791
8792         process_die (child_die, cu);
8793       }
8794
8795   cp_add_using_directive (import_prefix,
8796                           canonical_name,
8797                           import_alias,
8798                           imported_declaration,
8799                           excludes,
8800                           0,
8801                           &objfile->objfile_obstack);
8802
8803   do_cleanups (cleanups);
8804 }
8805
8806 /* Cleanup function for handle_DW_AT_stmt_list.  */
8807
8808 static void
8809 free_cu_line_header (void *arg)
8810 {
8811   struct dwarf2_cu *cu = arg;
8812
8813   free_line_header (cu->line_header);
8814   cu->line_header = NULL;
8815 }
8816
8817 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
8818    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
8819    this, it was first present in GCC release 4.3.0.  */
8820
8821 static int
8822 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
8823 {
8824   if (!cu->checked_producer)
8825     check_producer (cu);
8826
8827   return cu->producer_is_gcc_lt_4_3;
8828 }
8829
8830 static void
8831 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
8832                          const char **name, const char **comp_dir)
8833 {
8834   struct attribute *attr;
8835
8836   *name = NULL;
8837   *comp_dir = NULL;
8838
8839   /* Find the filename.  Do not use dwarf2_name here, since the filename
8840      is not a source language identifier.  */
8841   attr = dwarf2_attr (die, DW_AT_name, cu);
8842   if (attr)
8843     {
8844       *name = DW_STRING (attr);
8845     }
8846
8847   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
8848   if (attr)
8849     *comp_dir = DW_STRING (attr);
8850   else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
8851            && IS_ABSOLUTE_PATH (*name))
8852     {
8853       char *d = ldirname (*name);
8854
8855       *comp_dir = d;
8856       if (d != NULL)
8857         make_cleanup (xfree, d);
8858     }
8859   if (*comp_dir != NULL)
8860     {
8861       /* Irix 6.2 native cc prepends <machine>.: to the compilation
8862          directory, get rid of it.  */
8863       char *cp = strchr (*comp_dir, ':');
8864
8865       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
8866         *comp_dir = cp + 1;
8867     }
8868
8869   if (*name == NULL)
8870     *name = "<unknown>";
8871 }
8872
8873 /* Handle DW_AT_stmt_list for a compilation unit.
8874    DIE is the DW_TAG_compile_unit die for CU.
8875    COMP_DIR is the compilation directory.
8876    WANT_LINE_INFO is non-zero if the pc/line-number mapping is needed.  */
8877
8878 static void
8879 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
8880                         const char *comp_dir) /* ARI: editCase function */
8881 {
8882   struct attribute *attr;
8883
8884   gdb_assert (! cu->per_cu->is_debug_types);
8885
8886   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8887   if (attr)
8888     {
8889       unsigned int line_offset = DW_UNSND (attr);
8890       struct line_header *line_header
8891         = dwarf_decode_line_header (line_offset, cu);
8892
8893       if (line_header)
8894         {
8895           cu->line_header = line_header;
8896           make_cleanup (free_cu_line_header, cu);
8897           dwarf_decode_lines (line_header, comp_dir, cu, NULL, 1);
8898         }
8899     }
8900 }
8901
8902 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
8903
8904 static void
8905 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
8906 {
8907   struct objfile *objfile = dwarf2_per_objfile->objfile;
8908   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
8909   CORE_ADDR lowpc = ((CORE_ADDR) -1);
8910   CORE_ADDR highpc = ((CORE_ADDR) 0);
8911   struct attribute *attr;
8912   const char *name = NULL;
8913   const char *comp_dir = NULL;
8914   struct die_info *child_die;
8915   bfd *abfd = objfile->obfd;
8916   CORE_ADDR baseaddr;
8917
8918   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8919
8920   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
8921
8922   /* If we didn't find a lowpc, set it to highpc to avoid complaints
8923      from finish_block.  */
8924   if (lowpc == ((CORE_ADDR) -1))
8925     lowpc = highpc;
8926   lowpc += baseaddr;
8927   highpc += baseaddr;
8928
8929   find_file_and_directory (die, cu, &name, &comp_dir);
8930
8931   prepare_one_comp_unit (cu, die, cu->language);
8932
8933   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
8934      standardised yet.  As a workaround for the language detection we fall
8935      back to the DW_AT_producer string.  */
8936   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
8937     cu->language = language_opencl;
8938
8939   /* Similar hack for Go.  */
8940   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
8941     set_cu_language (DW_LANG_Go, cu);
8942
8943   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
8944
8945   /* Decode line number information if present.  We do this before
8946      processing child DIEs, so that the line header table is available
8947      for DW_AT_decl_file.  */
8948   handle_DW_AT_stmt_list (die, cu, comp_dir);
8949
8950   /* Process all dies in compilation unit.  */
8951   if (die->child != NULL)
8952     {
8953       child_die = die->child;
8954       while (child_die && child_die->tag)
8955         {
8956           process_die (child_die, cu);
8957           child_die = sibling_die (child_die);
8958         }
8959     }
8960
8961   /* Decode macro information, if present.  Dwarf 2 macro information
8962      refers to information in the line number info statement program
8963      header, so we can only read it if we've read the header
8964      successfully.  */
8965   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
8966   if (attr && cu->line_header)
8967     {
8968       if (dwarf2_attr (die, DW_AT_macro_info, cu))
8969         complaint (&symfile_complaints,
8970                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
8971
8972       dwarf_decode_macros (cu, DW_UNSND (attr), comp_dir, 1);
8973     }
8974   else
8975     {
8976       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
8977       if (attr && cu->line_header)
8978         {
8979           unsigned int macro_offset = DW_UNSND (attr);
8980
8981           dwarf_decode_macros (cu, macro_offset, comp_dir, 0);
8982         }
8983     }
8984
8985   do_cleanups (back_to);
8986 }
8987
8988 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
8989    Create the set of symtabs used by this TU, or if this TU is sharing
8990    symtabs with another TU and the symtabs have already been created
8991    then restore those symtabs in the line header.
8992    We don't need the pc/line-number mapping for type units.  */
8993
8994 static void
8995 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
8996 {
8997   struct objfile *objfile = dwarf2_per_objfile->objfile;
8998   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8999   struct type_unit_group *tu_group;
9000   int first_time;
9001   struct line_header *lh;
9002   struct attribute *attr;
9003   unsigned int i, line_offset;
9004   struct signatured_type *sig_type;
9005
9006   gdb_assert (per_cu->is_debug_types);
9007   sig_type = (struct signatured_type *) per_cu;
9008
9009   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9010
9011   /* If we're using .gdb_index (includes -readnow) then
9012      per_cu->type_unit_group may not have been set up yet.  */
9013   if (sig_type->type_unit_group == NULL)
9014     sig_type->type_unit_group = get_type_unit_group (cu, attr);
9015   tu_group = sig_type->type_unit_group;
9016
9017   /* If we've already processed this stmt_list there's no real need to
9018      do it again, we could fake it and just recreate the part we need
9019      (file name,index -> symtab mapping).  If data shows this optimization
9020      is useful we can do it then.  */
9021   first_time = tu_group->primary_symtab == NULL;
9022
9023   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9024      debug info.  */
9025   lh = NULL;
9026   if (attr != NULL)
9027     {
9028       line_offset = DW_UNSND (attr);
9029       lh = dwarf_decode_line_header (line_offset, cu);
9030     }
9031   if (lh == NULL)
9032     {
9033       if (first_time)
9034         dwarf2_start_symtab (cu, "", NULL, 0);
9035       else
9036         {
9037           gdb_assert (tu_group->symtabs == NULL);
9038           restart_symtab (0);
9039         }
9040       /* Note: The primary symtab will get allocated at the end.  */
9041       return;
9042     }
9043
9044   cu->line_header = lh;
9045   make_cleanup (free_cu_line_header, cu);
9046
9047   if (first_time)
9048     {
9049       dwarf2_start_symtab (cu, "", NULL, 0);
9050
9051       tu_group->num_symtabs = lh->num_file_names;
9052       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
9053
9054       for (i = 0; i < lh->num_file_names; ++i)
9055         {
9056           const char *dir = NULL;
9057           struct file_entry *fe = &lh->file_names[i];
9058
9059           if (fe->dir_index)
9060             dir = lh->include_dirs[fe->dir_index - 1];
9061           dwarf2_start_subfile (fe->name, dir, NULL);
9062
9063           /* Note: We don't have to watch for the main subfile here, type units
9064              don't have DW_AT_name.  */
9065
9066           if (current_subfile->symtab == NULL)
9067             {
9068               /* NOTE: start_subfile will recognize when it's been passed
9069                  a file it has already seen.  So we can't assume there's a
9070                  simple mapping from lh->file_names to subfiles,
9071                  lh->file_names may contain dups.  */
9072               current_subfile->symtab = allocate_symtab (current_subfile->name,
9073                                                          objfile);
9074             }
9075
9076           fe->symtab = current_subfile->symtab;
9077           tu_group->symtabs[i] = fe->symtab;
9078         }
9079     }
9080   else
9081     {
9082       restart_symtab (0);
9083
9084       for (i = 0; i < lh->num_file_names; ++i)
9085         {
9086           struct file_entry *fe = &lh->file_names[i];
9087
9088           fe->symtab = tu_group->symtabs[i];
9089         }
9090     }
9091
9092   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9093      so they don't have a "real" (so to speak) symtab anyway.
9094      There is later code that will assign the main symtab to all symbols
9095      that don't have one.  We need to handle the case of a symbol with a
9096      missing symtab (DW_AT_decl_file) anyway.  */
9097 }
9098
9099 /* Process DW_TAG_type_unit.
9100    For TUs we want to skip the first top level sibling if it's not the
9101    actual type being defined by this TU.  In this case the first top
9102    level sibling is there to provide context only.  */
9103
9104 static void
9105 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9106 {
9107   struct die_info *child_die;
9108
9109   prepare_one_comp_unit (cu, die, language_minimal);
9110
9111   /* Initialize (or reinitialize) the machinery for building symtabs.
9112      We do this before processing child DIEs, so that the line header table
9113      is available for DW_AT_decl_file.  */
9114   setup_type_unit_groups (die, cu);
9115
9116   if (die->child != NULL)
9117     {
9118       child_die = die->child;
9119       while (child_die && child_die->tag)
9120         {
9121           process_die (child_die, cu);
9122           child_die = sibling_die (child_die);
9123         }
9124     }
9125 }
9126 \f
9127 /* DWO/DWP files.
9128
9129    http://gcc.gnu.org/wiki/DebugFission
9130    http://gcc.gnu.org/wiki/DebugFissionDWP
9131
9132    To simplify handling of both DWO files ("object" files with the DWARF info)
9133    and DWP files (a file with the DWOs packaged up into one file), we treat
9134    DWP files as having a collection of virtual DWO files.  */
9135
9136 static hashval_t
9137 hash_dwo_file (const void *item)
9138 {
9139   const struct dwo_file *dwo_file = item;
9140   hashval_t hash;
9141
9142   hash = htab_hash_string (dwo_file->dwo_name);
9143   if (dwo_file->comp_dir != NULL)
9144     hash += htab_hash_string (dwo_file->comp_dir);
9145   return hash;
9146 }
9147
9148 static int
9149 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9150 {
9151   const struct dwo_file *lhs = item_lhs;
9152   const struct dwo_file *rhs = item_rhs;
9153
9154   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9155     return 0;
9156   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9157     return lhs->comp_dir == rhs->comp_dir;
9158   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9159 }
9160
9161 /* Allocate a hash table for DWO files.  */
9162
9163 static htab_t
9164 allocate_dwo_file_hash_table (void)
9165 {
9166   struct objfile *objfile = dwarf2_per_objfile->objfile;
9167
9168   return htab_create_alloc_ex (41,
9169                                hash_dwo_file,
9170                                eq_dwo_file,
9171                                NULL,
9172                                &objfile->objfile_obstack,
9173                                hashtab_obstack_allocate,
9174                                dummy_obstack_deallocate);
9175 }
9176
9177 /* Lookup DWO file DWO_NAME.  */
9178
9179 static void **
9180 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9181 {
9182   struct dwo_file find_entry;
9183   void **slot;
9184
9185   if (dwarf2_per_objfile->dwo_files == NULL)
9186     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9187
9188   memset (&find_entry, 0, sizeof (find_entry));
9189   find_entry.dwo_name = dwo_name;
9190   find_entry.comp_dir = comp_dir;
9191   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9192
9193   return slot;
9194 }
9195
9196 static hashval_t
9197 hash_dwo_unit (const void *item)
9198 {
9199   const struct dwo_unit *dwo_unit = item;
9200
9201   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9202   return dwo_unit->signature;
9203 }
9204
9205 static int
9206 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9207 {
9208   const struct dwo_unit *lhs = item_lhs;
9209   const struct dwo_unit *rhs = item_rhs;
9210
9211   /* The signature is assumed to be unique within the DWO file.
9212      So while object file CU dwo_id's always have the value zero,
9213      that's OK, assuming each object file DWO file has only one CU,
9214      and that's the rule for now.  */
9215   return lhs->signature == rhs->signature;
9216 }
9217
9218 /* Allocate a hash table for DWO CUs,TUs.
9219    There is one of these tables for each of CUs,TUs for each DWO file.  */
9220
9221 static htab_t
9222 allocate_dwo_unit_table (struct objfile *objfile)
9223 {
9224   /* Start out with a pretty small number.
9225      Generally DWO files contain only one CU and maybe some TUs.  */
9226   return htab_create_alloc_ex (3,
9227                                hash_dwo_unit,
9228                                eq_dwo_unit,
9229                                NULL,
9230                                &objfile->objfile_obstack,
9231                                hashtab_obstack_allocate,
9232                                dummy_obstack_deallocate);
9233 }
9234
9235 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9236
9237 struct create_dwo_cu_data
9238 {
9239   struct dwo_file *dwo_file;
9240   struct dwo_unit dwo_unit;
9241 };
9242
9243 /* die_reader_func for create_dwo_cu.  */
9244
9245 static void
9246 create_dwo_cu_reader (const struct die_reader_specs *reader,
9247                       const gdb_byte *info_ptr,
9248                       struct die_info *comp_unit_die,
9249                       int has_children,
9250                       void *datap)
9251 {
9252   struct dwarf2_cu *cu = reader->cu;
9253   struct objfile *objfile = dwarf2_per_objfile->objfile;
9254   sect_offset offset = cu->per_cu->offset;
9255   struct dwarf2_section_info *section = cu->per_cu->section;
9256   struct create_dwo_cu_data *data = datap;
9257   struct dwo_file *dwo_file = data->dwo_file;
9258   struct dwo_unit *dwo_unit = &data->dwo_unit;
9259   struct attribute *attr;
9260
9261   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9262   if (attr == NULL)
9263     {
9264       complaint (&symfile_complaints,
9265                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9266                    " its dwo_id [in module %s]"),
9267                  offset.sect_off, dwo_file->dwo_name);
9268       return;
9269     }
9270
9271   dwo_unit->dwo_file = dwo_file;
9272   dwo_unit->signature = DW_UNSND (attr);
9273   dwo_unit->section = section;
9274   dwo_unit->offset = offset;
9275   dwo_unit->length = cu->per_cu->length;
9276
9277   if (dwarf2_read_debug)
9278     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9279                         offset.sect_off, hex_string (dwo_unit->signature));
9280 }
9281
9282 /* Create the dwo_unit for the lone CU in DWO_FILE.
9283    Note: This function processes DWO files only, not DWP files.  */
9284
9285 static struct dwo_unit *
9286 create_dwo_cu (struct dwo_file *dwo_file)
9287 {
9288   struct objfile *objfile = dwarf2_per_objfile->objfile;
9289   struct dwarf2_section_info *section = &dwo_file->sections.info;
9290   bfd *abfd;
9291   htab_t cu_htab;
9292   const gdb_byte *info_ptr, *end_ptr;
9293   struct create_dwo_cu_data create_dwo_cu_data;
9294   struct dwo_unit *dwo_unit;
9295
9296   dwarf2_read_section (objfile, section);
9297   info_ptr = section->buffer;
9298
9299   if (info_ptr == NULL)
9300     return NULL;
9301
9302   /* We can't set abfd until now because the section may be empty or
9303      not present, in which case section->asection will be NULL.  */
9304   abfd = get_section_bfd_owner (section);
9305
9306   if (dwarf2_read_debug)
9307     {
9308       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9309                           get_section_name (section),
9310                           get_section_file_name (section));
9311     }
9312
9313   create_dwo_cu_data.dwo_file = dwo_file;
9314   dwo_unit = NULL;
9315
9316   end_ptr = info_ptr + section->size;
9317   while (info_ptr < end_ptr)
9318     {
9319       struct dwarf2_per_cu_data per_cu;
9320
9321       memset (&create_dwo_cu_data.dwo_unit, 0,
9322               sizeof (create_dwo_cu_data.dwo_unit));
9323       memset (&per_cu, 0, sizeof (per_cu));
9324       per_cu.objfile = objfile;
9325       per_cu.is_debug_types = 0;
9326       per_cu.offset.sect_off = info_ptr - section->buffer;
9327       per_cu.section = section;
9328
9329       init_cutu_and_read_dies_no_follow (&per_cu,
9330                                          &dwo_file->sections.abbrev,
9331                                          dwo_file,
9332                                          create_dwo_cu_reader,
9333                                          &create_dwo_cu_data);
9334
9335       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9336         {
9337           /* If we've already found one, complain.  We only support one
9338              because having more than one requires hacking the dwo_name of
9339              each to match, which is highly unlikely to happen.  */
9340           if (dwo_unit != NULL)
9341             {
9342               complaint (&symfile_complaints,
9343                          _("Multiple CUs in DWO file %s [in module %s]"),
9344                          dwo_file->dwo_name, objfile_name (objfile));
9345               break;
9346             }
9347
9348           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9349           *dwo_unit = create_dwo_cu_data.dwo_unit;
9350         }
9351
9352       info_ptr += per_cu.length;
9353     }
9354
9355   return dwo_unit;
9356 }
9357
9358 /* DWP file .debug_{cu,tu}_index section format:
9359    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9360
9361    DWP Version 1:
9362
9363    Both index sections have the same format, and serve to map a 64-bit
9364    signature to a set of section numbers.  Each section begins with a header,
9365    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9366    indexes, and a pool of 32-bit section numbers.  The index sections will be
9367    aligned at 8-byte boundaries in the file.
9368
9369    The index section header consists of:
9370
9371     V, 32 bit version number
9372     -, 32 bits unused
9373     N, 32 bit number of compilation units or type units in the index
9374     M, 32 bit number of slots in the hash table
9375
9376    Numbers are recorded using the byte order of the application binary.
9377
9378    The hash table begins at offset 16 in the section, and consists of an array
9379    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9380    order of the application binary).  Unused slots in the hash table are 0.
9381    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9382
9383    The parallel table begins immediately after the hash table
9384    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9385    array of 32-bit indexes (using the byte order of the application binary),
9386    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9387    table contains a 32-bit index into the pool of section numbers.  For unused
9388    hash table slots, the corresponding entry in the parallel table will be 0.
9389
9390    The pool of section numbers begins immediately following the hash table
9391    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9392    section numbers consists of an array of 32-bit words (using the byte order
9393    of the application binary).  Each item in the array is indexed starting
9394    from 0.  The hash table entry provides the index of the first section
9395    number in the set.  Additional section numbers in the set follow, and the
9396    set is terminated by a 0 entry (section number 0 is not used in ELF).
9397
9398    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9399    section must be the first entry in the set, and the .debug_abbrev.dwo must
9400    be the second entry. Other members of the set may follow in any order.
9401
9402    ---
9403
9404    DWP Version 2:
9405
9406    DWP Version 2 combines all the .debug_info, etc. sections into one,
9407    and the entries in the index tables are now offsets into these sections.
9408    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9409    section.
9410
9411    Index Section Contents:
9412     Header
9413     Hash Table of Signatures   dwp_hash_table.hash_table
9414     Parallel Table of Indices  dwp_hash_table.unit_table
9415     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9416     Table of Section Sizes     dwp_hash_table.v2.sizes
9417
9418    The index section header consists of:
9419
9420     V, 32 bit version number
9421     L, 32 bit number of columns in the table of section offsets
9422     N, 32 bit number of compilation units or type units in the index
9423     M, 32 bit number of slots in the hash table
9424
9425    Numbers are recorded using the byte order of the application binary.
9426
9427    The hash table has the same format as version 1.
9428    The parallel table of indices has the same format as version 1,
9429    except that the entries are origin-1 indices into the table of sections
9430    offsets and the table of section sizes.
9431
9432    The table of offsets begins immediately following the parallel table
9433    (at offset 16 + 12 * M from the beginning of the section).  The table is
9434    a two-dimensional array of 32-bit words (using the byte order of the
9435    application binary), with L columns and N+1 rows, in row-major order.
9436    Each row in the array is indexed starting from 0.  The first row provides
9437    a key to the remaining rows: each column in this row provides an identifier
9438    for a debug section, and the offsets in the same column of subsequent rows
9439    refer to that section.  The section identifiers are:
9440
9441     DW_SECT_INFO         1  .debug_info.dwo
9442     DW_SECT_TYPES        2  .debug_types.dwo
9443     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9444     DW_SECT_LINE         4  .debug_line.dwo
9445     DW_SECT_LOC          5  .debug_loc.dwo
9446     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9447     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9448     DW_SECT_MACRO        8  .debug_macro.dwo
9449
9450    The offsets provided by the CU and TU index sections are the base offsets
9451    for the contributions made by each CU or TU to the corresponding section
9452    in the package file.  Each CU and TU header contains an abbrev_offset
9453    field, used to find the abbreviations table for that CU or TU within the
9454    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9455    be interpreted as relative to the base offset given in the index section.
9456    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9457    should be interpreted as relative to the base offset for .debug_line.dwo,
9458    and offsets into other debug sections obtained from DWARF attributes should
9459    also be interpreted as relative to the corresponding base offset.
9460
9461    The table of sizes begins immediately following the table of offsets.
9462    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9463    with L columns and N rows, in row-major order.  Each row in the array is
9464    indexed starting from 1 (row 0 is shared by the two tables).
9465
9466    ---
9467
9468    Hash table lookup is handled the same in version 1 and 2:
9469
9470    We assume that N and M will not exceed 2^32 - 1.
9471    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9472
9473    Given a 64-bit compilation unit signature or a type signature S, an entry
9474    in the hash table is located as follows:
9475
9476    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9477       the low-order k bits all set to 1.
9478
9479    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9480
9481    3) If the hash table entry at index H matches the signature, use that
9482       entry.  If the hash table entry at index H is unused (all zeroes),
9483       terminate the search: the signature is not present in the table.
9484
9485    4) Let H = (H + H') modulo M. Repeat at Step 3.
9486
9487    Because M > N and H' and M are relatively prime, the search is guaranteed
9488    to stop at an unused slot or find the match.  */
9489
9490 /* Create a hash table to map DWO IDs to their CU/TU entry in
9491    .debug_{info,types}.dwo in DWP_FILE.
9492    Returns NULL if there isn't one.
9493    Note: This function processes DWP files only, not DWO files.  */
9494
9495 static struct dwp_hash_table *
9496 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9497 {
9498   struct objfile *objfile = dwarf2_per_objfile->objfile;
9499   bfd *dbfd = dwp_file->dbfd;
9500   const gdb_byte *index_ptr, *index_end;
9501   struct dwarf2_section_info *index;
9502   uint32_t version, nr_columns, nr_units, nr_slots;
9503   struct dwp_hash_table *htab;
9504
9505   if (is_debug_types)
9506     index = &dwp_file->sections.tu_index;
9507   else
9508     index = &dwp_file->sections.cu_index;
9509
9510   if (dwarf2_section_empty_p (index))
9511     return NULL;
9512   dwarf2_read_section (objfile, index);
9513
9514   index_ptr = index->buffer;
9515   index_end = index_ptr + index->size;
9516
9517   version = read_4_bytes (dbfd, index_ptr);
9518   index_ptr += 4;
9519   if (version == 2)
9520     nr_columns = read_4_bytes (dbfd, index_ptr);
9521   else
9522     nr_columns = 0;
9523   index_ptr += 4;
9524   nr_units = read_4_bytes (dbfd, index_ptr);
9525   index_ptr += 4;
9526   nr_slots = read_4_bytes (dbfd, index_ptr);
9527   index_ptr += 4;
9528
9529   if (version != 1 && version != 2)
9530     {
9531       error (_("Dwarf Error: unsupported DWP file version (%s)"
9532                " [in module %s]"),
9533              pulongest (version), dwp_file->name);
9534     }
9535   if (nr_slots != (nr_slots & -nr_slots))
9536     {
9537       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9538                " is not power of 2 [in module %s]"),
9539              pulongest (nr_slots), dwp_file->name);
9540     }
9541
9542   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9543   htab->version = version;
9544   htab->nr_columns = nr_columns;
9545   htab->nr_units = nr_units;
9546   htab->nr_slots = nr_slots;
9547   htab->hash_table = index_ptr;
9548   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9549
9550   /* Exit early if the table is empty.  */
9551   if (nr_slots == 0 || nr_units == 0
9552       || (version == 2 && nr_columns == 0))
9553     {
9554       /* All must be zero.  */
9555       if (nr_slots != 0 || nr_units != 0
9556           || (version == 2 && nr_columns != 0))
9557         {
9558           complaint (&symfile_complaints,
9559                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9560                        " all zero [in modules %s]"),
9561                      dwp_file->name);
9562         }
9563       return htab;
9564     }
9565
9566   if (version == 1)
9567     {
9568       htab->section_pool.v1.indices =
9569         htab->unit_table + sizeof (uint32_t) * nr_slots;
9570       /* It's harder to decide whether the section is too small in v1.
9571          V1 is deprecated anyway so we punt.  */
9572     }
9573   else
9574     {
9575       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9576       int *ids = htab->section_pool.v2.section_ids;
9577       /* Reverse map for error checking.  */
9578       int ids_seen[DW_SECT_MAX + 1];
9579       int i;
9580
9581       if (nr_columns < 2)
9582         {
9583           error (_("Dwarf Error: bad DWP hash table, too few columns"
9584                    " in section table [in module %s]"),
9585                  dwp_file->name);
9586         }
9587       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9588         {
9589           error (_("Dwarf Error: bad DWP hash table, too many columns"
9590                    " in section table [in module %s]"),
9591                  dwp_file->name);
9592         }
9593       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9594       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9595       for (i = 0; i < nr_columns; ++i)
9596         {
9597           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9598
9599           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9600             {
9601               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9602                        " in section table [in module %s]"),
9603                      id, dwp_file->name);
9604             }
9605           if (ids_seen[id] != -1)
9606             {
9607               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9608                        " id %d in section table [in module %s]"),
9609                      id, dwp_file->name);
9610             }
9611           ids_seen[id] = i;
9612           ids[i] = id;
9613         }
9614       /* Must have exactly one info or types section.  */
9615       if (((ids_seen[DW_SECT_INFO] != -1)
9616            + (ids_seen[DW_SECT_TYPES] != -1))
9617           != 1)
9618         {
9619           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9620                    " DWO info/types section [in module %s]"),
9621                  dwp_file->name);
9622         }
9623       /* Must have an abbrev section.  */
9624       if (ids_seen[DW_SECT_ABBREV] == -1)
9625         {
9626           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9627                    " section [in module %s]"),
9628                  dwp_file->name);
9629         }
9630       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9631       htab->section_pool.v2.sizes =
9632         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9633                                          * nr_units * nr_columns);
9634       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9635                                           * nr_units * nr_columns))
9636           > index_end)
9637         {
9638           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9639                    " [in module %s]"),
9640                  dwp_file->name);
9641         }
9642     }
9643
9644   return htab;
9645 }
9646
9647 /* Update SECTIONS with the data from SECTP.
9648
9649    This function is like the other "locate" section routines that are
9650    passed to bfd_map_over_sections, but in this context the sections to
9651    read comes from the DWP V1 hash table, not the full ELF section table.
9652
9653    The result is non-zero for success, or zero if an error was found.  */
9654
9655 static int
9656 locate_v1_virtual_dwo_sections (asection *sectp,
9657                                 struct virtual_v1_dwo_sections *sections)
9658 {
9659   const struct dwop_section_names *names = &dwop_section_names;
9660
9661   if (section_is_p (sectp->name, &names->abbrev_dwo))
9662     {
9663       /* There can be only one.  */
9664       if (sections->abbrev.s.asection != NULL)
9665         return 0;
9666       sections->abbrev.s.asection = sectp;
9667       sections->abbrev.size = bfd_get_section_size (sectp);
9668     }
9669   else if (section_is_p (sectp->name, &names->info_dwo)
9670            || section_is_p (sectp->name, &names->types_dwo))
9671     {
9672       /* There can be only one.  */
9673       if (sections->info_or_types.s.asection != NULL)
9674         return 0;
9675       sections->info_or_types.s.asection = sectp;
9676       sections->info_or_types.size = bfd_get_section_size (sectp);
9677     }
9678   else if (section_is_p (sectp->name, &names->line_dwo))
9679     {
9680       /* There can be only one.  */
9681       if (sections->line.s.asection != NULL)
9682         return 0;
9683       sections->line.s.asection = sectp;
9684       sections->line.size = bfd_get_section_size (sectp);
9685     }
9686   else if (section_is_p (sectp->name, &names->loc_dwo))
9687     {
9688       /* There can be only one.  */
9689       if (sections->loc.s.asection != NULL)
9690         return 0;
9691       sections->loc.s.asection = sectp;
9692       sections->loc.size = bfd_get_section_size (sectp);
9693     }
9694   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9695     {
9696       /* There can be only one.  */
9697       if (sections->macinfo.s.asection != NULL)
9698         return 0;
9699       sections->macinfo.s.asection = sectp;
9700       sections->macinfo.size = bfd_get_section_size (sectp);
9701     }
9702   else if (section_is_p (sectp->name, &names->macro_dwo))
9703     {
9704       /* There can be only one.  */
9705       if (sections->macro.s.asection != NULL)
9706         return 0;
9707       sections->macro.s.asection = sectp;
9708       sections->macro.size = bfd_get_section_size (sectp);
9709     }
9710   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9711     {
9712       /* There can be only one.  */
9713       if (sections->str_offsets.s.asection != NULL)
9714         return 0;
9715       sections->str_offsets.s.asection = sectp;
9716       sections->str_offsets.size = bfd_get_section_size (sectp);
9717     }
9718   else
9719     {
9720       /* No other kind of section is valid.  */
9721       return 0;
9722     }
9723
9724   return 1;
9725 }
9726
9727 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9728    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9729    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9730    This is for DWP version 1 files.  */
9731
9732 static struct dwo_unit *
9733 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9734                            uint32_t unit_index,
9735                            const char *comp_dir,
9736                            ULONGEST signature, int is_debug_types)
9737 {
9738   struct objfile *objfile = dwarf2_per_objfile->objfile;
9739   const struct dwp_hash_table *dwp_htab =
9740     is_debug_types ? dwp_file->tus : dwp_file->cus;
9741   bfd *dbfd = dwp_file->dbfd;
9742   const char *kind = is_debug_types ? "TU" : "CU";
9743   struct dwo_file *dwo_file;
9744   struct dwo_unit *dwo_unit;
9745   struct virtual_v1_dwo_sections sections;
9746   void **dwo_file_slot;
9747   char *virtual_dwo_name;
9748   struct dwarf2_section_info *cutu;
9749   struct cleanup *cleanups;
9750   int i;
9751
9752   gdb_assert (dwp_file->version == 1);
9753
9754   if (dwarf2_read_debug)
9755     {
9756       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
9757                           kind,
9758                           pulongest (unit_index), hex_string (signature),
9759                           dwp_file->name);
9760     }
9761
9762   /* Fetch the sections of this DWO unit.
9763      Put a limit on the number of sections we look for so that bad data
9764      doesn't cause us to loop forever.  */
9765
9766 #define MAX_NR_V1_DWO_SECTIONS \
9767   (1 /* .debug_info or .debug_types */ \
9768    + 1 /* .debug_abbrev */ \
9769    + 1 /* .debug_line */ \
9770    + 1 /* .debug_loc */ \
9771    + 1 /* .debug_str_offsets */ \
9772    + 1 /* .debug_macro or .debug_macinfo */ \
9773    + 1 /* trailing zero */)
9774
9775   memset (&sections, 0, sizeof (sections));
9776   cleanups = make_cleanup (null_cleanup, 0);
9777
9778   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
9779     {
9780       asection *sectp;
9781       uint32_t section_nr =
9782         read_4_bytes (dbfd,
9783                       dwp_htab->section_pool.v1.indices
9784                       + (unit_index + i) * sizeof (uint32_t));
9785
9786       if (section_nr == 0)
9787         break;
9788       if (section_nr >= dwp_file->num_sections)
9789         {
9790           error (_("Dwarf Error: bad DWP hash table, section number too large"
9791                    " [in module %s]"),
9792                  dwp_file->name);
9793         }
9794
9795       sectp = dwp_file->elf_sections[section_nr];
9796       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
9797         {
9798           error (_("Dwarf Error: bad DWP hash table, invalid section found"
9799                    " [in module %s]"),
9800                  dwp_file->name);
9801         }
9802     }
9803
9804   if (i < 2
9805       || dwarf2_section_empty_p (&sections.info_or_types)
9806       || dwarf2_section_empty_p (&sections.abbrev))
9807     {
9808       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
9809                " [in module %s]"),
9810              dwp_file->name);
9811     }
9812   if (i == MAX_NR_V1_DWO_SECTIONS)
9813     {
9814       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
9815                " [in module %s]"),
9816              dwp_file->name);
9817     }
9818
9819   /* It's easier for the rest of the code if we fake a struct dwo_file and
9820      have dwo_unit "live" in that.  At least for now.
9821
9822      The DWP file can be made up of a random collection of CUs and TUs.
9823      However, for each CU + set of TUs that came from the same original DWO
9824      file, we can combine them back into a virtual DWO file to save space
9825      (fewer struct dwo_file objects to allocate).  Remember that for really
9826      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9827
9828   virtual_dwo_name =
9829     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
9830                 get_section_id (&sections.abbrev),
9831                 get_section_id (&sections.line),
9832                 get_section_id (&sections.loc),
9833                 get_section_id (&sections.str_offsets));
9834   make_cleanup (xfree, virtual_dwo_name);
9835   /* Can we use an existing virtual DWO file?  */
9836   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9837   /* Create one if necessary.  */
9838   if (*dwo_file_slot == NULL)
9839     {
9840       if (dwarf2_read_debug)
9841         {
9842           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9843                               virtual_dwo_name);
9844         }
9845       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9846       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9847                                           virtual_dwo_name,
9848                                           strlen (virtual_dwo_name));
9849       dwo_file->comp_dir = comp_dir;
9850       dwo_file->sections.abbrev = sections.abbrev;
9851       dwo_file->sections.line = sections.line;
9852       dwo_file->sections.loc = sections.loc;
9853       dwo_file->sections.macinfo = sections.macinfo;
9854       dwo_file->sections.macro = sections.macro;
9855       dwo_file->sections.str_offsets = sections.str_offsets;
9856       /* The "str" section is global to the entire DWP file.  */
9857       dwo_file->sections.str = dwp_file->sections.str;
9858       /* The info or types section is assigned below to dwo_unit,
9859          there's no need to record it in dwo_file.
9860          Also, we can't simply record type sections in dwo_file because
9861          we record a pointer into the vector in dwo_unit.  As we collect more
9862          types we'll grow the vector and eventually have to reallocate space
9863          for it, invalidating all copies of pointers into the previous
9864          contents.  */
9865       *dwo_file_slot = dwo_file;
9866     }
9867   else
9868     {
9869       if (dwarf2_read_debug)
9870         {
9871           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
9872                               virtual_dwo_name);
9873         }
9874       dwo_file = *dwo_file_slot;
9875     }
9876   do_cleanups (cleanups);
9877
9878   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9879   dwo_unit->dwo_file = dwo_file;
9880   dwo_unit->signature = signature;
9881   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
9882                                      sizeof (struct dwarf2_section_info));
9883   *dwo_unit->section = sections.info_or_types;
9884   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
9885
9886   return dwo_unit;
9887 }
9888
9889 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
9890    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
9891    piece within that section used by a TU/CU, return a virtual section
9892    of just that piece.  */
9893
9894 static struct dwarf2_section_info
9895 create_dwp_v2_section (struct dwarf2_section_info *section,
9896                        bfd_size_type offset, bfd_size_type size)
9897 {
9898   struct dwarf2_section_info result;
9899   asection *sectp;
9900
9901   gdb_assert (section != NULL);
9902   gdb_assert (!section->is_virtual);
9903
9904   memset (&result, 0, sizeof (result));
9905   result.s.containing_section = section;
9906   result.is_virtual = 1;
9907
9908   if (size == 0)
9909     return result;
9910
9911   sectp = get_section_bfd_section (section);
9912
9913   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
9914      bounds of the real section.  This is a pretty-rare event, so just
9915      flag an error (easier) instead of a warning and trying to cope.  */
9916   if (sectp == NULL
9917       || offset + size > bfd_get_section_size (sectp))
9918     {
9919       bfd *abfd = sectp->owner;
9920
9921       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
9922                " in section %s [in module %s]"),
9923              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
9924              objfile_name (dwarf2_per_objfile->objfile));
9925     }
9926
9927   result.virtual_offset = offset;
9928   result.size = size;
9929   return result;
9930 }
9931
9932 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9933    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9934    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9935    This is for DWP version 2 files.  */
9936
9937 static struct dwo_unit *
9938 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
9939                            uint32_t unit_index,
9940                            const char *comp_dir,
9941                            ULONGEST signature, int is_debug_types)
9942 {
9943   struct objfile *objfile = dwarf2_per_objfile->objfile;
9944   const struct dwp_hash_table *dwp_htab =
9945     is_debug_types ? dwp_file->tus : dwp_file->cus;
9946   bfd *dbfd = dwp_file->dbfd;
9947   const char *kind = is_debug_types ? "TU" : "CU";
9948   struct dwo_file *dwo_file;
9949   struct dwo_unit *dwo_unit;
9950   struct virtual_v2_dwo_sections sections;
9951   void **dwo_file_slot;
9952   char *virtual_dwo_name;
9953   struct dwarf2_section_info *cutu;
9954   struct cleanup *cleanups;
9955   int i;
9956
9957   gdb_assert (dwp_file->version == 2);
9958
9959   if (dwarf2_read_debug)
9960     {
9961       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
9962                           kind,
9963                           pulongest (unit_index), hex_string (signature),
9964                           dwp_file->name);
9965     }
9966
9967   /* Fetch the section offsets of this DWO unit.  */
9968
9969   memset (&sections, 0, sizeof (sections));
9970   cleanups = make_cleanup (null_cleanup, 0);
9971
9972   for (i = 0; i < dwp_htab->nr_columns; ++i)
9973     {
9974       uint32_t offset = read_4_bytes (dbfd,
9975                                       dwp_htab->section_pool.v2.offsets
9976                                       + (((unit_index - 1) * dwp_htab->nr_columns
9977                                           + i)
9978                                          * sizeof (uint32_t)));
9979       uint32_t size = read_4_bytes (dbfd,
9980                                     dwp_htab->section_pool.v2.sizes
9981                                     + (((unit_index - 1) * dwp_htab->nr_columns
9982                                         + i)
9983                                        * sizeof (uint32_t)));
9984
9985       switch (dwp_htab->section_pool.v2.section_ids[i])
9986         {
9987         case DW_SECT_INFO:
9988         case DW_SECT_TYPES:
9989           sections.info_or_types_offset = offset;
9990           sections.info_or_types_size = size;
9991           break;
9992         case DW_SECT_ABBREV:
9993           sections.abbrev_offset = offset;
9994           sections.abbrev_size = size;
9995           break;
9996         case DW_SECT_LINE:
9997           sections.line_offset = offset;
9998           sections.line_size = size;
9999           break;
10000         case DW_SECT_LOC:
10001           sections.loc_offset = offset;
10002           sections.loc_size = size;
10003           break;
10004         case DW_SECT_STR_OFFSETS:
10005           sections.str_offsets_offset = offset;
10006           sections.str_offsets_size = size;
10007           break;
10008         case DW_SECT_MACINFO:
10009           sections.macinfo_offset = offset;
10010           sections.macinfo_size = size;
10011           break;
10012         case DW_SECT_MACRO:
10013           sections.macro_offset = offset;
10014           sections.macro_size = size;
10015           break;
10016         }
10017     }
10018
10019   /* It's easier for the rest of the code if we fake a struct dwo_file and
10020      have dwo_unit "live" in that.  At least for now.
10021
10022      The DWP file can be made up of a random collection of CUs and TUs.
10023      However, for each CU + set of TUs that came from the same original DWO
10024      file, we can combine them back into a virtual DWO file to save space
10025      (fewer struct dwo_file objects to allocate).  Remember that for really
10026      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10027
10028   virtual_dwo_name =
10029     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10030                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10031                 (long) (sections.line_size ? sections.line_offset : 0),
10032                 (long) (sections.loc_size ? sections.loc_offset : 0),
10033                 (long) (sections.str_offsets_size
10034                         ? sections.str_offsets_offset : 0));
10035   make_cleanup (xfree, virtual_dwo_name);
10036   /* Can we use an existing virtual DWO file?  */
10037   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10038   /* Create one if necessary.  */
10039   if (*dwo_file_slot == NULL)
10040     {
10041       if (dwarf2_read_debug)
10042         {
10043           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10044                               virtual_dwo_name);
10045         }
10046       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10047       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10048                                           virtual_dwo_name,
10049                                           strlen (virtual_dwo_name));
10050       dwo_file->comp_dir = comp_dir;
10051       dwo_file->sections.abbrev =
10052         create_dwp_v2_section (&dwp_file->sections.abbrev,
10053                                sections.abbrev_offset, sections.abbrev_size);
10054       dwo_file->sections.line =
10055         create_dwp_v2_section (&dwp_file->sections.line,
10056                                sections.line_offset, sections.line_size);
10057       dwo_file->sections.loc =
10058         create_dwp_v2_section (&dwp_file->sections.loc,
10059                                sections.loc_offset, sections.loc_size);
10060       dwo_file->sections.macinfo =
10061         create_dwp_v2_section (&dwp_file->sections.macinfo,
10062                                sections.macinfo_offset, sections.macinfo_size);
10063       dwo_file->sections.macro =
10064         create_dwp_v2_section (&dwp_file->sections.macro,
10065                                sections.macro_offset, sections.macro_size);
10066       dwo_file->sections.str_offsets =
10067         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10068                                sections.str_offsets_offset,
10069                                sections.str_offsets_size);
10070       /* The "str" section is global to the entire DWP file.  */
10071       dwo_file->sections.str = dwp_file->sections.str;
10072       /* The info or types section is assigned below to dwo_unit,
10073          there's no need to record it in dwo_file.
10074          Also, we can't simply record type sections in dwo_file because
10075          we record a pointer into the vector in dwo_unit.  As we collect more
10076          types we'll grow the vector and eventually have to reallocate space
10077          for it, invalidating all copies of pointers into the previous
10078          contents.  */
10079       *dwo_file_slot = dwo_file;
10080     }
10081   else
10082     {
10083       if (dwarf2_read_debug)
10084         {
10085           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10086                               virtual_dwo_name);
10087         }
10088       dwo_file = *dwo_file_slot;
10089     }
10090   do_cleanups (cleanups);
10091
10092   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10093   dwo_unit->dwo_file = dwo_file;
10094   dwo_unit->signature = signature;
10095   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10096                                      sizeof (struct dwarf2_section_info));
10097   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10098                                               ? &dwp_file->sections.types
10099                                               : &dwp_file->sections.info,
10100                                               sections.info_or_types_offset,
10101                                               sections.info_or_types_size);
10102   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10103
10104   return dwo_unit;
10105 }
10106
10107 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10108    Returns NULL if the signature isn't found.  */
10109
10110 static struct dwo_unit *
10111 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10112                         ULONGEST signature, int is_debug_types)
10113 {
10114   const struct dwp_hash_table *dwp_htab =
10115     is_debug_types ? dwp_file->tus : dwp_file->cus;
10116   bfd *dbfd = dwp_file->dbfd;
10117   uint32_t mask = dwp_htab->nr_slots - 1;
10118   uint32_t hash = signature & mask;
10119   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10120   unsigned int i;
10121   void **slot;
10122   struct dwo_unit find_dwo_cu, *dwo_cu;
10123
10124   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10125   find_dwo_cu.signature = signature;
10126   slot = htab_find_slot (is_debug_types
10127                          ? dwp_file->loaded_tus
10128                          : dwp_file->loaded_cus,
10129                          &find_dwo_cu, INSERT);
10130
10131   if (*slot != NULL)
10132     return *slot;
10133
10134   /* Use a for loop so that we don't loop forever on bad debug info.  */
10135   for (i = 0; i < dwp_htab->nr_slots; ++i)
10136     {
10137       ULONGEST signature_in_table;
10138
10139       signature_in_table =
10140         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10141       if (signature_in_table == signature)
10142         {
10143           uint32_t unit_index =
10144             read_4_bytes (dbfd,
10145                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10146
10147           if (dwp_file->version == 1)
10148             {
10149               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10150                                                  comp_dir, signature,
10151                                                  is_debug_types);
10152             }
10153           else
10154             {
10155               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10156                                                  comp_dir, signature,
10157                                                  is_debug_types);
10158             }
10159           return *slot;
10160         }
10161       if (signature_in_table == 0)
10162         return NULL;
10163       hash = (hash + hash2) & mask;
10164     }
10165
10166   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10167            " [in module %s]"),
10168          dwp_file->name);
10169 }
10170
10171 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10172    Open the file specified by FILE_NAME and hand it off to BFD for
10173    preliminary analysis.  Return a newly initialized bfd *, which
10174    includes a canonicalized copy of FILE_NAME.
10175    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10176    SEARCH_CWD is true if the current directory is to be searched.
10177    It will be searched before debug-file-directory.
10178    If successful, the file is added to the bfd include table of the
10179    objfile's bfd (see gdb_bfd_record_inclusion).
10180    If unable to find/open the file, return NULL.
10181    NOTE: This function is derived from symfile_bfd_open.  */
10182
10183 static bfd *
10184 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10185 {
10186   bfd *sym_bfd;
10187   int desc, flags;
10188   char *absolute_name;
10189   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10190      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10191      to debug_file_directory.  */
10192   char *search_path;
10193   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10194
10195   if (search_cwd)
10196     {
10197       if (*debug_file_directory != '\0')
10198         search_path = concat (".", dirname_separator_string,
10199                               debug_file_directory, NULL);
10200       else
10201         search_path = xstrdup (".");
10202     }
10203   else
10204     search_path = xstrdup (debug_file_directory);
10205
10206   flags = OPF_RETURN_REALPATH;
10207   if (is_dwp)
10208     flags |= OPF_SEARCH_IN_PATH;
10209   desc = openp (search_path, flags, file_name,
10210                 O_RDONLY | O_BINARY, &absolute_name);
10211   xfree (search_path);
10212   if (desc < 0)
10213     return NULL;
10214
10215   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
10216   xfree (absolute_name);
10217   if (sym_bfd == NULL)
10218     return NULL;
10219   bfd_set_cacheable (sym_bfd, 1);
10220
10221   if (!bfd_check_format (sym_bfd, bfd_object))
10222     {
10223       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
10224       return NULL;
10225     }
10226
10227   /* Success.  Record the bfd as having been included by the objfile's bfd.
10228      This is important because things like demangled_names_hash lives in the
10229      objfile's per_bfd space and may have references to things like symbol
10230      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
10231   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10232
10233   return sym_bfd;
10234 }
10235
10236 /* Try to open DWO file FILE_NAME.
10237    COMP_DIR is the DW_AT_comp_dir attribute.
10238    The result is the bfd handle of the file.
10239    If there is a problem finding or opening the file, return NULL.
10240    Upon success, the canonicalized path of the file is stored in the bfd,
10241    same as symfile_bfd_open.  */
10242
10243 static bfd *
10244 open_dwo_file (const char *file_name, const char *comp_dir)
10245 {
10246   bfd *abfd;
10247
10248   if (IS_ABSOLUTE_PATH (file_name))
10249     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10250
10251   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10252
10253   if (comp_dir != NULL)
10254     {
10255       char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
10256
10257       /* NOTE: If comp_dir is a relative path, this will also try the
10258          search path, which seems useful.  */
10259       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
10260       xfree (path_to_try);
10261       if (abfd != NULL)
10262         return abfd;
10263     }
10264
10265   /* That didn't work, try debug-file-directory, which, despite its name,
10266      is a list of paths.  */
10267
10268   if (*debug_file_directory == '\0')
10269     return NULL;
10270
10271   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10272 }
10273
10274 /* This function is mapped across the sections and remembers the offset and
10275    size of each of the DWO debugging sections we are interested in.  */
10276
10277 static void
10278 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10279 {
10280   struct dwo_sections *dwo_sections = dwo_sections_ptr;
10281   const struct dwop_section_names *names = &dwop_section_names;
10282
10283   if (section_is_p (sectp->name, &names->abbrev_dwo))
10284     {
10285       dwo_sections->abbrev.s.asection = sectp;
10286       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10287     }
10288   else if (section_is_p (sectp->name, &names->info_dwo))
10289     {
10290       dwo_sections->info.s.asection = sectp;
10291       dwo_sections->info.size = bfd_get_section_size (sectp);
10292     }
10293   else if (section_is_p (sectp->name, &names->line_dwo))
10294     {
10295       dwo_sections->line.s.asection = sectp;
10296       dwo_sections->line.size = bfd_get_section_size (sectp);
10297     }
10298   else if (section_is_p (sectp->name, &names->loc_dwo))
10299     {
10300       dwo_sections->loc.s.asection = sectp;
10301       dwo_sections->loc.size = bfd_get_section_size (sectp);
10302     }
10303   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10304     {
10305       dwo_sections->macinfo.s.asection = sectp;
10306       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10307     }
10308   else if (section_is_p (sectp->name, &names->macro_dwo))
10309     {
10310       dwo_sections->macro.s.asection = sectp;
10311       dwo_sections->macro.size = bfd_get_section_size (sectp);
10312     }
10313   else if (section_is_p (sectp->name, &names->str_dwo))
10314     {
10315       dwo_sections->str.s.asection = sectp;
10316       dwo_sections->str.size = bfd_get_section_size (sectp);
10317     }
10318   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10319     {
10320       dwo_sections->str_offsets.s.asection = sectp;
10321       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10322     }
10323   else if (section_is_p (sectp->name, &names->types_dwo))
10324     {
10325       struct dwarf2_section_info type_section;
10326
10327       memset (&type_section, 0, sizeof (type_section));
10328       type_section.s.asection = sectp;
10329       type_section.size = bfd_get_section_size (sectp);
10330       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10331                      &type_section);
10332     }
10333 }
10334
10335 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10336    by PER_CU.  This is for the non-DWP case.
10337    The result is NULL if DWO_NAME can't be found.  */
10338
10339 static struct dwo_file *
10340 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10341                         const char *dwo_name, const char *comp_dir)
10342 {
10343   struct objfile *objfile = dwarf2_per_objfile->objfile;
10344   struct dwo_file *dwo_file;
10345   bfd *dbfd;
10346   struct cleanup *cleanups;
10347
10348   dbfd = open_dwo_file (dwo_name, comp_dir);
10349   if (dbfd == NULL)
10350     {
10351       if (dwarf2_read_debug)
10352         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10353       return NULL;
10354     }
10355   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10356   dwo_file->dwo_name = dwo_name;
10357   dwo_file->comp_dir = comp_dir;
10358   dwo_file->dbfd = dbfd;
10359
10360   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10361
10362   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
10363
10364   dwo_file->cu = create_dwo_cu (dwo_file);
10365
10366   dwo_file->tus = create_debug_types_hash_table (dwo_file,
10367                                                  dwo_file->sections.types);
10368
10369   discard_cleanups (cleanups);
10370
10371   if (dwarf2_read_debug)
10372     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10373
10374   return dwo_file;
10375 }
10376
10377 /* This function is mapped across the sections and remembers the offset and
10378    size of each of the DWP debugging sections common to version 1 and 2 that
10379    we are interested in.  */
10380
10381 static void
10382 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10383                                    void *dwp_file_ptr)
10384 {
10385   struct dwp_file *dwp_file = dwp_file_ptr;
10386   const struct dwop_section_names *names = &dwop_section_names;
10387   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10388
10389   /* Record the ELF section number for later lookup: this is what the
10390      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10391   gdb_assert (elf_section_nr < dwp_file->num_sections);
10392   dwp_file->elf_sections[elf_section_nr] = sectp;
10393
10394   /* Look for specific sections that we need.  */
10395   if (section_is_p (sectp->name, &names->str_dwo))
10396     {
10397       dwp_file->sections.str.s.asection = sectp;
10398       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10399     }
10400   else if (section_is_p (sectp->name, &names->cu_index))
10401     {
10402       dwp_file->sections.cu_index.s.asection = sectp;
10403       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10404     }
10405   else if (section_is_p (sectp->name, &names->tu_index))
10406     {
10407       dwp_file->sections.tu_index.s.asection = sectp;
10408       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10409     }
10410 }
10411
10412 /* This function is mapped across the sections and remembers the offset and
10413    size of each of the DWP version 2 debugging sections that we are interested
10414    in.  This is split into a separate function because we don't know if we
10415    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10416
10417 static void
10418 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10419 {
10420   struct dwp_file *dwp_file = dwp_file_ptr;
10421   const struct dwop_section_names *names = &dwop_section_names;
10422   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10423
10424   /* Record the ELF section number for later lookup: this is what the
10425      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10426   gdb_assert (elf_section_nr < dwp_file->num_sections);
10427   dwp_file->elf_sections[elf_section_nr] = sectp;
10428
10429   /* Look for specific sections that we need.  */
10430   if (section_is_p (sectp->name, &names->abbrev_dwo))
10431     {
10432       dwp_file->sections.abbrev.s.asection = sectp;
10433       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10434     }
10435   else if (section_is_p (sectp->name, &names->info_dwo))
10436     {
10437       dwp_file->sections.info.s.asection = sectp;
10438       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10439     }
10440   else if (section_is_p (sectp->name, &names->line_dwo))
10441     {
10442       dwp_file->sections.line.s.asection = sectp;
10443       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10444     }
10445   else if (section_is_p (sectp->name, &names->loc_dwo))
10446     {
10447       dwp_file->sections.loc.s.asection = sectp;
10448       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10449     }
10450   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10451     {
10452       dwp_file->sections.macinfo.s.asection = sectp;
10453       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10454     }
10455   else if (section_is_p (sectp->name, &names->macro_dwo))
10456     {
10457       dwp_file->sections.macro.s.asection = sectp;
10458       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10459     }
10460   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10461     {
10462       dwp_file->sections.str_offsets.s.asection = sectp;
10463       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10464     }
10465   else if (section_is_p (sectp->name, &names->types_dwo))
10466     {
10467       dwp_file->sections.types.s.asection = sectp;
10468       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10469     }
10470 }
10471
10472 /* Hash function for dwp_file loaded CUs/TUs.  */
10473
10474 static hashval_t
10475 hash_dwp_loaded_cutus (const void *item)
10476 {
10477   const struct dwo_unit *dwo_unit = item;
10478
10479   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10480   return dwo_unit->signature;
10481 }
10482
10483 /* Equality function for dwp_file loaded CUs/TUs.  */
10484
10485 static int
10486 eq_dwp_loaded_cutus (const void *a, const void *b)
10487 {
10488   const struct dwo_unit *dua = a;
10489   const struct dwo_unit *dub = b;
10490
10491   return dua->signature == dub->signature;
10492 }
10493
10494 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10495
10496 static htab_t
10497 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10498 {
10499   return htab_create_alloc_ex (3,
10500                                hash_dwp_loaded_cutus,
10501                                eq_dwp_loaded_cutus,
10502                                NULL,
10503                                &objfile->objfile_obstack,
10504                                hashtab_obstack_allocate,
10505                                dummy_obstack_deallocate);
10506 }
10507
10508 /* Try to open DWP file FILE_NAME.
10509    The result is the bfd handle of the file.
10510    If there is a problem finding or opening the file, return NULL.
10511    Upon success, the canonicalized path of the file is stored in the bfd,
10512    same as symfile_bfd_open.  */
10513
10514 static bfd *
10515 open_dwp_file (const char *file_name)
10516 {
10517   bfd *abfd;
10518
10519   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10520   if (abfd != NULL)
10521     return abfd;
10522
10523   /* Work around upstream bug 15652.
10524      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10525      [Whether that's a "bug" is debatable, but it is getting in our way.]
10526      We have no real idea where the dwp file is, because gdb's realpath-ing
10527      of the executable's path may have discarded the needed info.
10528      [IWBN if the dwp file name was recorded in the executable, akin to
10529      .gnu_debuglink, but that doesn't exist yet.]
10530      Strip the directory from FILE_NAME and search again.  */
10531   if (*debug_file_directory != '\0')
10532     {
10533       /* Don't implicitly search the current directory here.
10534          If the user wants to search "." to handle this case,
10535          it must be added to debug-file-directory.  */
10536       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10537                                  0 /*search_cwd*/);
10538     }
10539
10540   return NULL;
10541 }
10542
10543 /* Initialize the use of the DWP file for the current objfile.
10544    By convention the name of the DWP file is ${objfile}.dwp.
10545    The result is NULL if it can't be found.  */
10546
10547 static struct dwp_file *
10548 open_and_init_dwp_file (void)
10549 {
10550   struct objfile *objfile = dwarf2_per_objfile->objfile;
10551   struct dwp_file *dwp_file;
10552   char *dwp_name;
10553   bfd *dbfd;
10554   struct cleanup *cleanups;
10555
10556   /* Try to find first .dwp for the binary file before any symbolic links
10557      resolving.  */
10558   dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10559   cleanups = make_cleanup (xfree, dwp_name);
10560
10561   dbfd = open_dwp_file (dwp_name);
10562   if (dbfd == NULL
10563       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10564     {
10565       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10566       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10567       make_cleanup (xfree, dwp_name);
10568       dbfd = open_dwp_file (dwp_name);
10569     }
10570
10571   if (dbfd == NULL)
10572     {
10573       if (dwarf2_read_debug)
10574         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10575       do_cleanups (cleanups);
10576       return NULL;
10577     }
10578   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10579   dwp_file->name = bfd_get_filename (dbfd);
10580   dwp_file->dbfd = dbfd;
10581   do_cleanups (cleanups);
10582
10583   /* +1: section 0 is unused */
10584   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10585   dwp_file->elf_sections =
10586     OBSTACK_CALLOC (&objfile->objfile_obstack,
10587                     dwp_file->num_sections, asection *);
10588
10589   bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
10590
10591   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10592
10593   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10594
10595   /* The DWP file version is stored in the hash table.  Oh well.  */
10596   if (dwp_file->cus->version != dwp_file->tus->version)
10597     {
10598       /* Technically speaking, we should try to limp along, but this is
10599          pretty bizarre.  We use pulongest here because that's the established
10600          portability solution (e.g, we cannot use %u for uint32_t).  */
10601       error (_("Dwarf Error: DWP file CU version %s doesn't match"
10602                " TU version %s [in DWP file %s]"),
10603              pulongest (dwp_file->cus->version),
10604              pulongest (dwp_file->tus->version), dwp_name);
10605     }
10606   dwp_file->version = dwp_file->cus->version;
10607
10608   if (dwp_file->version == 2)
10609     bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10610
10611   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10612   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10613
10614   if (dwarf2_read_debug)
10615     {
10616       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10617       fprintf_unfiltered (gdb_stdlog,
10618                           "    %s CUs, %s TUs\n",
10619                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10620                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10621     }
10622
10623   return dwp_file;
10624 }
10625
10626 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10627
10628 static struct dwp_file *
10629 get_dwp_file (void)
10630 {
10631   if (! dwarf2_per_objfile->dwp_checked)
10632     {
10633       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10634       dwarf2_per_objfile->dwp_checked = 1;
10635     }
10636   return dwarf2_per_objfile->dwp_file;
10637 }
10638
10639 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10640    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10641    or in the DWP file for the objfile, referenced by THIS_UNIT.
10642    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10643    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10644
10645    This is called, for example, when wanting to read a variable with a
10646    complex location.  Therefore we don't want to do file i/o for every call.
10647    Therefore we don't want to look for a DWO file on every call.
10648    Therefore we first see if we've already seen SIGNATURE in a DWP file,
10649    then we check if we've already seen DWO_NAME, and only THEN do we check
10650    for a DWO file.
10651
10652    The result is a pointer to the dwo_unit object or NULL if we didn't find it
10653    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
10654
10655 static struct dwo_unit *
10656 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10657                  const char *dwo_name, const char *comp_dir,
10658                  ULONGEST signature, int is_debug_types)
10659 {
10660   struct objfile *objfile = dwarf2_per_objfile->objfile;
10661   const char *kind = is_debug_types ? "TU" : "CU";
10662   void **dwo_file_slot;
10663   struct dwo_file *dwo_file;
10664   struct dwp_file *dwp_file;
10665
10666   /* First see if there's a DWP file.
10667      If we have a DWP file but didn't find the DWO inside it, don't
10668      look for the original DWO file.  It makes gdb behave differently
10669      depending on whether one is debugging in the build tree.  */
10670
10671   dwp_file = get_dwp_file ();
10672   if (dwp_file != NULL)
10673     {
10674       const struct dwp_hash_table *dwp_htab =
10675         is_debug_types ? dwp_file->tus : dwp_file->cus;
10676
10677       if (dwp_htab != NULL)
10678         {
10679           struct dwo_unit *dwo_cutu =
10680             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10681                                     signature, is_debug_types);
10682
10683           if (dwo_cutu != NULL)
10684             {
10685               if (dwarf2_read_debug)
10686                 {
10687                   fprintf_unfiltered (gdb_stdlog,
10688                                       "Virtual DWO %s %s found: @%s\n",
10689                                       kind, hex_string (signature),
10690                                       host_address_to_string (dwo_cutu));
10691                 }
10692               return dwo_cutu;
10693             }
10694         }
10695     }
10696   else
10697     {
10698       /* No DWP file, look for the DWO file.  */
10699
10700       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10701       if (*dwo_file_slot == NULL)
10702         {
10703           /* Read in the file and build a table of the CUs/TUs it contains.  */
10704           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
10705         }
10706       /* NOTE: This will be NULL if unable to open the file.  */
10707       dwo_file = *dwo_file_slot;
10708
10709       if (dwo_file != NULL)
10710         {
10711           struct dwo_unit *dwo_cutu = NULL;
10712
10713           if (is_debug_types && dwo_file->tus)
10714             {
10715               struct dwo_unit find_dwo_cutu;
10716
10717               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10718               find_dwo_cutu.signature = signature;
10719               dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10720             }
10721           else if (!is_debug_types && dwo_file->cu)
10722             {
10723               if (signature == dwo_file->cu->signature)
10724                 dwo_cutu = dwo_file->cu;
10725             }
10726
10727           if (dwo_cutu != NULL)
10728             {
10729               if (dwarf2_read_debug)
10730                 {
10731                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10732                                       kind, dwo_name, hex_string (signature),
10733                                       host_address_to_string (dwo_cutu));
10734                 }
10735               return dwo_cutu;
10736             }
10737         }
10738     }
10739
10740   /* We didn't find it.  This could mean a dwo_id mismatch, or
10741      someone deleted the DWO/DWP file, or the search path isn't set up
10742      correctly to find the file.  */
10743
10744   if (dwarf2_read_debug)
10745     {
10746       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
10747                           kind, dwo_name, hex_string (signature));
10748     }
10749
10750   /* This is a warning and not a complaint because it can be caused by
10751      pilot error (e.g., user accidentally deleting the DWO).  */
10752   {
10753     /* Print the name of the DWP file if we looked there, helps the user
10754        better diagnose the problem.  */
10755     char *dwp_text = NULL;
10756     struct cleanup *cleanups;
10757
10758     if (dwp_file != NULL)
10759       dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
10760     cleanups = make_cleanup (xfree, dwp_text);
10761
10762     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
10763                " [in module %s]"),
10764              kind, dwo_name, hex_string (signature),
10765              dwp_text != NULL ? dwp_text : "",
10766              this_unit->is_debug_types ? "TU" : "CU",
10767              this_unit->offset.sect_off, objfile_name (objfile));
10768
10769     do_cleanups (cleanups);
10770   }
10771   return NULL;
10772 }
10773
10774 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
10775    See lookup_dwo_cutu_unit for details.  */
10776
10777 static struct dwo_unit *
10778 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
10779                       const char *dwo_name, const char *comp_dir,
10780                       ULONGEST signature)
10781 {
10782   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
10783 }
10784
10785 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
10786    See lookup_dwo_cutu_unit for details.  */
10787
10788 static struct dwo_unit *
10789 lookup_dwo_type_unit (struct signatured_type *this_tu,
10790                       const char *dwo_name, const char *comp_dir)
10791 {
10792   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
10793 }
10794
10795 /* Traversal function for queue_and_load_all_dwo_tus.  */
10796
10797 static int
10798 queue_and_load_dwo_tu (void **slot, void *info)
10799 {
10800   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
10801   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
10802   ULONGEST signature = dwo_unit->signature;
10803   struct signatured_type *sig_type =
10804     lookup_dwo_signatured_type (per_cu->cu, signature);
10805
10806   if (sig_type != NULL)
10807     {
10808       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
10809
10810       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
10811          a real dependency of PER_CU on SIG_TYPE.  That is detected later
10812          while processing PER_CU.  */
10813       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
10814         load_full_type_unit (sig_cu);
10815       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
10816     }
10817
10818   return 1;
10819 }
10820
10821 /* Queue all TUs contained in the DWO of PER_CU to be read in.
10822    The DWO may have the only definition of the type, though it may not be
10823    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
10824    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
10825
10826 static void
10827 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
10828 {
10829   struct dwo_unit *dwo_unit;
10830   struct dwo_file *dwo_file;
10831
10832   gdb_assert (!per_cu->is_debug_types);
10833   gdb_assert (get_dwp_file () == NULL);
10834   gdb_assert (per_cu->cu != NULL);
10835
10836   dwo_unit = per_cu->cu->dwo_unit;
10837   gdb_assert (dwo_unit != NULL);
10838
10839   dwo_file = dwo_unit->dwo_file;
10840   if (dwo_file->tus != NULL)
10841     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
10842 }
10843
10844 /* Free all resources associated with DWO_FILE.
10845    Close the DWO file and munmap the sections.
10846    All memory should be on the objfile obstack.  */
10847
10848 static void
10849 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
10850 {
10851   int ix;
10852   struct dwarf2_section_info *section;
10853
10854   /* Note: dbfd is NULL for virtual DWO files.  */
10855   gdb_bfd_unref (dwo_file->dbfd);
10856
10857   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
10858 }
10859
10860 /* Wrapper for free_dwo_file for use in cleanups.  */
10861
10862 static void
10863 free_dwo_file_cleanup (void *arg)
10864 {
10865   struct dwo_file *dwo_file = (struct dwo_file *) arg;
10866   struct objfile *objfile = dwarf2_per_objfile->objfile;
10867
10868   free_dwo_file (dwo_file, objfile);
10869 }
10870
10871 /* Traversal function for free_dwo_files.  */
10872
10873 static int
10874 free_dwo_file_from_slot (void **slot, void *info)
10875 {
10876   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
10877   struct objfile *objfile = (struct objfile *) info;
10878
10879   free_dwo_file (dwo_file, objfile);
10880
10881   return 1;
10882 }
10883
10884 /* Free all resources associated with DWO_FILES.  */
10885
10886 static void
10887 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
10888 {
10889   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
10890 }
10891 \f
10892 /* Read in various DIEs.  */
10893
10894 /* qsort helper for inherit_abstract_dies.  */
10895
10896 static int
10897 unsigned_int_compar (const void *ap, const void *bp)
10898 {
10899   unsigned int a = *(unsigned int *) ap;
10900   unsigned int b = *(unsigned int *) bp;
10901
10902   return (a > b) - (b > a);
10903 }
10904
10905 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
10906    Inherit only the children of the DW_AT_abstract_origin DIE not being
10907    already referenced by DW_AT_abstract_origin from the children of the
10908    current DIE.  */
10909
10910 static void
10911 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
10912 {
10913   struct die_info *child_die;
10914   unsigned die_children_count;
10915   /* CU offsets which were referenced by children of the current DIE.  */
10916   sect_offset *offsets;
10917   sect_offset *offsets_end, *offsetp;
10918   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
10919   struct die_info *origin_die;
10920   /* Iterator of the ORIGIN_DIE children.  */
10921   struct die_info *origin_child_die;
10922   struct cleanup *cleanups;
10923   struct attribute *attr;
10924   struct dwarf2_cu *origin_cu;
10925   struct pending **origin_previous_list_in_scope;
10926
10927   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
10928   if (!attr)
10929     return;
10930
10931   /* Note that following die references may follow to a die in a
10932      different cu.  */
10933
10934   origin_cu = cu;
10935   origin_die = follow_die_ref (die, attr, &origin_cu);
10936
10937   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
10938      symbols in.  */
10939   origin_previous_list_in_scope = origin_cu->list_in_scope;
10940   origin_cu->list_in_scope = cu->list_in_scope;
10941
10942   if (die->tag != origin_die->tag
10943       && !(die->tag == DW_TAG_inlined_subroutine
10944            && origin_die->tag == DW_TAG_subprogram))
10945     complaint (&symfile_complaints,
10946                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
10947                die->offset.sect_off, origin_die->offset.sect_off);
10948
10949   child_die = die->child;
10950   die_children_count = 0;
10951   while (child_die && child_die->tag)
10952     {
10953       child_die = sibling_die (child_die);
10954       die_children_count++;
10955     }
10956   offsets = xmalloc (sizeof (*offsets) * die_children_count);
10957   cleanups = make_cleanup (xfree, offsets);
10958
10959   offsets_end = offsets;
10960   child_die = die->child;
10961   while (child_die && child_die->tag)
10962     {
10963       /* For each CHILD_DIE, find the corresponding child of
10964          ORIGIN_DIE.  If there is more than one layer of
10965          DW_AT_abstract_origin, follow them all; there shouldn't be,
10966          but GCC versions at least through 4.4 generate this (GCC PR
10967          40573).  */
10968       struct die_info *child_origin_die = child_die;
10969       struct dwarf2_cu *child_origin_cu = cu;
10970
10971       while (1)
10972         {
10973           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
10974                               child_origin_cu);
10975           if (attr == NULL)
10976             break;
10977           child_origin_die = follow_die_ref (child_origin_die, attr,
10978                                              &child_origin_cu);
10979         }
10980
10981       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
10982          counterpart may exist.  */
10983       if (child_origin_die != child_die)
10984         {
10985           if (child_die->tag != child_origin_die->tag
10986               && !(child_die->tag == DW_TAG_inlined_subroutine
10987                    && child_origin_die->tag == DW_TAG_subprogram))
10988             complaint (&symfile_complaints,
10989                        _("Child DIE 0x%x and its abstract origin 0x%x have "
10990                          "different tags"), child_die->offset.sect_off,
10991                        child_origin_die->offset.sect_off);
10992           if (child_origin_die->parent != origin_die)
10993             complaint (&symfile_complaints,
10994                        _("Child DIE 0x%x and its abstract origin 0x%x have "
10995                          "different parents"), child_die->offset.sect_off,
10996                        child_origin_die->offset.sect_off);
10997           else
10998             *offsets_end++ = child_origin_die->offset;
10999         }
11000       child_die = sibling_die (child_die);
11001     }
11002   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11003          unsigned_int_compar);
11004   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
11005     if (offsetp[-1].sect_off == offsetp->sect_off)
11006       complaint (&symfile_complaints,
11007                  _("Multiple children of DIE 0x%x refer "
11008                    "to DIE 0x%x as their abstract origin"),
11009                  die->offset.sect_off, offsetp->sect_off);
11010
11011   offsetp = offsets;
11012   origin_child_die = origin_die->child;
11013   while (origin_child_die && origin_child_die->tag)
11014     {
11015       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
11016       while (offsetp < offsets_end
11017              && offsetp->sect_off < origin_child_die->offset.sect_off)
11018         offsetp++;
11019       if (offsetp >= offsets_end
11020           || offsetp->sect_off > origin_child_die->offset.sect_off)
11021         {
11022           /* Found that ORIGIN_CHILD_DIE is really not referenced.
11023              Check whether we're already processing ORIGIN_CHILD_DIE.
11024              This can happen with mutually referenced abstract_origins.
11025              PR 16581.  */
11026           if (!origin_child_die->in_process)
11027             process_die (origin_child_die, origin_cu);
11028         }
11029       origin_child_die = sibling_die (origin_child_die);
11030     }
11031   origin_cu->list_in_scope = origin_previous_list_in_scope;
11032
11033   do_cleanups (cleanups);
11034 }
11035
11036 static void
11037 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
11038 {
11039   struct objfile *objfile = cu->objfile;
11040   struct context_stack *new;
11041   CORE_ADDR lowpc;
11042   CORE_ADDR highpc;
11043   struct die_info *child_die;
11044   struct attribute *attr, *call_line, *call_file;
11045   const char *name;
11046   CORE_ADDR baseaddr;
11047   struct block *block;
11048   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
11049   VEC (symbolp) *template_args = NULL;
11050   struct template_symbol *templ_func = NULL;
11051
11052   if (inlined_func)
11053     {
11054       /* If we do not have call site information, we can't show the
11055          caller of this inlined function.  That's too confusing, so
11056          only use the scope for local variables.  */
11057       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11058       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11059       if (call_line == NULL || call_file == NULL)
11060         {
11061           read_lexical_block_scope (die, cu);
11062           return;
11063         }
11064     }
11065
11066   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11067
11068   name = dwarf2_name (die, cu);
11069
11070   /* Ignore functions with missing or empty names.  These are actually
11071      illegal according to the DWARF standard.  */
11072   if (name == NULL)
11073     {
11074       complaint (&symfile_complaints,
11075                  _("missing name for subprogram DIE at %d"),
11076                  die->offset.sect_off);
11077       return;
11078     }
11079
11080   /* Ignore functions with missing or invalid low and high pc attributes.  */
11081   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11082     {
11083       attr = dwarf2_attr (die, DW_AT_external, cu);
11084       if (!attr || !DW_UNSND (attr))
11085         complaint (&symfile_complaints,
11086                    _("cannot get low and high bounds "
11087                      "for subprogram DIE at %d"),
11088                    die->offset.sect_off);
11089       return;
11090     }
11091
11092   lowpc += baseaddr;
11093   highpc += baseaddr;
11094
11095   /* If we have any template arguments, then we must allocate a
11096      different sort of symbol.  */
11097   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11098     {
11099       if (child_die->tag == DW_TAG_template_type_param
11100           || child_die->tag == DW_TAG_template_value_param)
11101         {
11102           templ_func = allocate_template_symbol (objfile);
11103           templ_func->base.is_cplus_template_function = 1;
11104           break;
11105         }
11106     }
11107
11108   new = push_context (0, lowpc);
11109   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
11110                                (struct symbol *) templ_func);
11111
11112   /* If there is a location expression for DW_AT_frame_base, record
11113      it.  */
11114   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11115   if (attr)
11116     dwarf2_symbol_mark_computed (attr, new->name, cu, 1);
11117
11118   cu->list_in_scope = &local_symbols;
11119
11120   if (die->child != NULL)
11121     {
11122       child_die = die->child;
11123       while (child_die && child_die->tag)
11124         {
11125           if (child_die->tag == DW_TAG_template_type_param
11126               || child_die->tag == DW_TAG_template_value_param)
11127             {
11128               struct symbol *arg = new_symbol (child_die, NULL, cu);
11129
11130               if (arg != NULL)
11131                 VEC_safe_push (symbolp, template_args, arg);
11132             }
11133           else
11134             process_die (child_die, cu);
11135           child_die = sibling_die (child_die);
11136         }
11137     }
11138
11139   inherit_abstract_dies (die, cu);
11140
11141   /* If we have a DW_AT_specification, we might need to import using
11142      directives from the context of the specification DIE.  See the
11143      comment in determine_prefix.  */
11144   if (cu->language == language_cplus
11145       && dwarf2_attr (die, DW_AT_specification, cu))
11146     {
11147       struct dwarf2_cu *spec_cu = cu;
11148       struct die_info *spec_die = die_specification (die, &spec_cu);
11149
11150       while (spec_die)
11151         {
11152           child_die = spec_die->child;
11153           while (child_die && child_die->tag)
11154             {
11155               if (child_die->tag == DW_TAG_imported_module)
11156                 process_die (child_die, spec_cu);
11157               child_die = sibling_die (child_die);
11158             }
11159
11160           /* In some cases, GCC generates specification DIEs that
11161              themselves contain DW_AT_specification attributes.  */
11162           spec_die = die_specification (spec_die, &spec_cu);
11163         }
11164     }
11165
11166   new = pop_context ();
11167   /* Make a block for the local symbols within.  */
11168   block = finish_block (new->name, &local_symbols, new->old_blocks,
11169                         lowpc, highpc, objfile);
11170
11171   /* For C++, set the block's scope.  */
11172   if ((cu->language == language_cplus || cu->language == language_fortran)
11173       && cu->processing_has_namespace_info)
11174     block_set_scope (block, determine_prefix (die, cu),
11175                      &objfile->objfile_obstack);
11176
11177   /* If we have address ranges, record them.  */
11178   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11179
11180   /* Attach template arguments to function.  */
11181   if (! VEC_empty (symbolp, template_args))
11182     {
11183       gdb_assert (templ_func != NULL);
11184
11185       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11186       templ_func->template_arguments
11187         = obstack_alloc (&objfile->objfile_obstack,
11188                          (templ_func->n_template_arguments
11189                           * sizeof (struct symbol *)));
11190       memcpy (templ_func->template_arguments,
11191               VEC_address (symbolp, template_args),
11192               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11193       VEC_free (symbolp, template_args);
11194     }
11195
11196   /* In C++, we can have functions nested inside functions (e.g., when
11197      a function declares a class that has methods).  This means that
11198      when we finish processing a function scope, we may need to go
11199      back to building a containing block's symbol lists.  */
11200   local_symbols = new->locals;
11201   using_directives = new->using_directives;
11202
11203   /* If we've finished processing a top-level function, subsequent
11204      symbols go in the file symbol list.  */
11205   if (outermost_context_p ())
11206     cu->list_in_scope = &file_symbols;
11207 }
11208
11209 /* Process all the DIES contained within a lexical block scope.  Start
11210    a new scope, process the dies, and then close the scope.  */
11211
11212 static void
11213 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11214 {
11215   struct objfile *objfile = cu->objfile;
11216   struct context_stack *new;
11217   CORE_ADDR lowpc, highpc;
11218   struct die_info *child_die;
11219   CORE_ADDR baseaddr;
11220
11221   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11222
11223   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11224   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11225      as multiple lexical blocks?  Handling children in a sane way would
11226      be nasty.  Might be easier to properly extend generic blocks to
11227      describe ranges.  */
11228   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11229     return;
11230   lowpc += baseaddr;
11231   highpc += baseaddr;
11232
11233   push_context (0, lowpc);
11234   if (die->child != NULL)
11235     {
11236       child_die = die->child;
11237       while (child_die && child_die->tag)
11238         {
11239           process_die (child_die, cu);
11240           child_die = sibling_die (child_die);
11241         }
11242     }
11243   new = pop_context ();
11244
11245   if (local_symbols != NULL || using_directives != NULL)
11246     {
11247       struct block *block
11248         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
11249                         highpc, objfile);
11250
11251       /* Note that recording ranges after traversing children, as we
11252          do here, means that recording a parent's ranges entails
11253          walking across all its children's ranges as they appear in
11254          the address map, which is quadratic behavior.
11255
11256          It would be nicer to record the parent's ranges before
11257          traversing its children, simply overriding whatever you find
11258          there.  But since we don't even decide whether to create a
11259          block until after we've traversed its children, that's hard
11260          to do.  */
11261       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11262     }
11263   local_symbols = new->locals;
11264   using_directives = new->using_directives;
11265 }
11266
11267 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
11268
11269 static void
11270 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11271 {
11272   struct objfile *objfile = cu->objfile;
11273   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11274   CORE_ADDR pc, baseaddr;
11275   struct attribute *attr;
11276   struct call_site *call_site, call_site_local;
11277   void **slot;
11278   int nparams;
11279   struct die_info *child_die;
11280
11281   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11282
11283   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11284   if (!attr)
11285     {
11286       complaint (&symfile_complaints,
11287                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11288                    "DIE 0x%x [in module %s]"),
11289                  die->offset.sect_off, objfile_name (objfile));
11290       return;
11291     }
11292   pc = attr_value_as_address (attr) + baseaddr;
11293
11294   if (cu->call_site_htab == NULL)
11295     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11296                                                NULL, &objfile->objfile_obstack,
11297                                                hashtab_obstack_allocate, NULL);
11298   call_site_local.pc = pc;
11299   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11300   if (*slot != NULL)
11301     {
11302       complaint (&symfile_complaints,
11303                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
11304                    "DIE 0x%x [in module %s]"),
11305                  paddress (gdbarch, pc), die->offset.sect_off,
11306                  objfile_name (objfile));
11307       return;
11308     }
11309
11310   /* Count parameters at the caller.  */
11311
11312   nparams = 0;
11313   for (child_die = die->child; child_die && child_die->tag;
11314        child_die = sibling_die (child_die))
11315     {
11316       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11317         {
11318           complaint (&symfile_complaints,
11319                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11320                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11321                      child_die->tag, child_die->offset.sect_off,
11322                      objfile_name (objfile));
11323           continue;
11324         }
11325
11326       nparams++;
11327     }
11328
11329   call_site = obstack_alloc (&objfile->objfile_obstack,
11330                              (sizeof (*call_site)
11331                               + (sizeof (*call_site->parameter)
11332                                  * (nparams - 1))));
11333   *slot = call_site;
11334   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11335   call_site->pc = pc;
11336
11337   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11338     {
11339       struct die_info *func_die;
11340
11341       /* Skip also over DW_TAG_inlined_subroutine.  */
11342       for (func_die = die->parent;
11343            func_die && func_die->tag != DW_TAG_subprogram
11344            && func_die->tag != DW_TAG_subroutine_type;
11345            func_die = func_die->parent);
11346
11347       /* DW_AT_GNU_all_call_sites is a superset
11348          of DW_AT_GNU_all_tail_call_sites.  */
11349       if (func_die
11350           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11351           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11352         {
11353           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11354              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11355              both the initial caller containing the real return address PC and
11356              the final callee containing the current PC of a chain of tail
11357              calls do not need to have the tail call list complete.  But any
11358              function candidate for a virtual tail call frame searched via
11359              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11360              determined unambiguously.  */
11361         }
11362       else
11363         {
11364           struct type *func_type = NULL;
11365
11366           if (func_die)
11367             func_type = get_die_type (func_die, cu);
11368           if (func_type != NULL)
11369             {
11370               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11371
11372               /* Enlist this call site to the function.  */
11373               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11374               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11375             }
11376           else
11377             complaint (&symfile_complaints,
11378                        _("Cannot find function owning DW_TAG_GNU_call_site "
11379                          "DIE 0x%x [in module %s]"),
11380                        die->offset.sect_off, objfile_name (objfile));
11381         }
11382     }
11383
11384   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11385   if (attr == NULL)
11386     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11387   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11388   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11389     /* Keep NULL DWARF_BLOCK.  */;
11390   else if (attr_form_is_block (attr))
11391     {
11392       struct dwarf2_locexpr_baton *dlbaton;
11393
11394       dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11395       dlbaton->data = DW_BLOCK (attr)->data;
11396       dlbaton->size = DW_BLOCK (attr)->size;
11397       dlbaton->per_cu = cu->per_cu;
11398
11399       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11400     }
11401   else if (attr_form_is_ref (attr))
11402     {
11403       struct dwarf2_cu *target_cu = cu;
11404       struct die_info *target_die;
11405
11406       target_die = follow_die_ref (die, attr, &target_cu);
11407       gdb_assert (target_cu->objfile == objfile);
11408       if (die_is_declaration (target_die, target_cu))
11409         {
11410           const char *target_physname = NULL;
11411           struct attribute *target_attr;
11412
11413           /* Prefer the mangled name; otherwise compute the demangled one.  */
11414           target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11415           if (target_attr == NULL)
11416             target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11417                                        target_cu);
11418           if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11419             target_physname = DW_STRING (target_attr);
11420           else
11421             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11422           if (target_physname == NULL)
11423             complaint (&symfile_complaints,
11424                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11425                          "physname, for referencing DIE 0x%x [in module %s]"),
11426                        die->offset.sect_off, objfile_name (objfile));
11427           else
11428             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11429         }
11430       else
11431         {
11432           CORE_ADDR lowpc;
11433
11434           /* DW_AT_entry_pc should be preferred.  */
11435           if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11436             complaint (&symfile_complaints,
11437                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11438                          "low pc, for referencing DIE 0x%x [in module %s]"),
11439                        die->offset.sect_off, objfile_name (objfile));
11440           else
11441             SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
11442         }
11443     }
11444   else
11445     complaint (&symfile_complaints,
11446                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11447                  "block nor reference, for DIE 0x%x [in module %s]"),
11448                die->offset.sect_off, objfile_name (objfile));
11449
11450   call_site->per_cu = cu->per_cu;
11451
11452   for (child_die = die->child;
11453        child_die && child_die->tag;
11454        child_die = sibling_die (child_die))
11455     {
11456       struct call_site_parameter *parameter;
11457       struct attribute *loc, *origin;
11458
11459       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11460         {
11461           /* Already printed the complaint above.  */
11462           continue;
11463         }
11464
11465       gdb_assert (call_site->parameter_count < nparams);
11466       parameter = &call_site->parameter[call_site->parameter_count];
11467
11468       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11469          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11470          register is contained in DW_AT_GNU_call_site_value.  */
11471
11472       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11473       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11474       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11475         {
11476           sect_offset offset;
11477
11478           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11479           offset = dwarf2_get_ref_die_offset (origin);
11480           if (!offset_in_cu_p (&cu->header, offset))
11481             {
11482               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11483                  binding can be done only inside one CU.  Such referenced DIE
11484                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11485               complaint (&symfile_complaints,
11486                          _("DW_AT_abstract_origin offset is not in CU for "
11487                            "DW_TAG_GNU_call_site child DIE 0x%x "
11488                            "[in module %s]"),
11489                          child_die->offset.sect_off, objfile_name (objfile));
11490               continue;
11491             }
11492           parameter->u.param_offset.cu_off = (offset.sect_off
11493                                               - cu->header.offset.sect_off);
11494         }
11495       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11496         {
11497           complaint (&symfile_complaints,
11498                      _("No DW_FORM_block* DW_AT_location for "
11499                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11500                      child_die->offset.sect_off, objfile_name (objfile));
11501           continue;
11502         }
11503       else
11504         {
11505           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11506             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11507           if (parameter->u.dwarf_reg != -1)
11508             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11509           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11510                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11511                                              &parameter->u.fb_offset))
11512             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11513           else
11514             {
11515               complaint (&symfile_complaints,
11516                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11517                            "for DW_FORM_block* DW_AT_location is supported for "
11518                            "DW_TAG_GNU_call_site child DIE 0x%x "
11519                            "[in module %s]"),
11520                          child_die->offset.sect_off, objfile_name (objfile));
11521               continue;
11522             }
11523         }
11524
11525       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11526       if (!attr_form_is_block (attr))
11527         {
11528           complaint (&symfile_complaints,
11529                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11530                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11531                      child_die->offset.sect_off, objfile_name (objfile));
11532           continue;
11533         }
11534       parameter->value = DW_BLOCK (attr)->data;
11535       parameter->value_size = DW_BLOCK (attr)->size;
11536
11537       /* Parameters are not pre-cleared by memset above.  */
11538       parameter->data_value = NULL;
11539       parameter->data_value_size = 0;
11540       call_site->parameter_count++;
11541
11542       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11543       if (attr)
11544         {
11545           if (!attr_form_is_block (attr))
11546             complaint (&symfile_complaints,
11547                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11548                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11549                        child_die->offset.sect_off, objfile_name (objfile));
11550           else
11551             {
11552               parameter->data_value = DW_BLOCK (attr)->data;
11553               parameter->data_value_size = DW_BLOCK (attr)->size;
11554             }
11555         }
11556     }
11557 }
11558
11559 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
11560    Return 1 if the attributes are present and valid, otherwise, return 0.
11561    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
11562
11563 static int
11564 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
11565                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
11566                     struct partial_symtab *ranges_pst)
11567 {
11568   struct objfile *objfile = cu->objfile;
11569   struct comp_unit_head *cu_header = &cu->header;
11570   bfd *obfd = objfile->obfd;
11571   unsigned int addr_size = cu_header->addr_size;
11572   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11573   /* Base address selection entry.  */
11574   CORE_ADDR base;
11575   int found_base;
11576   unsigned int dummy;
11577   const gdb_byte *buffer;
11578   CORE_ADDR marker;
11579   int low_set;
11580   CORE_ADDR low = 0;
11581   CORE_ADDR high = 0;
11582   CORE_ADDR baseaddr;
11583
11584   found_base = cu->base_known;
11585   base = cu->base_address;
11586
11587   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11588   if (offset >= dwarf2_per_objfile->ranges.size)
11589     {
11590       complaint (&symfile_complaints,
11591                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
11592                  offset);
11593       return 0;
11594     }
11595   buffer = dwarf2_per_objfile->ranges.buffer + offset;
11596
11597   /* Read in the largest possible address.  */
11598   marker = read_address (obfd, buffer, cu, &dummy);
11599   if ((marker & mask) == mask)
11600     {
11601       /* If we found the largest possible address, then
11602          read the base address.  */
11603       base = read_address (obfd, buffer + addr_size, cu, &dummy);
11604       buffer += 2 * addr_size;
11605       offset += 2 * addr_size;
11606       found_base = 1;
11607     }
11608
11609   low_set = 0;
11610
11611   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11612
11613   while (1)
11614     {
11615       CORE_ADDR range_beginning, range_end;
11616
11617       range_beginning = read_address (obfd, buffer, cu, &dummy);
11618       buffer += addr_size;
11619       range_end = read_address (obfd, buffer, cu, &dummy);
11620       buffer += addr_size;
11621       offset += 2 * addr_size;
11622
11623       /* An end of list marker is a pair of zero addresses.  */
11624       if (range_beginning == 0 && range_end == 0)
11625         /* Found the end of list entry.  */
11626         break;
11627
11628       /* Each base address selection entry is a pair of 2 values.
11629          The first is the largest possible address, the second is
11630          the base address.  Check for a base address here.  */
11631       if ((range_beginning & mask) == mask)
11632         {
11633           /* If we found the largest possible address, then
11634              read the base address.  */
11635           base = read_address (obfd, buffer + addr_size, cu, &dummy);
11636           found_base = 1;
11637           continue;
11638         }
11639
11640       if (!found_base)
11641         {
11642           /* We have no valid base address for the ranges
11643              data.  */
11644           complaint (&symfile_complaints,
11645                      _("Invalid .debug_ranges data (no base address)"));
11646           return 0;
11647         }
11648
11649       if (range_beginning > range_end)
11650         {
11651           /* Inverted range entries are invalid.  */
11652           complaint (&symfile_complaints,
11653                      _("Invalid .debug_ranges data (inverted range)"));
11654           return 0;
11655         }
11656
11657       /* Empty range entries have no effect.  */
11658       if (range_beginning == range_end)
11659         continue;
11660
11661       range_beginning += base;
11662       range_end += base;
11663
11664       /* A not-uncommon case of bad debug info.
11665          Don't pollute the addrmap with bad data.  */
11666       if (range_beginning + baseaddr == 0
11667           && !dwarf2_per_objfile->has_section_at_zero)
11668         {
11669           complaint (&symfile_complaints,
11670                      _(".debug_ranges entry has start address of zero"
11671                        " [in module %s]"), objfile_name (objfile));
11672           continue;
11673         }
11674
11675       if (ranges_pst != NULL)
11676         addrmap_set_empty (objfile->psymtabs_addrmap,
11677                            range_beginning + baseaddr,
11678                            range_end - 1 + baseaddr,
11679                            ranges_pst);
11680
11681       /* FIXME: This is recording everything as a low-high
11682          segment of consecutive addresses.  We should have a
11683          data structure for discontiguous block ranges
11684          instead.  */
11685       if (! low_set)
11686         {
11687           low = range_beginning;
11688           high = range_end;
11689           low_set = 1;
11690         }
11691       else
11692         {
11693           if (range_beginning < low)
11694             low = range_beginning;
11695           if (range_end > high)
11696             high = range_end;
11697         }
11698     }
11699
11700   if (! low_set)
11701     /* If the first entry is an end-of-list marker, the range
11702        describes an empty scope, i.e. no instructions.  */
11703     return 0;
11704
11705   if (low_return)
11706     *low_return = low;
11707   if (high_return)
11708     *high_return = high;
11709   return 1;
11710 }
11711
11712 /* Get low and high pc attributes from a die.  Return 1 if the attributes
11713    are present and valid, otherwise, return 0.  Return -1 if the range is
11714    discontinuous, i.e. derived from DW_AT_ranges information.  */
11715
11716 static int
11717 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
11718                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
11719                       struct partial_symtab *pst)
11720 {
11721   struct attribute *attr;
11722   struct attribute *attr_high;
11723   CORE_ADDR low = 0;
11724   CORE_ADDR high = 0;
11725   int ret = 0;
11726
11727   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11728   if (attr_high)
11729     {
11730       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11731       if (attr)
11732         {
11733           low = attr_value_as_address (attr);
11734           high = attr_value_as_address (attr_high);
11735           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
11736             high += low;
11737         }
11738       else
11739         /* Found high w/o low attribute.  */
11740         return 0;
11741
11742       /* Found consecutive range of addresses.  */
11743       ret = 1;
11744     }
11745   else
11746     {
11747       attr = dwarf2_attr (die, DW_AT_ranges, cu);
11748       if (attr != NULL)
11749         {
11750           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11751              We take advantage of the fact that DW_AT_ranges does not appear
11752              in DW_TAG_compile_unit of DWO files.  */
11753           int need_ranges_base = die->tag != DW_TAG_compile_unit;
11754           unsigned int ranges_offset = (DW_UNSND (attr)
11755                                         + (need_ranges_base
11756                                            ? cu->ranges_base
11757                                            : 0));
11758
11759           /* Value of the DW_AT_ranges attribute is the offset in the
11760              .debug_ranges section.  */
11761           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
11762             return 0;
11763           /* Found discontinuous range of addresses.  */
11764           ret = -1;
11765         }
11766     }
11767
11768   /* read_partial_die has also the strict LOW < HIGH requirement.  */
11769   if (high <= low)
11770     return 0;
11771
11772   /* When using the GNU linker, .gnu.linkonce. sections are used to
11773      eliminate duplicate copies of functions and vtables and such.
11774      The linker will arbitrarily choose one and discard the others.
11775      The AT_*_pc values for such functions refer to local labels in
11776      these sections.  If the section from that file was discarded, the
11777      labels are not in the output, so the relocs get a value of 0.
11778      If this is a discarded function, mark the pc bounds as invalid,
11779      so that GDB will ignore it.  */
11780   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
11781     return 0;
11782
11783   *lowpc = low;
11784   if (highpc)
11785     *highpc = high;
11786   return ret;
11787 }
11788
11789 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
11790    its low and high PC addresses.  Do nothing if these addresses could not
11791    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
11792    and HIGHPC to the high address if greater than HIGHPC.  */
11793
11794 static void
11795 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
11796                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
11797                                  struct dwarf2_cu *cu)
11798 {
11799   CORE_ADDR low, high;
11800   struct die_info *child = die->child;
11801
11802   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
11803     {
11804       *lowpc = min (*lowpc, low);
11805       *highpc = max (*highpc, high);
11806     }
11807
11808   /* If the language does not allow nested subprograms (either inside
11809      subprograms or lexical blocks), we're done.  */
11810   if (cu->language != language_ada)
11811     return;
11812
11813   /* Check all the children of the given DIE.  If it contains nested
11814      subprograms, then check their pc bounds.  Likewise, we need to
11815      check lexical blocks as well, as they may also contain subprogram
11816      definitions.  */
11817   while (child && child->tag)
11818     {
11819       if (child->tag == DW_TAG_subprogram
11820           || child->tag == DW_TAG_lexical_block)
11821         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
11822       child = sibling_die (child);
11823     }
11824 }
11825
11826 /* Get the low and high pc's represented by the scope DIE, and store
11827    them in *LOWPC and *HIGHPC.  If the correct values can't be
11828    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
11829
11830 static void
11831 get_scope_pc_bounds (struct die_info *die,
11832                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
11833                      struct dwarf2_cu *cu)
11834 {
11835   CORE_ADDR best_low = (CORE_ADDR) -1;
11836   CORE_ADDR best_high = (CORE_ADDR) 0;
11837   CORE_ADDR current_low, current_high;
11838
11839   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
11840     {
11841       best_low = current_low;
11842       best_high = current_high;
11843     }
11844   else
11845     {
11846       struct die_info *child = die->child;
11847
11848       while (child && child->tag)
11849         {
11850           switch (child->tag) {
11851           case DW_TAG_subprogram:
11852             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
11853             break;
11854           case DW_TAG_namespace:
11855           case DW_TAG_module:
11856             /* FIXME: carlton/2004-01-16: Should we do this for
11857                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
11858                that current GCC's always emit the DIEs corresponding
11859                to definitions of methods of classes as children of a
11860                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
11861                the DIEs giving the declarations, which could be
11862                anywhere).  But I don't see any reason why the
11863                standards says that they have to be there.  */
11864             get_scope_pc_bounds (child, &current_low, &current_high, cu);
11865
11866             if (current_low != ((CORE_ADDR) -1))
11867               {
11868                 best_low = min (best_low, current_low);
11869                 best_high = max (best_high, current_high);
11870               }
11871             break;
11872           default:
11873             /* Ignore.  */
11874             break;
11875           }
11876
11877           child = sibling_die (child);
11878         }
11879     }
11880
11881   *lowpc = best_low;
11882   *highpc = best_high;
11883 }
11884
11885 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
11886    in DIE.  */
11887
11888 static void
11889 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
11890                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
11891 {
11892   struct objfile *objfile = cu->objfile;
11893   struct attribute *attr;
11894   struct attribute *attr_high;
11895
11896   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11897   if (attr_high)
11898     {
11899       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11900       if (attr)
11901         {
11902           CORE_ADDR low = attr_value_as_address (attr);
11903           CORE_ADDR high = attr_value_as_address (attr_high);
11904
11905           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
11906             high += low;
11907
11908           record_block_range (block, baseaddr + low, baseaddr + high - 1);
11909         }
11910     }
11911
11912   attr = dwarf2_attr (die, DW_AT_ranges, cu);
11913   if (attr)
11914     {
11915       bfd *obfd = objfile->obfd;
11916       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11917          We take advantage of the fact that DW_AT_ranges does not appear
11918          in DW_TAG_compile_unit of DWO files.  */
11919       int need_ranges_base = die->tag != DW_TAG_compile_unit;
11920
11921       /* The value of the DW_AT_ranges attribute is the offset of the
11922          address range list in the .debug_ranges section.  */
11923       unsigned long offset = (DW_UNSND (attr)
11924                               + (need_ranges_base ? cu->ranges_base : 0));
11925       const gdb_byte *buffer;
11926
11927       /* For some target architectures, but not others, the
11928          read_address function sign-extends the addresses it returns.
11929          To recognize base address selection entries, we need a
11930          mask.  */
11931       unsigned int addr_size = cu->header.addr_size;
11932       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11933
11934       /* The base address, to which the next pair is relative.  Note
11935          that this 'base' is a DWARF concept: most entries in a range
11936          list are relative, to reduce the number of relocs against the
11937          debugging information.  This is separate from this function's
11938          'baseaddr' argument, which GDB uses to relocate debugging
11939          information from a shared library based on the address at
11940          which the library was loaded.  */
11941       CORE_ADDR base = cu->base_address;
11942       int base_known = cu->base_known;
11943
11944       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11945       if (offset >= dwarf2_per_objfile->ranges.size)
11946         {
11947           complaint (&symfile_complaints,
11948                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
11949                      offset);
11950           return;
11951         }
11952       buffer = dwarf2_per_objfile->ranges.buffer + offset;
11953
11954       for (;;)
11955         {
11956           unsigned int bytes_read;
11957           CORE_ADDR start, end;
11958
11959           start = read_address (obfd, buffer, cu, &bytes_read);
11960           buffer += bytes_read;
11961           end = read_address (obfd, buffer, cu, &bytes_read);
11962           buffer += bytes_read;
11963
11964           /* Did we find the end of the range list?  */
11965           if (start == 0 && end == 0)
11966             break;
11967
11968           /* Did we find a base address selection entry?  */
11969           else if ((start & base_select_mask) == base_select_mask)
11970             {
11971               base = end;
11972               base_known = 1;
11973             }
11974
11975           /* We found an ordinary address range.  */
11976           else
11977             {
11978               if (!base_known)
11979                 {
11980                   complaint (&symfile_complaints,
11981                              _("Invalid .debug_ranges data "
11982                                "(no base address)"));
11983                   return;
11984                 }
11985
11986               if (start > end)
11987                 {
11988                   /* Inverted range entries are invalid.  */
11989                   complaint (&symfile_complaints,
11990                              _("Invalid .debug_ranges data "
11991                                "(inverted range)"));
11992                   return;
11993                 }
11994
11995               /* Empty range entries have no effect.  */
11996               if (start == end)
11997                 continue;
11998
11999               start += base + baseaddr;
12000               end += base + baseaddr;
12001
12002               /* A not-uncommon case of bad debug info.
12003                  Don't pollute the addrmap with bad data.  */
12004               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12005                 {
12006                   complaint (&symfile_complaints,
12007                              _(".debug_ranges entry has start address of zero"
12008                                " [in module %s]"), objfile_name (objfile));
12009                   continue;
12010                 }
12011
12012               record_block_range (block, start, end - 1);
12013             }
12014         }
12015     }
12016 }
12017
12018 /* Check whether the producer field indicates either of GCC < 4.6, or the
12019    Intel C/C++ compiler, and cache the result in CU.  */
12020
12021 static void
12022 check_producer (struct dwarf2_cu *cu)
12023 {
12024   const char *cs;
12025   int major, minor, release;
12026
12027   if (cu->producer == NULL)
12028     {
12029       /* For unknown compilers expect their behavior is DWARF version
12030          compliant.
12031
12032          GCC started to support .debug_types sections by -gdwarf-4 since
12033          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
12034          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12035          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12036          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
12037     }
12038   else if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) == 0)
12039     {
12040       /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
12041
12042       cs = &cu->producer[strlen ("GNU ")];
12043       while (*cs && !isdigit (*cs))
12044         cs++;
12045       if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
12046         {
12047           /* Not recognized as GCC.  */
12048         }
12049       else
12050         {
12051           cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12052           cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
12053         }
12054     }
12055   else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0)
12056     cu->producer_is_icc = 1;
12057   else
12058     {
12059       /* For other non-GCC compilers, expect their behavior is DWARF version
12060          compliant.  */
12061     }
12062
12063   cu->checked_producer = 1;
12064 }
12065
12066 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12067    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12068    during 4.6.0 experimental.  */
12069
12070 static int
12071 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12072 {
12073   if (!cu->checked_producer)
12074     check_producer (cu);
12075
12076   return cu->producer_is_gxx_lt_4_6;
12077 }
12078
12079 /* Return the default accessibility type if it is not overriden by
12080    DW_AT_accessibility.  */
12081
12082 static enum dwarf_access_attribute
12083 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12084 {
12085   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12086     {
12087       /* The default DWARF 2 accessibility for members is public, the default
12088          accessibility for inheritance is private.  */
12089
12090       if (die->tag != DW_TAG_inheritance)
12091         return DW_ACCESS_public;
12092       else
12093         return DW_ACCESS_private;
12094     }
12095   else
12096     {
12097       /* DWARF 3+ defines the default accessibility a different way.  The same
12098          rules apply now for DW_TAG_inheritance as for the members and it only
12099          depends on the container kind.  */
12100
12101       if (die->parent->tag == DW_TAG_class_type)
12102         return DW_ACCESS_private;
12103       else
12104         return DW_ACCESS_public;
12105     }
12106 }
12107
12108 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12109    offset.  If the attribute was not found return 0, otherwise return
12110    1.  If it was found but could not properly be handled, set *OFFSET
12111    to 0.  */
12112
12113 static int
12114 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12115                              LONGEST *offset)
12116 {
12117   struct attribute *attr;
12118
12119   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12120   if (attr != NULL)
12121     {
12122       *offset = 0;
12123
12124       /* Note that we do not check for a section offset first here.
12125          This is because DW_AT_data_member_location is new in DWARF 4,
12126          so if we see it, we can assume that a constant form is really
12127          a constant and not a section offset.  */
12128       if (attr_form_is_constant (attr))
12129         *offset = dwarf2_get_attr_constant_value (attr, 0);
12130       else if (attr_form_is_section_offset (attr))
12131         dwarf2_complex_location_expr_complaint ();
12132       else if (attr_form_is_block (attr))
12133         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12134       else
12135         dwarf2_complex_location_expr_complaint ();
12136
12137       return 1;
12138     }
12139
12140   return 0;
12141 }
12142
12143 /* Add an aggregate field to the field list.  */
12144
12145 static void
12146 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12147                   struct dwarf2_cu *cu)
12148 {
12149   struct objfile *objfile = cu->objfile;
12150   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12151   struct nextfield *new_field;
12152   struct attribute *attr;
12153   struct field *fp;
12154   const char *fieldname = "";
12155
12156   /* Allocate a new field list entry and link it in.  */
12157   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
12158   make_cleanup (xfree, new_field);
12159   memset (new_field, 0, sizeof (struct nextfield));
12160
12161   if (die->tag == DW_TAG_inheritance)
12162     {
12163       new_field->next = fip->baseclasses;
12164       fip->baseclasses = new_field;
12165     }
12166   else
12167     {
12168       new_field->next = fip->fields;
12169       fip->fields = new_field;
12170     }
12171   fip->nfields++;
12172
12173   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12174   if (attr)
12175     new_field->accessibility = DW_UNSND (attr);
12176   else
12177     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12178   if (new_field->accessibility != DW_ACCESS_public)
12179     fip->non_public_fields = 1;
12180
12181   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12182   if (attr)
12183     new_field->virtuality = DW_UNSND (attr);
12184   else
12185     new_field->virtuality = DW_VIRTUALITY_none;
12186
12187   fp = &new_field->field;
12188
12189   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12190     {
12191       LONGEST offset;
12192
12193       /* Data member other than a C++ static data member.  */
12194
12195       /* Get type of field.  */
12196       fp->type = die_type (die, cu);
12197
12198       SET_FIELD_BITPOS (*fp, 0);
12199
12200       /* Get bit size of field (zero if none).  */
12201       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12202       if (attr)
12203         {
12204           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12205         }
12206       else
12207         {
12208           FIELD_BITSIZE (*fp) = 0;
12209         }
12210
12211       /* Get bit offset of field.  */
12212       if (handle_data_member_location (die, cu, &offset))
12213         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12214       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12215       if (attr)
12216         {
12217           if (gdbarch_bits_big_endian (gdbarch))
12218             {
12219               /* For big endian bits, the DW_AT_bit_offset gives the
12220                  additional bit offset from the MSB of the containing
12221                  anonymous object to the MSB of the field.  We don't
12222                  have to do anything special since we don't need to
12223                  know the size of the anonymous object.  */
12224               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12225             }
12226           else
12227             {
12228               /* For little endian bits, compute the bit offset to the
12229                  MSB of the anonymous object, subtract off the number of
12230                  bits from the MSB of the field to the MSB of the
12231                  object, and then subtract off the number of bits of
12232                  the field itself.  The result is the bit offset of
12233                  the LSB of the field.  */
12234               int anonymous_size;
12235               int bit_offset = DW_UNSND (attr);
12236
12237               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12238               if (attr)
12239                 {
12240                   /* The size of the anonymous object containing
12241                      the bit field is explicit, so use the
12242                      indicated size (in bytes).  */
12243                   anonymous_size = DW_UNSND (attr);
12244                 }
12245               else
12246                 {
12247                   /* The size of the anonymous object containing
12248                      the bit field must be inferred from the type
12249                      attribute of the data member containing the
12250                      bit field.  */
12251                   anonymous_size = TYPE_LENGTH (fp->type);
12252                 }
12253               SET_FIELD_BITPOS (*fp,
12254                                 (FIELD_BITPOS (*fp)
12255                                  + anonymous_size * bits_per_byte
12256                                  - bit_offset - FIELD_BITSIZE (*fp)));
12257             }
12258         }
12259
12260       /* Get name of field.  */
12261       fieldname = dwarf2_name (die, cu);
12262       if (fieldname == NULL)
12263         fieldname = "";
12264
12265       /* The name is already allocated along with this objfile, so we don't
12266          need to duplicate it for the type.  */
12267       fp->name = fieldname;
12268
12269       /* Change accessibility for artificial fields (e.g. virtual table
12270          pointer or virtual base class pointer) to private.  */
12271       if (dwarf2_attr (die, DW_AT_artificial, cu))
12272         {
12273           FIELD_ARTIFICIAL (*fp) = 1;
12274           new_field->accessibility = DW_ACCESS_private;
12275           fip->non_public_fields = 1;
12276         }
12277     }
12278   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12279     {
12280       /* C++ static member.  */
12281
12282       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12283          is a declaration, but all versions of G++ as of this writing
12284          (so through at least 3.2.1) incorrectly generate
12285          DW_TAG_variable tags.  */
12286
12287       const char *physname;
12288
12289       /* Get name of field.  */
12290       fieldname = dwarf2_name (die, cu);
12291       if (fieldname == NULL)
12292         return;
12293
12294       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12295       if (attr
12296           /* Only create a symbol if this is an external value.
12297              new_symbol checks this and puts the value in the global symbol
12298              table, which we want.  If it is not external, new_symbol
12299              will try to put the value in cu->list_in_scope which is wrong.  */
12300           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12301         {
12302           /* A static const member, not much different than an enum as far as
12303              we're concerned, except that we can support more types.  */
12304           new_symbol (die, NULL, cu);
12305         }
12306
12307       /* Get physical name.  */
12308       physname = dwarf2_physname (fieldname, die, cu);
12309
12310       /* The name is already allocated along with this objfile, so we don't
12311          need to duplicate it for the type.  */
12312       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12313       FIELD_TYPE (*fp) = die_type (die, cu);
12314       FIELD_NAME (*fp) = fieldname;
12315     }
12316   else if (die->tag == DW_TAG_inheritance)
12317     {
12318       LONGEST offset;
12319
12320       /* C++ base class field.  */
12321       if (handle_data_member_location (die, cu, &offset))
12322         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12323       FIELD_BITSIZE (*fp) = 0;
12324       FIELD_TYPE (*fp) = die_type (die, cu);
12325       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12326       fip->nbaseclasses++;
12327     }
12328 }
12329
12330 /* Add a typedef defined in the scope of the FIP's class.  */
12331
12332 static void
12333 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12334                     struct dwarf2_cu *cu)
12335 {
12336   struct objfile *objfile = cu->objfile;
12337   struct typedef_field_list *new_field;
12338   struct attribute *attr;
12339   struct typedef_field *fp;
12340   char *fieldname = "";
12341
12342   /* Allocate a new field list entry and link it in.  */
12343   new_field = xzalloc (sizeof (*new_field));
12344   make_cleanup (xfree, new_field);
12345
12346   gdb_assert (die->tag == DW_TAG_typedef);
12347
12348   fp = &new_field->field;
12349
12350   /* Get name of field.  */
12351   fp->name = dwarf2_name (die, cu);
12352   if (fp->name == NULL)
12353     return;
12354
12355   fp->type = read_type_die (die, cu);
12356
12357   new_field->next = fip->typedef_field_list;
12358   fip->typedef_field_list = new_field;
12359   fip->typedef_field_list_count++;
12360 }
12361
12362 /* Create the vector of fields, and attach it to the type.  */
12363
12364 static void
12365 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12366                               struct dwarf2_cu *cu)
12367 {
12368   int nfields = fip->nfields;
12369
12370   /* Record the field count, allocate space for the array of fields,
12371      and create blank accessibility bitfields if necessary.  */
12372   TYPE_NFIELDS (type) = nfields;
12373   TYPE_FIELDS (type) = (struct field *)
12374     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12375   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12376
12377   if (fip->non_public_fields && cu->language != language_ada)
12378     {
12379       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12380
12381       TYPE_FIELD_PRIVATE_BITS (type) =
12382         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12383       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12384
12385       TYPE_FIELD_PROTECTED_BITS (type) =
12386         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12387       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12388
12389       TYPE_FIELD_IGNORE_BITS (type) =
12390         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12391       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12392     }
12393
12394   /* If the type has baseclasses, allocate and clear a bit vector for
12395      TYPE_FIELD_VIRTUAL_BITS.  */
12396   if (fip->nbaseclasses && cu->language != language_ada)
12397     {
12398       int num_bytes = B_BYTES (fip->nbaseclasses);
12399       unsigned char *pointer;
12400
12401       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12402       pointer = TYPE_ALLOC (type, num_bytes);
12403       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12404       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12405       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12406     }
12407
12408   /* Copy the saved-up fields into the field vector.  Start from the head of
12409      the list, adding to the tail of the field array, so that they end up in
12410      the same order in the array in which they were added to the list.  */
12411   while (nfields-- > 0)
12412     {
12413       struct nextfield *fieldp;
12414
12415       if (fip->fields)
12416         {
12417           fieldp = fip->fields;
12418           fip->fields = fieldp->next;
12419         }
12420       else
12421         {
12422           fieldp = fip->baseclasses;
12423           fip->baseclasses = fieldp->next;
12424         }
12425
12426       TYPE_FIELD (type, nfields) = fieldp->field;
12427       switch (fieldp->accessibility)
12428         {
12429         case DW_ACCESS_private:
12430           if (cu->language != language_ada)
12431             SET_TYPE_FIELD_PRIVATE (type, nfields);
12432           break;
12433
12434         case DW_ACCESS_protected:
12435           if (cu->language != language_ada)
12436             SET_TYPE_FIELD_PROTECTED (type, nfields);
12437           break;
12438
12439         case DW_ACCESS_public:
12440           break;
12441
12442         default:
12443           /* Unknown accessibility.  Complain and treat it as public.  */
12444           {
12445             complaint (&symfile_complaints, _("unsupported accessibility %d"),
12446                        fieldp->accessibility);
12447           }
12448           break;
12449         }
12450       if (nfields < fip->nbaseclasses)
12451         {
12452           switch (fieldp->virtuality)
12453             {
12454             case DW_VIRTUALITY_virtual:
12455             case DW_VIRTUALITY_pure_virtual:
12456               if (cu->language == language_ada)
12457                 error (_("unexpected virtuality in component of Ada type"));
12458               SET_TYPE_FIELD_VIRTUAL (type, nfields);
12459               break;
12460             }
12461         }
12462     }
12463 }
12464
12465 /* Return true if this member function is a constructor, false
12466    otherwise.  */
12467
12468 static int
12469 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12470 {
12471   const char *fieldname;
12472   const char *typename;
12473   int len;
12474
12475   if (die->parent == NULL)
12476     return 0;
12477
12478   if (die->parent->tag != DW_TAG_structure_type
12479       && die->parent->tag != DW_TAG_union_type
12480       && die->parent->tag != DW_TAG_class_type)
12481     return 0;
12482
12483   fieldname = dwarf2_name (die, cu);
12484   typename = dwarf2_name (die->parent, cu);
12485   if (fieldname == NULL || typename == NULL)
12486     return 0;
12487
12488   len = strlen (fieldname);
12489   return (strncmp (fieldname, typename, len) == 0
12490           && (typename[len] == '\0' || typename[len] == '<'));
12491 }
12492
12493 /* Add a member function to the proper fieldlist.  */
12494
12495 static void
12496 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
12497                       struct type *type, struct dwarf2_cu *cu)
12498 {
12499   struct objfile *objfile = cu->objfile;
12500   struct attribute *attr;
12501   struct fnfieldlist *flp;
12502   int i;
12503   struct fn_field *fnp;
12504   const char *fieldname;
12505   struct nextfnfield *new_fnfield;
12506   struct type *this_type;
12507   enum dwarf_access_attribute accessibility;
12508
12509   if (cu->language == language_ada)
12510     error (_("unexpected member function in Ada type"));
12511
12512   /* Get name of member function.  */
12513   fieldname = dwarf2_name (die, cu);
12514   if (fieldname == NULL)
12515     return;
12516
12517   /* Look up member function name in fieldlist.  */
12518   for (i = 0; i < fip->nfnfields; i++)
12519     {
12520       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
12521         break;
12522     }
12523
12524   /* Create new list element if necessary.  */
12525   if (i < fip->nfnfields)
12526     flp = &fip->fnfieldlists[i];
12527   else
12528     {
12529       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12530         {
12531           fip->fnfieldlists = (struct fnfieldlist *)
12532             xrealloc (fip->fnfieldlists,
12533                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
12534                       * sizeof (struct fnfieldlist));
12535           if (fip->nfnfields == 0)
12536             make_cleanup (free_current_contents, &fip->fnfieldlists);
12537         }
12538       flp = &fip->fnfieldlists[fip->nfnfields];
12539       flp->name = fieldname;
12540       flp->length = 0;
12541       flp->head = NULL;
12542       i = fip->nfnfields++;
12543     }
12544
12545   /* Create a new member function field and chain it to the field list
12546      entry.  */
12547   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
12548   make_cleanup (xfree, new_fnfield);
12549   memset (new_fnfield, 0, sizeof (struct nextfnfield));
12550   new_fnfield->next = flp->head;
12551   flp->head = new_fnfield;
12552   flp->length++;
12553
12554   /* Fill in the member function field info.  */
12555   fnp = &new_fnfield->fnfield;
12556
12557   /* Delay processing of the physname until later.  */
12558   if (cu->language == language_cplus || cu->language == language_java)
12559     {
12560       add_to_method_list (type, i, flp->length - 1, fieldname,
12561                           die, cu);
12562     }
12563   else
12564     {
12565       const char *physname = dwarf2_physname (fieldname, die, cu);
12566       fnp->physname = physname ? physname : "";
12567     }
12568
12569   fnp->type = alloc_type (objfile);
12570   this_type = read_type_die (die, cu);
12571   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
12572     {
12573       int nparams = TYPE_NFIELDS (this_type);
12574
12575       /* TYPE is the domain of this method, and THIS_TYPE is the type
12576            of the method itself (TYPE_CODE_METHOD).  */
12577       smash_to_method_type (fnp->type, type,
12578                             TYPE_TARGET_TYPE (this_type),
12579                             TYPE_FIELDS (this_type),
12580                             TYPE_NFIELDS (this_type),
12581                             TYPE_VARARGS (this_type));
12582
12583       /* Handle static member functions.
12584          Dwarf2 has no clean way to discern C++ static and non-static
12585          member functions.  G++ helps GDB by marking the first
12586          parameter for non-static member functions (which is the this
12587          pointer) as artificial.  We obtain this information from
12588          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
12589       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
12590         fnp->voffset = VOFFSET_STATIC;
12591     }
12592   else
12593     complaint (&symfile_complaints, _("member function type missing for '%s'"),
12594                dwarf2_full_name (fieldname, die, cu));
12595
12596   /* Get fcontext from DW_AT_containing_type if present.  */
12597   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12598     fnp->fcontext = die_containing_type (die, cu);
12599
12600   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12601      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
12602
12603   /* Get accessibility.  */
12604   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12605   if (attr)
12606     accessibility = DW_UNSND (attr);
12607   else
12608     accessibility = dwarf2_default_access_attribute (die, cu);
12609   switch (accessibility)
12610     {
12611     case DW_ACCESS_private:
12612       fnp->is_private = 1;
12613       break;
12614     case DW_ACCESS_protected:
12615       fnp->is_protected = 1;
12616       break;
12617     }
12618
12619   /* Check for artificial methods.  */
12620   attr = dwarf2_attr (die, DW_AT_artificial, cu);
12621   if (attr && DW_UNSND (attr) != 0)
12622     fnp->is_artificial = 1;
12623
12624   fnp->is_constructor = dwarf2_is_constructor (die, cu);
12625
12626   /* Get index in virtual function table if it is a virtual member
12627      function.  For older versions of GCC, this is an offset in the
12628      appropriate virtual table, as specified by DW_AT_containing_type.
12629      For everyone else, it is an expression to be evaluated relative
12630      to the object address.  */
12631
12632   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
12633   if (attr)
12634     {
12635       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
12636         {
12637           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12638             {
12639               /* Old-style GCC.  */
12640               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12641             }
12642           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12643                    || (DW_BLOCK (attr)->size > 1
12644                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12645                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12646             {
12647               struct dwarf_block blk;
12648               int offset;
12649
12650               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12651                         ? 1 : 2);
12652               blk.size = DW_BLOCK (attr)->size - offset;
12653               blk.data = DW_BLOCK (attr)->data + offset;
12654               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12655               if ((fnp->voffset % cu->header.addr_size) != 0)
12656                 dwarf2_complex_location_expr_complaint ();
12657               else
12658                 fnp->voffset /= cu->header.addr_size;
12659               fnp->voffset += 2;
12660             }
12661           else
12662             dwarf2_complex_location_expr_complaint ();
12663
12664           if (!fnp->fcontext)
12665             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12666         }
12667       else if (attr_form_is_section_offset (attr))
12668         {
12669           dwarf2_complex_location_expr_complaint ();
12670         }
12671       else
12672         {
12673           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12674                                                  fieldname);
12675         }
12676     }
12677   else
12678     {
12679       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12680       if (attr && DW_UNSND (attr))
12681         {
12682           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
12683           complaint (&symfile_complaints,
12684                      _("Member function \"%s\" (offset %d) is virtual "
12685                        "but the vtable offset is not specified"),
12686                      fieldname, die->offset.sect_off);
12687           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12688           TYPE_CPLUS_DYNAMIC (type) = 1;
12689         }
12690     }
12691 }
12692
12693 /* Create the vector of member function fields, and attach it to the type.  */
12694
12695 static void
12696 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
12697                                  struct dwarf2_cu *cu)
12698 {
12699   struct fnfieldlist *flp;
12700   int i;
12701
12702   if (cu->language == language_ada)
12703     error (_("unexpected member functions in Ada type"));
12704
12705   ALLOCATE_CPLUS_STRUCT_TYPE (type);
12706   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
12707     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
12708
12709   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
12710     {
12711       struct nextfnfield *nfp = flp->head;
12712       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
12713       int k;
12714
12715       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
12716       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
12717       fn_flp->fn_fields = (struct fn_field *)
12718         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
12719       for (k = flp->length; (k--, nfp); nfp = nfp->next)
12720         fn_flp->fn_fields[k] = nfp->fnfield;
12721     }
12722
12723   TYPE_NFN_FIELDS (type) = fip->nfnfields;
12724 }
12725
12726 /* Returns non-zero if NAME is the name of a vtable member in CU's
12727    language, zero otherwise.  */
12728 static int
12729 is_vtable_name (const char *name, struct dwarf2_cu *cu)
12730 {
12731   static const char vptr[] = "_vptr";
12732   static const char vtable[] = "vtable";
12733
12734   /* Look for the C++ and Java forms of the vtable.  */
12735   if ((cu->language == language_java
12736        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
12737        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
12738        && is_cplus_marker (name[sizeof (vptr) - 1])))
12739     return 1;
12740
12741   return 0;
12742 }
12743
12744 /* GCC outputs unnamed structures that are really pointers to member
12745    functions, with the ABI-specified layout.  If TYPE describes
12746    such a structure, smash it into a member function type.
12747
12748    GCC shouldn't do this; it should just output pointer to member DIEs.
12749    This is GCC PR debug/28767.  */
12750
12751 static void
12752 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
12753 {
12754   struct type *pfn_type, *domain_type, *new_type;
12755
12756   /* Check for a structure with no name and two children.  */
12757   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
12758     return;
12759
12760   /* Check for __pfn and __delta members.  */
12761   if (TYPE_FIELD_NAME (type, 0) == NULL
12762       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
12763       || TYPE_FIELD_NAME (type, 1) == NULL
12764       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
12765     return;
12766
12767   /* Find the type of the method.  */
12768   pfn_type = TYPE_FIELD_TYPE (type, 0);
12769   if (pfn_type == NULL
12770       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
12771       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
12772     return;
12773
12774   /* Look for the "this" argument.  */
12775   pfn_type = TYPE_TARGET_TYPE (pfn_type);
12776   if (TYPE_NFIELDS (pfn_type) == 0
12777       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
12778       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
12779     return;
12780
12781   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
12782   new_type = alloc_type (objfile);
12783   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
12784                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
12785                         TYPE_VARARGS (pfn_type));
12786   smash_to_methodptr_type (type, new_type);
12787 }
12788
12789 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
12790    (icc).  */
12791
12792 static int
12793 producer_is_icc (struct dwarf2_cu *cu)
12794 {
12795   if (!cu->checked_producer)
12796     check_producer (cu);
12797
12798   return cu->producer_is_icc;
12799 }
12800
12801 /* Called when we find the DIE that starts a structure or union scope
12802    (definition) to create a type for the structure or union.  Fill in
12803    the type's name and general properties; the members will not be
12804    processed until process_structure_scope.
12805
12806    NOTE: we need to call these functions regardless of whether or not the
12807    DIE has a DW_AT_name attribute, since it might be an anonymous
12808    structure or union.  This gets the type entered into our set of
12809    user defined types.
12810
12811    However, if the structure is incomplete (an opaque struct/union)
12812    then suppress creating a symbol table entry for it since gdb only
12813    wants to find the one with the complete definition.  Note that if
12814    it is complete, we just call new_symbol, which does it's own
12815    checking about whether the struct/union is anonymous or not (and
12816    suppresses creating a symbol table entry itself).  */
12817
12818 static struct type *
12819 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
12820 {
12821   struct objfile *objfile = cu->objfile;
12822   struct type *type;
12823   struct attribute *attr;
12824   const char *name;
12825
12826   /* If the definition of this type lives in .debug_types, read that type.
12827      Don't follow DW_AT_specification though, that will take us back up
12828      the chain and we want to go down.  */
12829   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
12830   if (attr)
12831     {
12832       type = get_DW_AT_signature_type (die, attr, cu);
12833
12834       /* The type's CU may not be the same as CU.
12835          Ensure TYPE is recorded with CU in die_type_hash.  */
12836       return set_die_type (die, type, cu);
12837     }
12838
12839   type = alloc_type (objfile);
12840   INIT_CPLUS_SPECIFIC (type);
12841
12842   name = dwarf2_name (die, cu);
12843   if (name != NULL)
12844     {
12845       if (cu->language == language_cplus
12846           || cu->language == language_java)
12847         {
12848           const char *full_name = dwarf2_full_name (name, die, cu);
12849
12850           /* dwarf2_full_name might have already finished building the DIE's
12851              type.  If so, there is no need to continue.  */
12852           if (get_die_type (die, cu) != NULL)
12853             return get_die_type (die, cu);
12854
12855           TYPE_TAG_NAME (type) = full_name;
12856           if (die->tag == DW_TAG_structure_type
12857               || die->tag == DW_TAG_class_type)
12858             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12859         }
12860       else
12861         {
12862           /* The name is already allocated along with this objfile, so
12863              we don't need to duplicate it for the type.  */
12864           TYPE_TAG_NAME (type) = name;
12865           if (die->tag == DW_TAG_class_type)
12866             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12867         }
12868     }
12869
12870   if (die->tag == DW_TAG_structure_type)
12871     {
12872       TYPE_CODE (type) = TYPE_CODE_STRUCT;
12873     }
12874   else if (die->tag == DW_TAG_union_type)
12875     {
12876       TYPE_CODE (type) = TYPE_CODE_UNION;
12877     }
12878   else
12879     {
12880       TYPE_CODE (type) = TYPE_CODE_CLASS;
12881     }
12882
12883   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
12884     TYPE_DECLARED_CLASS (type) = 1;
12885
12886   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12887   if (attr)
12888     {
12889       TYPE_LENGTH (type) = DW_UNSND (attr);
12890     }
12891   else
12892     {
12893       TYPE_LENGTH (type) = 0;
12894     }
12895
12896   if (producer_is_icc (cu))
12897     {
12898       /* ICC does not output the required DW_AT_declaration
12899          on incomplete types, but gives them a size of zero.  */
12900     }
12901   else
12902     TYPE_STUB_SUPPORTED (type) = 1;
12903
12904   if (die_is_declaration (die, cu))
12905     TYPE_STUB (type) = 1;
12906   else if (attr == NULL && die->child == NULL
12907            && producer_is_realview (cu->producer))
12908     /* RealView does not output the required DW_AT_declaration
12909        on incomplete types.  */
12910     TYPE_STUB (type) = 1;
12911
12912   /* We need to add the type field to the die immediately so we don't
12913      infinitely recurse when dealing with pointers to the structure
12914      type within the structure itself.  */
12915   set_die_type (die, type, cu);
12916
12917   /* set_die_type should be already done.  */
12918   set_descriptive_type (type, die, cu);
12919
12920   return type;
12921 }
12922
12923 /* Finish creating a structure or union type, including filling in
12924    its members and creating a symbol for it.  */
12925
12926 static void
12927 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
12928 {
12929   struct objfile *objfile = cu->objfile;
12930   struct die_info *child_die = die->child;
12931   struct type *type;
12932
12933   type = get_die_type (die, cu);
12934   if (type == NULL)
12935     type = read_structure_type (die, cu);
12936
12937   if (die->child != NULL && ! die_is_declaration (die, cu))
12938     {
12939       struct field_info fi;
12940       struct die_info *child_die;
12941       VEC (symbolp) *template_args = NULL;
12942       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
12943
12944       memset (&fi, 0, sizeof (struct field_info));
12945
12946       child_die = die->child;
12947
12948       while (child_die && child_die->tag)
12949         {
12950           if (child_die->tag == DW_TAG_member
12951               || child_die->tag == DW_TAG_variable)
12952             {
12953               /* NOTE: carlton/2002-11-05: A C++ static data member
12954                  should be a DW_TAG_member that is a declaration, but
12955                  all versions of G++ as of this writing (so through at
12956                  least 3.2.1) incorrectly generate DW_TAG_variable
12957                  tags for them instead.  */
12958               dwarf2_add_field (&fi, child_die, cu);
12959             }
12960           else if (child_die->tag == DW_TAG_subprogram)
12961             {
12962               /* C++ member function.  */
12963               dwarf2_add_member_fn (&fi, child_die, type, cu);
12964             }
12965           else if (child_die->tag == DW_TAG_inheritance)
12966             {
12967               /* C++ base class field.  */
12968               dwarf2_add_field (&fi, child_die, cu);
12969             }
12970           else if (child_die->tag == DW_TAG_typedef)
12971             dwarf2_add_typedef (&fi, child_die, cu);
12972           else if (child_die->tag == DW_TAG_template_type_param
12973                    || child_die->tag == DW_TAG_template_value_param)
12974             {
12975               struct symbol *arg = new_symbol (child_die, NULL, cu);
12976
12977               if (arg != NULL)
12978                 VEC_safe_push (symbolp, template_args, arg);
12979             }
12980
12981           child_die = sibling_die (child_die);
12982         }
12983
12984       /* Attach template arguments to type.  */
12985       if (! VEC_empty (symbolp, template_args))
12986         {
12987           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12988           TYPE_N_TEMPLATE_ARGUMENTS (type)
12989             = VEC_length (symbolp, template_args);
12990           TYPE_TEMPLATE_ARGUMENTS (type)
12991             = obstack_alloc (&objfile->objfile_obstack,
12992                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
12993                               * sizeof (struct symbol *)));
12994           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
12995                   VEC_address (symbolp, template_args),
12996                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
12997                    * sizeof (struct symbol *)));
12998           VEC_free (symbolp, template_args);
12999         }
13000
13001       /* Attach fields and member functions to the type.  */
13002       if (fi.nfields)
13003         dwarf2_attach_fields_to_type (&fi, type, cu);
13004       if (fi.nfnfields)
13005         {
13006           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
13007
13008           /* Get the type which refers to the base class (possibly this
13009              class itself) which contains the vtable pointer for the current
13010              class from the DW_AT_containing_type attribute.  This use of
13011              DW_AT_containing_type is a GNU extension.  */
13012
13013           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
13014             {
13015               struct type *t = die_containing_type (die, cu);
13016
13017               TYPE_VPTR_BASETYPE (type) = t;
13018               if (type == t)
13019                 {
13020                   int i;
13021
13022                   /* Our own class provides vtbl ptr.  */
13023                   for (i = TYPE_NFIELDS (t) - 1;
13024                        i >= TYPE_N_BASECLASSES (t);
13025                        --i)
13026                     {
13027                       const char *fieldname = TYPE_FIELD_NAME (t, i);
13028
13029                       if (is_vtable_name (fieldname, cu))
13030                         {
13031                           TYPE_VPTR_FIELDNO (type) = i;
13032                           break;
13033                         }
13034                     }
13035
13036                   /* Complain if virtual function table field not found.  */
13037                   if (i < TYPE_N_BASECLASSES (t))
13038                     complaint (&symfile_complaints,
13039                                _("virtual function table pointer "
13040                                  "not found when defining class '%s'"),
13041                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13042                                "");
13043                 }
13044               else
13045                 {
13046                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
13047                 }
13048             }
13049           else if (cu->producer
13050                    && strncmp (cu->producer,
13051                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
13052             {
13053               /* The IBM XLC compiler does not provide direct indication
13054                  of the containing type, but the vtable pointer is
13055                  always named __vfp.  */
13056
13057               int i;
13058
13059               for (i = TYPE_NFIELDS (type) - 1;
13060                    i >= TYPE_N_BASECLASSES (type);
13061                    --i)
13062                 {
13063                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13064                     {
13065                       TYPE_VPTR_FIELDNO (type) = i;
13066                       TYPE_VPTR_BASETYPE (type) = type;
13067                       break;
13068                     }
13069                 }
13070             }
13071         }
13072
13073       /* Copy fi.typedef_field_list linked list elements content into the
13074          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
13075       if (fi.typedef_field_list)
13076         {
13077           int i = fi.typedef_field_list_count;
13078
13079           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13080           TYPE_TYPEDEF_FIELD_ARRAY (type)
13081             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13082           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13083
13084           /* Reverse the list order to keep the debug info elements order.  */
13085           while (--i >= 0)
13086             {
13087               struct typedef_field *dest, *src;
13088
13089               dest = &TYPE_TYPEDEF_FIELD (type, i);
13090               src = &fi.typedef_field_list->field;
13091               fi.typedef_field_list = fi.typedef_field_list->next;
13092               *dest = *src;
13093             }
13094         }
13095
13096       do_cleanups (back_to);
13097
13098       if (HAVE_CPLUS_STRUCT (type))
13099         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
13100     }
13101
13102   quirk_gcc_member_function_pointer (type, objfile);
13103
13104   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13105      snapshots) has been known to create a die giving a declaration
13106      for a class that has, as a child, a die giving a definition for a
13107      nested class.  So we have to process our children even if the
13108      current die is a declaration.  Normally, of course, a declaration
13109      won't have any children at all.  */
13110
13111   while (child_die != NULL && child_die->tag)
13112     {
13113       if (child_die->tag == DW_TAG_member
13114           || child_die->tag == DW_TAG_variable
13115           || child_die->tag == DW_TAG_inheritance
13116           || child_die->tag == DW_TAG_template_value_param
13117           || child_die->tag == DW_TAG_template_type_param)
13118         {
13119           /* Do nothing.  */
13120         }
13121       else
13122         process_die (child_die, cu);
13123
13124       child_die = sibling_die (child_die);
13125     }
13126
13127   /* Do not consider external references.  According to the DWARF standard,
13128      these DIEs are identified by the fact that they have no byte_size
13129      attribute, and a declaration attribute.  */
13130   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13131       || !die_is_declaration (die, cu))
13132     new_symbol (die, type, cu);
13133 }
13134
13135 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
13136    update TYPE using some information only available in DIE's children.  */
13137
13138 static void
13139 update_enumeration_type_from_children (struct die_info *die,
13140                                        struct type *type,
13141                                        struct dwarf2_cu *cu)
13142 {
13143   struct obstack obstack;
13144   struct die_info *child_die = die->child;
13145   int unsigned_enum = 1;
13146   int flag_enum = 1;
13147   ULONGEST mask = 0;
13148   struct cleanup *old_chain;
13149
13150   obstack_init (&obstack);
13151   old_chain = make_cleanup_obstack_free (&obstack);
13152
13153   while (child_die != NULL && child_die->tag)
13154     {
13155       struct attribute *attr;
13156       LONGEST value;
13157       const gdb_byte *bytes;
13158       struct dwarf2_locexpr_baton *baton;
13159       const char *name;
13160       if (child_die->tag != DW_TAG_enumerator)
13161         continue;
13162
13163       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13164       if (attr == NULL)
13165         continue;
13166
13167       name = dwarf2_name (child_die, cu);
13168       if (name == NULL)
13169         name = "<anonymous enumerator>";
13170
13171       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13172                                &value, &bytes, &baton);
13173       if (value < 0)
13174         {
13175           unsigned_enum = 0;
13176           flag_enum = 0;
13177         }
13178       else if ((mask & value) != 0)
13179         flag_enum = 0;
13180       else
13181         mask |= value;
13182
13183       /* If we already know that the enum type is neither unsigned, nor
13184          a flag type, no need to look at the rest of the enumerates.  */
13185       if (!unsigned_enum && !flag_enum)
13186         break;
13187       child_die = sibling_die (child_die);
13188     }
13189
13190   if (unsigned_enum)
13191     TYPE_UNSIGNED (type) = 1;
13192   if (flag_enum)
13193     TYPE_FLAG_ENUM (type) = 1;
13194
13195   do_cleanups (old_chain);
13196 }
13197
13198 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13199    complete the type's fields yet, or create any symbols.  */
13200
13201 static struct type *
13202 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13203 {
13204   struct objfile *objfile = cu->objfile;
13205   struct type *type;
13206   struct attribute *attr;
13207   const char *name;
13208
13209   /* If the definition of this type lives in .debug_types, read that type.
13210      Don't follow DW_AT_specification though, that will take us back up
13211      the chain and we want to go down.  */
13212   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13213   if (attr)
13214     {
13215       type = get_DW_AT_signature_type (die, attr, cu);
13216
13217       /* The type's CU may not be the same as CU.
13218          Ensure TYPE is recorded with CU in die_type_hash.  */
13219       return set_die_type (die, type, cu);
13220     }
13221
13222   type = alloc_type (objfile);
13223
13224   TYPE_CODE (type) = TYPE_CODE_ENUM;
13225   name = dwarf2_full_name (NULL, die, cu);
13226   if (name != NULL)
13227     TYPE_TAG_NAME (type) = name;
13228
13229   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13230   if (attr)
13231     {
13232       TYPE_LENGTH (type) = DW_UNSND (attr);
13233     }
13234   else
13235     {
13236       TYPE_LENGTH (type) = 0;
13237     }
13238
13239   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13240      declared as private in the package spec, and then defined only
13241      inside the package body.  Such types are known as Taft Amendment
13242      Types.  When another package uses such a type, an incomplete DIE
13243      may be generated by the compiler.  */
13244   if (die_is_declaration (die, cu))
13245     TYPE_STUB (type) = 1;
13246
13247   /* Finish the creation of this type by using the enum's children.  */
13248   update_enumeration_type_from_children (die, type, cu);
13249
13250   return set_die_type (die, type, cu);
13251 }
13252
13253 /* Given a pointer to a die which begins an enumeration, process all
13254    the dies that define the members of the enumeration, and create the
13255    symbol for the enumeration type.
13256
13257    NOTE: We reverse the order of the element list.  */
13258
13259 static void
13260 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13261 {
13262   struct type *this_type;
13263
13264   this_type = get_die_type (die, cu);
13265   if (this_type == NULL)
13266     this_type = read_enumeration_type (die, cu);
13267
13268   if (die->child != NULL)
13269     {
13270       struct die_info *child_die;
13271       struct symbol *sym;
13272       struct field *fields = NULL;
13273       int num_fields = 0;
13274       const char *name;
13275
13276       child_die = die->child;
13277       while (child_die && child_die->tag)
13278         {
13279           if (child_die->tag != DW_TAG_enumerator)
13280             {
13281               process_die (child_die, cu);
13282             }
13283           else
13284             {
13285               name = dwarf2_name (child_die, cu);
13286               if (name)
13287                 {
13288                   sym = new_symbol (child_die, this_type, cu);
13289
13290                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13291                     {
13292                       fields = (struct field *)
13293                         xrealloc (fields,
13294                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13295                                   * sizeof (struct field));
13296                     }
13297
13298                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13299                   FIELD_TYPE (fields[num_fields]) = NULL;
13300                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13301                   FIELD_BITSIZE (fields[num_fields]) = 0;
13302
13303                   num_fields++;
13304                 }
13305             }
13306
13307           child_die = sibling_die (child_die);
13308         }
13309
13310       if (num_fields)
13311         {
13312           TYPE_NFIELDS (this_type) = num_fields;
13313           TYPE_FIELDS (this_type) = (struct field *)
13314             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13315           memcpy (TYPE_FIELDS (this_type), fields,
13316                   sizeof (struct field) * num_fields);
13317           xfree (fields);
13318         }
13319     }
13320
13321   /* If we are reading an enum from a .debug_types unit, and the enum
13322      is a declaration, and the enum is not the signatured type in the
13323      unit, then we do not want to add a symbol for it.  Adding a
13324      symbol would in some cases obscure the true definition of the
13325      enum, giving users an incomplete type when the definition is
13326      actually available.  Note that we do not want to do this for all
13327      enums which are just declarations, because C++0x allows forward
13328      enum declarations.  */
13329   if (cu->per_cu->is_debug_types
13330       && die_is_declaration (die, cu))
13331     {
13332       struct signatured_type *sig_type;
13333
13334       sig_type = (struct signatured_type *) cu->per_cu;
13335       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13336       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13337         return;
13338     }
13339
13340   new_symbol (die, this_type, cu);
13341 }
13342
13343 /* Extract all information from a DW_TAG_array_type DIE and put it in
13344    the DIE's type field.  For now, this only handles one dimensional
13345    arrays.  */
13346
13347 static struct type *
13348 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13349 {
13350   struct objfile *objfile = cu->objfile;
13351   struct die_info *child_die;
13352   struct type *type;
13353   struct type *element_type, *range_type, *index_type;
13354   struct type **range_types = NULL;
13355   struct attribute *attr;
13356   int ndim = 0;
13357   struct cleanup *back_to;
13358   const char *name;
13359   unsigned int bit_stride = 0;
13360
13361   element_type = die_type (die, cu);
13362
13363   /* The die_type call above may have already set the type for this DIE.  */
13364   type = get_die_type (die, cu);
13365   if (type)
13366     return type;
13367
13368   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13369   if (attr != NULL)
13370     bit_stride = DW_UNSND (attr) * 8;
13371
13372   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13373   if (attr != NULL)
13374     bit_stride = DW_UNSND (attr);
13375
13376   /* Irix 6.2 native cc creates array types without children for
13377      arrays with unspecified length.  */
13378   if (die->child == NULL)
13379     {
13380       index_type = objfile_type (objfile)->builtin_int;
13381       range_type = create_range_type (NULL, index_type, 0, -1);
13382       type = create_array_type_with_stride (NULL, element_type, range_type,
13383                                             bit_stride);
13384       return set_die_type (die, type, cu);
13385     }
13386
13387   back_to = make_cleanup (null_cleanup, NULL);
13388   child_die = die->child;
13389   while (child_die && child_die->tag)
13390     {
13391       if (child_die->tag == DW_TAG_subrange_type)
13392         {
13393           struct type *child_type = read_type_die (child_die, cu);
13394
13395           if (child_type != NULL)
13396             {
13397               /* The range type was succesfully read.  Save it for the
13398                  array type creation.  */
13399               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13400                 {
13401                   range_types = (struct type **)
13402                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13403                               * sizeof (struct type *));
13404                   if (ndim == 0)
13405                     make_cleanup (free_current_contents, &range_types);
13406                 }
13407               range_types[ndim++] = child_type;
13408             }
13409         }
13410       child_die = sibling_die (child_die);
13411     }
13412
13413   /* Dwarf2 dimensions are output from left to right, create the
13414      necessary array types in backwards order.  */
13415
13416   type = element_type;
13417
13418   if (read_array_order (die, cu) == DW_ORD_col_major)
13419     {
13420       int i = 0;
13421
13422       while (i < ndim)
13423         type = create_array_type_with_stride (NULL, type, range_types[i++],
13424                                               bit_stride);
13425     }
13426   else
13427     {
13428       while (ndim-- > 0)
13429         type = create_array_type_with_stride (NULL, type, range_types[ndim],
13430                                               bit_stride);
13431     }
13432
13433   /* Understand Dwarf2 support for vector types (like they occur on
13434      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
13435      array type.  This is not part of the Dwarf2/3 standard yet, but a
13436      custom vendor extension.  The main difference between a regular
13437      array and the vector variant is that vectors are passed by value
13438      to functions.  */
13439   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
13440   if (attr)
13441     make_vector_type (type);
13442
13443   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
13444      implementation may choose to implement triple vectors using this
13445      attribute.  */
13446   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13447   if (attr)
13448     {
13449       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13450         TYPE_LENGTH (type) = DW_UNSND (attr);
13451       else
13452         complaint (&symfile_complaints,
13453                    _("DW_AT_byte_size for array type smaller "
13454                      "than the total size of elements"));
13455     }
13456
13457   name = dwarf2_name (die, cu);
13458   if (name)
13459     TYPE_NAME (type) = name;
13460
13461   /* Install the type in the die.  */
13462   set_die_type (die, type, cu);
13463
13464   /* set_die_type should be already done.  */
13465   set_descriptive_type (type, die, cu);
13466
13467   do_cleanups (back_to);
13468
13469   return type;
13470 }
13471
13472 static enum dwarf_array_dim_ordering
13473 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
13474 {
13475   struct attribute *attr;
13476
13477   attr = dwarf2_attr (die, DW_AT_ordering, cu);
13478
13479   if (attr) return DW_SND (attr);
13480
13481   /* GNU F77 is a special case, as at 08/2004 array type info is the
13482      opposite order to the dwarf2 specification, but data is still
13483      laid out as per normal fortran.
13484
13485      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13486      version checking.  */
13487
13488   if (cu->language == language_fortran
13489       && cu->producer && strstr (cu->producer, "GNU F77"))
13490     {
13491       return DW_ORD_row_major;
13492     }
13493
13494   switch (cu->language_defn->la_array_ordering)
13495     {
13496     case array_column_major:
13497       return DW_ORD_col_major;
13498     case array_row_major:
13499     default:
13500       return DW_ORD_row_major;
13501     };
13502 }
13503
13504 /* Extract all information from a DW_TAG_set_type DIE and put it in
13505    the DIE's type field.  */
13506
13507 static struct type *
13508 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13509 {
13510   struct type *domain_type, *set_type;
13511   struct attribute *attr;
13512
13513   domain_type = die_type (die, cu);
13514
13515   /* The die_type call above may have already set the type for this DIE.  */
13516   set_type = get_die_type (die, cu);
13517   if (set_type)
13518     return set_type;
13519
13520   set_type = create_set_type (NULL, domain_type);
13521
13522   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13523   if (attr)
13524     TYPE_LENGTH (set_type) = DW_UNSND (attr);
13525
13526   return set_die_type (die, set_type, cu);
13527 }
13528
13529 /* A helper for read_common_block that creates a locexpr baton.
13530    SYM is the symbol which we are marking as computed.
13531    COMMON_DIE is the DIE for the common block.
13532    COMMON_LOC is the location expression attribute for the common
13533    block itself.
13534    MEMBER_LOC is the location expression attribute for the particular
13535    member of the common block that we are processing.
13536    CU is the CU from which the above come.  */
13537
13538 static void
13539 mark_common_block_symbol_computed (struct symbol *sym,
13540                                    struct die_info *common_die,
13541                                    struct attribute *common_loc,
13542                                    struct attribute *member_loc,
13543                                    struct dwarf2_cu *cu)
13544 {
13545   struct objfile *objfile = dwarf2_per_objfile->objfile;
13546   struct dwarf2_locexpr_baton *baton;
13547   gdb_byte *ptr;
13548   unsigned int cu_off;
13549   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13550   LONGEST offset = 0;
13551
13552   gdb_assert (common_loc && member_loc);
13553   gdb_assert (attr_form_is_block (common_loc));
13554   gdb_assert (attr_form_is_block (member_loc)
13555               || attr_form_is_constant (member_loc));
13556
13557   baton = obstack_alloc (&objfile->objfile_obstack,
13558                          sizeof (struct dwarf2_locexpr_baton));
13559   baton->per_cu = cu->per_cu;
13560   gdb_assert (baton->per_cu);
13561
13562   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13563
13564   if (attr_form_is_constant (member_loc))
13565     {
13566       offset = dwarf2_get_attr_constant_value (member_loc, 0);
13567       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13568     }
13569   else
13570     baton->size += DW_BLOCK (member_loc)->size;
13571
13572   ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13573   baton->data = ptr;
13574
13575   *ptr++ = DW_OP_call4;
13576   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13577   store_unsigned_integer (ptr, 4, byte_order, cu_off);
13578   ptr += 4;
13579
13580   if (attr_form_is_constant (member_loc))
13581     {
13582       *ptr++ = DW_OP_addr;
13583       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13584       ptr += cu->header.addr_size;
13585     }
13586   else
13587     {
13588       /* We have to copy the data here, because DW_OP_call4 will only
13589          use a DW_AT_location attribute.  */
13590       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13591       ptr += DW_BLOCK (member_loc)->size;
13592     }
13593
13594   *ptr++ = DW_OP_plus;
13595   gdb_assert (ptr - baton->data == baton->size);
13596
13597   SYMBOL_LOCATION_BATON (sym) = baton;
13598   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
13599 }
13600
13601 /* Create appropriate locally-scoped variables for all the
13602    DW_TAG_common_block entries.  Also create a struct common_block
13603    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
13604    is used to sepate the common blocks name namespace from regular
13605    variable names.  */
13606
13607 static void
13608 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
13609 {
13610   struct attribute *attr;
13611
13612   attr = dwarf2_attr (die, DW_AT_location, cu);
13613   if (attr)
13614     {
13615       /* Support the .debug_loc offsets.  */
13616       if (attr_form_is_block (attr))
13617         {
13618           /* Ok.  */
13619         }
13620       else if (attr_form_is_section_offset (attr))
13621         {
13622           dwarf2_complex_location_expr_complaint ();
13623           attr = NULL;
13624         }
13625       else
13626         {
13627           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13628                                                  "common block member");
13629           attr = NULL;
13630         }
13631     }
13632
13633   if (die->child != NULL)
13634     {
13635       struct objfile *objfile = cu->objfile;
13636       struct die_info *child_die;
13637       size_t n_entries = 0, size;
13638       struct common_block *common_block;
13639       struct symbol *sym;
13640
13641       for (child_die = die->child;
13642            child_die && child_die->tag;
13643            child_die = sibling_die (child_die))
13644         ++n_entries;
13645
13646       size = (sizeof (struct common_block)
13647               + (n_entries - 1) * sizeof (struct symbol *));
13648       common_block = obstack_alloc (&objfile->objfile_obstack, size);
13649       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13650       common_block->n_entries = 0;
13651
13652       for (child_die = die->child;
13653            child_die && child_die->tag;
13654            child_die = sibling_die (child_die))
13655         {
13656           /* Create the symbol in the DW_TAG_common_block block in the current
13657              symbol scope.  */
13658           sym = new_symbol (child_die, NULL, cu);
13659           if (sym != NULL)
13660             {
13661               struct attribute *member_loc;
13662
13663               common_block->contents[common_block->n_entries++] = sym;
13664
13665               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13666                                         cu);
13667               if (member_loc)
13668                 {
13669                   /* GDB has handled this for a long time, but it is
13670                      not specified by DWARF.  It seems to have been
13671                      emitted by gfortran at least as recently as:
13672                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
13673                   complaint (&symfile_complaints,
13674                              _("Variable in common block has "
13675                                "DW_AT_data_member_location "
13676                                "- DIE at 0x%x [in module %s]"),
13677                              child_die->offset.sect_off,
13678                              objfile_name (cu->objfile));
13679
13680                   if (attr_form_is_section_offset (member_loc))
13681                     dwarf2_complex_location_expr_complaint ();
13682                   else if (attr_form_is_constant (member_loc)
13683                            || attr_form_is_block (member_loc))
13684                     {
13685                       if (attr)
13686                         mark_common_block_symbol_computed (sym, die, attr,
13687                                                            member_loc, cu);
13688                     }
13689                   else
13690                     dwarf2_complex_location_expr_complaint ();
13691                 }
13692             }
13693         }
13694
13695       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
13696       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
13697     }
13698 }
13699
13700 /* Create a type for a C++ namespace.  */
13701
13702 static struct type *
13703 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
13704 {
13705   struct objfile *objfile = cu->objfile;
13706   const char *previous_prefix, *name;
13707   int is_anonymous;
13708   struct type *type;
13709
13710   /* For extensions, reuse the type of the original namespace.  */
13711   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
13712     {
13713       struct die_info *ext_die;
13714       struct dwarf2_cu *ext_cu = cu;
13715
13716       ext_die = dwarf2_extension (die, &ext_cu);
13717       type = read_type_die (ext_die, ext_cu);
13718
13719       /* EXT_CU may not be the same as CU.
13720          Ensure TYPE is recorded with CU in die_type_hash.  */
13721       return set_die_type (die, type, cu);
13722     }
13723
13724   name = namespace_name (die, &is_anonymous, cu);
13725
13726   /* Now build the name of the current namespace.  */
13727
13728   previous_prefix = determine_prefix (die, cu);
13729   if (previous_prefix[0] != '\0')
13730     name = typename_concat (&objfile->objfile_obstack,
13731                             previous_prefix, name, 0, cu);
13732
13733   /* Create the type.  */
13734   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
13735                     objfile);
13736   TYPE_NAME (type) = name;
13737   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13738
13739   return set_die_type (die, type, cu);
13740 }
13741
13742 /* Read a C++ namespace.  */
13743
13744 static void
13745 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
13746 {
13747   struct objfile *objfile = cu->objfile;
13748   int is_anonymous;
13749
13750   /* Add a symbol associated to this if we haven't seen the namespace
13751      before.  Also, add a using directive if it's an anonymous
13752      namespace.  */
13753
13754   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
13755     {
13756       struct type *type;
13757
13758       type = read_type_die (die, cu);
13759       new_symbol (die, type, cu);
13760
13761       namespace_name (die, &is_anonymous, cu);
13762       if (is_anonymous)
13763         {
13764           const char *previous_prefix = determine_prefix (die, cu);
13765
13766           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
13767                                   NULL, NULL, 0, &objfile->objfile_obstack);
13768         }
13769     }
13770
13771   if (die->child != NULL)
13772     {
13773       struct die_info *child_die = die->child;
13774
13775       while (child_die && child_die->tag)
13776         {
13777           process_die (child_die, cu);
13778           child_die = sibling_die (child_die);
13779         }
13780     }
13781 }
13782
13783 /* Read a Fortran module as type.  This DIE can be only a declaration used for
13784    imported module.  Still we need that type as local Fortran "use ... only"
13785    declaration imports depend on the created type in determine_prefix.  */
13786
13787 static struct type *
13788 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
13789 {
13790   struct objfile *objfile = cu->objfile;
13791   const char *module_name;
13792   struct type *type;
13793
13794   module_name = dwarf2_name (die, cu);
13795   if (!module_name)
13796     complaint (&symfile_complaints,
13797                _("DW_TAG_module has no name, offset 0x%x"),
13798                die->offset.sect_off);
13799   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
13800
13801   /* determine_prefix uses TYPE_TAG_NAME.  */
13802   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13803
13804   return set_die_type (die, type, cu);
13805 }
13806
13807 /* Read a Fortran module.  */
13808
13809 static void
13810 read_module (struct die_info *die, struct dwarf2_cu *cu)
13811 {
13812   struct die_info *child_die = die->child;
13813   struct type *type;
13814
13815   type = read_type_die (die, cu);
13816   new_symbol (die, type, cu);
13817
13818   while (child_die && child_die->tag)
13819     {
13820       process_die (child_die, cu);
13821       child_die = sibling_die (child_die);
13822     }
13823 }
13824
13825 /* Return the name of the namespace represented by DIE.  Set
13826    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
13827    namespace.  */
13828
13829 static const char *
13830 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
13831 {
13832   struct die_info *current_die;
13833   const char *name = NULL;
13834
13835   /* Loop through the extensions until we find a name.  */
13836
13837   for (current_die = die;
13838        current_die != NULL;
13839        current_die = dwarf2_extension (die, &cu))
13840     {
13841       name = dwarf2_name (current_die, cu);
13842       if (name != NULL)
13843         break;
13844     }
13845
13846   /* Is it an anonymous namespace?  */
13847
13848   *is_anonymous = (name == NULL);
13849   if (*is_anonymous)
13850     name = CP_ANONYMOUS_NAMESPACE_STR;
13851
13852   return name;
13853 }
13854
13855 /* Extract all information from a DW_TAG_pointer_type DIE and add to
13856    the user defined type vector.  */
13857
13858 static struct type *
13859 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
13860 {
13861   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
13862   struct comp_unit_head *cu_header = &cu->header;
13863   struct type *type;
13864   struct attribute *attr_byte_size;
13865   struct attribute *attr_address_class;
13866   int byte_size, addr_class;
13867   struct type *target_type;
13868
13869   target_type = die_type (die, cu);
13870
13871   /* The die_type call above may have already set the type for this DIE.  */
13872   type = get_die_type (die, cu);
13873   if (type)
13874     return type;
13875
13876   type = lookup_pointer_type (target_type);
13877
13878   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
13879   if (attr_byte_size)
13880     byte_size = DW_UNSND (attr_byte_size);
13881   else
13882     byte_size = cu_header->addr_size;
13883
13884   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
13885   if (attr_address_class)
13886     addr_class = DW_UNSND (attr_address_class);
13887   else
13888     addr_class = DW_ADDR_none;
13889
13890   /* If the pointer size or address class is different than the
13891      default, create a type variant marked as such and set the
13892      length accordingly.  */
13893   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
13894     {
13895       if (gdbarch_address_class_type_flags_p (gdbarch))
13896         {
13897           int type_flags;
13898
13899           type_flags = gdbarch_address_class_type_flags
13900                          (gdbarch, byte_size, addr_class);
13901           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
13902                       == 0);
13903           type = make_type_with_address_space (type, type_flags);
13904         }
13905       else if (TYPE_LENGTH (type) != byte_size)
13906         {
13907           complaint (&symfile_complaints,
13908                      _("invalid pointer size %d"), byte_size);
13909         }
13910       else
13911         {
13912           /* Should we also complain about unhandled address classes?  */
13913         }
13914     }
13915
13916   TYPE_LENGTH (type) = byte_size;
13917   return set_die_type (die, type, cu);
13918 }
13919
13920 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
13921    the user defined type vector.  */
13922
13923 static struct type *
13924 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
13925 {
13926   struct type *type;
13927   struct type *to_type;
13928   struct type *domain;
13929
13930   to_type = die_type (die, cu);
13931   domain = die_containing_type (die, cu);
13932
13933   /* The calls above may have already set the type for this DIE.  */
13934   type = get_die_type (die, cu);
13935   if (type)
13936     return type;
13937
13938   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
13939     type = lookup_methodptr_type (to_type);
13940   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
13941     {
13942       struct type *new_type = alloc_type (cu->objfile);
13943
13944       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
13945                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
13946                             TYPE_VARARGS (to_type));
13947       type = lookup_methodptr_type (new_type);
13948     }
13949   else
13950     type = lookup_memberptr_type (to_type, domain);
13951
13952   return set_die_type (die, type, cu);
13953 }
13954
13955 /* Extract all information from a DW_TAG_reference_type DIE and add to
13956    the user defined type vector.  */
13957
13958 static struct type *
13959 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
13960 {
13961   struct comp_unit_head *cu_header = &cu->header;
13962   struct type *type, *target_type;
13963   struct attribute *attr;
13964
13965   target_type = die_type (die, cu);
13966
13967   /* The die_type call above may have already set the type for this DIE.  */
13968   type = get_die_type (die, cu);
13969   if (type)
13970     return type;
13971
13972   type = lookup_reference_type (target_type);
13973   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13974   if (attr)
13975     {
13976       TYPE_LENGTH (type) = DW_UNSND (attr);
13977     }
13978   else
13979     {
13980       TYPE_LENGTH (type) = cu_header->addr_size;
13981     }
13982   return set_die_type (die, type, cu);
13983 }
13984
13985 static struct type *
13986 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
13987 {
13988   struct type *base_type, *cv_type;
13989
13990   base_type = die_type (die, cu);
13991
13992   /* The die_type call above may have already set the type for this DIE.  */
13993   cv_type = get_die_type (die, cu);
13994   if (cv_type)
13995     return cv_type;
13996
13997   /* In case the const qualifier is applied to an array type, the element type
13998      is so qualified, not the array type (section 6.7.3 of C99).  */
13999   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14000     {
14001       struct type *el_type, *inner_array;
14002
14003       base_type = copy_type (base_type);
14004       inner_array = base_type;
14005
14006       while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14007         {
14008           TYPE_TARGET_TYPE (inner_array) =
14009             copy_type (TYPE_TARGET_TYPE (inner_array));
14010           inner_array = TYPE_TARGET_TYPE (inner_array);
14011         }
14012
14013       el_type = TYPE_TARGET_TYPE (inner_array);
14014       TYPE_TARGET_TYPE (inner_array) =
14015         make_cv_type (1, TYPE_VOLATILE (el_type), el_type, NULL);
14016
14017       return set_die_type (die, base_type, cu);
14018     }
14019
14020   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14021   return set_die_type (die, cv_type, cu);
14022 }
14023
14024 static struct type *
14025 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
14026 {
14027   struct type *base_type, *cv_type;
14028
14029   base_type = die_type (die, cu);
14030
14031   /* The die_type call above may have already set the type for this DIE.  */
14032   cv_type = get_die_type (die, cu);
14033   if (cv_type)
14034     return cv_type;
14035
14036   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14037   return set_die_type (die, cv_type, cu);
14038 }
14039
14040 /* Handle DW_TAG_restrict_type.  */
14041
14042 static struct type *
14043 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14044 {
14045   struct type *base_type, *cv_type;
14046
14047   base_type = die_type (die, cu);
14048
14049   /* The die_type call above may have already set the type for this DIE.  */
14050   cv_type = get_die_type (die, cu);
14051   if (cv_type)
14052     return cv_type;
14053
14054   cv_type = make_restrict_type (base_type);
14055   return set_die_type (die, cv_type, cu);
14056 }
14057
14058 /* Extract all information from a DW_TAG_string_type DIE and add to
14059    the user defined type vector.  It isn't really a user defined type,
14060    but it behaves like one, with other DIE's using an AT_user_def_type
14061    attribute to reference it.  */
14062
14063 static struct type *
14064 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
14065 {
14066   struct objfile *objfile = cu->objfile;
14067   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14068   struct type *type, *range_type, *index_type, *char_type;
14069   struct attribute *attr;
14070   unsigned int length;
14071
14072   attr = dwarf2_attr (die, DW_AT_string_length, cu);
14073   if (attr)
14074     {
14075       length = DW_UNSND (attr);
14076     }
14077   else
14078     {
14079       /* Check for the DW_AT_byte_size attribute.  */
14080       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14081       if (attr)
14082         {
14083           length = DW_UNSND (attr);
14084         }
14085       else
14086         {
14087           length = 1;
14088         }
14089     }
14090
14091   index_type = objfile_type (objfile)->builtin_int;
14092   range_type = create_range_type (NULL, index_type, 1, length);
14093   char_type = language_string_char_type (cu->language_defn, gdbarch);
14094   type = create_string_type (NULL, char_type, range_type);
14095
14096   return set_die_type (die, type, cu);
14097 }
14098
14099 /* Assuming that DIE corresponds to a function, returns nonzero
14100    if the function is prototyped.  */
14101
14102 static int
14103 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14104 {
14105   struct attribute *attr;
14106
14107   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14108   if (attr && (DW_UNSND (attr) != 0))
14109     return 1;
14110
14111   /* The DWARF standard implies that the DW_AT_prototyped attribute
14112      is only meaninful for C, but the concept also extends to other
14113      languages that allow unprototyped functions (Eg: Objective C).
14114      For all other languages, assume that functions are always
14115      prototyped.  */
14116   if (cu->language != language_c
14117       && cu->language != language_objc
14118       && cu->language != language_opencl)
14119     return 1;
14120
14121   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
14122      prototyped and unprototyped functions; default to prototyped,
14123      since that is more common in modern code (and RealView warns
14124      about unprototyped functions).  */
14125   if (producer_is_realview (cu->producer))
14126     return 1;
14127
14128   return 0;
14129 }
14130
14131 /* Handle DIES due to C code like:
14132
14133    struct foo
14134    {
14135    int (*funcp)(int a, long l);
14136    int b;
14137    };
14138
14139    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
14140
14141 static struct type *
14142 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
14143 {
14144   struct objfile *objfile = cu->objfile;
14145   struct type *type;            /* Type that this function returns.  */
14146   struct type *ftype;           /* Function that returns above type.  */
14147   struct attribute *attr;
14148
14149   type = die_type (die, cu);
14150
14151   /* The die_type call above may have already set the type for this DIE.  */
14152   ftype = get_die_type (die, cu);
14153   if (ftype)
14154     return ftype;
14155
14156   ftype = lookup_function_type (type);
14157
14158   if (prototyped_function_p (die, cu))
14159     TYPE_PROTOTYPED (ftype) = 1;
14160
14161   /* Store the calling convention in the type if it's available in
14162      the subroutine die.  Otherwise set the calling convention to
14163      the default value DW_CC_normal.  */
14164   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14165   if (attr)
14166     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14167   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14168     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14169   else
14170     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14171
14172   /* We need to add the subroutine type to the die immediately so
14173      we don't infinitely recurse when dealing with parameters
14174      declared as the same subroutine type.  */
14175   set_die_type (die, ftype, cu);
14176
14177   if (die->child != NULL)
14178     {
14179       struct type *void_type = objfile_type (objfile)->builtin_void;
14180       struct die_info *child_die;
14181       int nparams, iparams;
14182
14183       /* Count the number of parameters.
14184          FIXME: GDB currently ignores vararg functions, but knows about
14185          vararg member functions.  */
14186       nparams = 0;
14187       child_die = die->child;
14188       while (child_die && child_die->tag)
14189         {
14190           if (child_die->tag == DW_TAG_formal_parameter)
14191             nparams++;
14192           else if (child_die->tag == DW_TAG_unspecified_parameters)
14193             TYPE_VARARGS (ftype) = 1;
14194           child_die = sibling_die (child_die);
14195         }
14196
14197       /* Allocate storage for parameters and fill them in.  */
14198       TYPE_NFIELDS (ftype) = nparams;
14199       TYPE_FIELDS (ftype) = (struct field *)
14200         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14201
14202       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14203          even if we error out during the parameters reading below.  */
14204       for (iparams = 0; iparams < nparams; iparams++)
14205         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14206
14207       iparams = 0;
14208       child_die = die->child;
14209       while (child_die && child_die->tag)
14210         {
14211           if (child_die->tag == DW_TAG_formal_parameter)
14212             {
14213               struct type *arg_type;
14214
14215               /* DWARF version 2 has no clean way to discern C++
14216                  static and non-static member functions.  G++ helps
14217                  GDB by marking the first parameter for non-static
14218                  member functions (which is the this pointer) as
14219                  artificial.  We pass this information to
14220                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14221
14222                  DWARF version 3 added DW_AT_object_pointer, which GCC
14223                  4.5 does not yet generate.  */
14224               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14225               if (attr)
14226                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14227               else
14228                 {
14229                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14230
14231                   /* GCC/43521: In java, the formal parameter
14232                      "this" is sometimes not marked with DW_AT_artificial.  */
14233                   if (cu->language == language_java)
14234                     {
14235                       const char *name = dwarf2_name (child_die, cu);
14236
14237                       if (name && !strcmp (name, "this"))
14238                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14239                     }
14240                 }
14241               arg_type = die_type (child_die, cu);
14242
14243               /* RealView does not mark THIS as const, which the testsuite
14244                  expects.  GCC marks THIS as const in method definitions,
14245                  but not in the class specifications (GCC PR 43053).  */
14246               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14247                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14248                 {
14249                   int is_this = 0;
14250                   struct dwarf2_cu *arg_cu = cu;
14251                   const char *name = dwarf2_name (child_die, cu);
14252
14253                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14254                   if (attr)
14255                     {
14256                       /* If the compiler emits this, use it.  */
14257                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14258                         is_this = 1;
14259                     }
14260                   else if (name && strcmp (name, "this") == 0)
14261                     /* Function definitions will have the argument names.  */
14262                     is_this = 1;
14263                   else if (name == NULL && iparams == 0)
14264                     /* Declarations may not have the names, so like
14265                        elsewhere in GDB, assume an artificial first
14266                        argument is "this".  */
14267                     is_this = 1;
14268
14269                   if (is_this)
14270                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14271                                              arg_type, 0);
14272                 }
14273
14274               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14275               iparams++;
14276             }
14277           child_die = sibling_die (child_die);
14278         }
14279     }
14280
14281   return ftype;
14282 }
14283
14284 static struct type *
14285 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14286 {
14287   struct objfile *objfile = cu->objfile;
14288   const char *name = NULL;
14289   struct type *this_type, *target_type;
14290
14291   name = dwarf2_full_name (NULL, die, cu);
14292   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
14293                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
14294   TYPE_NAME (this_type) = name;
14295   set_die_type (die, this_type, cu);
14296   target_type = die_type (die, cu);
14297   if (target_type != this_type)
14298     TYPE_TARGET_TYPE (this_type) = target_type;
14299   else
14300     {
14301       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14302          spec and cause infinite loops in GDB.  */
14303       complaint (&symfile_complaints,
14304                  _("Self-referential DW_TAG_typedef "
14305                    "- DIE at 0x%x [in module %s]"),
14306                  die->offset.sect_off, objfile_name (objfile));
14307       TYPE_TARGET_TYPE (this_type) = NULL;
14308     }
14309   return this_type;
14310 }
14311
14312 /* Find a representation of a given base type and install
14313    it in the TYPE field of the die.  */
14314
14315 static struct type *
14316 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14317 {
14318   struct objfile *objfile = cu->objfile;
14319   struct type *type;
14320   struct attribute *attr;
14321   int encoding = 0, size = 0;
14322   const char *name;
14323   enum type_code code = TYPE_CODE_INT;
14324   int type_flags = 0;
14325   struct type *target_type = NULL;
14326
14327   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14328   if (attr)
14329     {
14330       encoding = DW_UNSND (attr);
14331     }
14332   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14333   if (attr)
14334     {
14335       size = DW_UNSND (attr);
14336     }
14337   name = dwarf2_name (die, cu);
14338   if (!name)
14339     {
14340       complaint (&symfile_complaints,
14341                  _("DW_AT_name missing from DW_TAG_base_type"));
14342     }
14343
14344   switch (encoding)
14345     {
14346       case DW_ATE_address:
14347         /* Turn DW_ATE_address into a void * pointer.  */
14348         code = TYPE_CODE_PTR;
14349         type_flags |= TYPE_FLAG_UNSIGNED;
14350         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14351         break;
14352       case DW_ATE_boolean:
14353         code = TYPE_CODE_BOOL;
14354         type_flags |= TYPE_FLAG_UNSIGNED;
14355         break;
14356       case DW_ATE_complex_float:
14357         code = TYPE_CODE_COMPLEX;
14358         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14359         break;
14360       case DW_ATE_decimal_float:
14361         code = TYPE_CODE_DECFLOAT;
14362         break;
14363       case DW_ATE_float:
14364         code = TYPE_CODE_FLT;
14365         break;
14366       case DW_ATE_signed:
14367         break;
14368       case DW_ATE_unsigned:
14369         type_flags |= TYPE_FLAG_UNSIGNED;
14370         if (cu->language == language_fortran
14371             && name
14372             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
14373           code = TYPE_CODE_CHAR;
14374         break;
14375       case DW_ATE_signed_char:
14376         if (cu->language == language_ada || cu->language == language_m2
14377             || cu->language == language_pascal
14378             || cu->language == language_fortran)
14379           code = TYPE_CODE_CHAR;
14380         break;
14381       case DW_ATE_unsigned_char:
14382         if (cu->language == language_ada || cu->language == language_m2
14383             || cu->language == language_pascal
14384             || cu->language == language_fortran)
14385           code = TYPE_CODE_CHAR;
14386         type_flags |= TYPE_FLAG_UNSIGNED;
14387         break;
14388       case DW_ATE_UTF:
14389         /* We just treat this as an integer and then recognize the
14390            type by name elsewhere.  */
14391         break;
14392
14393       default:
14394         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14395                    dwarf_type_encoding_name (encoding));
14396         break;
14397     }
14398
14399   type = init_type (code, size, type_flags, NULL, objfile);
14400   TYPE_NAME (type) = name;
14401   TYPE_TARGET_TYPE (type) = target_type;
14402
14403   if (name && strcmp (name, "char") == 0)
14404     TYPE_NOSIGN (type) = 1;
14405
14406   return set_die_type (die, type, cu);
14407 }
14408
14409 /* Read the given DW_AT_subrange DIE.  */
14410
14411 static struct type *
14412 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14413 {
14414   struct type *base_type, *orig_base_type;
14415   struct type *range_type;
14416   struct attribute *attr;
14417   LONGEST low, high;
14418   int low_default_is_valid;
14419   const char *name;
14420   LONGEST negative_mask;
14421
14422   orig_base_type = die_type (die, cu);
14423   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14424      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
14425      creating the range type, but we use the result of check_typedef
14426      when examining properties of the type.  */
14427   base_type = check_typedef (orig_base_type);
14428
14429   /* The die_type call above may have already set the type for this DIE.  */
14430   range_type = get_die_type (die, cu);
14431   if (range_type)
14432     return range_type;
14433
14434   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14435      omitting DW_AT_lower_bound.  */
14436   switch (cu->language)
14437     {
14438     case language_c:
14439     case language_cplus:
14440       low = 0;
14441       low_default_is_valid = 1;
14442       break;
14443     case language_fortran:
14444       low = 1;
14445       low_default_is_valid = 1;
14446       break;
14447     case language_d:
14448     case language_java:
14449     case language_objc:
14450       low = 0;
14451       low_default_is_valid = (cu->header.version >= 4);
14452       break;
14453     case language_ada:
14454     case language_m2:
14455     case language_pascal:
14456       low = 1;
14457       low_default_is_valid = (cu->header.version >= 4);
14458       break;
14459     default:
14460       low = 0;
14461       low_default_is_valid = 0;
14462       break;
14463     }
14464
14465   /* FIXME: For variable sized arrays either of these could be
14466      a variable rather than a constant value.  We'll allow it,
14467      but we don't know how to handle it.  */
14468   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
14469   if (attr)
14470     low = dwarf2_get_attr_constant_value (attr, low);
14471   else if (!low_default_is_valid)
14472     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14473                                       "- DIE at 0x%x [in module %s]"),
14474                die->offset.sect_off, objfile_name (cu->objfile));
14475
14476   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
14477   if (attr)
14478     {
14479       if (attr_form_is_block (attr) || attr_form_is_ref (attr))
14480         {
14481           /* GCC encodes arrays with unspecified or dynamic length
14482              with a DW_FORM_block1 attribute or a reference attribute.
14483              FIXME: GDB does not yet know how to handle dynamic
14484              arrays properly, treat them as arrays with unspecified
14485              length for now.
14486
14487              FIXME: jimb/2003-09-22: GDB does not really know
14488              how to handle arrays of unspecified length
14489              either; we just represent them as zero-length
14490              arrays.  Choose an appropriate upper bound given
14491              the lower bound we've computed above.  */
14492           high = low - 1;
14493         }
14494       else
14495         high = dwarf2_get_attr_constant_value (attr, 1);
14496     }
14497   else
14498     {
14499       attr = dwarf2_attr (die, DW_AT_count, cu);
14500       if (attr)
14501         {
14502           int count = dwarf2_get_attr_constant_value (attr, 1);
14503           high = low + count - 1;
14504         }
14505       else
14506         {
14507           /* Unspecified array length.  */
14508           high = low - 1;
14509         }
14510     }
14511
14512   /* Dwarf-2 specifications explicitly allows to create subrange types
14513      without specifying a base type.
14514      In that case, the base type must be set to the type of
14515      the lower bound, upper bound or count, in that order, if any of these
14516      three attributes references an object that has a type.
14517      If no base type is found, the Dwarf-2 specifications say that
14518      a signed integer type of size equal to the size of an address should
14519      be used.
14520      For the following C code: `extern char gdb_int [];'
14521      GCC produces an empty range DIE.
14522      FIXME: muller/2010-05-28: Possible references to object for low bound,
14523      high bound or count are not yet handled by this code.  */
14524   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14525     {
14526       struct objfile *objfile = cu->objfile;
14527       struct gdbarch *gdbarch = get_objfile_arch (objfile);
14528       int addr_size = gdbarch_addr_bit (gdbarch) /8;
14529       struct type *int_type = objfile_type (objfile)->builtin_int;
14530
14531       /* Test "int", "long int", and "long long int" objfile types,
14532          and select the first one having a size above or equal to the
14533          architecture address size.  */
14534       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14535         base_type = int_type;
14536       else
14537         {
14538           int_type = objfile_type (objfile)->builtin_long;
14539           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14540             base_type = int_type;
14541           else
14542             {
14543               int_type = objfile_type (objfile)->builtin_long_long;
14544               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14545                 base_type = int_type;
14546             }
14547         }
14548     }
14549
14550   /* Normally, the DWARF producers are expected to use a signed
14551      constant form (Eg. DW_FORM_sdata) to express negative bounds.
14552      But this is unfortunately not always the case, as witnessed
14553      with GCC, for instance, where the ambiguous DW_FORM_dataN form
14554      is used instead.  To work around that ambiguity, we treat
14555      the bounds as signed, and thus sign-extend their values, when
14556      the base type is signed.  */
14557   negative_mask =
14558     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
14559   if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
14560     low |= negative_mask;
14561   if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
14562     high |= negative_mask;
14563
14564   range_type = create_range_type (NULL, orig_base_type, low, high);
14565
14566   /* Mark arrays with dynamic length at least as an array of unspecified
14567      length.  GDB could check the boundary but before it gets implemented at
14568      least allow accessing the array elements.  */
14569   if (attr && attr_form_is_block (attr))
14570     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
14571
14572   /* Ada expects an empty array on no boundary attributes.  */
14573   if (attr == NULL && cu->language != language_ada)
14574     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
14575
14576   name = dwarf2_name (die, cu);
14577   if (name)
14578     TYPE_NAME (range_type) = name;
14579
14580   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14581   if (attr)
14582     TYPE_LENGTH (range_type) = DW_UNSND (attr);
14583
14584   set_die_type (die, range_type, cu);
14585
14586   /* set_die_type should be already done.  */
14587   set_descriptive_type (range_type, die, cu);
14588
14589   return range_type;
14590 }
14591
14592 static struct type *
14593 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
14594 {
14595   struct type *type;
14596
14597   /* For now, we only support the C meaning of an unspecified type: void.  */
14598
14599   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
14600   TYPE_NAME (type) = dwarf2_name (die, cu);
14601
14602   return set_die_type (die, type, cu);
14603 }
14604
14605 /* Read a single die and all its descendents.  Set the die's sibling
14606    field to NULL; set other fields in the die correctly, and set all
14607    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
14608    location of the info_ptr after reading all of those dies.  PARENT
14609    is the parent of the die in question.  */
14610
14611 static struct die_info *
14612 read_die_and_children (const struct die_reader_specs *reader,
14613                        const gdb_byte *info_ptr,
14614                        const gdb_byte **new_info_ptr,
14615                        struct die_info *parent)
14616 {
14617   struct die_info *die;
14618   const gdb_byte *cur_ptr;
14619   int has_children;
14620
14621   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
14622   if (die == NULL)
14623     {
14624       *new_info_ptr = cur_ptr;
14625       return NULL;
14626     }
14627   store_in_ref_table (die, reader->cu);
14628
14629   if (has_children)
14630     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
14631   else
14632     {
14633       die->child = NULL;
14634       *new_info_ptr = cur_ptr;
14635     }
14636
14637   die->sibling = NULL;
14638   die->parent = parent;
14639   return die;
14640 }
14641
14642 /* Read a die, all of its descendents, and all of its siblings; set
14643    all of the fields of all of the dies correctly.  Arguments are as
14644    in read_die_and_children.  */
14645
14646 static struct die_info *
14647 read_die_and_siblings_1 (const struct die_reader_specs *reader,
14648                          const gdb_byte *info_ptr,
14649                          const gdb_byte **new_info_ptr,
14650                          struct die_info *parent)
14651 {
14652   struct die_info *first_die, *last_sibling;
14653   const gdb_byte *cur_ptr;
14654
14655   cur_ptr = info_ptr;
14656   first_die = last_sibling = NULL;
14657
14658   while (1)
14659     {
14660       struct die_info *die
14661         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
14662
14663       if (die == NULL)
14664         {
14665           *new_info_ptr = cur_ptr;
14666           return first_die;
14667         }
14668
14669       if (!first_die)
14670         first_die = die;
14671       else
14672         last_sibling->sibling = die;
14673
14674       last_sibling = die;
14675     }
14676 }
14677
14678 /* Read a die, all of its descendents, and all of its siblings; set
14679    all of the fields of all of the dies correctly.  Arguments are as
14680    in read_die_and_children.
14681    This the main entry point for reading a DIE and all its children.  */
14682
14683 static struct die_info *
14684 read_die_and_siblings (const struct die_reader_specs *reader,
14685                        const gdb_byte *info_ptr,
14686                        const gdb_byte **new_info_ptr,
14687                        struct die_info *parent)
14688 {
14689   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
14690                                                   new_info_ptr, parent);
14691
14692   if (dwarf2_die_debug)
14693     {
14694       fprintf_unfiltered (gdb_stdlog,
14695                           "Read die from %s@0x%x of %s:\n",
14696                           get_section_name (reader->die_section),
14697                           (unsigned) (info_ptr - reader->die_section->buffer),
14698                           bfd_get_filename (reader->abfd));
14699       dump_die (die, dwarf2_die_debug);
14700     }
14701
14702   return die;
14703 }
14704
14705 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
14706    attributes.
14707    The caller is responsible for filling in the extra attributes
14708    and updating (*DIEP)->num_attrs.
14709    Set DIEP to point to a newly allocated die with its information,
14710    except for its child, sibling, and parent fields.
14711    Set HAS_CHILDREN to tell whether the die has children or not.  */
14712
14713 static const gdb_byte *
14714 read_full_die_1 (const struct die_reader_specs *reader,
14715                  struct die_info **diep, const gdb_byte *info_ptr,
14716                  int *has_children, int num_extra_attrs)
14717 {
14718   unsigned int abbrev_number, bytes_read, i;
14719   sect_offset offset;
14720   struct abbrev_info *abbrev;
14721   struct die_info *die;
14722   struct dwarf2_cu *cu = reader->cu;
14723   bfd *abfd = reader->abfd;
14724
14725   offset.sect_off = info_ptr - reader->buffer;
14726   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14727   info_ptr += bytes_read;
14728   if (!abbrev_number)
14729     {
14730       *diep = NULL;
14731       *has_children = 0;
14732       return info_ptr;
14733     }
14734
14735   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
14736   if (!abbrev)
14737     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
14738            abbrev_number,
14739            bfd_get_filename (abfd));
14740
14741   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
14742   die->offset = offset;
14743   die->tag = abbrev->tag;
14744   die->abbrev = abbrev_number;
14745
14746   /* Make the result usable.
14747      The caller needs to update num_attrs after adding the extra
14748      attributes.  */
14749   die->num_attrs = abbrev->num_attrs;
14750
14751   for (i = 0; i < abbrev->num_attrs; ++i)
14752     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
14753                                info_ptr);
14754
14755   *diep = die;
14756   *has_children = abbrev->has_children;
14757   return info_ptr;
14758 }
14759
14760 /* Read a die and all its attributes.
14761    Set DIEP to point to a newly allocated die with its information,
14762    except for its child, sibling, and parent fields.
14763    Set HAS_CHILDREN to tell whether the die has children or not.  */
14764
14765 static const gdb_byte *
14766 read_full_die (const struct die_reader_specs *reader,
14767                struct die_info **diep, const gdb_byte *info_ptr,
14768                int *has_children)
14769 {
14770   const gdb_byte *result;
14771
14772   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
14773
14774   if (dwarf2_die_debug)
14775     {
14776       fprintf_unfiltered (gdb_stdlog,
14777                           "Read die from %s@0x%x of %s:\n",
14778                           get_section_name (reader->die_section),
14779                           (unsigned) (info_ptr - reader->die_section->buffer),
14780                           bfd_get_filename (reader->abfd));
14781       dump_die (*diep, dwarf2_die_debug);
14782     }
14783
14784   return result;
14785 }
14786 \f
14787 /* Abbreviation tables.
14788
14789    In DWARF version 2, the description of the debugging information is
14790    stored in a separate .debug_abbrev section.  Before we read any
14791    dies from a section we read in all abbreviations and install them
14792    in a hash table.  */
14793
14794 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
14795
14796 static struct abbrev_info *
14797 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
14798 {
14799   struct abbrev_info *abbrev;
14800
14801   abbrev = (struct abbrev_info *)
14802     obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
14803   memset (abbrev, 0, sizeof (struct abbrev_info));
14804   return abbrev;
14805 }
14806
14807 /* Add an abbreviation to the table.  */
14808
14809 static void
14810 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
14811                          unsigned int abbrev_number,
14812                          struct abbrev_info *abbrev)
14813 {
14814   unsigned int hash_number;
14815
14816   hash_number = abbrev_number % ABBREV_HASH_SIZE;
14817   abbrev->next = abbrev_table->abbrevs[hash_number];
14818   abbrev_table->abbrevs[hash_number] = abbrev;
14819 }
14820
14821 /* Look up an abbrev in the table.
14822    Returns NULL if the abbrev is not found.  */
14823
14824 static struct abbrev_info *
14825 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
14826                             unsigned int abbrev_number)
14827 {
14828   unsigned int hash_number;
14829   struct abbrev_info *abbrev;
14830
14831   hash_number = abbrev_number % ABBREV_HASH_SIZE;
14832   abbrev = abbrev_table->abbrevs[hash_number];
14833
14834   while (abbrev)
14835     {
14836       if (abbrev->number == abbrev_number)
14837         return abbrev;
14838       abbrev = abbrev->next;
14839     }
14840   return NULL;
14841 }
14842
14843 /* Read in an abbrev table.  */
14844
14845 static struct abbrev_table *
14846 abbrev_table_read_table (struct dwarf2_section_info *section,
14847                          sect_offset offset)
14848 {
14849   struct objfile *objfile = dwarf2_per_objfile->objfile;
14850   bfd *abfd = get_section_bfd_owner (section);
14851   struct abbrev_table *abbrev_table;
14852   const gdb_byte *abbrev_ptr;
14853   struct abbrev_info *cur_abbrev;
14854   unsigned int abbrev_number, bytes_read, abbrev_name;
14855   unsigned int abbrev_form;
14856   struct attr_abbrev *cur_attrs;
14857   unsigned int allocated_attrs;
14858
14859   abbrev_table = XNEW (struct abbrev_table);
14860   abbrev_table->offset = offset;
14861   obstack_init (&abbrev_table->abbrev_obstack);
14862   abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
14863                                          (ABBREV_HASH_SIZE
14864                                           * sizeof (struct abbrev_info *)));
14865   memset (abbrev_table->abbrevs, 0,
14866           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
14867
14868   dwarf2_read_section (objfile, section);
14869   abbrev_ptr = section->buffer + offset.sect_off;
14870   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14871   abbrev_ptr += bytes_read;
14872
14873   allocated_attrs = ATTR_ALLOC_CHUNK;
14874   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
14875
14876   /* Loop until we reach an abbrev number of 0.  */
14877   while (abbrev_number)
14878     {
14879       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
14880
14881       /* read in abbrev header */
14882       cur_abbrev->number = abbrev_number;
14883       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14884       abbrev_ptr += bytes_read;
14885       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
14886       abbrev_ptr += 1;
14887
14888       /* now read in declarations */
14889       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14890       abbrev_ptr += bytes_read;
14891       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14892       abbrev_ptr += bytes_read;
14893       while (abbrev_name)
14894         {
14895           if (cur_abbrev->num_attrs == allocated_attrs)
14896             {
14897               allocated_attrs += ATTR_ALLOC_CHUNK;
14898               cur_attrs
14899                 = xrealloc (cur_attrs, (allocated_attrs
14900                                         * sizeof (struct attr_abbrev)));
14901             }
14902
14903           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
14904           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
14905           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14906           abbrev_ptr += bytes_read;
14907           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14908           abbrev_ptr += bytes_read;
14909         }
14910
14911       cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
14912                                          (cur_abbrev->num_attrs
14913                                           * sizeof (struct attr_abbrev)));
14914       memcpy (cur_abbrev->attrs, cur_attrs,
14915               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
14916
14917       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
14918
14919       /* Get next abbreviation.
14920          Under Irix6 the abbreviations for a compilation unit are not
14921          always properly terminated with an abbrev number of 0.
14922          Exit loop if we encounter an abbreviation which we have
14923          already read (which means we are about to read the abbreviations
14924          for the next compile unit) or if the end of the abbreviation
14925          table is reached.  */
14926       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
14927         break;
14928       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14929       abbrev_ptr += bytes_read;
14930       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
14931         break;
14932     }
14933
14934   xfree (cur_attrs);
14935   return abbrev_table;
14936 }
14937
14938 /* Free the resources held by ABBREV_TABLE.  */
14939
14940 static void
14941 abbrev_table_free (struct abbrev_table *abbrev_table)
14942 {
14943   obstack_free (&abbrev_table->abbrev_obstack, NULL);
14944   xfree (abbrev_table);
14945 }
14946
14947 /* Same as abbrev_table_free but as a cleanup.
14948    We pass in a pointer to the pointer to the table so that we can
14949    set the pointer to NULL when we're done.  It also simplifies
14950    build_type_unit_groups.  */
14951
14952 static void
14953 abbrev_table_free_cleanup (void *table_ptr)
14954 {
14955   struct abbrev_table **abbrev_table_ptr = table_ptr;
14956
14957   if (*abbrev_table_ptr != NULL)
14958     abbrev_table_free (*abbrev_table_ptr);
14959   *abbrev_table_ptr = NULL;
14960 }
14961
14962 /* Read the abbrev table for CU from ABBREV_SECTION.  */
14963
14964 static void
14965 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
14966                      struct dwarf2_section_info *abbrev_section)
14967 {
14968   cu->abbrev_table =
14969     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
14970 }
14971
14972 /* Release the memory used by the abbrev table for a compilation unit.  */
14973
14974 static void
14975 dwarf2_free_abbrev_table (void *ptr_to_cu)
14976 {
14977   struct dwarf2_cu *cu = ptr_to_cu;
14978
14979   if (cu->abbrev_table != NULL)
14980     abbrev_table_free (cu->abbrev_table);
14981   /* Set this to NULL so that we SEGV if we try to read it later,
14982      and also because free_comp_unit verifies this is NULL.  */
14983   cu->abbrev_table = NULL;
14984 }
14985 \f
14986 /* Returns nonzero if TAG represents a type that we might generate a partial
14987    symbol for.  */
14988
14989 static int
14990 is_type_tag_for_partial (int tag)
14991 {
14992   switch (tag)
14993     {
14994 #if 0
14995     /* Some types that would be reasonable to generate partial symbols for,
14996        that we don't at present.  */
14997     case DW_TAG_array_type:
14998     case DW_TAG_file_type:
14999     case DW_TAG_ptr_to_member_type:
15000     case DW_TAG_set_type:
15001     case DW_TAG_string_type:
15002     case DW_TAG_subroutine_type:
15003 #endif
15004     case DW_TAG_base_type:
15005     case DW_TAG_class_type:
15006     case DW_TAG_interface_type:
15007     case DW_TAG_enumeration_type:
15008     case DW_TAG_structure_type:
15009     case DW_TAG_subrange_type:
15010     case DW_TAG_typedef:
15011     case DW_TAG_union_type:
15012       return 1;
15013     default:
15014       return 0;
15015     }
15016 }
15017
15018 /* Load all DIEs that are interesting for partial symbols into memory.  */
15019
15020 static struct partial_die_info *
15021 load_partial_dies (const struct die_reader_specs *reader,
15022                    const gdb_byte *info_ptr, int building_psymtab)
15023 {
15024   struct dwarf2_cu *cu = reader->cu;
15025   struct objfile *objfile = cu->objfile;
15026   struct partial_die_info *part_die;
15027   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15028   struct abbrev_info *abbrev;
15029   unsigned int bytes_read;
15030   unsigned int load_all = 0;
15031   int nesting_level = 1;
15032
15033   parent_die = NULL;
15034   last_die = NULL;
15035
15036   gdb_assert (cu->per_cu != NULL);
15037   if (cu->per_cu->load_all_dies)
15038     load_all = 1;
15039
15040   cu->partial_dies
15041     = htab_create_alloc_ex (cu->header.length / 12,
15042                             partial_die_hash,
15043                             partial_die_eq,
15044                             NULL,
15045                             &cu->comp_unit_obstack,
15046                             hashtab_obstack_allocate,
15047                             dummy_obstack_deallocate);
15048
15049   part_die = obstack_alloc (&cu->comp_unit_obstack,
15050                             sizeof (struct partial_die_info));
15051
15052   while (1)
15053     {
15054       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15055
15056       /* A NULL abbrev means the end of a series of children.  */
15057       if (abbrev == NULL)
15058         {
15059           if (--nesting_level == 0)
15060             {
15061               /* PART_DIE was probably the last thing allocated on the
15062                  comp_unit_obstack, so we could call obstack_free
15063                  here.  We don't do that because the waste is small,
15064                  and will be cleaned up when we're done with this
15065                  compilation unit.  This way, we're also more robust
15066                  against other users of the comp_unit_obstack.  */
15067               return first_die;
15068             }
15069           info_ptr += bytes_read;
15070           last_die = parent_die;
15071           parent_die = parent_die->die_parent;
15072           continue;
15073         }
15074
15075       /* Check for template arguments.  We never save these; if
15076          they're seen, we just mark the parent, and go on our way.  */
15077       if (parent_die != NULL
15078           && cu->language == language_cplus
15079           && (abbrev->tag == DW_TAG_template_type_param
15080               || abbrev->tag == DW_TAG_template_value_param))
15081         {
15082           parent_die->has_template_arguments = 1;
15083
15084           if (!load_all)
15085             {
15086               /* We don't need a partial DIE for the template argument.  */
15087               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15088               continue;
15089             }
15090         }
15091
15092       /* We only recurse into c++ subprograms looking for template arguments.
15093          Skip their other children.  */
15094       if (!load_all
15095           && cu->language == language_cplus
15096           && parent_die != NULL
15097           && parent_die->tag == DW_TAG_subprogram)
15098         {
15099           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15100           continue;
15101         }
15102
15103       /* Check whether this DIE is interesting enough to save.  Normally
15104          we would not be interested in members here, but there may be
15105          later variables referencing them via DW_AT_specification (for
15106          static members).  */
15107       if (!load_all
15108           && !is_type_tag_for_partial (abbrev->tag)
15109           && abbrev->tag != DW_TAG_constant
15110           && abbrev->tag != DW_TAG_enumerator
15111           && abbrev->tag != DW_TAG_subprogram
15112           && abbrev->tag != DW_TAG_lexical_block
15113           && abbrev->tag != DW_TAG_variable
15114           && abbrev->tag != DW_TAG_namespace
15115           && abbrev->tag != DW_TAG_module
15116           && abbrev->tag != DW_TAG_member
15117           && abbrev->tag != DW_TAG_imported_unit
15118           && abbrev->tag != DW_TAG_imported_declaration)
15119         {
15120           /* Otherwise we skip to the next sibling, if any.  */
15121           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15122           continue;
15123         }
15124
15125       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15126                                    info_ptr);
15127
15128       /* This two-pass algorithm for processing partial symbols has a
15129          high cost in cache pressure.  Thus, handle some simple cases
15130          here which cover the majority of C partial symbols.  DIEs
15131          which neither have specification tags in them, nor could have
15132          specification tags elsewhere pointing at them, can simply be
15133          processed and discarded.
15134
15135          This segment is also optional; scan_partial_symbols and
15136          add_partial_symbol will handle these DIEs if we chain
15137          them in normally.  When compilers which do not emit large
15138          quantities of duplicate debug information are more common,
15139          this code can probably be removed.  */
15140
15141       /* Any complete simple types at the top level (pretty much all
15142          of them, for a language without namespaces), can be processed
15143          directly.  */
15144       if (parent_die == NULL
15145           && part_die->has_specification == 0
15146           && part_die->is_declaration == 0
15147           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
15148               || part_die->tag == DW_TAG_base_type
15149               || part_die->tag == DW_TAG_subrange_type))
15150         {
15151           if (building_psymtab && part_die->name != NULL)
15152             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15153                                  VAR_DOMAIN, LOC_TYPEDEF,
15154                                  &objfile->static_psymbols,
15155                                  0, (CORE_ADDR) 0, cu->language, objfile);
15156           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15157           continue;
15158         }
15159
15160       /* The exception for DW_TAG_typedef with has_children above is
15161          a workaround of GCC PR debug/47510.  In the case of this complaint
15162          type_name_no_tag_or_error will error on such types later.
15163
15164          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15165          it could not find the child DIEs referenced later, this is checked
15166          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15167
15168       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15169         complaint (&symfile_complaints,
15170                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15171                      "- DIE at 0x%x [in module %s]"),
15172                    part_die->offset.sect_off, objfile_name (objfile));
15173
15174       /* If we're at the second level, and we're an enumerator, and
15175          our parent has no specification (meaning possibly lives in a
15176          namespace elsewhere), then we can add the partial symbol now
15177          instead of queueing it.  */
15178       if (part_die->tag == DW_TAG_enumerator
15179           && parent_die != NULL
15180           && parent_die->die_parent == NULL
15181           && parent_die->tag == DW_TAG_enumeration_type
15182           && parent_die->has_specification == 0)
15183         {
15184           if (part_die->name == NULL)
15185             complaint (&symfile_complaints,
15186                        _("malformed enumerator DIE ignored"));
15187           else if (building_psymtab)
15188             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15189                                  VAR_DOMAIN, LOC_CONST,
15190                                  (cu->language == language_cplus
15191                                   || cu->language == language_java)
15192                                  ? &objfile->global_psymbols
15193                                  : &objfile->static_psymbols,
15194                                  0, (CORE_ADDR) 0, cu->language, objfile);
15195
15196           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15197           continue;
15198         }
15199
15200       /* We'll save this DIE so link it in.  */
15201       part_die->die_parent = parent_die;
15202       part_die->die_sibling = NULL;
15203       part_die->die_child = NULL;
15204
15205       if (last_die && last_die == parent_die)
15206         last_die->die_child = part_die;
15207       else if (last_die)
15208         last_die->die_sibling = part_die;
15209
15210       last_die = part_die;
15211
15212       if (first_die == NULL)
15213         first_die = part_die;
15214
15215       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15216          find interesting need to be in the hash table, because we
15217          also have the parent/sibling/child chains; only those that we
15218          might refer to by offset later during partial symbol reading.
15219
15220          For now this means things that might have be the target of a
15221          DW_AT_specification, DW_AT_abstract_origin, or
15222          DW_AT_extension.  DW_AT_extension will refer only to
15223          namespaces; DW_AT_abstract_origin refers to functions (and
15224          many things under the function DIE, but we do not recurse
15225          into function DIEs during partial symbol reading) and
15226          possibly variables as well; DW_AT_specification refers to
15227          declarations.  Declarations ought to have the DW_AT_declaration
15228          flag.  It happens that GCC forgets to put it in sometimes, but
15229          only for functions, not for types.
15230
15231          Adding more things than necessary to the hash table is harmless
15232          except for the performance cost.  Adding too few will result in
15233          wasted time in find_partial_die, when we reread the compilation
15234          unit with load_all_dies set.  */
15235
15236       if (load_all
15237           || abbrev->tag == DW_TAG_constant
15238           || abbrev->tag == DW_TAG_subprogram
15239           || abbrev->tag == DW_TAG_variable
15240           || abbrev->tag == DW_TAG_namespace
15241           || part_die->is_declaration)
15242         {
15243           void **slot;
15244
15245           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
15246                                            part_die->offset.sect_off, INSERT);
15247           *slot = part_die;
15248         }
15249
15250       part_die = obstack_alloc (&cu->comp_unit_obstack,
15251                                 sizeof (struct partial_die_info));
15252
15253       /* For some DIEs we want to follow their children (if any).  For C
15254          we have no reason to follow the children of structures; for other
15255          languages we have to, so that we can get at method physnames
15256          to infer fully qualified class names, for DW_AT_specification,
15257          and for C++ template arguments.  For C++, we also look one level
15258          inside functions to find template arguments (if the name of the
15259          function does not already contain the template arguments).
15260
15261          For Ada, we need to scan the children of subprograms and lexical
15262          blocks as well because Ada allows the definition of nested
15263          entities that could be interesting for the debugger, such as
15264          nested subprograms for instance.  */
15265       if (last_die->has_children
15266           && (load_all
15267               || last_die->tag == DW_TAG_namespace
15268               || last_die->tag == DW_TAG_module
15269               || last_die->tag == DW_TAG_enumeration_type
15270               || (cu->language == language_cplus
15271                   && last_die->tag == DW_TAG_subprogram
15272                   && (last_die->name == NULL
15273                       || strchr (last_die->name, '<') == NULL))
15274               || (cu->language != language_c
15275                   && (last_die->tag == DW_TAG_class_type
15276                       || last_die->tag == DW_TAG_interface_type
15277                       || last_die->tag == DW_TAG_structure_type
15278                       || last_die->tag == DW_TAG_union_type))
15279               || (cu->language == language_ada
15280                   && (last_die->tag == DW_TAG_subprogram
15281                       || last_die->tag == DW_TAG_lexical_block))))
15282         {
15283           nesting_level++;
15284           parent_die = last_die;
15285           continue;
15286         }
15287
15288       /* Otherwise we skip to the next sibling, if any.  */
15289       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
15290
15291       /* Back to the top, do it again.  */
15292     }
15293 }
15294
15295 /* Read a minimal amount of information into the minimal die structure.  */
15296
15297 static const gdb_byte *
15298 read_partial_die (const struct die_reader_specs *reader,
15299                   struct partial_die_info *part_die,
15300                   struct abbrev_info *abbrev, unsigned int abbrev_len,
15301                   const gdb_byte *info_ptr)
15302 {
15303   struct dwarf2_cu *cu = reader->cu;
15304   struct objfile *objfile = cu->objfile;
15305   const gdb_byte *buffer = reader->buffer;
15306   unsigned int i;
15307   struct attribute attr;
15308   int has_low_pc_attr = 0;
15309   int has_high_pc_attr = 0;
15310   int high_pc_relative = 0;
15311
15312   memset (part_die, 0, sizeof (struct partial_die_info));
15313
15314   part_die->offset.sect_off = info_ptr - buffer;
15315
15316   info_ptr += abbrev_len;
15317
15318   if (abbrev == NULL)
15319     return info_ptr;
15320
15321   part_die->tag = abbrev->tag;
15322   part_die->has_children = abbrev->has_children;
15323
15324   for (i = 0; i < abbrev->num_attrs; ++i)
15325     {
15326       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
15327
15328       /* Store the data if it is of an attribute we want to keep in a
15329          partial symbol table.  */
15330       switch (attr.name)
15331         {
15332         case DW_AT_name:
15333           switch (part_die->tag)
15334             {
15335             case DW_TAG_compile_unit:
15336             case DW_TAG_partial_unit:
15337             case DW_TAG_type_unit:
15338               /* Compilation units have a DW_AT_name that is a filename, not
15339                  a source language identifier.  */
15340             case DW_TAG_enumeration_type:
15341             case DW_TAG_enumerator:
15342               /* These tags always have simple identifiers already; no need
15343                  to canonicalize them.  */
15344               part_die->name = DW_STRING (&attr);
15345               break;
15346             default:
15347               part_die->name
15348                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
15349                                             &objfile->objfile_obstack);
15350               break;
15351             }
15352           break;
15353         case DW_AT_linkage_name:
15354         case DW_AT_MIPS_linkage_name:
15355           /* Note that both forms of linkage name might appear.  We
15356              assume they will be the same, and we only store the last
15357              one we see.  */
15358           if (cu->language == language_ada)
15359             part_die->name = DW_STRING (&attr);
15360           part_die->linkage_name = DW_STRING (&attr);
15361           break;
15362         case DW_AT_low_pc:
15363           has_low_pc_attr = 1;
15364           part_die->lowpc = attr_value_as_address (&attr);
15365           break;
15366         case DW_AT_high_pc:
15367           has_high_pc_attr = 1;
15368           part_die->highpc = attr_value_as_address (&attr);
15369           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15370                 high_pc_relative = 1;
15371           break;
15372         case DW_AT_location:
15373           /* Support the .debug_loc offsets.  */
15374           if (attr_form_is_block (&attr))
15375             {
15376                part_die->d.locdesc = DW_BLOCK (&attr);
15377             }
15378           else if (attr_form_is_section_offset (&attr))
15379             {
15380               dwarf2_complex_location_expr_complaint ();
15381             }
15382           else
15383             {
15384               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15385                                                      "partial symbol information");
15386             }
15387           break;
15388         case DW_AT_external:
15389           part_die->is_external = DW_UNSND (&attr);
15390           break;
15391         case DW_AT_declaration:
15392           part_die->is_declaration = DW_UNSND (&attr);
15393           break;
15394         case DW_AT_type:
15395           part_die->has_type = 1;
15396           break;
15397         case DW_AT_abstract_origin:
15398         case DW_AT_specification:
15399         case DW_AT_extension:
15400           part_die->has_specification = 1;
15401           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
15402           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15403                                    || cu->per_cu->is_dwz);
15404           break;
15405         case DW_AT_sibling:
15406           /* Ignore absolute siblings, they might point outside of
15407              the current compile unit.  */
15408           if (attr.form == DW_FORM_ref_addr)
15409             complaint (&symfile_complaints,
15410                        _("ignoring absolute DW_AT_sibling"));
15411           else
15412             {
15413               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15414               const gdb_byte *sibling_ptr = buffer + off;
15415
15416               if (sibling_ptr < info_ptr)
15417                 complaint (&symfile_complaints,
15418                            _("DW_AT_sibling points backwards"));
15419               else
15420                 part_die->sibling = sibling_ptr;
15421             }
15422           break;
15423         case DW_AT_byte_size:
15424           part_die->has_byte_size = 1;
15425           break;
15426         case DW_AT_calling_convention:
15427           /* DWARF doesn't provide a way to identify a program's source-level
15428              entry point.  DW_AT_calling_convention attributes are only meant
15429              to describe functions' calling conventions.
15430
15431              However, because it's a necessary piece of information in
15432              Fortran, and because DW_CC_program is the only piece of debugging
15433              information whose definition refers to a 'main program' at all,
15434              several compilers have begun marking Fortran main programs with
15435              DW_CC_program --- even when those functions use the standard
15436              calling conventions.
15437
15438              So until DWARF specifies a way to provide this information and
15439              compilers pick up the new representation, we'll support this
15440              practice.  */
15441           if (DW_UNSND (&attr) == DW_CC_program
15442               && cu->language == language_fortran)
15443             set_objfile_main_name (objfile, part_die->name, language_fortran);
15444           break;
15445         case DW_AT_inline:
15446           if (DW_UNSND (&attr) == DW_INL_inlined
15447               || DW_UNSND (&attr) == DW_INL_declared_inlined)
15448             part_die->may_be_inlined = 1;
15449           break;
15450
15451         case DW_AT_import:
15452           if (part_die->tag == DW_TAG_imported_unit)
15453             {
15454               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15455               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15456                                   || cu->per_cu->is_dwz);
15457             }
15458           break;
15459
15460         default:
15461           break;
15462         }
15463     }
15464
15465   if (high_pc_relative)
15466     part_die->highpc += part_die->lowpc;
15467
15468   if (has_low_pc_attr && has_high_pc_attr)
15469     {
15470       /* When using the GNU linker, .gnu.linkonce. sections are used to
15471          eliminate duplicate copies of functions and vtables and such.
15472          The linker will arbitrarily choose one and discard the others.
15473          The AT_*_pc values for such functions refer to local labels in
15474          these sections.  If the section from that file was discarded, the
15475          labels are not in the output, so the relocs get a value of 0.
15476          If this is a discarded function, mark the pc bounds as invalid,
15477          so that GDB will ignore it.  */
15478       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15479         {
15480           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15481
15482           complaint (&symfile_complaints,
15483                      _("DW_AT_low_pc %s is zero "
15484                        "for DIE at 0x%x [in module %s]"),
15485                      paddress (gdbarch, part_die->lowpc),
15486                      part_die->offset.sect_off, objfile_name (objfile));
15487         }
15488       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
15489       else if (part_die->lowpc >= part_die->highpc)
15490         {
15491           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15492
15493           complaint (&symfile_complaints,
15494                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15495                        "for DIE at 0x%x [in module %s]"),
15496                      paddress (gdbarch, part_die->lowpc),
15497                      paddress (gdbarch, part_die->highpc),
15498                      part_die->offset.sect_off, objfile_name (objfile));
15499         }
15500       else
15501         part_die->has_pc_info = 1;
15502     }
15503
15504   return info_ptr;
15505 }
15506
15507 /* Find a cached partial DIE at OFFSET in CU.  */
15508
15509 static struct partial_die_info *
15510 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
15511 {
15512   struct partial_die_info *lookup_die = NULL;
15513   struct partial_die_info part_die;
15514
15515   part_die.offset = offset;
15516   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15517                                     offset.sect_off);
15518
15519   return lookup_die;
15520 }
15521
15522 /* Find a partial DIE at OFFSET, which may or may not be in CU,
15523    except in the case of .debug_types DIEs which do not reference
15524    outside their CU (they do however referencing other types via
15525    DW_FORM_ref_sig8).  */
15526
15527 static struct partial_die_info *
15528 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
15529 {
15530   struct objfile *objfile = cu->objfile;
15531   struct dwarf2_per_cu_data *per_cu = NULL;
15532   struct partial_die_info *pd = NULL;
15533
15534   if (offset_in_dwz == cu->per_cu->is_dwz
15535       && offset_in_cu_p (&cu->header, offset))
15536     {
15537       pd = find_partial_die_in_comp_unit (offset, cu);
15538       if (pd != NULL)
15539         return pd;
15540       /* We missed recording what we needed.
15541          Load all dies and try again.  */
15542       per_cu = cu->per_cu;
15543     }
15544   else
15545     {
15546       /* TUs don't reference other CUs/TUs (except via type signatures).  */
15547       if (cu->per_cu->is_debug_types)
15548         {
15549           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
15550                    " external reference to offset 0x%lx [in module %s].\n"),
15551                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
15552                  bfd_get_filename (objfile->obfd));
15553         }
15554       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
15555                                                  objfile);
15556
15557       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
15558         load_partial_comp_unit (per_cu);
15559
15560       per_cu->cu->last_used = 0;
15561       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15562     }
15563
15564   /* If we didn't find it, and not all dies have been loaded,
15565      load them all and try again.  */
15566
15567   if (pd == NULL && per_cu->load_all_dies == 0)
15568     {
15569       per_cu->load_all_dies = 1;
15570
15571       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
15572          THIS_CU->cu may already be in use.  So we can't just free it and
15573          replace its DIEs with the ones we read in.  Instead, we leave those
15574          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
15575          and clobber THIS_CU->cu->partial_dies with the hash table for the new
15576          set.  */
15577       load_partial_comp_unit (per_cu);
15578
15579       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15580     }
15581
15582   if (pd == NULL)
15583     internal_error (__FILE__, __LINE__,
15584                     _("could not find partial DIE 0x%x "
15585                       "in cache [from module %s]\n"),
15586                     offset.sect_off, bfd_get_filename (objfile->obfd));
15587   return pd;
15588 }
15589
15590 /* See if we can figure out if the class lives in a namespace.  We do
15591    this by looking for a member function; its demangled name will
15592    contain namespace info, if there is any.  */
15593
15594 static void
15595 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
15596                                   struct dwarf2_cu *cu)
15597 {
15598   /* NOTE: carlton/2003-10-07: Getting the info this way changes
15599      what template types look like, because the demangler
15600      frequently doesn't give the same name as the debug info.  We
15601      could fix this by only using the demangled name to get the
15602      prefix (but see comment in read_structure_type).  */
15603
15604   struct partial_die_info *real_pdi;
15605   struct partial_die_info *child_pdi;
15606
15607   /* If this DIE (this DIE's specification, if any) has a parent, then
15608      we should not do this.  We'll prepend the parent's fully qualified
15609      name when we create the partial symbol.  */
15610
15611   real_pdi = struct_pdi;
15612   while (real_pdi->has_specification)
15613     real_pdi = find_partial_die (real_pdi->spec_offset,
15614                                  real_pdi->spec_is_dwz, cu);
15615
15616   if (real_pdi->die_parent != NULL)
15617     return;
15618
15619   for (child_pdi = struct_pdi->die_child;
15620        child_pdi != NULL;
15621        child_pdi = child_pdi->die_sibling)
15622     {
15623       if (child_pdi->tag == DW_TAG_subprogram
15624           && child_pdi->linkage_name != NULL)
15625         {
15626           char *actual_class_name
15627             = language_class_name_from_physname (cu->language_defn,
15628                                                  child_pdi->linkage_name);
15629           if (actual_class_name != NULL)
15630             {
15631               struct_pdi->name
15632                 = obstack_copy0 (&cu->objfile->objfile_obstack,
15633                                  actual_class_name,
15634                                  strlen (actual_class_name));
15635               xfree (actual_class_name);
15636             }
15637           break;
15638         }
15639     }
15640 }
15641
15642 /* Adjust PART_DIE before generating a symbol for it.  This function
15643    may set the is_external flag or change the DIE's name.  */
15644
15645 static void
15646 fixup_partial_die (struct partial_die_info *part_die,
15647                    struct dwarf2_cu *cu)
15648 {
15649   /* Once we've fixed up a die, there's no point in doing so again.
15650      This also avoids a memory leak if we were to call
15651      guess_partial_die_structure_name multiple times.  */
15652   if (part_die->fixup_called)
15653     return;
15654
15655   /* If we found a reference attribute and the DIE has no name, try
15656      to find a name in the referred to DIE.  */
15657
15658   if (part_die->name == NULL && part_die->has_specification)
15659     {
15660       struct partial_die_info *spec_die;
15661
15662       spec_die = find_partial_die (part_die->spec_offset,
15663                                    part_die->spec_is_dwz, cu);
15664
15665       fixup_partial_die (spec_die, cu);
15666
15667       if (spec_die->name)
15668         {
15669           part_die->name = spec_die->name;
15670
15671           /* Copy DW_AT_external attribute if it is set.  */
15672           if (spec_die->is_external)
15673             part_die->is_external = spec_die->is_external;
15674         }
15675     }
15676
15677   /* Set default names for some unnamed DIEs.  */
15678
15679   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
15680     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
15681
15682   /* If there is no parent die to provide a namespace, and there are
15683      children, see if we can determine the namespace from their linkage
15684      name.  */
15685   if (cu->language == language_cplus
15686       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
15687       && part_die->die_parent == NULL
15688       && part_die->has_children
15689       && (part_die->tag == DW_TAG_class_type
15690           || part_die->tag == DW_TAG_structure_type
15691           || part_die->tag == DW_TAG_union_type))
15692     guess_partial_die_structure_name (part_die, cu);
15693
15694   /* GCC might emit a nameless struct or union that has a linkage
15695      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
15696   if (part_die->name == NULL
15697       && (part_die->tag == DW_TAG_class_type
15698           || part_die->tag == DW_TAG_interface_type
15699           || part_die->tag == DW_TAG_structure_type
15700           || part_die->tag == DW_TAG_union_type)
15701       && part_die->linkage_name != NULL)
15702     {
15703       char *demangled;
15704
15705       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
15706       if (demangled)
15707         {
15708           const char *base;
15709
15710           /* Strip any leading namespaces/classes, keep only the base name.
15711              DW_AT_name for named DIEs does not contain the prefixes.  */
15712           base = strrchr (demangled, ':');
15713           if (base && base > demangled && base[-1] == ':')
15714             base++;
15715           else
15716             base = demangled;
15717
15718           part_die->name = obstack_copy0 (&cu->objfile->objfile_obstack,
15719                                           base, strlen (base));
15720           xfree (demangled);
15721         }
15722     }
15723
15724   part_die->fixup_called = 1;
15725 }
15726
15727 /* Read an attribute value described by an attribute form.  */
15728
15729 static const gdb_byte *
15730 read_attribute_value (const struct die_reader_specs *reader,
15731                       struct attribute *attr, unsigned form,
15732                       const gdb_byte *info_ptr)
15733 {
15734   struct dwarf2_cu *cu = reader->cu;
15735   bfd *abfd = reader->abfd;
15736   struct comp_unit_head *cu_header = &cu->header;
15737   unsigned int bytes_read;
15738   struct dwarf_block *blk;
15739
15740   attr->form = form;
15741   switch (form)
15742     {
15743     case DW_FORM_ref_addr:
15744       if (cu->header.version == 2)
15745         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15746       else
15747         DW_UNSND (attr) = read_offset (abfd, info_ptr,
15748                                        &cu->header, &bytes_read);
15749       info_ptr += bytes_read;
15750       break;
15751     case DW_FORM_GNU_ref_alt:
15752       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15753       info_ptr += bytes_read;
15754       break;
15755     case DW_FORM_addr:
15756       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15757       info_ptr += bytes_read;
15758       break;
15759     case DW_FORM_block2:
15760       blk = dwarf_alloc_block (cu);
15761       blk->size = read_2_bytes (abfd, info_ptr);
15762       info_ptr += 2;
15763       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15764       info_ptr += blk->size;
15765       DW_BLOCK (attr) = blk;
15766       break;
15767     case DW_FORM_block4:
15768       blk = dwarf_alloc_block (cu);
15769       blk->size = read_4_bytes (abfd, info_ptr);
15770       info_ptr += 4;
15771       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15772       info_ptr += blk->size;
15773       DW_BLOCK (attr) = blk;
15774       break;
15775     case DW_FORM_data2:
15776       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
15777       info_ptr += 2;
15778       break;
15779     case DW_FORM_data4:
15780       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
15781       info_ptr += 4;
15782       break;
15783     case DW_FORM_data8:
15784       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
15785       info_ptr += 8;
15786       break;
15787     case DW_FORM_sec_offset:
15788       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15789       info_ptr += bytes_read;
15790       break;
15791     case DW_FORM_string:
15792       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
15793       DW_STRING_IS_CANONICAL (attr) = 0;
15794       info_ptr += bytes_read;
15795       break;
15796     case DW_FORM_strp:
15797       if (!cu->per_cu->is_dwz)
15798         {
15799           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
15800                                                    &bytes_read);
15801           DW_STRING_IS_CANONICAL (attr) = 0;
15802           info_ptr += bytes_read;
15803           break;
15804         }
15805       /* FALLTHROUGH */
15806     case DW_FORM_GNU_strp_alt:
15807       {
15808         struct dwz_file *dwz = dwarf2_get_dwz_file ();
15809         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
15810                                           &bytes_read);
15811
15812         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
15813         DW_STRING_IS_CANONICAL (attr) = 0;
15814         info_ptr += bytes_read;
15815       }
15816       break;
15817     case DW_FORM_exprloc:
15818     case DW_FORM_block:
15819       blk = dwarf_alloc_block (cu);
15820       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15821       info_ptr += bytes_read;
15822       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15823       info_ptr += blk->size;
15824       DW_BLOCK (attr) = blk;
15825       break;
15826     case DW_FORM_block1:
15827       blk = dwarf_alloc_block (cu);
15828       blk->size = read_1_byte (abfd, info_ptr);
15829       info_ptr += 1;
15830       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15831       info_ptr += blk->size;
15832       DW_BLOCK (attr) = blk;
15833       break;
15834     case DW_FORM_data1:
15835       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
15836       info_ptr += 1;
15837       break;
15838     case DW_FORM_flag:
15839       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
15840       info_ptr += 1;
15841       break;
15842     case DW_FORM_flag_present:
15843       DW_UNSND (attr) = 1;
15844       break;
15845     case DW_FORM_sdata:
15846       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
15847       info_ptr += bytes_read;
15848       break;
15849     case DW_FORM_udata:
15850       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15851       info_ptr += bytes_read;
15852       break;
15853     case DW_FORM_ref1:
15854       DW_UNSND (attr) = (cu->header.offset.sect_off
15855                          + read_1_byte (abfd, info_ptr));
15856       info_ptr += 1;
15857       break;
15858     case DW_FORM_ref2:
15859       DW_UNSND (attr) = (cu->header.offset.sect_off
15860                          + read_2_bytes (abfd, info_ptr));
15861       info_ptr += 2;
15862       break;
15863     case DW_FORM_ref4:
15864       DW_UNSND (attr) = (cu->header.offset.sect_off
15865                          + read_4_bytes (abfd, info_ptr));
15866       info_ptr += 4;
15867       break;
15868     case DW_FORM_ref8:
15869       DW_UNSND (attr) = (cu->header.offset.sect_off
15870                          + read_8_bytes (abfd, info_ptr));
15871       info_ptr += 8;
15872       break;
15873     case DW_FORM_ref_sig8:
15874       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
15875       info_ptr += 8;
15876       break;
15877     case DW_FORM_ref_udata:
15878       DW_UNSND (attr) = (cu->header.offset.sect_off
15879                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
15880       info_ptr += bytes_read;
15881       break;
15882     case DW_FORM_indirect:
15883       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15884       info_ptr += bytes_read;
15885       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
15886       break;
15887     case DW_FORM_GNU_addr_index:
15888       if (reader->dwo_file == NULL)
15889         {
15890           /* For now flag a hard error.
15891              Later we can turn this into a complaint.  */
15892           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
15893                  dwarf_form_name (form),
15894                  bfd_get_filename (abfd));
15895         }
15896       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
15897       info_ptr += bytes_read;
15898       break;
15899     case DW_FORM_GNU_str_index:
15900       if (reader->dwo_file == NULL)
15901         {
15902           /* For now flag a hard error.
15903              Later we can turn this into a complaint if warranted.  */
15904           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
15905                  dwarf_form_name (form),
15906                  bfd_get_filename (abfd));
15907         }
15908       {
15909         ULONGEST str_index =
15910           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15911
15912         DW_STRING (attr) = read_str_index (reader, cu, str_index);
15913         DW_STRING_IS_CANONICAL (attr) = 0;
15914         info_ptr += bytes_read;
15915       }
15916       break;
15917     default:
15918       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
15919              dwarf_form_name (form),
15920              bfd_get_filename (abfd));
15921     }
15922
15923   /* Super hack.  */
15924   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
15925     attr->form = DW_FORM_GNU_ref_alt;
15926
15927   /* We have seen instances where the compiler tried to emit a byte
15928      size attribute of -1 which ended up being encoded as an unsigned
15929      0xffffffff.  Although 0xffffffff is technically a valid size value,
15930      an object of this size seems pretty unlikely so we can relatively
15931      safely treat these cases as if the size attribute was invalid and
15932      treat them as zero by default.  */
15933   if (attr->name == DW_AT_byte_size
15934       && form == DW_FORM_data4
15935       && DW_UNSND (attr) >= 0xffffffff)
15936     {
15937       complaint
15938         (&symfile_complaints,
15939          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
15940          hex_string (DW_UNSND (attr)));
15941       DW_UNSND (attr) = 0;
15942     }
15943
15944   return info_ptr;
15945 }
15946
15947 /* Read an attribute described by an abbreviated attribute.  */
15948
15949 static const gdb_byte *
15950 read_attribute (const struct die_reader_specs *reader,
15951                 struct attribute *attr, struct attr_abbrev *abbrev,
15952                 const gdb_byte *info_ptr)
15953 {
15954   attr->name = abbrev->name;
15955   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
15956 }
15957
15958 /* Read dwarf information from a buffer.  */
15959
15960 static unsigned int
15961 read_1_byte (bfd *abfd, const gdb_byte *buf)
15962 {
15963   return bfd_get_8 (abfd, buf);
15964 }
15965
15966 static int
15967 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
15968 {
15969   return bfd_get_signed_8 (abfd, buf);
15970 }
15971
15972 static unsigned int
15973 read_2_bytes (bfd *abfd, const gdb_byte *buf)
15974 {
15975   return bfd_get_16 (abfd, buf);
15976 }
15977
15978 static int
15979 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
15980 {
15981   return bfd_get_signed_16 (abfd, buf);
15982 }
15983
15984 static unsigned int
15985 read_4_bytes (bfd *abfd, const gdb_byte *buf)
15986 {
15987   return bfd_get_32 (abfd, buf);
15988 }
15989
15990 static int
15991 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
15992 {
15993   return bfd_get_signed_32 (abfd, buf);
15994 }
15995
15996 static ULONGEST
15997 read_8_bytes (bfd *abfd, const gdb_byte *buf)
15998 {
15999   return bfd_get_64 (abfd, buf);
16000 }
16001
16002 static CORE_ADDR
16003 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
16004               unsigned int *bytes_read)
16005 {
16006   struct comp_unit_head *cu_header = &cu->header;
16007   CORE_ADDR retval = 0;
16008
16009   if (cu_header->signed_addr_p)
16010     {
16011       switch (cu_header->addr_size)
16012         {
16013         case 2:
16014           retval = bfd_get_signed_16 (abfd, buf);
16015           break;
16016         case 4:
16017           retval = bfd_get_signed_32 (abfd, buf);
16018           break;
16019         case 8:
16020           retval = bfd_get_signed_64 (abfd, buf);
16021           break;
16022         default:
16023           internal_error (__FILE__, __LINE__,
16024                           _("read_address: bad switch, signed [in module %s]"),
16025                           bfd_get_filename (abfd));
16026         }
16027     }
16028   else
16029     {
16030       switch (cu_header->addr_size)
16031         {
16032         case 2:
16033           retval = bfd_get_16 (abfd, buf);
16034           break;
16035         case 4:
16036           retval = bfd_get_32 (abfd, buf);
16037           break;
16038         case 8:
16039           retval = bfd_get_64 (abfd, buf);
16040           break;
16041         default:
16042           internal_error (__FILE__, __LINE__,
16043                           _("read_address: bad switch, "
16044                             "unsigned [in module %s]"),
16045                           bfd_get_filename (abfd));
16046         }
16047     }
16048
16049   *bytes_read = cu_header->addr_size;
16050   return retval;
16051 }
16052
16053 /* Read the initial length from a section.  The (draft) DWARF 3
16054    specification allows the initial length to take up either 4 bytes
16055    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
16056    bytes describe the length and all offsets will be 8 bytes in length
16057    instead of 4.
16058
16059    An older, non-standard 64-bit format is also handled by this
16060    function.  The older format in question stores the initial length
16061    as an 8-byte quantity without an escape value.  Lengths greater
16062    than 2^32 aren't very common which means that the initial 4 bytes
16063    is almost always zero.  Since a length value of zero doesn't make
16064    sense for the 32-bit format, this initial zero can be considered to
16065    be an escape value which indicates the presence of the older 64-bit
16066    format.  As written, the code can't detect (old format) lengths
16067    greater than 4GB.  If it becomes necessary to handle lengths
16068    somewhat larger than 4GB, we could allow other small values (such
16069    as the non-sensical values of 1, 2, and 3) to also be used as
16070    escape values indicating the presence of the old format.
16071
16072    The value returned via bytes_read should be used to increment the
16073    relevant pointer after calling read_initial_length().
16074
16075    [ Note:  read_initial_length() and read_offset() are based on the
16076      document entitled "DWARF Debugging Information Format", revision
16077      3, draft 8, dated November 19, 2001.  This document was obtained
16078      from:
16079
16080         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
16081
16082      This document is only a draft and is subject to change.  (So beware.)
16083
16084      Details regarding the older, non-standard 64-bit format were
16085      determined empirically by examining 64-bit ELF files produced by
16086      the SGI toolchain on an IRIX 6.5 machine.
16087
16088      - Kevin, July 16, 2002
16089    ] */
16090
16091 static LONGEST
16092 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
16093 {
16094   LONGEST length = bfd_get_32 (abfd, buf);
16095
16096   if (length == 0xffffffff)
16097     {
16098       length = bfd_get_64 (abfd, buf + 4);
16099       *bytes_read = 12;
16100     }
16101   else if (length == 0)
16102     {
16103       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
16104       length = bfd_get_64 (abfd, buf);
16105       *bytes_read = 8;
16106     }
16107   else
16108     {
16109       *bytes_read = 4;
16110     }
16111
16112   return length;
16113 }
16114
16115 /* Cover function for read_initial_length.
16116    Returns the length of the object at BUF, and stores the size of the
16117    initial length in *BYTES_READ and stores the size that offsets will be in
16118    *OFFSET_SIZE.
16119    If the initial length size is not equivalent to that specified in
16120    CU_HEADER then issue a complaint.
16121    This is useful when reading non-comp-unit headers.  */
16122
16123 static LONGEST
16124 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
16125                                         const struct comp_unit_head *cu_header,
16126                                         unsigned int *bytes_read,
16127                                         unsigned int *offset_size)
16128 {
16129   LONGEST length = read_initial_length (abfd, buf, bytes_read);
16130
16131   gdb_assert (cu_header->initial_length_size == 4
16132               || cu_header->initial_length_size == 8
16133               || cu_header->initial_length_size == 12);
16134
16135   if (cu_header->initial_length_size != *bytes_read)
16136     complaint (&symfile_complaints,
16137                _("intermixed 32-bit and 64-bit DWARF sections"));
16138
16139   *offset_size = (*bytes_read == 4) ? 4 : 8;
16140   return length;
16141 }
16142
16143 /* Read an offset from the data stream.  The size of the offset is
16144    given by cu_header->offset_size.  */
16145
16146 static LONGEST
16147 read_offset (bfd *abfd, const gdb_byte *buf,
16148              const struct comp_unit_head *cu_header,
16149              unsigned int *bytes_read)
16150 {
16151   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16152
16153   *bytes_read = cu_header->offset_size;
16154   return offset;
16155 }
16156
16157 /* Read an offset from the data stream.  */
16158
16159 static LONGEST
16160 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16161 {
16162   LONGEST retval = 0;
16163
16164   switch (offset_size)
16165     {
16166     case 4:
16167       retval = bfd_get_32 (abfd, buf);
16168       break;
16169     case 8:
16170       retval = bfd_get_64 (abfd, buf);
16171       break;
16172     default:
16173       internal_error (__FILE__, __LINE__,
16174                       _("read_offset_1: bad switch [in module %s]"),
16175                       bfd_get_filename (abfd));
16176     }
16177
16178   return retval;
16179 }
16180
16181 static const gdb_byte *
16182 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16183 {
16184   /* If the size of a host char is 8 bits, we can return a pointer
16185      to the buffer, otherwise we have to copy the data to a buffer
16186      allocated on the temporary obstack.  */
16187   gdb_assert (HOST_CHAR_BIT == 8);
16188   return buf;
16189 }
16190
16191 static const char *
16192 read_direct_string (bfd *abfd, const gdb_byte *buf,
16193                     unsigned int *bytes_read_ptr)
16194 {
16195   /* If the size of a host char is 8 bits, we can return a pointer
16196      to the string, otherwise we have to copy the string to a buffer
16197      allocated on the temporary obstack.  */
16198   gdb_assert (HOST_CHAR_BIT == 8);
16199   if (*buf == '\0')
16200     {
16201       *bytes_read_ptr = 1;
16202       return NULL;
16203     }
16204   *bytes_read_ptr = strlen ((const char *) buf) + 1;
16205   return (const char *) buf;
16206 }
16207
16208 static const char *
16209 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
16210 {
16211   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
16212   if (dwarf2_per_objfile->str.buffer == NULL)
16213     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16214            bfd_get_filename (abfd));
16215   if (str_offset >= dwarf2_per_objfile->str.size)
16216     error (_("DW_FORM_strp pointing outside of "
16217              ".debug_str section [in module %s]"),
16218            bfd_get_filename (abfd));
16219   gdb_assert (HOST_CHAR_BIT == 8);
16220   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
16221     return NULL;
16222   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
16223 }
16224
16225 /* Read a string at offset STR_OFFSET in the .debug_str section from
16226    the .dwz file DWZ.  Throw an error if the offset is too large.  If
16227    the string consists of a single NUL byte, return NULL; otherwise
16228    return a pointer to the string.  */
16229
16230 static const char *
16231 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16232 {
16233   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16234
16235   if (dwz->str.buffer == NULL)
16236     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16237              "section [in module %s]"),
16238            bfd_get_filename (dwz->dwz_bfd));
16239   if (str_offset >= dwz->str.size)
16240     error (_("DW_FORM_GNU_strp_alt pointing outside of "
16241              ".debug_str section [in module %s]"),
16242            bfd_get_filename (dwz->dwz_bfd));
16243   gdb_assert (HOST_CHAR_BIT == 8);
16244   if (dwz->str.buffer[str_offset] == '\0')
16245     return NULL;
16246   return (const char *) (dwz->str.buffer + str_offset);
16247 }
16248
16249 static const char *
16250 read_indirect_string (bfd *abfd, const gdb_byte *buf,
16251                       const struct comp_unit_head *cu_header,
16252                       unsigned int *bytes_read_ptr)
16253 {
16254   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16255
16256   return read_indirect_string_at_offset (abfd, str_offset);
16257 }
16258
16259 static ULONGEST
16260 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16261                       unsigned int *bytes_read_ptr)
16262 {
16263   ULONGEST result;
16264   unsigned int num_read;
16265   int i, shift;
16266   unsigned char byte;
16267
16268   result = 0;
16269   shift = 0;
16270   num_read = 0;
16271   i = 0;
16272   while (1)
16273     {
16274       byte = bfd_get_8 (abfd, buf);
16275       buf++;
16276       num_read++;
16277       result |= ((ULONGEST) (byte & 127) << shift);
16278       if ((byte & 128) == 0)
16279         {
16280           break;
16281         }
16282       shift += 7;
16283     }
16284   *bytes_read_ptr = num_read;
16285   return result;
16286 }
16287
16288 static LONGEST
16289 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16290                     unsigned int *bytes_read_ptr)
16291 {
16292   LONGEST result;
16293   int i, shift, num_read;
16294   unsigned char byte;
16295
16296   result = 0;
16297   shift = 0;
16298   num_read = 0;
16299   i = 0;
16300   while (1)
16301     {
16302       byte = bfd_get_8 (abfd, buf);
16303       buf++;
16304       num_read++;
16305       result |= ((LONGEST) (byte & 127) << shift);
16306       shift += 7;
16307       if ((byte & 128) == 0)
16308         {
16309           break;
16310         }
16311     }
16312   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
16313     result |= -(((LONGEST) 1) << shift);
16314   *bytes_read_ptr = num_read;
16315   return result;
16316 }
16317
16318 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
16319    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16320    ADDR_SIZE is the size of addresses from the CU header.  */
16321
16322 static CORE_ADDR
16323 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16324 {
16325   struct objfile *objfile = dwarf2_per_objfile->objfile;
16326   bfd *abfd = objfile->obfd;
16327   const gdb_byte *info_ptr;
16328
16329   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16330   if (dwarf2_per_objfile->addr.buffer == NULL)
16331     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
16332            objfile_name (objfile));
16333   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16334     error (_("DW_FORM_addr_index pointing outside of "
16335              ".debug_addr section [in module %s]"),
16336            objfile_name (objfile));
16337   info_ptr = (dwarf2_per_objfile->addr.buffer
16338               + addr_base + addr_index * addr_size);
16339   if (addr_size == 4)
16340     return bfd_get_32 (abfd, info_ptr);
16341   else
16342     return bfd_get_64 (abfd, info_ptr);
16343 }
16344
16345 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
16346
16347 static CORE_ADDR
16348 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16349 {
16350   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16351 }
16352
16353 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
16354
16355 static CORE_ADDR
16356 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
16357                              unsigned int *bytes_read)
16358 {
16359   bfd *abfd = cu->objfile->obfd;
16360   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16361
16362   return read_addr_index (cu, addr_index);
16363 }
16364
16365 /* Data structure to pass results from dwarf2_read_addr_index_reader
16366    back to dwarf2_read_addr_index.  */
16367
16368 struct dwarf2_read_addr_index_data
16369 {
16370   ULONGEST addr_base;
16371   int addr_size;
16372 };
16373
16374 /* die_reader_func for dwarf2_read_addr_index.  */
16375
16376 static void
16377 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
16378                                const gdb_byte *info_ptr,
16379                                struct die_info *comp_unit_die,
16380                                int has_children,
16381                                void *data)
16382 {
16383   struct dwarf2_cu *cu = reader->cu;
16384   struct dwarf2_read_addr_index_data *aidata =
16385     (struct dwarf2_read_addr_index_data *) data;
16386
16387   aidata->addr_base = cu->addr_base;
16388   aidata->addr_size = cu->header.addr_size;
16389 }
16390
16391 /* Given an index in .debug_addr, fetch the value.
16392    NOTE: This can be called during dwarf expression evaluation,
16393    long after the debug information has been read, and thus per_cu->cu
16394    may no longer exist.  */
16395
16396 CORE_ADDR
16397 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16398                         unsigned int addr_index)
16399 {
16400   struct objfile *objfile = per_cu->objfile;
16401   struct dwarf2_cu *cu = per_cu->cu;
16402   ULONGEST addr_base;
16403   int addr_size;
16404
16405   /* This is intended to be called from outside this file.  */
16406   dw2_setup (objfile);
16407
16408   /* We need addr_base and addr_size.
16409      If we don't have PER_CU->cu, we have to get it.
16410      Nasty, but the alternative is storing the needed info in PER_CU,
16411      which at this point doesn't seem justified: it's not clear how frequently
16412      it would get used and it would increase the size of every PER_CU.
16413      Entry points like dwarf2_per_cu_addr_size do a similar thing
16414      so we're not in uncharted territory here.
16415      Alas we need to be a bit more complicated as addr_base is contained
16416      in the DIE.
16417
16418      We don't need to read the entire CU(/TU).
16419      We just need the header and top level die.
16420
16421      IWBN to use the aging mechanism to let us lazily later discard the CU.
16422      For now we skip this optimization.  */
16423
16424   if (cu != NULL)
16425     {
16426       addr_base = cu->addr_base;
16427       addr_size = cu->header.addr_size;
16428     }
16429   else
16430     {
16431       struct dwarf2_read_addr_index_data aidata;
16432
16433       /* Note: We can't use init_cutu_and_read_dies_simple here,
16434          we need addr_base.  */
16435       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16436                                dwarf2_read_addr_index_reader, &aidata);
16437       addr_base = aidata.addr_base;
16438       addr_size = aidata.addr_size;
16439     }
16440
16441   return read_addr_index_1 (addr_index, addr_base, addr_size);
16442 }
16443
16444 /* Given a DW_FORM_GNU_str_index, fetch the string.
16445    This is only used by the Fission support.  */
16446
16447 static const char *
16448 read_str_index (const struct die_reader_specs *reader,
16449                 struct dwarf2_cu *cu, ULONGEST str_index)
16450 {
16451   struct objfile *objfile = dwarf2_per_objfile->objfile;
16452   const char *dwo_name = objfile_name (objfile);
16453   bfd *abfd = objfile->obfd;
16454   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16455   struct dwarf2_section_info *str_offsets_section =
16456     &reader->dwo_file->sections.str_offsets;
16457   const gdb_byte *info_ptr;
16458   ULONGEST str_offset;
16459   static const char form_name[] = "DW_FORM_GNU_str_index";
16460
16461   dwarf2_read_section (objfile, str_section);
16462   dwarf2_read_section (objfile, str_offsets_section);
16463   if (str_section->buffer == NULL)
16464     error (_("%s used without .debug_str.dwo section"
16465              " in CU at offset 0x%lx [in module %s]"),
16466            form_name, (long) cu->header.offset.sect_off, dwo_name);
16467   if (str_offsets_section->buffer == NULL)
16468     error (_("%s used without .debug_str_offsets.dwo section"
16469              " in CU at offset 0x%lx [in module %s]"),
16470            form_name, (long) cu->header.offset.sect_off, dwo_name);
16471   if (str_index * cu->header.offset_size >= str_offsets_section->size)
16472     error (_("%s pointing outside of .debug_str_offsets.dwo"
16473              " section in CU at offset 0x%lx [in module %s]"),
16474            form_name, (long) cu->header.offset.sect_off, dwo_name);
16475   info_ptr = (str_offsets_section->buffer
16476               + str_index * cu->header.offset_size);
16477   if (cu->header.offset_size == 4)
16478     str_offset = bfd_get_32 (abfd, info_ptr);
16479   else
16480     str_offset = bfd_get_64 (abfd, info_ptr);
16481   if (str_offset >= str_section->size)
16482     error (_("Offset from %s pointing outside of"
16483              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
16484            form_name, (long) cu->header.offset.sect_off, dwo_name);
16485   return (const char *) (str_section->buffer + str_offset);
16486 }
16487
16488 /* Return the length of an LEB128 number in BUF.  */
16489
16490 static int
16491 leb128_size (const gdb_byte *buf)
16492 {
16493   const gdb_byte *begin = buf;
16494   gdb_byte byte;
16495
16496   while (1)
16497     {
16498       byte = *buf++;
16499       if ((byte & 128) == 0)
16500         return buf - begin;
16501     }
16502 }
16503
16504 static void
16505 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
16506 {
16507   switch (lang)
16508     {
16509     case DW_LANG_C89:
16510     case DW_LANG_C99:
16511     case DW_LANG_C:
16512     case DW_LANG_UPC:
16513       cu->language = language_c;
16514       break;
16515     case DW_LANG_C_plus_plus:
16516       cu->language = language_cplus;
16517       break;
16518     case DW_LANG_D:
16519       cu->language = language_d;
16520       break;
16521     case DW_LANG_Fortran77:
16522     case DW_LANG_Fortran90:
16523     case DW_LANG_Fortran95:
16524       cu->language = language_fortran;
16525       break;
16526     case DW_LANG_Go:
16527       cu->language = language_go;
16528       break;
16529     case DW_LANG_Mips_Assembler:
16530       cu->language = language_asm;
16531       break;
16532     case DW_LANG_Java:
16533       cu->language = language_java;
16534       break;
16535     case DW_LANG_Ada83:
16536     case DW_LANG_Ada95:
16537       cu->language = language_ada;
16538       break;
16539     case DW_LANG_Modula2:
16540       cu->language = language_m2;
16541       break;
16542     case DW_LANG_Pascal83:
16543       cu->language = language_pascal;
16544       break;
16545     case DW_LANG_ObjC:
16546       cu->language = language_objc;
16547       break;
16548     case DW_LANG_Cobol74:
16549     case DW_LANG_Cobol85:
16550     default:
16551       cu->language = language_minimal;
16552       break;
16553     }
16554   cu->language_defn = language_def (cu->language);
16555 }
16556
16557 /* Return the named attribute or NULL if not there.  */
16558
16559 static struct attribute *
16560 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
16561 {
16562   for (;;)
16563     {
16564       unsigned int i;
16565       struct attribute *spec = NULL;
16566
16567       for (i = 0; i < die->num_attrs; ++i)
16568         {
16569           if (die->attrs[i].name == name)
16570             return &die->attrs[i];
16571           if (die->attrs[i].name == DW_AT_specification
16572               || die->attrs[i].name == DW_AT_abstract_origin)
16573             spec = &die->attrs[i];
16574         }
16575
16576       if (!spec)
16577         break;
16578
16579       die = follow_die_ref (die, spec, &cu);
16580     }
16581
16582   return NULL;
16583 }
16584
16585 /* Return the named attribute or NULL if not there,
16586    but do not follow DW_AT_specification, etc.
16587    This is for use in contexts where we're reading .debug_types dies.
16588    Following DW_AT_specification, DW_AT_abstract_origin will take us
16589    back up the chain, and we want to go down.  */
16590
16591 static struct attribute *
16592 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
16593 {
16594   unsigned int i;
16595
16596   for (i = 0; i < die->num_attrs; ++i)
16597     if (die->attrs[i].name == name)
16598       return &die->attrs[i];
16599
16600   return NULL;
16601 }
16602
16603 /* Return non-zero iff the attribute NAME is defined for the given DIE,
16604    and holds a non-zero value.  This function should only be used for
16605    DW_FORM_flag or DW_FORM_flag_present attributes.  */
16606
16607 static int
16608 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
16609 {
16610   struct attribute *attr = dwarf2_attr (die, name, cu);
16611
16612   return (attr && DW_UNSND (attr));
16613 }
16614
16615 static int
16616 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
16617 {
16618   /* A DIE is a declaration if it has a DW_AT_declaration attribute
16619      which value is non-zero.  However, we have to be careful with
16620      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
16621      (via dwarf2_flag_true_p) follows this attribute.  So we may
16622      end up accidently finding a declaration attribute that belongs
16623      to a different DIE referenced by the specification attribute,
16624      even though the given DIE does not have a declaration attribute.  */
16625   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
16626           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
16627 }
16628
16629 /* Return the die giving the specification for DIE, if there is
16630    one.  *SPEC_CU is the CU containing DIE on input, and the CU
16631    containing the return value on output.  If there is no
16632    specification, but there is an abstract origin, that is
16633    returned.  */
16634
16635 static struct die_info *
16636 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
16637 {
16638   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
16639                                              *spec_cu);
16640
16641   if (spec_attr == NULL)
16642     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
16643
16644   if (spec_attr == NULL)
16645     return NULL;
16646   else
16647     return follow_die_ref (die, spec_attr, spec_cu);
16648 }
16649
16650 /* Free the line_header structure *LH, and any arrays and strings it
16651    refers to.
16652    NOTE: This is also used as a "cleanup" function.  */
16653
16654 static void
16655 free_line_header (struct line_header *lh)
16656 {
16657   if (lh->standard_opcode_lengths)
16658     xfree (lh->standard_opcode_lengths);
16659
16660   /* Remember that all the lh->file_names[i].name pointers are
16661      pointers into debug_line_buffer, and don't need to be freed.  */
16662   if (lh->file_names)
16663     xfree (lh->file_names);
16664
16665   /* Similarly for the include directory names.  */
16666   if (lh->include_dirs)
16667     xfree (lh->include_dirs);
16668
16669   xfree (lh);
16670 }
16671
16672 /* Add an entry to LH's include directory table.  */
16673
16674 static void
16675 add_include_dir (struct line_header *lh, const char *include_dir)
16676 {
16677   /* Grow the array if necessary.  */
16678   if (lh->include_dirs_size == 0)
16679     {
16680       lh->include_dirs_size = 1; /* for testing */
16681       lh->include_dirs = xmalloc (lh->include_dirs_size
16682                                   * sizeof (*lh->include_dirs));
16683     }
16684   else if (lh->num_include_dirs >= lh->include_dirs_size)
16685     {
16686       lh->include_dirs_size *= 2;
16687       lh->include_dirs = xrealloc (lh->include_dirs,
16688                                    (lh->include_dirs_size
16689                                     * sizeof (*lh->include_dirs)));
16690     }
16691
16692   lh->include_dirs[lh->num_include_dirs++] = include_dir;
16693 }
16694
16695 /* Add an entry to LH's file name table.  */
16696
16697 static void
16698 add_file_name (struct line_header *lh,
16699                const char *name,
16700                unsigned int dir_index,
16701                unsigned int mod_time,
16702                unsigned int length)
16703 {
16704   struct file_entry *fe;
16705
16706   /* Grow the array if necessary.  */
16707   if (lh->file_names_size == 0)
16708     {
16709       lh->file_names_size = 1; /* for testing */
16710       lh->file_names = xmalloc (lh->file_names_size
16711                                 * sizeof (*lh->file_names));
16712     }
16713   else if (lh->num_file_names >= lh->file_names_size)
16714     {
16715       lh->file_names_size *= 2;
16716       lh->file_names = xrealloc (lh->file_names,
16717                                  (lh->file_names_size
16718                                   * sizeof (*lh->file_names)));
16719     }
16720
16721   fe = &lh->file_names[lh->num_file_names++];
16722   fe->name = name;
16723   fe->dir_index = dir_index;
16724   fe->mod_time = mod_time;
16725   fe->length = length;
16726   fe->included_p = 0;
16727   fe->symtab = NULL;
16728 }
16729
16730 /* A convenience function to find the proper .debug_line section for a
16731    CU.  */
16732
16733 static struct dwarf2_section_info *
16734 get_debug_line_section (struct dwarf2_cu *cu)
16735 {
16736   struct dwarf2_section_info *section;
16737
16738   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
16739      DWO file.  */
16740   if (cu->dwo_unit && cu->per_cu->is_debug_types)
16741     section = &cu->dwo_unit->dwo_file->sections.line;
16742   else if (cu->per_cu->is_dwz)
16743     {
16744       struct dwz_file *dwz = dwarf2_get_dwz_file ();
16745
16746       section = &dwz->line;
16747     }
16748   else
16749     section = &dwarf2_per_objfile->line;
16750
16751   return section;
16752 }
16753
16754 /* Read the statement program header starting at OFFSET in
16755    .debug_line, or .debug_line.dwo.  Return a pointer
16756    to a struct line_header, allocated using xmalloc.
16757
16758    NOTE: the strings in the include directory and file name tables of
16759    the returned object point into the dwarf line section buffer,
16760    and must not be freed.  */
16761
16762 static struct line_header *
16763 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
16764 {
16765   struct cleanup *back_to;
16766   struct line_header *lh;
16767   const gdb_byte *line_ptr;
16768   unsigned int bytes_read, offset_size;
16769   int i;
16770   const char *cur_dir, *cur_file;
16771   struct dwarf2_section_info *section;
16772   bfd *abfd;
16773
16774   section = get_debug_line_section (cu);
16775   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
16776   if (section->buffer == NULL)
16777     {
16778       if (cu->dwo_unit && cu->per_cu->is_debug_types)
16779         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
16780       else
16781         complaint (&symfile_complaints, _("missing .debug_line section"));
16782       return 0;
16783     }
16784
16785   /* We can't do this until we know the section is non-empty.
16786      Only then do we know we have such a section.  */
16787   abfd = get_section_bfd_owner (section);
16788
16789   /* Make sure that at least there's room for the total_length field.
16790      That could be 12 bytes long, but we're just going to fudge that.  */
16791   if (offset + 4 >= section->size)
16792     {
16793       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16794       return 0;
16795     }
16796
16797   lh = xmalloc (sizeof (*lh));
16798   memset (lh, 0, sizeof (*lh));
16799   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
16800                           (void *) lh);
16801
16802   line_ptr = section->buffer + offset;
16803
16804   /* Read in the header.  */
16805   lh->total_length =
16806     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
16807                                             &bytes_read, &offset_size);
16808   line_ptr += bytes_read;
16809   if (line_ptr + lh->total_length > (section->buffer + section->size))
16810     {
16811       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16812       do_cleanups (back_to);
16813       return 0;
16814     }
16815   lh->statement_program_end = line_ptr + lh->total_length;
16816   lh->version = read_2_bytes (abfd, line_ptr);
16817   line_ptr += 2;
16818   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
16819   line_ptr += offset_size;
16820   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
16821   line_ptr += 1;
16822   if (lh->version >= 4)
16823     {
16824       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
16825       line_ptr += 1;
16826     }
16827   else
16828     lh->maximum_ops_per_instruction = 1;
16829
16830   if (lh->maximum_ops_per_instruction == 0)
16831     {
16832       lh->maximum_ops_per_instruction = 1;
16833       complaint (&symfile_complaints,
16834                  _("invalid maximum_ops_per_instruction "
16835                    "in `.debug_line' section"));
16836     }
16837
16838   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
16839   line_ptr += 1;
16840   lh->line_base = read_1_signed_byte (abfd, line_ptr);
16841   line_ptr += 1;
16842   lh->line_range = read_1_byte (abfd, line_ptr);
16843   line_ptr += 1;
16844   lh->opcode_base = read_1_byte (abfd, line_ptr);
16845   line_ptr += 1;
16846   lh->standard_opcode_lengths
16847     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
16848
16849   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
16850   for (i = 1; i < lh->opcode_base; ++i)
16851     {
16852       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
16853       line_ptr += 1;
16854     }
16855
16856   /* Read directory table.  */
16857   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
16858     {
16859       line_ptr += bytes_read;
16860       add_include_dir (lh, cur_dir);
16861     }
16862   line_ptr += bytes_read;
16863
16864   /* Read file name table.  */
16865   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
16866     {
16867       unsigned int dir_index, mod_time, length;
16868
16869       line_ptr += bytes_read;
16870       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16871       line_ptr += bytes_read;
16872       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16873       line_ptr += bytes_read;
16874       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16875       line_ptr += bytes_read;
16876
16877       add_file_name (lh, cur_file, dir_index, mod_time, length);
16878     }
16879   line_ptr += bytes_read;
16880   lh->statement_program_start = line_ptr;
16881
16882   if (line_ptr > (section->buffer + section->size))
16883     complaint (&symfile_complaints,
16884                _("line number info header doesn't "
16885                  "fit in `.debug_line' section"));
16886
16887   discard_cleanups (back_to);
16888   return lh;
16889 }
16890
16891 /* Subroutine of dwarf_decode_lines to simplify it.
16892    Return the file name of the psymtab for included file FILE_INDEX
16893    in line header LH of PST.
16894    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
16895    If space for the result is malloc'd, it will be freed by a cleanup.
16896    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
16897
16898    The function creates dangling cleanup registration.  */
16899
16900 static const char *
16901 psymtab_include_file_name (const struct line_header *lh, int file_index,
16902                            const struct partial_symtab *pst,
16903                            const char *comp_dir)
16904 {
16905   const struct file_entry fe = lh->file_names [file_index];
16906   const char *include_name = fe.name;
16907   const char *include_name_to_compare = include_name;
16908   const char *dir_name = NULL;
16909   const char *pst_filename;
16910   char *copied_name = NULL;
16911   int file_is_pst;
16912
16913   if (fe.dir_index)
16914     dir_name = lh->include_dirs[fe.dir_index - 1];
16915
16916   if (!IS_ABSOLUTE_PATH (include_name)
16917       && (dir_name != NULL || comp_dir != NULL))
16918     {
16919       /* Avoid creating a duplicate psymtab for PST.
16920          We do this by comparing INCLUDE_NAME and PST_FILENAME.
16921          Before we do the comparison, however, we need to account
16922          for DIR_NAME and COMP_DIR.
16923          First prepend dir_name (if non-NULL).  If we still don't
16924          have an absolute path prepend comp_dir (if non-NULL).
16925          However, the directory we record in the include-file's
16926          psymtab does not contain COMP_DIR (to match the
16927          corresponding symtab(s)).
16928
16929          Example:
16930
16931          bash$ cd /tmp
16932          bash$ gcc -g ./hello.c
16933          include_name = "hello.c"
16934          dir_name = "."
16935          DW_AT_comp_dir = comp_dir = "/tmp"
16936          DW_AT_name = "./hello.c"  */
16937
16938       if (dir_name != NULL)
16939         {
16940           char *tem = concat (dir_name, SLASH_STRING,
16941                               include_name, (char *)NULL);
16942
16943           make_cleanup (xfree, tem);
16944           include_name = tem;
16945           include_name_to_compare = include_name;
16946         }
16947       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
16948         {
16949           char *tem = concat (comp_dir, SLASH_STRING,
16950                               include_name, (char *)NULL);
16951
16952           make_cleanup (xfree, tem);
16953           include_name_to_compare = tem;
16954         }
16955     }
16956
16957   pst_filename = pst->filename;
16958   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
16959     {
16960       copied_name = concat (pst->dirname, SLASH_STRING,
16961                             pst_filename, (char *)NULL);
16962       pst_filename = copied_name;
16963     }
16964
16965   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
16966
16967   if (copied_name != NULL)
16968     xfree (copied_name);
16969
16970   if (file_is_pst)
16971     return NULL;
16972   return include_name;
16973 }
16974
16975 /* Ignore this record_line request.  */
16976
16977 static void
16978 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
16979 {
16980   return;
16981 }
16982
16983 /* Subroutine of dwarf_decode_lines to simplify it.
16984    Process the line number information in LH.  */
16985
16986 static void
16987 dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
16988                       struct dwarf2_cu *cu, struct partial_symtab *pst)
16989 {
16990   const gdb_byte *line_ptr, *extended_end;
16991   const gdb_byte *line_end;
16992   unsigned int bytes_read, extended_len;
16993   unsigned char op_code, extended_op, adj_opcode;
16994   CORE_ADDR baseaddr;
16995   struct objfile *objfile = cu->objfile;
16996   bfd *abfd = objfile->obfd;
16997   struct gdbarch *gdbarch = get_objfile_arch (objfile);
16998   const int decode_for_pst_p = (pst != NULL);
16999   struct subfile *last_subfile = NULL;
17000   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
17001     = record_line;
17002
17003   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17004
17005   line_ptr = lh->statement_program_start;
17006   line_end = lh->statement_program_end;
17007
17008   /* Read the statement sequences until there's nothing left.  */
17009   while (line_ptr < line_end)
17010     {
17011       /* state machine registers  */
17012       CORE_ADDR address = 0;
17013       unsigned int file = 1;
17014       unsigned int line = 1;
17015       unsigned int column = 0;
17016       int is_stmt = lh->default_is_stmt;
17017       int basic_block = 0;
17018       int end_sequence = 0;
17019       CORE_ADDR addr;
17020       unsigned char op_index = 0;
17021
17022       if (!decode_for_pst_p && lh->num_file_names >= file)
17023         {
17024           /* Start a subfile for the current file of the state machine.  */
17025           /* lh->include_dirs and lh->file_names are 0-based, but the
17026              directory and file name numbers in the statement program
17027              are 1-based.  */
17028           struct file_entry *fe = &lh->file_names[file - 1];
17029           const char *dir = NULL;
17030
17031           if (fe->dir_index)
17032             dir = lh->include_dirs[fe->dir_index - 1];
17033
17034           dwarf2_start_subfile (fe->name, dir, comp_dir);
17035         }
17036
17037       /* Decode the table.  */
17038       while (!end_sequence)
17039         {
17040           op_code = read_1_byte (abfd, line_ptr);
17041           line_ptr += 1;
17042           if (line_ptr > line_end)
17043             {
17044               dwarf2_debug_line_missing_end_sequence_complaint ();
17045               break;
17046             }
17047
17048           if (op_code >= lh->opcode_base)
17049             {
17050               /* Special operand.  */
17051               adj_opcode = op_code - lh->opcode_base;
17052               address += (((op_index + (adj_opcode / lh->line_range))
17053                            / lh->maximum_ops_per_instruction)
17054                           * lh->minimum_instruction_length);
17055               op_index = ((op_index + (adj_opcode / lh->line_range))
17056                           % lh->maximum_ops_per_instruction);
17057               line += lh->line_base + (adj_opcode % lh->line_range);
17058               if (lh->num_file_names < file || file == 0)
17059                 dwarf2_debug_line_missing_file_complaint ();
17060               /* For now we ignore lines not starting on an
17061                  instruction boundary.  */
17062               else if (op_index == 0)
17063                 {
17064                   lh->file_names[file - 1].included_p = 1;
17065                   if (!decode_for_pst_p && is_stmt)
17066                     {
17067                       if (last_subfile != current_subfile)
17068                         {
17069                           addr = gdbarch_addr_bits_remove (gdbarch, address);
17070                           if (last_subfile)
17071                             (*p_record_line) (last_subfile, 0, addr);
17072                           last_subfile = current_subfile;
17073                         }
17074                       /* Append row to matrix using current values.  */
17075                       addr = gdbarch_addr_bits_remove (gdbarch, address);
17076                       (*p_record_line) (current_subfile, line, addr);
17077                     }
17078                 }
17079               basic_block = 0;
17080             }
17081           else switch (op_code)
17082             {
17083             case DW_LNS_extended_op:
17084               extended_len = read_unsigned_leb128 (abfd, line_ptr,
17085                                                    &bytes_read);
17086               line_ptr += bytes_read;
17087               extended_end = line_ptr + extended_len;
17088               extended_op = read_1_byte (abfd, line_ptr);
17089               line_ptr += 1;
17090               switch (extended_op)
17091                 {
17092                 case DW_LNE_end_sequence:
17093                   p_record_line = record_line;
17094                   end_sequence = 1;
17095                   break;
17096                 case DW_LNE_set_address:
17097                   address = read_address (abfd, line_ptr, cu, &bytes_read);
17098
17099                   if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
17100                     {
17101                       /* This line table is for a function which has been
17102                          GCd by the linker.  Ignore it.  PR gdb/12528 */
17103
17104                       long line_offset
17105                         = line_ptr - get_debug_line_section (cu)->buffer;
17106
17107                       complaint (&symfile_complaints,
17108                                  _(".debug_line address at offset 0x%lx is 0 "
17109                                    "[in module %s]"),
17110                                  line_offset, objfile_name (objfile));
17111                       p_record_line = noop_record_line;
17112                     }
17113
17114                   op_index = 0;
17115                   line_ptr += bytes_read;
17116                   address += baseaddr;
17117                   break;
17118                 case DW_LNE_define_file:
17119                   {
17120                     const char *cur_file;
17121                     unsigned int dir_index, mod_time, length;
17122
17123                     cur_file = read_direct_string (abfd, line_ptr,
17124                                                    &bytes_read);
17125                     line_ptr += bytes_read;
17126                     dir_index =
17127                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17128                     line_ptr += bytes_read;
17129                     mod_time =
17130                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17131                     line_ptr += bytes_read;
17132                     length =
17133                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17134                     line_ptr += bytes_read;
17135                     add_file_name (lh, cur_file, dir_index, mod_time, length);
17136                   }
17137                   break;
17138                 case DW_LNE_set_discriminator:
17139                   /* The discriminator is not interesting to the debugger;
17140                      just ignore it.  */
17141                   line_ptr = extended_end;
17142                   break;
17143                 default:
17144                   complaint (&symfile_complaints,
17145                              _("mangled .debug_line section"));
17146                   return;
17147                 }
17148               /* Make sure that we parsed the extended op correctly.  If e.g.
17149                  we expected a different address size than the producer used,
17150                  we may have read the wrong number of bytes.  */
17151               if (line_ptr != extended_end)
17152                 {
17153                   complaint (&symfile_complaints,
17154                              _("mangled .debug_line section"));
17155                   return;
17156                 }
17157               break;
17158             case DW_LNS_copy:
17159               if (lh->num_file_names < file || file == 0)
17160                 dwarf2_debug_line_missing_file_complaint ();
17161               else
17162                 {
17163                   lh->file_names[file - 1].included_p = 1;
17164                   if (!decode_for_pst_p && is_stmt)
17165                     {
17166                       if (last_subfile != current_subfile)
17167                         {
17168                           addr = gdbarch_addr_bits_remove (gdbarch, address);
17169                           if (last_subfile)
17170                             (*p_record_line) (last_subfile, 0, addr);
17171                           last_subfile = current_subfile;
17172                         }
17173                       addr = gdbarch_addr_bits_remove (gdbarch, address);
17174                       (*p_record_line) (current_subfile, line, addr);
17175                     }
17176                 }
17177               basic_block = 0;
17178               break;
17179             case DW_LNS_advance_pc:
17180               {
17181                 CORE_ADDR adjust
17182                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17183
17184                 address += (((op_index + adjust)
17185                              / lh->maximum_ops_per_instruction)
17186                             * lh->minimum_instruction_length);
17187                 op_index = ((op_index + adjust)
17188                             % lh->maximum_ops_per_instruction);
17189                 line_ptr += bytes_read;
17190               }
17191               break;
17192             case DW_LNS_advance_line:
17193               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
17194               line_ptr += bytes_read;
17195               break;
17196             case DW_LNS_set_file:
17197               {
17198                 /* The arrays lh->include_dirs and lh->file_names are
17199                    0-based, but the directory and file name numbers in
17200                    the statement program are 1-based.  */
17201                 struct file_entry *fe;
17202                 const char *dir = NULL;
17203
17204                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17205                 line_ptr += bytes_read;
17206                 if (lh->num_file_names < file || file == 0)
17207                   dwarf2_debug_line_missing_file_complaint ();
17208                 else
17209                   {
17210                     fe = &lh->file_names[file - 1];
17211                     if (fe->dir_index)
17212                       dir = lh->include_dirs[fe->dir_index - 1];
17213                     if (!decode_for_pst_p)
17214                       {
17215                         last_subfile = current_subfile;
17216                         dwarf2_start_subfile (fe->name, dir, comp_dir);
17217                       }
17218                   }
17219               }
17220               break;
17221             case DW_LNS_set_column:
17222               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17223               line_ptr += bytes_read;
17224               break;
17225             case DW_LNS_negate_stmt:
17226               is_stmt = (!is_stmt);
17227               break;
17228             case DW_LNS_set_basic_block:
17229               basic_block = 1;
17230               break;
17231             /* Add to the address register of the state machine the
17232                address increment value corresponding to special opcode
17233                255.  I.e., this value is scaled by the minimum
17234                instruction length since special opcode 255 would have
17235                scaled the increment.  */
17236             case DW_LNS_const_add_pc:
17237               {
17238                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
17239
17240                 address += (((op_index + adjust)
17241                              / lh->maximum_ops_per_instruction)
17242                             * lh->minimum_instruction_length);
17243                 op_index = ((op_index + adjust)
17244                             % lh->maximum_ops_per_instruction);
17245               }
17246               break;
17247             case DW_LNS_fixed_advance_pc:
17248               address += read_2_bytes (abfd, line_ptr);
17249               op_index = 0;
17250               line_ptr += 2;
17251               break;
17252             default:
17253               {
17254                 /* Unknown standard opcode, ignore it.  */
17255                 int i;
17256
17257                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
17258                   {
17259                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17260                     line_ptr += bytes_read;
17261                   }
17262               }
17263             }
17264         }
17265       if (lh->num_file_names < file || file == 0)
17266         dwarf2_debug_line_missing_file_complaint ();
17267       else
17268         {
17269           lh->file_names[file - 1].included_p = 1;
17270           if (!decode_for_pst_p)
17271             {
17272               addr = gdbarch_addr_bits_remove (gdbarch, address);
17273               (*p_record_line) (current_subfile, 0, addr);
17274             }
17275         }
17276     }
17277 }
17278
17279 /* Decode the Line Number Program (LNP) for the given line_header
17280    structure and CU.  The actual information extracted and the type
17281    of structures created from the LNP depends on the value of PST.
17282
17283    1. If PST is NULL, then this procedure uses the data from the program
17284       to create all necessary symbol tables, and their linetables.
17285
17286    2. If PST is not NULL, this procedure reads the program to determine
17287       the list of files included by the unit represented by PST, and
17288       builds all the associated partial symbol tables.
17289
17290    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17291    It is used for relative paths in the line table.
17292    NOTE: When processing partial symtabs (pst != NULL),
17293    comp_dir == pst->dirname.
17294
17295    NOTE: It is important that psymtabs have the same file name (via strcmp)
17296    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
17297    symtab we don't use it in the name of the psymtabs we create.
17298    E.g. expand_line_sal requires this when finding psymtabs to expand.
17299    A good testcase for this is mb-inline.exp.  */
17300
17301 static void
17302 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
17303                     struct dwarf2_cu *cu, struct partial_symtab *pst,
17304                     int want_line_info)
17305 {
17306   struct objfile *objfile = cu->objfile;
17307   const int decode_for_pst_p = (pst != NULL);
17308   struct subfile *first_subfile = current_subfile;
17309
17310   if (want_line_info)
17311     dwarf_decode_lines_1 (lh, comp_dir, cu, pst);
17312
17313   if (decode_for_pst_p)
17314     {
17315       int file_index;
17316
17317       /* Now that we're done scanning the Line Header Program, we can
17318          create the psymtab of each included file.  */
17319       for (file_index = 0; file_index < lh->num_file_names; file_index++)
17320         if (lh->file_names[file_index].included_p == 1)
17321           {
17322             const char *include_name =
17323               psymtab_include_file_name (lh, file_index, pst, comp_dir);
17324             if (include_name != NULL)
17325               dwarf2_create_include_psymtab (include_name, pst, objfile);
17326           }
17327     }
17328   else
17329     {
17330       /* Make sure a symtab is created for every file, even files
17331          which contain only variables (i.e. no code with associated
17332          line numbers).  */
17333       int i;
17334
17335       for (i = 0; i < lh->num_file_names; i++)
17336         {
17337           const char *dir = NULL;
17338           struct file_entry *fe;
17339
17340           fe = &lh->file_names[i];
17341           if (fe->dir_index)
17342             dir = lh->include_dirs[fe->dir_index - 1];
17343           dwarf2_start_subfile (fe->name, dir, comp_dir);
17344
17345           /* Skip the main file; we don't need it, and it must be
17346              allocated last, so that it will show up before the
17347              non-primary symtabs in the objfile's symtab list.  */
17348           if (current_subfile == first_subfile)
17349             continue;
17350
17351           if (current_subfile->symtab == NULL)
17352             current_subfile->symtab = allocate_symtab (current_subfile->name,
17353                                                        objfile);
17354           fe->symtab = current_subfile->symtab;
17355         }
17356     }
17357 }
17358
17359 /* Start a subfile for DWARF.  FILENAME is the name of the file and
17360    DIRNAME the name of the source directory which contains FILENAME
17361    or NULL if not known.  COMP_DIR is the compilation directory for the
17362    linetable's compilation unit or NULL if not known.
17363    This routine tries to keep line numbers from identical absolute and
17364    relative file names in a common subfile.
17365
17366    Using the `list' example from the GDB testsuite, which resides in
17367    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
17368    of /srcdir/list0.c yields the following debugging information for list0.c:
17369
17370    DW_AT_name:          /srcdir/list0.c
17371    DW_AT_comp_dir:              /compdir
17372    files.files[0].name: list0.h
17373    files.files[0].dir:  /srcdir
17374    files.files[1].name: list0.c
17375    files.files[1].dir:  /srcdir
17376
17377    The line number information for list0.c has to end up in a single
17378    subfile, so that `break /srcdir/list0.c:1' works as expected.
17379    start_subfile will ensure that this happens provided that we pass the
17380    concatenation of files.files[1].dir and files.files[1].name as the
17381    subfile's name.  */
17382
17383 static void
17384 dwarf2_start_subfile (const char *filename, const char *dirname,
17385                       const char *comp_dir)
17386 {
17387   char *copy = NULL;
17388
17389   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
17390      `start_symtab' will always pass the contents of DW_AT_comp_dir as
17391      second argument to start_subfile.  To be consistent, we do the
17392      same here.  In order not to lose the line information directory,
17393      we concatenate it to the filename when it makes sense.
17394      Note that the Dwarf3 standard says (speaking of filenames in line
17395      information): ``The directory index is ignored for file names
17396      that represent full path names''.  Thus ignoring dirname in the
17397      `else' branch below isn't an issue.  */
17398
17399   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
17400     {
17401       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
17402       filename = copy;
17403     }
17404
17405   start_subfile (filename, comp_dir);
17406
17407   if (copy != NULL)
17408     xfree (copy);
17409 }
17410
17411 /* Start a symtab for DWARF.
17412    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
17413
17414 static void
17415 dwarf2_start_symtab (struct dwarf2_cu *cu,
17416                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
17417 {
17418   start_symtab (name, comp_dir, low_pc);
17419   record_debugformat ("DWARF 2");
17420   record_producer (cu->producer);
17421
17422   /* We assume that we're processing GCC output.  */
17423   processing_gcc_compilation = 2;
17424
17425   cu->processing_has_namespace_info = 0;
17426 }
17427
17428 static void
17429 var_decode_location (struct attribute *attr, struct symbol *sym,
17430                      struct dwarf2_cu *cu)
17431 {
17432   struct objfile *objfile = cu->objfile;
17433   struct comp_unit_head *cu_header = &cu->header;
17434
17435   /* NOTE drow/2003-01-30: There used to be a comment and some special
17436      code here to turn a symbol with DW_AT_external and a
17437      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
17438      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
17439      with some versions of binutils) where shared libraries could have
17440      relocations against symbols in their debug information - the
17441      minimal symbol would have the right address, but the debug info
17442      would not.  It's no longer necessary, because we will explicitly
17443      apply relocations when we read in the debug information now.  */
17444
17445   /* A DW_AT_location attribute with no contents indicates that a
17446      variable has been optimized away.  */
17447   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
17448     {
17449       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17450       return;
17451     }
17452
17453   /* Handle one degenerate form of location expression specially, to
17454      preserve GDB's previous behavior when section offsets are
17455      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
17456      then mark this symbol as LOC_STATIC.  */
17457
17458   if (attr_form_is_block (attr)
17459       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
17460            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
17461           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
17462               && (DW_BLOCK (attr)->size
17463                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
17464     {
17465       unsigned int dummy;
17466
17467       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
17468         SYMBOL_VALUE_ADDRESS (sym) =
17469           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
17470       else
17471         SYMBOL_VALUE_ADDRESS (sym) =
17472           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
17473       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
17474       fixup_symbol_section (sym, objfile);
17475       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
17476                                               SYMBOL_SECTION (sym));
17477       return;
17478     }
17479
17480   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
17481      expression evaluator, and use LOC_COMPUTED only when necessary
17482      (i.e. when the value of a register or memory location is
17483      referenced, or a thread-local block, etc.).  Then again, it might
17484      not be worthwhile.  I'm assuming that it isn't unless performance
17485      or memory numbers show me otherwise.  */
17486
17487   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
17488
17489   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
17490     cu->has_loclist = 1;
17491 }
17492
17493 /* Given a pointer to a DWARF information entry, figure out if we need
17494    to make a symbol table entry for it, and if so, create a new entry
17495    and return a pointer to it.
17496    If TYPE is NULL, determine symbol type from the die, otherwise
17497    used the passed type.
17498    If SPACE is not NULL, use it to hold the new symbol.  If it is
17499    NULL, allocate a new symbol on the objfile's obstack.  */
17500
17501 static struct symbol *
17502 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
17503                  struct symbol *space)
17504 {
17505   struct objfile *objfile = cu->objfile;
17506   struct symbol *sym = NULL;
17507   const char *name;
17508   struct attribute *attr = NULL;
17509   struct attribute *attr2 = NULL;
17510   CORE_ADDR baseaddr;
17511   struct pending **list_to_add = NULL;
17512
17513   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
17514
17515   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17516
17517   name = dwarf2_name (die, cu);
17518   if (name)
17519     {
17520       const char *linkagename;
17521       int suppress_add = 0;
17522
17523       if (space)
17524         sym = space;
17525       else
17526         sym = allocate_symbol (objfile);
17527       OBJSTAT (objfile, n_syms++);
17528
17529       /* Cache this symbol's name and the name's demangled form (if any).  */
17530       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
17531       linkagename = dwarf2_physname (name, die, cu);
17532       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
17533
17534       /* Fortran does not have mangling standard and the mangling does differ
17535          between gfortran, iFort etc.  */
17536       if (cu->language == language_fortran
17537           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
17538         symbol_set_demangled_name (&(sym->ginfo),
17539                                    dwarf2_full_name (name, die, cu),
17540                                    NULL);
17541
17542       /* Default assumptions.
17543          Use the passed type or decode it from the die.  */
17544       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17545       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17546       if (type != NULL)
17547         SYMBOL_TYPE (sym) = type;
17548       else
17549         SYMBOL_TYPE (sym) = die_type (die, cu);
17550       attr = dwarf2_attr (die,
17551                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
17552                           cu);
17553       if (attr)
17554         {
17555           SYMBOL_LINE (sym) = DW_UNSND (attr);
17556         }
17557
17558       attr = dwarf2_attr (die,
17559                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
17560                           cu);
17561       if (attr)
17562         {
17563           int file_index = DW_UNSND (attr);
17564
17565           if (cu->line_header == NULL
17566               || file_index > cu->line_header->num_file_names)
17567             complaint (&symfile_complaints,
17568                        _("file index out of range"));
17569           else if (file_index > 0)
17570             {
17571               struct file_entry *fe;
17572
17573               fe = &cu->line_header->file_names[file_index - 1];
17574               SYMBOL_SYMTAB (sym) = fe->symtab;
17575             }
17576         }
17577
17578       switch (die->tag)
17579         {
17580         case DW_TAG_label:
17581           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
17582           if (attr)
17583             SYMBOL_VALUE_ADDRESS (sym)
17584               = attr_value_as_address (attr) + baseaddr;
17585           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
17586           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
17587           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
17588           add_symbol_to_list (sym, cu->list_in_scope);
17589           break;
17590         case DW_TAG_subprogram:
17591           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17592              finish_block.  */
17593           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17594           attr2 = dwarf2_attr (die, DW_AT_external, cu);
17595           if ((attr2 && (DW_UNSND (attr2) != 0))
17596               || cu->language == language_ada)
17597             {
17598               /* Subprograms marked external are stored as a global symbol.
17599                  Ada subprograms, whether marked external or not, are always
17600                  stored as a global symbol, because we want to be able to
17601                  access them globally.  For instance, we want to be able
17602                  to break on a nested subprogram without having to
17603                  specify the context.  */
17604               list_to_add = &global_symbols;
17605             }
17606           else
17607             {
17608               list_to_add = cu->list_in_scope;
17609             }
17610           break;
17611         case DW_TAG_inlined_subroutine:
17612           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17613              finish_block.  */
17614           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17615           SYMBOL_INLINED (sym) = 1;
17616           list_to_add = cu->list_in_scope;
17617           break;
17618         case DW_TAG_template_value_param:
17619           suppress_add = 1;
17620           /* Fall through.  */
17621         case DW_TAG_constant:
17622         case DW_TAG_variable:
17623         case DW_TAG_member:
17624           /* Compilation with minimal debug info may result in
17625              variables with missing type entries.  Change the
17626              misleading `void' type to something sensible.  */
17627           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
17628             SYMBOL_TYPE (sym)
17629               = objfile_type (objfile)->nodebug_data_symbol;
17630
17631           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17632           /* In the case of DW_TAG_member, we should only be called for
17633              static const members.  */
17634           if (die->tag == DW_TAG_member)
17635             {
17636               /* dwarf2_add_field uses die_is_declaration,
17637                  so we do the same.  */
17638               gdb_assert (die_is_declaration (die, cu));
17639               gdb_assert (attr);
17640             }
17641           if (attr)
17642             {
17643               dwarf2_const_value (attr, sym, cu);
17644               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17645               if (!suppress_add)
17646                 {
17647                   if (attr2 && (DW_UNSND (attr2) != 0))
17648                     list_to_add = &global_symbols;
17649                   else
17650                     list_to_add = cu->list_in_scope;
17651                 }
17652               break;
17653             }
17654           attr = dwarf2_attr (die, DW_AT_location, cu);
17655           if (attr)
17656             {
17657               var_decode_location (attr, sym, cu);
17658               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17659
17660               /* Fortran explicitly imports any global symbols to the local
17661                  scope by DW_TAG_common_block.  */
17662               if (cu->language == language_fortran && die->parent
17663                   && die->parent->tag == DW_TAG_common_block)
17664                 attr2 = NULL;
17665
17666               if (SYMBOL_CLASS (sym) == LOC_STATIC
17667                   && SYMBOL_VALUE_ADDRESS (sym) == 0
17668                   && !dwarf2_per_objfile->has_section_at_zero)
17669                 {
17670                   /* When a static variable is eliminated by the linker,
17671                      the corresponding debug information is not stripped
17672                      out, but the variable address is set to null;
17673                      do not add such variables into symbol table.  */
17674                 }
17675               else if (attr2 && (DW_UNSND (attr2) != 0))
17676                 {
17677                   /* Workaround gfortran PR debug/40040 - it uses
17678                      DW_AT_location for variables in -fPIC libraries which may
17679                      get overriden by other libraries/executable and get
17680                      a different address.  Resolve it by the minimal symbol
17681                      which may come from inferior's executable using copy
17682                      relocation.  Make this workaround only for gfortran as for
17683                      other compilers GDB cannot guess the minimal symbol
17684                      Fortran mangling kind.  */
17685                   if (cu->language == language_fortran && die->parent
17686                       && die->parent->tag == DW_TAG_module
17687                       && cu->producer
17688                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
17689                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
17690
17691                   /* A variable with DW_AT_external is never static,
17692                      but it may be block-scoped.  */
17693                   list_to_add = (cu->list_in_scope == &file_symbols
17694                                  ? &global_symbols : cu->list_in_scope);
17695                 }
17696               else
17697                 list_to_add = cu->list_in_scope;
17698             }
17699           else
17700             {
17701               /* We do not know the address of this symbol.
17702                  If it is an external symbol and we have type information
17703                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
17704                  The address of the variable will then be determined from
17705                  the minimal symbol table whenever the variable is
17706                  referenced.  */
17707               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17708
17709               /* Fortran explicitly imports any global symbols to the local
17710                  scope by DW_TAG_common_block.  */
17711               if (cu->language == language_fortran && die->parent
17712                   && die->parent->tag == DW_TAG_common_block)
17713                 {
17714                   /* SYMBOL_CLASS doesn't matter here because
17715                      read_common_block is going to reset it.  */
17716                   if (!suppress_add)
17717                     list_to_add = cu->list_in_scope;
17718                 }
17719               else if (attr2 && (DW_UNSND (attr2) != 0)
17720                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
17721                 {
17722                   /* A variable with DW_AT_external is never static, but it
17723                      may be block-scoped.  */
17724                   list_to_add = (cu->list_in_scope == &file_symbols
17725                                  ? &global_symbols : cu->list_in_scope);
17726
17727                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
17728                 }
17729               else if (!die_is_declaration (die, cu))
17730                 {
17731                   /* Use the default LOC_OPTIMIZED_OUT class.  */
17732                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
17733                   if (!suppress_add)
17734                     list_to_add = cu->list_in_scope;
17735                 }
17736             }
17737           break;
17738         case DW_TAG_formal_parameter:
17739           /* If we are inside a function, mark this as an argument.  If
17740              not, we might be looking at an argument to an inlined function
17741              when we do not have enough information to show inlined frames;
17742              pretend it's a local variable in that case so that the user can
17743              still see it.  */
17744           if (context_stack_depth > 0
17745               && context_stack[context_stack_depth - 1].name != NULL)
17746             SYMBOL_IS_ARGUMENT (sym) = 1;
17747           attr = dwarf2_attr (die, DW_AT_location, cu);
17748           if (attr)
17749             {
17750               var_decode_location (attr, sym, cu);
17751             }
17752           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17753           if (attr)
17754             {
17755               dwarf2_const_value (attr, sym, cu);
17756             }
17757
17758           list_to_add = cu->list_in_scope;
17759           break;
17760         case DW_TAG_unspecified_parameters:
17761           /* From varargs functions; gdb doesn't seem to have any
17762              interest in this information, so just ignore it for now.
17763              (FIXME?) */
17764           break;
17765         case DW_TAG_template_type_param:
17766           suppress_add = 1;
17767           /* Fall through.  */
17768         case DW_TAG_class_type:
17769         case DW_TAG_interface_type:
17770         case DW_TAG_structure_type:
17771         case DW_TAG_union_type:
17772         case DW_TAG_set_type:
17773         case DW_TAG_enumeration_type:
17774           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17775           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
17776
17777           {
17778             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
17779                really ever be static objects: otherwise, if you try
17780                to, say, break of a class's method and you're in a file
17781                which doesn't mention that class, it won't work unless
17782                the check for all static symbols in lookup_symbol_aux
17783                saves you.  See the OtherFileClass tests in
17784                gdb.c++/namespace.exp.  */
17785
17786             if (!suppress_add)
17787               {
17788                 list_to_add = (cu->list_in_scope == &file_symbols
17789                                && (cu->language == language_cplus
17790                                    || cu->language == language_java)
17791                                ? &global_symbols : cu->list_in_scope);
17792
17793                 /* The semantics of C++ state that "struct foo {
17794                    ... }" also defines a typedef for "foo".  A Java
17795                    class declaration also defines a typedef for the
17796                    class.  */
17797                 if (cu->language == language_cplus
17798                     || cu->language == language_java
17799                     || cu->language == language_ada)
17800                   {
17801                     /* The symbol's name is already allocated along
17802                        with this objfile, so we don't need to
17803                        duplicate it for the type.  */
17804                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
17805                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
17806                   }
17807               }
17808           }
17809           break;
17810         case DW_TAG_typedef:
17811           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17812           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17813           list_to_add = cu->list_in_scope;
17814           break;
17815         case DW_TAG_base_type:
17816         case DW_TAG_subrange_type:
17817           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17818           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17819           list_to_add = cu->list_in_scope;
17820           break;
17821         case DW_TAG_enumerator:
17822           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17823           if (attr)
17824             {
17825               dwarf2_const_value (attr, sym, cu);
17826             }
17827           {
17828             /* NOTE: carlton/2003-11-10: See comment above in the
17829                DW_TAG_class_type, etc. block.  */
17830
17831             list_to_add = (cu->list_in_scope == &file_symbols
17832                            && (cu->language == language_cplus
17833                                || cu->language == language_java)
17834                            ? &global_symbols : cu->list_in_scope);
17835           }
17836           break;
17837         case DW_TAG_imported_declaration:
17838         case DW_TAG_namespace:
17839           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17840           list_to_add = &global_symbols;
17841           break;
17842         case DW_TAG_module:
17843           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17844           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
17845           list_to_add = &global_symbols;
17846           break;
17847         case DW_TAG_common_block:
17848           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
17849           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
17850           add_symbol_to_list (sym, cu->list_in_scope);
17851           break;
17852         default:
17853           /* Not a tag we recognize.  Hopefully we aren't processing
17854              trash data, but since we must specifically ignore things
17855              we don't recognize, there is nothing else we should do at
17856              this point.  */
17857           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
17858                      dwarf_tag_name (die->tag));
17859           break;
17860         }
17861
17862       if (suppress_add)
17863         {
17864           sym->hash_next = objfile->template_symbols;
17865           objfile->template_symbols = sym;
17866           list_to_add = NULL;
17867         }
17868
17869       if (list_to_add != NULL)
17870         add_symbol_to_list (sym, list_to_add);
17871
17872       /* For the benefit of old versions of GCC, check for anonymous
17873          namespaces based on the demangled name.  */
17874       if (!cu->processing_has_namespace_info
17875           && cu->language == language_cplus)
17876         cp_scan_for_anonymous_namespaces (sym, objfile);
17877     }
17878   return (sym);
17879 }
17880
17881 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
17882
17883 static struct symbol *
17884 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
17885 {
17886   return new_symbol_full (die, type, cu, NULL);
17887 }
17888
17889 /* Given an attr with a DW_FORM_dataN value in host byte order,
17890    zero-extend it as appropriate for the symbol's type.  The DWARF
17891    standard (v4) is not entirely clear about the meaning of using
17892    DW_FORM_dataN for a constant with a signed type, where the type is
17893    wider than the data.  The conclusion of a discussion on the DWARF
17894    list was that this is unspecified.  We choose to always zero-extend
17895    because that is the interpretation long in use by GCC.  */
17896
17897 static gdb_byte *
17898 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
17899                          struct dwarf2_cu *cu, LONGEST *value, int bits)
17900 {
17901   struct objfile *objfile = cu->objfile;
17902   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
17903                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
17904   LONGEST l = DW_UNSND (attr);
17905
17906   if (bits < sizeof (*value) * 8)
17907     {
17908       l &= ((LONGEST) 1 << bits) - 1;
17909       *value = l;
17910     }
17911   else if (bits == sizeof (*value) * 8)
17912     *value = l;
17913   else
17914     {
17915       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
17916       store_unsigned_integer (bytes, bits / 8, byte_order, l);
17917       return bytes;
17918     }
17919
17920   return NULL;
17921 }
17922
17923 /* Read a constant value from an attribute.  Either set *VALUE, or if
17924    the value does not fit in *VALUE, set *BYTES - either already
17925    allocated on the objfile obstack, or newly allocated on OBSTACK,
17926    or, set *BATON, if we translated the constant to a location
17927    expression.  */
17928
17929 static void
17930 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
17931                          const char *name, struct obstack *obstack,
17932                          struct dwarf2_cu *cu,
17933                          LONGEST *value, const gdb_byte **bytes,
17934                          struct dwarf2_locexpr_baton **baton)
17935 {
17936   struct objfile *objfile = cu->objfile;
17937   struct comp_unit_head *cu_header = &cu->header;
17938   struct dwarf_block *blk;
17939   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
17940                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
17941
17942   *value = 0;
17943   *bytes = NULL;
17944   *baton = NULL;
17945
17946   switch (attr->form)
17947     {
17948     case DW_FORM_addr:
17949     case DW_FORM_GNU_addr_index:
17950       {
17951         gdb_byte *data;
17952
17953         if (TYPE_LENGTH (type) != cu_header->addr_size)
17954           dwarf2_const_value_length_mismatch_complaint (name,
17955                                                         cu_header->addr_size,
17956                                                         TYPE_LENGTH (type));
17957         /* Symbols of this form are reasonably rare, so we just
17958            piggyback on the existing location code rather than writing
17959            a new implementation of symbol_computed_ops.  */
17960         *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
17961         (*baton)->per_cu = cu->per_cu;
17962         gdb_assert ((*baton)->per_cu);
17963
17964         (*baton)->size = 2 + cu_header->addr_size;
17965         data = obstack_alloc (obstack, (*baton)->size);
17966         (*baton)->data = data;
17967
17968         data[0] = DW_OP_addr;
17969         store_unsigned_integer (&data[1], cu_header->addr_size,
17970                                 byte_order, DW_ADDR (attr));
17971         data[cu_header->addr_size + 1] = DW_OP_stack_value;
17972       }
17973       break;
17974     case DW_FORM_string:
17975     case DW_FORM_strp:
17976     case DW_FORM_GNU_str_index:
17977     case DW_FORM_GNU_strp_alt:
17978       /* DW_STRING is already allocated on the objfile obstack, point
17979          directly to it.  */
17980       *bytes = (const gdb_byte *) DW_STRING (attr);
17981       break;
17982     case DW_FORM_block1:
17983     case DW_FORM_block2:
17984     case DW_FORM_block4:
17985     case DW_FORM_block:
17986     case DW_FORM_exprloc:
17987       blk = DW_BLOCK (attr);
17988       if (TYPE_LENGTH (type) != blk->size)
17989         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
17990                                                       TYPE_LENGTH (type));
17991       *bytes = blk->data;
17992       break;
17993
17994       /* The DW_AT_const_value attributes are supposed to carry the
17995          symbol's value "represented as it would be on the target
17996          architecture."  By the time we get here, it's already been
17997          converted to host endianness, so we just need to sign- or
17998          zero-extend it as appropriate.  */
17999     case DW_FORM_data1:
18000       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
18001       break;
18002     case DW_FORM_data2:
18003       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
18004       break;
18005     case DW_FORM_data4:
18006       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
18007       break;
18008     case DW_FORM_data8:
18009       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
18010       break;
18011
18012     case DW_FORM_sdata:
18013       *value = DW_SND (attr);
18014       break;
18015
18016     case DW_FORM_udata:
18017       *value = DW_UNSND (attr);
18018       break;
18019
18020     default:
18021       complaint (&symfile_complaints,
18022                  _("unsupported const value attribute form: '%s'"),
18023                  dwarf_form_name (attr->form));
18024       *value = 0;
18025       break;
18026     }
18027 }
18028
18029
18030 /* Copy constant value from an attribute to a symbol.  */
18031
18032 static void
18033 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
18034                     struct dwarf2_cu *cu)
18035 {
18036   struct objfile *objfile = cu->objfile;
18037   struct comp_unit_head *cu_header = &cu->header;
18038   LONGEST value;
18039   const gdb_byte *bytes;
18040   struct dwarf2_locexpr_baton *baton;
18041
18042   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18043                            SYMBOL_PRINT_NAME (sym),
18044                            &objfile->objfile_obstack, cu,
18045                            &value, &bytes, &baton);
18046
18047   if (baton != NULL)
18048     {
18049       SYMBOL_LOCATION_BATON (sym) = baton;
18050       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
18051     }
18052   else if (bytes != NULL)
18053      {
18054       SYMBOL_VALUE_BYTES (sym) = bytes;
18055       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
18056     }
18057   else
18058     {
18059       SYMBOL_VALUE (sym) = value;
18060       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
18061     }
18062 }
18063
18064 /* Return the type of the die in question using its DW_AT_type attribute.  */
18065
18066 static struct type *
18067 die_type (struct die_info *die, struct dwarf2_cu *cu)
18068 {
18069   struct attribute *type_attr;
18070
18071   type_attr = dwarf2_attr (die, DW_AT_type, cu);
18072   if (!type_attr)
18073     {
18074       /* A missing DW_AT_type represents a void type.  */
18075       return objfile_type (cu->objfile)->builtin_void;
18076     }
18077
18078   return lookup_die_type (die, type_attr, cu);
18079 }
18080
18081 /* True iff CU's producer generates GNAT Ada auxiliary information
18082    that allows to find parallel types through that information instead
18083    of having to do expensive parallel lookups by type name.  */
18084
18085 static int
18086 need_gnat_info (struct dwarf2_cu *cu)
18087 {
18088   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18089      of GNAT produces this auxiliary information, without any indication
18090      that it is produced.  Part of enhancing the FSF version of GNAT
18091      to produce that information will be to put in place an indicator
18092      that we can use in order to determine whether the descriptive type
18093      info is available or not.  One suggestion that has been made is
18094      to use a new attribute, attached to the CU die.  For now, assume
18095      that the descriptive type info is not available.  */
18096   return 0;
18097 }
18098
18099 /* Return the auxiliary type of the die in question using its
18100    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
18101    attribute is not present.  */
18102
18103 static struct type *
18104 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18105 {
18106   struct attribute *type_attr;
18107
18108   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18109   if (!type_attr)
18110     return NULL;
18111
18112   return lookup_die_type (die, type_attr, cu);
18113 }
18114
18115 /* If DIE has a descriptive_type attribute, then set the TYPE's
18116    descriptive type accordingly.  */
18117
18118 static void
18119 set_descriptive_type (struct type *type, struct die_info *die,
18120                       struct dwarf2_cu *cu)
18121 {
18122   struct type *descriptive_type = die_descriptive_type (die, cu);
18123
18124   if (descriptive_type)
18125     {
18126       ALLOCATE_GNAT_AUX_TYPE (type);
18127       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18128     }
18129 }
18130
18131 /* Return the containing type of the die in question using its
18132    DW_AT_containing_type attribute.  */
18133
18134 static struct type *
18135 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
18136 {
18137   struct attribute *type_attr;
18138
18139   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
18140   if (!type_attr)
18141     error (_("Dwarf Error: Problem turning containing type into gdb type "
18142              "[in module %s]"), objfile_name (cu->objfile));
18143
18144   return lookup_die_type (die, type_attr, cu);
18145 }
18146
18147 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
18148
18149 static struct type *
18150 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18151 {
18152   struct objfile *objfile = dwarf2_per_objfile->objfile;
18153   char *message, *saved;
18154
18155   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
18156                         objfile_name (objfile),
18157                         cu->header.offset.sect_off,
18158                         die->offset.sect_off);
18159   saved = obstack_copy0 (&objfile->objfile_obstack,
18160                          message, strlen (message));
18161   xfree (message);
18162
18163   return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18164 }
18165
18166 /* Look up the type of DIE in CU using its type attribute ATTR.
18167    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18168    DW_AT_containing_type.
18169    If there is no type substitute an error marker.  */
18170
18171 static struct type *
18172 lookup_die_type (struct die_info *die, const struct attribute *attr,
18173                  struct dwarf2_cu *cu)
18174 {
18175   struct objfile *objfile = cu->objfile;
18176   struct type *this_type;
18177
18178   gdb_assert (attr->name == DW_AT_type
18179               || attr->name == DW_AT_GNAT_descriptive_type
18180               || attr->name == DW_AT_containing_type);
18181
18182   /* First see if we have it cached.  */
18183
18184   if (attr->form == DW_FORM_GNU_ref_alt)
18185     {
18186       struct dwarf2_per_cu_data *per_cu;
18187       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18188
18189       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18190       this_type = get_die_type_at_offset (offset, per_cu);
18191     }
18192   else if (attr_form_is_ref (attr))
18193     {
18194       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18195
18196       this_type = get_die_type_at_offset (offset, cu->per_cu);
18197     }
18198   else if (attr->form == DW_FORM_ref_sig8)
18199     {
18200       ULONGEST signature = DW_SIGNATURE (attr);
18201
18202       return get_signatured_type (die, signature, cu);
18203     }
18204   else
18205     {
18206       complaint (&symfile_complaints,
18207                  _("Dwarf Error: Bad type attribute %s in DIE"
18208                    " at 0x%x [in module %s]"),
18209                  dwarf_attr_name (attr->name), die->offset.sect_off,
18210                  objfile_name (objfile));
18211       return build_error_marker_type (cu, die);
18212     }
18213
18214   /* If not cached we need to read it in.  */
18215
18216   if (this_type == NULL)
18217     {
18218       struct die_info *type_die = NULL;
18219       struct dwarf2_cu *type_cu = cu;
18220
18221       if (attr_form_is_ref (attr))
18222         type_die = follow_die_ref (die, attr, &type_cu);
18223       if (type_die == NULL)
18224         return build_error_marker_type (cu, die);
18225       /* If we find the type now, it's probably because the type came
18226          from an inter-CU reference and the type's CU got expanded before
18227          ours.  */
18228       this_type = read_type_die (type_die, type_cu);
18229     }
18230
18231   /* If we still don't have a type use an error marker.  */
18232
18233   if (this_type == NULL)
18234     return build_error_marker_type (cu, die);
18235
18236   return this_type;
18237 }
18238
18239 /* Return the type in DIE, CU.
18240    Returns NULL for invalid types.
18241
18242    This first does a lookup in die_type_hash,
18243    and only reads the die in if necessary.
18244
18245    NOTE: This can be called when reading in partial or full symbols.  */
18246
18247 static struct type *
18248 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
18249 {
18250   struct type *this_type;
18251
18252   this_type = get_die_type (die, cu);
18253   if (this_type)
18254     return this_type;
18255
18256   return read_type_die_1 (die, cu);
18257 }
18258
18259 /* Read the type in DIE, CU.
18260    Returns NULL for invalid types.  */
18261
18262 static struct type *
18263 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
18264 {
18265   struct type *this_type = NULL;
18266
18267   switch (die->tag)
18268     {
18269     case DW_TAG_class_type:
18270     case DW_TAG_interface_type:
18271     case DW_TAG_structure_type:
18272     case DW_TAG_union_type:
18273       this_type = read_structure_type (die, cu);
18274       break;
18275     case DW_TAG_enumeration_type:
18276       this_type = read_enumeration_type (die, cu);
18277       break;
18278     case DW_TAG_subprogram:
18279     case DW_TAG_subroutine_type:
18280     case DW_TAG_inlined_subroutine:
18281       this_type = read_subroutine_type (die, cu);
18282       break;
18283     case DW_TAG_array_type:
18284       this_type = read_array_type (die, cu);
18285       break;
18286     case DW_TAG_set_type:
18287       this_type = read_set_type (die, cu);
18288       break;
18289     case DW_TAG_pointer_type:
18290       this_type = read_tag_pointer_type (die, cu);
18291       break;
18292     case DW_TAG_ptr_to_member_type:
18293       this_type = read_tag_ptr_to_member_type (die, cu);
18294       break;
18295     case DW_TAG_reference_type:
18296       this_type = read_tag_reference_type (die, cu);
18297       break;
18298     case DW_TAG_const_type:
18299       this_type = read_tag_const_type (die, cu);
18300       break;
18301     case DW_TAG_volatile_type:
18302       this_type = read_tag_volatile_type (die, cu);
18303       break;
18304     case DW_TAG_restrict_type:
18305       this_type = read_tag_restrict_type (die, cu);
18306       break;
18307     case DW_TAG_string_type:
18308       this_type = read_tag_string_type (die, cu);
18309       break;
18310     case DW_TAG_typedef:
18311       this_type = read_typedef (die, cu);
18312       break;
18313     case DW_TAG_subrange_type:
18314       this_type = read_subrange_type (die, cu);
18315       break;
18316     case DW_TAG_base_type:
18317       this_type = read_base_type (die, cu);
18318       break;
18319     case DW_TAG_unspecified_type:
18320       this_type = read_unspecified_type (die, cu);
18321       break;
18322     case DW_TAG_namespace:
18323       this_type = read_namespace_type (die, cu);
18324       break;
18325     case DW_TAG_module:
18326       this_type = read_module_type (die, cu);
18327       break;
18328     default:
18329       complaint (&symfile_complaints,
18330                  _("unexpected tag in read_type_die: '%s'"),
18331                  dwarf_tag_name (die->tag));
18332       break;
18333     }
18334
18335   return this_type;
18336 }
18337
18338 /* See if we can figure out if the class lives in a namespace.  We do
18339    this by looking for a member function; its demangled name will
18340    contain namespace info, if there is any.
18341    Return the computed name or NULL.
18342    Space for the result is allocated on the objfile's obstack.
18343    This is the full-die version of guess_partial_die_structure_name.
18344    In this case we know DIE has no useful parent.  */
18345
18346 static char *
18347 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
18348 {
18349   struct die_info *spec_die;
18350   struct dwarf2_cu *spec_cu;
18351   struct die_info *child;
18352
18353   spec_cu = cu;
18354   spec_die = die_specification (die, &spec_cu);
18355   if (spec_die != NULL)
18356     {
18357       die = spec_die;
18358       cu = spec_cu;
18359     }
18360
18361   for (child = die->child;
18362        child != NULL;
18363        child = child->sibling)
18364     {
18365       if (child->tag == DW_TAG_subprogram)
18366         {
18367           struct attribute *attr;
18368
18369           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
18370           if (attr == NULL)
18371             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
18372           if (attr != NULL)
18373             {
18374               char *actual_name
18375                 = language_class_name_from_physname (cu->language_defn,
18376                                                      DW_STRING (attr));
18377               char *name = NULL;
18378
18379               if (actual_name != NULL)
18380                 {
18381                   const char *die_name = dwarf2_name (die, cu);
18382
18383                   if (die_name != NULL
18384                       && strcmp (die_name, actual_name) != 0)
18385                     {
18386                       /* Strip off the class name from the full name.
18387                          We want the prefix.  */
18388                       int die_name_len = strlen (die_name);
18389                       int actual_name_len = strlen (actual_name);
18390
18391                       /* Test for '::' as a sanity check.  */
18392                       if (actual_name_len > die_name_len + 2
18393                           && actual_name[actual_name_len
18394                                          - die_name_len - 1] == ':')
18395                         name =
18396                           obstack_copy0 (&cu->objfile->objfile_obstack,
18397                                          actual_name,
18398                                          actual_name_len - die_name_len - 2);
18399                     }
18400                 }
18401               xfree (actual_name);
18402               return name;
18403             }
18404         }
18405     }
18406
18407   return NULL;
18408 }
18409
18410 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
18411    prefix part in such case.  See
18412    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18413
18414 static char *
18415 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
18416 {
18417   struct attribute *attr;
18418   char *base;
18419
18420   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
18421       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
18422     return NULL;
18423
18424   attr = dwarf2_attr (die, DW_AT_name, cu);
18425   if (attr != NULL && DW_STRING (attr) != NULL)
18426     return NULL;
18427
18428   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18429   if (attr == NULL)
18430     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18431   if (attr == NULL || DW_STRING (attr) == NULL)
18432     return NULL;
18433
18434   /* dwarf2_name had to be already called.  */
18435   gdb_assert (DW_STRING_IS_CANONICAL (attr));
18436
18437   /* Strip the base name, keep any leading namespaces/classes.  */
18438   base = strrchr (DW_STRING (attr), ':');
18439   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
18440     return "";
18441
18442   return obstack_copy0 (&cu->objfile->objfile_obstack,
18443                         DW_STRING (attr), &base[-1] - DW_STRING (attr));
18444 }
18445
18446 /* Return the name of the namespace/class that DIE is defined within,
18447    or "" if we can't tell.  The caller should not xfree the result.
18448
18449    For example, if we're within the method foo() in the following
18450    code:
18451
18452    namespace N {
18453      class C {
18454        void foo () {
18455        }
18456      };
18457    }
18458
18459    then determine_prefix on foo's die will return "N::C".  */
18460
18461 static const char *
18462 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
18463 {
18464   struct die_info *parent, *spec_die;
18465   struct dwarf2_cu *spec_cu;
18466   struct type *parent_type;
18467   char *retval;
18468
18469   if (cu->language != language_cplus && cu->language != language_java
18470       && cu->language != language_fortran)
18471     return "";
18472
18473   retval = anonymous_struct_prefix (die, cu);
18474   if (retval)
18475     return retval;
18476
18477   /* We have to be careful in the presence of DW_AT_specification.
18478      For example, with GCC 3.4, given the code
18479
18480      namespace N {
18481        void foo() {
18482          // Definition of N::foo.
18483        }
18484      }
18485
18486      then we'll have a tree of DIEs like this:
18487
18488      1: DW_TAG_compile_unit
18489        2: DW_TAG_namespace        // N
18490          3: DW_TAG_subprogram     // declaration of N::foo
18491        4: DW_TAG_subprogram       // definition of N::foo
18492             DW_AT_specification   // refers to die #3
18493
18494      Thus, when processing die #4, we have to pretend that we're in
18495      the context of its DW_AT_specification, namely the contex of die
18496      #3.  */
18497   spec_cu = cu;
18498   spec_die = die_specification (die, &spec_cu);
18499   if (spec_die == NULL)
18500     parent = die->parent;
18501   else
18502     {
18503       parent = spec_die->parent;
18504       cu = spec_cu;
18505     }
18506
18507   if (parent == NULL)
18508     return "";
18509   else if (parent->building_fullname)
18510     {
18511       const char *name;
18512       const char *parent_name;
18513
18514       /* It has been seen on RealView 2.2 built binaries,
18515          DW_TAG_template_type_param types actually _defined_ as
18516          children of the parent class:
18517
18518          enum E {};
18519          template class <class Enum> Class{};
18520          Class<enum E> class_e;
18521
18522          1: DW_TAG_class_type (Class)
18523            2: DW_TAG_enumeration_type (E)
18524              3: DW_TAG_enumerator (enum1:0)
18525              3: DW_TAG_enumerator (enum2:1)
18526              ...
18527            2: DW_TAG_template_type_param
18528               DW_AT_type  DW_FORM_ref_udata (E)
18529
18530          Besides being broken debug info, it can put GDB into an
18531          infinite loop.  Consider:
18532
18533          When we're building the full name for Class<E>, we'll start
18534          at Class, and go look over its template type parameters,
18535          finding E.  We'll then try to build the full name of E, and
18536          reach here.  We're now trying to build the full name of E,
18537          and look over the parent DIE for containing scope.  In the
18538          broken case, if we followed the parent DIE of E, we'd again
18539          find Class, and once again go look at its template type
18540          arguments, etc., etc.  Simply don't consider such parent die
18541          as source-level parent of this die (it can't be, the language
18542          doesn't allow it), and break the loop here.  */
18543       name = dwarf2_name (die, cu);
18544       parent_name = dwarf2_name (parent, cu);
18545       complaint (&symfile_complaints,
18546                  _("template param type '%s' defined within parent '%s'"),
18547                  name ? name : "<unknown>",
18548                  parent_name ? parent_name : "<unknown>");
18549       return "";
18550     }
18551   else
18552     switch (parent->tag)
18553       {
18554       case DW_TAG_namespace:
18555         parent_type = read_type_die (parent, cu);
18556         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
18557            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
18558            Work around this problem here.  */
18559         if (cu->language == language_cplus
18560             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
18561           return "";
18562         /* We give a name to even anonymous namespaces.  */
18563         return TYPE_TAG_NAME (parent_type);
18564       case DW_TAG_class_type:
18565       case DW_TAG_interface_type:
18566       case DW_TAG_structure_type:
18567       case DW_TAG_union_type:
18568       case DW_TAG_module:
18569         parent_type = read_type_die (parent, cu);
18570         if (TYPE_TAG_NAME (parent_type) != NULL)
18571           return TYPE_TAG_NAME (parent_type);
18572         else
18573           /* An anonymous structure is only allowed non-static data
18574              members; no typedefs, no member functions, et cetera.
18575              So it does not need a prefix.  */
18576           return "";
18577       case DW_TAG_compile_unit:
18578       case DW_TAG_partial_unit:
18579         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
18580         if (cu->language == language_cplus
18581             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
18582             && die->child != NULL
18583             && (die->tag == DW_TAG_class_type
18584                 || die->tag == DW_TAG_structure_type
18585                 || die->tag == DW_TAG_union_type))
18586           {
18587             char *name = guess_full_die_structure_name (die, cu);
18588             if (name != NULL)
18589               return name;
18590           }
18591         return "";
18592       default:
18593         return determine_prefix (parent, cu);
18594       }
18595 }
18596
18597 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
18598    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
18599    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
18600    an obconcat, otherwise allocate storage for the result.  The CU argument is
18601    used to determine the language and hence, the appropriate separator.  */
18602
18603 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
18604
18605 static char *
18606 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
18607                  int physname, struct dwarf2_cu *cu)
18608 {
18609   const char *lead = "";
18610   const char *sep;
18611
18612   if (suffix == NULL || suffix[0] == '\0'
18613       || prefix == NULL || prefix[0] == '\0')
18614     sep = "";
18615   else if (cu->language == language_java)
18616     sep = ".";
18617   else if (cu->language == language_fortran && physname)
18618     {
18619       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
18620          DW_AT_MIPS_linkage_name is preferred and used instead.  */
18621
18622       lead = "__";
18623       sep = "_MOD_";
18624     }
18625   else
18626     sep = "::";
18627
18628   if (prefix == NULL)
18629     prefix = "";
18630   if (suffix == NULL)
18631     suffix = "";
18632
18633   if (obs == NULL)
18634     {
18635       char *retval
18636         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
18637
18638       strcpy (retval, lead);
18639       strcat (retval, prefix);
18640       strcat (retval, sep);
18641       strcat (retval, suffix);
18642       return retval;
18643     }
18644   else
18645     {
18646       /* We have an obstack.  */
18647       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
18648     }
18649 }
18650
18651 /* Return sibling of die, NULL if no sibling.  */
18652
18653 static struct die_info *
18654 sibling_die (struct die_info *die)
18655 {
18656   return die->sibling;
18657 }
18658
18659 /* Get name of a die, return NULL if not found.  */
18660
18661 static const char *
18662 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
18663                           struct obstack *obstack)
18664 {
18665   if (name && cu->language == language_cplus)
18666     {
18667       char *canon_name = cp_canonicalize_string (name);
18668
18669       if (canon_name != NULL)
18670         {
18671           if (strcmp (canon_name, name) != 0)
18672             name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
18673           xfree (canon_name);
18674         }
18675     }
18676
18677   return name;
18678 }
18679
18680 /* Get name of a die, return NULL if not found.  */
18681
18682 static const char *
18683 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
18684 {
18685   struct attribute *attr;
18686
18687   attr = dwarf2_attr (die, DW_AT_name, cu);
18688   if ((!attr || !DW_STRING (attr))
18689       && die->tag != DW_TAG_class_type
18690       && die->tag != DW_TAG_interface_type
18691       && die->tag != DW_TAG_structure_type
18692       && die->tag != DW_TAG_union_type)
18693     return NULL;
18694
18695   switch (die->tag)
18696     {
18697     case DW_TAG_compile_unit:
18698     case DW_TAG_partial_unit:
18699       /* Compilation units have a DW_AT_name that is a filename, not
18700          a source language identifier.  */
18701     case DW_TAG_enumeration_type:
18702     case DW_TAG_enumerator:
18703       /* These tags always have simple identifiers already; no need
18704          to canonicalize them.  */
18705       return DW_STRING (attr);
18706
18707     case DW_TAG_subprogram:
18708       /* Java constructors will all be named "<init>", so return
18709          the class name when we see this special case.  */
18710       if (cu->language == language_java
18711           && DW_STRING (attr) != NULL
18712           && strcmp (DW_STRING (attr), "<init>") == 0)
18713         {
18714           struct dwarf2_cu *spec_cu = cu;
18715           struct die_info *spec_die;
18716
18717           /* GCJ will output '<init>' for Java constructor names.
18718              For this special case, return the name of the parent class.  */
18719
18720           /* GCJ may output suprogram DIEs with AT_specification set.
18721              If so, use the name of the specified DIE.  */
18722           spec_die = die_specification (die, &spec_cu);
18723           if (spec_die != NULL)
18724             return dwarf2_name (spec_die, spec_cu);
18725
18726           do
18727             {
18728               die = die->parent;
18729               if (die->tag == DW_TAG_class_type)
18730                 return dwarf2_name (die, cu);
18731             }
18732           while (die->tag != DW_TAG_compile_unit
18733                  && die->tag != DW_TAG_partial_unit);
18734         }
18735       break;
18736
18737     case DW_TAG_class_type:
18738     case DW_TAG_interface_type:
18739     case DW_TAG_structure_type:
18740     case DW_TAG_union_type:
18741       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
18742          structures or unions.  These were of the form "._%d" in GCC 4.1,
18743          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
18744          and GCC 4.4.  We work around this problem by ignoring these.  */
18745       if (attr && DW_STRING (attr)
18746           && (strncmp (DW_STRING (attr), "._", 2) == 0
18747               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
18748         return NULL;
18749
18750       /* GCC might emit a nameless typedef that has a linkage name.  See
18751          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18752       if (!attr || DW_STRING (attr) == NULL)
18753         {
18754           char *demangled = NULL;
18755
18756           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18757           if (attr == NULL)
18758             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18759
18760           if (attr == NULL || DW_STRING (attr) == NULL)
18761             return NULL;
18762
18763           /* Avoid demangling DW_STRING (attr) the second time on a second
18764              call for the same DIE.  */
18765           if (!DW_STRING_IS_CANONICAL (attr))
18766             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
18767
18768           if (demangled)
18769             {
18770               char *base;
18771
18772               /* FIXME: we already did this for the partial symbol... */
18773               DW_STRING (attr) = obstack_copy0 (&cu->objfile->objfile_obstack,
18774                                                 demangled, strlen (demangled));
18775               DW_STRING_IS_CANONICAL (attr) = 1;
18776               xfree (demangled);
18777
18778               /* Strip any leading namespaces/classes, keep only the base name.
18779                  DW_AT_name for named DIEs does not contain the prefixes.  */
18780               base = strrchr (DW_STRING (attr), ':');
18781               if (base && base > DW_STRING (attr) && base[-1] == ':')
18782                 return &base[1];
18783               else
18784                 return DW_STRING (attr);
18785             }
18786         }
18787       break;
18788
18789     default:
18790       break;
18791     }
18792
18793   if (!DW_STRING_IS_CANONICAL (attr))
18794     {
18795       DW_STRING (attr)
18796         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
18797                                     &cu->objfile->objfile_obstack);
18798       DW_STRING_IS_CANONICAL (attr) = 1;
18799     }
18800   return DW_STRING (attr);
18801 }
18802
18803 /* Return the die that this die in an extension of, or NULL if there
18804    is none.  *EXT_CU is the CU containing DIE on input, and the CU
18805    containing the return value on output.  */
18806
18807 static struct die_info *
18808 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
18809 {
18810   struct attribute *attr;
18811
18812   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
18813   if (attr == NULL)
18814     return NULL;
18815
18816   return follow_die_ref (die, attr, ext_cu);
18817 }
18818
18819 /* Convert a DIE tag into its string name.  */
18820
18821 static const char *
18822 dwarf_tag_name (unsigned tag)
18823 {
18824   const char *name = get_DW_TAG_name (tag);
18825
18826   if (name == NULL)
18827     return "DW_TAG_<unknown>";
18828
18829   return name;
18830 }
18831
18832 /* Convert a DWARF attribute code into its string name.  */
18833
18834 static const char *
18835 dwarf_attr_name (unsigned attr)
18836 {
18837   const char *name;
18838
18839 #ifdef MIPS /* collides with DW_AT_HP_block_index */
18840   if (attr == DW_AT_MIPS_fde)
18841     return "DW_AT_MIPS_fde";
18842 #else
18843   if (attr == DW_AT_HP_block_index)
18844     return "DW_AT_HP_block_index";
18845 #endif
18846
18847   name = get_DW_AT_name (attr);
18848
18849   if (name == NULL)
18850     return "DW_AT_<unknown>";
18851
18852   return name;
18853 }
18854
18855 /* Convert a DWARF value form code into its string name.  */
18856
18857 static const char *
18858 dwarf_form_name (unsigned form)
18859 {
18860   const char *name = get_DW_FORM_name (form);
18861
18862   if (name == NULL)
18863     return "DW_FORM_<unknown>";
18864
18865   return name;
18866 }
18867
18868 static char *
18869 dwarf_bool_name (unsigned mybool)
18870 {
18871   if (mybool)
18872     return "TRUE";
18873   else
18874     return "FALSE";
18875 }
18876
18877 /* Convert a DWARF type code into its string name.  */
18878
18879 static const char *
18880 dwarf_type_encoding_name (unsigned enc)
18881 {
18882   const char *name = get_DW_ATE_name (enc);
18883
18884   if (name == NULL)
18885     return "DW_ATE_<unknown>";
18886
18887   return name;
18888 }
18889
18890 static void
18891 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
18892 {
18893   unsigned int i;
18894
18895   print_spaces (indent, f);
18896   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
18897            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
18898
18899   if (die->parent != NULL)
18900     {
18901       print_spaces (indent, f);
18902       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
18903                           die->parent->offset.sect_off);
18904     }
18905
18906   print_spaces (indent, f);
18907   fprintf_unfiltered (f, "  has children: %s\n",
18908            dwarf_bool_name (die->child != NULL));
18909
18910   print_spaces (indent, f);
18911   fprintf_unfiltered (f, "  attributes:\n");
18912
18913   for (i = 0; i < die->num_attrs; ++i)
18914     {
18915       print_spaces (indent, f);
18916       fprintf_unfiltered (f, "    %s (%s) ",
18917                dwarf_attr_name (die->attrs[i].name),
18918                dwarf_form_name (die->attrs[i].form));
18919
18920       switch (die->attrs[i].form)
18921         {
18922         case DW_FORM_addr:
18923         case DW_FORM_GNU_addr_index:
18924           fprintf_unfiltered (f, "address: ");
18925           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
18926           break;
18927         case DW_FORM_block2:
18928         case DW_FORM_block4:
18929         case DW_FORM_block:
18930         case DW_FORM_block1:
18931           fprintf_unfiltered (f, "block: size %s",
18932                               pulongest (DW_BLOCK (&die->attrs[i])->size));
18933           break;
18934         case DW_FORM_exprloc:
18935           fprintf_unfiltered (f, "expression: size %s",
18936                               pulongest (DW_BLOCK (&die->attrs[i])->size));
18937           break;
18938         case DW_FORM_ref_addr:
18939           fprintf_unfiltered (f, "ref address: ");
18940           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
18941           break;
18942         case DW_FORM_GNU_ref_alt:
18943           fprintf_unfiltered (f, "alt ref address: ");
18944           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
18945           break;
18946         case DW_FORM_ref1:
18947         case DW_FORM_ref2:
18948         case DW_FORM_ref4:
18949         case DW_FORM_ref8:
18950         case DW_FORM_ref_udata:
18951           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
18952                               (long) (DW_UNSND (&die->attrs[i])));
18953           break;
18954         case DW_FORM_data1:
18955         case DW_FORM_data2:
18956         case DW_FORM_data4:
18957         case DW_FORM_data8:
18958         case DW_FORM_udata:
18959         case DW_FORM_sdata:
18960           fprintf_unfiltered (f, "constant: %s",
18961                               pulongest (DW_UNSND (&die->attrs[i])));
18962           break;
18963         case DW_FORM_sec_offset:
18964           fprintf_unfiltered (f, "section offset: %s",
18965                               pulongest (DW_UNSND (&die->attrs[i])));
18966           break;
18967         case DW_FORM_ref_sig8:
18968           fprintf_unfiltered (f, "signature: %s",
18969                               hex_string (DW_SIGNATURE (&die->attrs[i])));
18970           break;
18971         case DW_FORM_string:
18972         case DW_FORM_strp:
18973         case DW_FORM_GNU_str_index:
18974         case DW_FORM_GNU_strp_alt:
18975           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
18976                    DW_STRING (&die->attrs[i])
18977                    ? DW_STRING (&die->attrs[i]) : "",
18978                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
18979           break;
18980         case DW_FORM_flag:
18981           if (DW_UNSND (&die->attrs[i]))
18982             fprintf_unfiltered (f, "flag: TRUE");
18983           else
18984             fprintf_unfiltered (f, "flag: FALSE");
18985           break;
18986         case DW_FORM_flag_present:
18987           fprintf_unfiltered (f, "flag: TRUE");
18988           break;
18989         case DW_FORM_indirect:
18990           /* The reader will have reduced the indirect form to
18991              the "base form" so this form should not occur.  */
18992           fprintf_unfiltered (f, 
18993                               "unexpected attribute form: DW_FORM_indirect");
18994           break;
18995         default:
18996           fprintf_unfiltered (f, "unsupported attribute form: %d.",
18997                    die->attrs[i].form);
18998           break;
18999         }
19000       fprintf_unfiltered (f, "\n");
19001     }
19002 }
19003
19004 static void
19005 dump_die_for_error (struct die_info *die)
19006 {
19007   dump_die_shallow (gdb_stderr, 0, die);
19008 }
19009
19010 static void
19011 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19012 {
19013   int indent = level * 4;
19014
19015   gdb_assert (die != NULL);
19016
19017   if (level >= max_level)
19018     return;
19019
19020   dump_die_shallow (f, indent, die);
19021
19022   if (die->child != NULL)
19023     {
19024       print_spaces (indent, f);
19025       fprintf_unfiltered (f, "  Children:");
19026       if (level + 1 < max_level)
19027         {
19028           fprintf_unfiltered (f, "\n");
19029           dump_die_1 (f, level + 1, max_level, die->child);
19030         }
19031       else
19032         {
19033           fprintf_unfiltered (f,
19034                               " [not printed, max nesting level reached]\n");
19035         }
19036     }
19037
19038   if (die->sibling != NULL && level > 0)
19039     {
19040       dump_die_1 (f, level, max_level, die->sibling);
19041     }
19042 }
19043
19044 /* This is called from the pdie macro in gdbinit.in.
19045    It's not static so gcc will keep a copy callable from gdb.  */
19046
19047 void
19048 dump_die (struct die_info *die, int max_level)
19049 {
19050   dump_die_1 (gdb_stdlog, 0, max_level, die);
19051 }
19052
19053 static void
19054 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
19055 {
19056   void **slot;
19057
19058   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19059                                    INSERT);
19060
19061   *slot = die;
19062 }
19063
19064 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
19065    required kind.  */
19066
19067 static sect_offset
19068 dwarf2_get_ref_die_offset (const struct attribute *attr)
19069 {
19070   sect_offset retval = { DW_UNSND (attr) };
19071
19072   if (attr_form_is_ref (attr))
19073     return retval;
19074
19075   retval.sect_off = 0;
19076   complaint (&symfile_complaints,
19077              _("unsupported die ref attribute form: '%s'"),
19078              dwarf_form_name (attr->form));
19079   return retval;
19080 }
19081
19082 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
19083  * the value held by the attribute is not constant.  */
19084
19085 static LONGEST
19086 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
19087 {
19088   if (attr->form == DW_FORM_sdata)
19089     return DW_SND (attr);
19090   else if (attr->form == DW_FORM_udata
19091            || attr->form == DW_FORM_data1
19092            || attr->form == DW_FORM_data2
19093            || attr->form == DW_FORM_data4
19094            || attr->form == DW_FORM_data8)
19095     return DW_UNSND (attr);
19096   else
19097     {
19098       complaint (&symfile_complaints,
19099                  _("Attribute value is not a constant (%s)"),
19100                  dwarf_form_name (attr->form));
19101       return default_value;
19102     }
19103 }
19104
19105 /* Follow reference or signature attribute ATTR of SRC_DIE.
19106    On entry *REF_CU is the CU of SRC_DIE.
19107    On exit *REF_CU is the CU of the result.  */
19108
19109 static struct die_info *
19110 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
19111                        struct dwarf2_cu **ref_cu)
19112 {
19113   struct die_info *die;
19114
19115   if (attr_form_is_ref (attr))
19116     die = follow_die_ref (src_die, attr, ref_cu);
19117   else if (attr->form == DW_FORM_ref_sig8)
19118     die = follow_die_sig (src_die, attr, ref_cu);
19119   else
19120     {
19121       dump_die_for_error (src_die);
19122       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
19123              objfile_name ((*ref_cu)->objfile));
19124     }
19125
19126   return die;
19127 }
19128
19129 /* Follow reference OFFSET.
19130    On entry *REF_CU is the CU of the source die referencing OFFSET.
19131    On exit *REF_CU is the CU of the result.
19132    Returns NULL if OFFSET is invalid.  */
19133
19134 static struct die_info *
19135 follow_die_offset (sect_offset offset, int offset_in_dwz,
19136                    struct dwarf2_cu **ref_cu)
19137 {
19138   struct die_info temp_die;
19139   struct dwarf2_cu *target_cu, *cu = *ref_cu;
19140
19141   gdb_assert (cu->per_cu != NULL);
19142
19143   target_cu = cu;
19144
19145   if (cu->per_cu->is_debug_types)
19146     {
19147       /* .debug_types CUs cannot reference anything outside their CU.
19148          If they need to, they have to reference a signatured type via
19149          DW_FORM_ref_sig8.  */
19150       if (! offset_in_cu_p (&cu->header, offset))
19151         return NULL;
19152     }
19153   else if (offset_in_dwz != cu->per_cu->is_dwz
19154            || ! offset_in_cu_p (&cu->header, offset))
19155     {
19156       struct dwarf2_per_cu_data *per_cu;
19157
19158       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19159                                                  cu->objfile);
19160
19161       /* If necessary, add it to the queue and load its DIEs.  */
19162       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19163         load_full_comp_unit (per_cu, cu->language);
19164
19165       target_cu = per_cu->cu;
19166     }
19167   else if (cu->dies == NULL)
19168     {
19169       /* We're loading full DIEs during partial symbol reading.  */
19170       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
19171       load_full_comp_unit (cu->per_cu, language_minimal);
19172     }
19173
19174   *ref_cu = target_cu;
19175   temp_die.offset = offset;
19176   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
19177 }
19178
19179 /* Follow reference attribute ATTR of SRC_DIE.
19180    On entry *REF_CU is the CU of SRC_DIE.
19181    On exit *REF_CU is the CU of the result.  */
19182
19183 static struct die_info *
19184 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
19185                 struct dwarf2_cu **ref_cu)
19186 {
19187   sect_offset offset = dwarf2_get_ref_die_offset (attr);
19188   struct dwarf2_cu *cu = *ref_cu;
19189   struct die_info *die;
19190
19191   die = follow_die_offset (offset,
19192                            (attr->form == DW_FORM_GNU_ref_alt
19193                             || cu->per_cu->is_dwz),
19194                            ref_cu);
19195   if (!die)
19196     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19197            "at 0x%x [in module %s]"),
19198            offset.sect_off, src_die->offset.sect_off,
19199            objfile_name (cu->objfile));
19200
19201   return die;
19202 }
19203
19204 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19205    Returned value is intended for DW_OP_call*.  Returned
19206    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
19207
19208 struct dwarf2_locexpr_baton
19209 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19210                                struct dwarf2_per_cu_data *per_cu,
19211                                CORE_ADDR (*get_frame_pc) (void *baton),
19212                                void *baton)
19213 {
19214   struct dwarf2_cu *cu;
19215   struct die_info *die;
19216   struct attribute *attr;
19217   struct dwarf2_locexpr_baton retval;
19218
19219   dw2_setup (per_cu->objfile);
19220
19221   if (per_cu->cu == NULL)
19222     load_cu (per_cu);
19223   cu = per_cu->cu;
19224
19225   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19226   if (!die)
19227     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19228            offset.sect_off, objfile_name (per_cu->objfile));
19229
19230   attr = dwarf2_attr (die, DW_AT_location, cu);
19231   if (!attr)
19232     {
19233       /* DWARF: "If there is no such attribute, then there is no effect.".
19234          DATA is ignored if SIZE is 0.  */
19235
19236       retval.data = NULL;
19237       retval.size = 0;
19238     }
19239   else if (attr_form_is_section_offset (attr))
19240     {
19241       struct dwarf2_loclist_baton loclist_baton;
19242       CORE_ADDR pc = (*get_frame_pc) (baton);
19243       size_t size;
19244
19245       fill_in_loclist_baton (cu, &loclist_baton, attr);
19246
19247       retval.data = dwarf2_find_location_expression (&loclist_baton,
19248                                                      &size, pc);
19249       retval.size = size;
19250     }
19251   else
19252     {
19253       if (!attr_form_is_block (attr))
19254         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
19255                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
19256                offset.sect_off, objfile_name (per_cu->objfile));
19257
19258       retval.data = DW_BLOCK (attr)->data;
19259       retval.size = DW_BLOCK (attr)->size;
19260     }
19261   retval.per_cu = cu->per_cu;
19262
19263   age_cached_comp_units ();
19264
19265   return retval;
19266 }
19267
19268 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
19269    offset.  */
19270
19271 struct dwarf2_locexpr_baton
19272 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
19273                              struct dwarf2_per_cu_data *per_cu,
19274                              CORE_ADDR (*get_frame_pc) (void *baton),
19275                              void *baton)
19276 {
19277   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
19278
19279   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
19280 }
19281
19282 /* Write a constant of a given type as target-ordered bytes into
19283    OBSTACK.  */
19284
19285 static const gdb_byte *
19286 write_constant_as_bytes (struct obstack *obstack,
19287                          enum bfd_endian byte_order,
19288                          struct type *type,
19289                          ULONGEST value,
19290                          LONGEST *len)
19291 {
19292   gdb_byte *result;
19293
19294   *len = TYPE_LENGTH (type);
19295   result = obstack_alloc (obstack, *len);
19296   store_unsigned_integer (result, *len, byte_order, value);
19297
19298   return result;
19299 }
19300
19301 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
19302    pointer to the constant bytes and set LEN to the length of the
19303    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
19304    does not have a DW_AT_const_value, return NULL.  */
19305
19306 const gdb_byte *
19307 dwarf2_fetch_constant_bytes (sect_offset offset,
19308                              struct dwarf2_per_cu_data *per_cu,
19309                              struct obstack *obstack,
19310                              LONGEST *len)
19311 {
19312   struct dwarf2_cu *cu;
19313   struct die_info *die;
19314   struct attribute *attr;
19315   const gdb_byte *result = NULL;
19316   struct type *type;
19317   LONGEST value;
19318   enum bfd_endian byte_order;
19319
19320   dw2_setup (per_cu->objfile);
19321
19322   if (per_cu->cu == NULL)
19323     load_cu (per_cu);
19324   cu = per_cu->cu;
19325
19326   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19327   if (!die)
19328     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19329            offset.sect_off, objfile_name (per_cu->objfile));
19330
19331
19332   attr = dwarf2_attr (die, DW_AT_const_value, cu);
19333   if (attr == NULL)
19334     return NULL;
19335
19336   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
19337                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19338
19339   switch (attr->form)
19340     {
19341     case DW_FORM_addr:
19342     case DW_FORM_GNU_addr_index:
19343       {
19344         gdb_byte *tem;
19345
19346         *len = cu->header.addr_size;
19347         tem = obstack_alloc (obstack, *len);
19348         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
19349         result = tem;
19350       }
19351       break;
19352     case DW_FORM_string:
19353     case DW_FORM_strp:
19354     case DW_FORM_GNU_str_index:
19355     case DW_FORM_GNU_strp_alt:
19356       /* DW_STRING is already allocated on the objfile obstack, point
19357          directly to it.  */
19358       result = (const gdb_byte *) DW_STRING (attr);
19359       *len = strlen (DW_STRING (attr));
19360       break;
19361     case DW_FORM_block1:
19362     case DW_FORM_block2:
19363     case DW_FORM_block4:
19364     case DW_FORM_block:
19365     case DW_FORM_exprloc:
19366       result = DW_BLOCK (attr)->data;
19367       *len = DW_BLOCK (attr)->size;
19368       break;
19369
19370       /* The DW_AT_const_value attributes are supposed to carry the
19371          symbol's value "represented as it would be on the target
19372          architecture."  By the time we get here, it's already been
19373          converted to host endianness, so we just need to sign- or
19374          zero-extend it as appropriate.  */
19375     case DW_FORM_data1:
19376       type = die_type (die, cu);
19377       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
19378       if (result == NULL)
19379         result = write_constant_as_bytes (obstack, byte_order,
19380                                           type, value, len);
19381       break;
19382     case DW_FORM_data2:
19383       type = die_type (die, cu);
19384       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
19385       if (result == NULL)
19386         result = write_constant_as_bytes (obstack, byte_order,
19387                                           type, value, len);
19388       break;
19389     case DW_FORM_data4:
19390       type = die_type (die, cu);
19391       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
19392       if (result == NULL)
19393         result = write_constant_as_bytes (obstack, byte_order,
19394                                           type, value, len);
19395       break;
19396     case DW_FORM_data8:
19397       type = die_type (die, cu);
19398       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
19399       if (result == NULL)
19400         result = write_constant_as_bytes (obstack, byte_order,
19401                                           type, value, len);
19402       break;
19403
19404     case DW_FORM_sdata:
19405       type = die_type (die, cu);
19406       result = write_constant_as_bytes (obstack, byte_order,
19407                                         type, DW_SND (attr), len);
19408       break;
19409
19410     case DW_FORM_udata:
19411       type = die_type (die, cu);
19412       result = write_constant_as_bytes (obstack, byte_order,
19413                                         type, DW_UNSND (attr), len);
19414       break;
19415
19416     default:
19417       complaint (&symfile_complaints,
19418                  _("unsupported const value attribute form: '%s'"),
19419                  dwarf_form_name (attr->form));
19420       break;
19421     }
19422
19423   return result;
19424 }
19425
19426 /* Return the type of the DIE at DIE_OFFSET in the CU named by
19427    PER_CU.  */
19428
19429 struct type *
19430 dwarf2_get_die_type (cu_offset die_offset,
19431                      struct dwarf2_per_cu_data *per_cu)
19432 {
19433   sect_offset die_offset_sect;
19434
19435   dw2_setup (per_cu->objfile);
19436
19437   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
19438   return get_die_type_at_offset (die_offset_sect, per_cu);
19439 }
19440
19441 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
19442    On entry *REF_CU is the CU of SRC_DIE.
19443    On exit *REF_CU is the CU of the result.
19444    Returns NULL if the referenced DIE isn't found.  */
19445
19446 static struct die_info *
19447 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
19448                   struct dwarf2_cu **ref_cu)
19449 {
19450   struct objfile *objfile = (*ref_cu)->objfile;
19451   struct die_info temp_die;
19452   struct dwarf2_cu *sig_cu;
19453   struct die_info *die;
19454
19455   /* While it might be nice to assert sig_type->type == NULL here,
19456      we can get here for DW_AT_imported_declaration where we need
19457      the DIE not the type.  */
19458
19459   /* If necessary, add it to the queue and load its DIEs.  */
19460
19461   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
19462     read_signatured_type (sig_type);
19463
19464   sig_cu = sig_type->per_cu.cu;
19465   gdb_assert (sig_cu != NULL);
19466   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
19467   temp_die.offset = sig_type->type_offset_in_section;
19468   die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
19469                              temp_die.offset.sect_off);
19470   if (die)
19471     {
19472       /* For .gdb_index version 7 keep track of included TUs.
19473          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
19474       if (dwarf2_per_objfile->index_table != NULL
19475           && dwarf2_per_objfile->index_table->version <= 7)
19476         {
19477           VEC_safe_push (dwarf2_per_cu_ptr,
19478                          (*ref_cu)->per_cu->imported_symtabs,
19479                          sig_cu->per_cu);
19480         }
19481
19482       *ref_cu = sig_cu;
19483       return die;
19484     }
19485
19486   return NULL;
19487 }
19488
19489 /* Follow signatured type referenced by ATTR in SRC_DIE.
19490    On entry *REF_CU is the CU of SRC_DIE.
19491    On exit *REF_CU is the CU of the result.
19492    The result is the DIE of the type.
19493    If the referenced type cannot be found an error is thrown.  */
19494
19495 static struct die_info *
19496 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
19497                 struct dwarf2_cu **ref_cu)
19498 {
19499   ULONGEST signature = DW_SIGNATURE (attr);
19500   struct signatured_type *sig_type;
19501   struct die_info *die;
19502
19503   gdb_assert (attr->form == DW_FORM_ref_sig8);
19504
19505   sig_type = lookup_signatured_type (*ref_cu, signature);
19506   /* sig_type will be NULL if the signatured type is missing from
19507      the debug info.  */
19508   if (sig_type == NULL)
19509     {
19510       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
19511                " from DIE at 0x%x [in module %s]"),
19512              hex_string (signature), src_die->offset.sect_off,
19513              objfile_name ((*ref_cu)->objfile));
19514     }
19515
19516   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
19517   if (die == NULL)
19518     {
19519       dump_die_for_error (src_die);
19520       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
19521                " from DIE at 0x%x [in module %s]"),
19522              hex_string (signature), src_die->offset.sect_off,
19523              objfile_name ((*ref_cu)->objfile));
19524     }
19525
19526   return die;
19527 }
19528
19529 /* Get the type specified by SIGNATURE referenced in DIE/CU,
19530    reading in and processing the type unit if necessary.  */
19531
19532 static struct type *
19533 get_signatured_type (struct die_info *die, ULONGEST signature,
19534                      struct dwarf2_cu *cu)
19535 {
19536   struct signatured_type *sig_type;
19537   struct dwarf2_cu *type_cu;
19538   struct die_info *type_die;
19539   struct type *type;
19540
19541   sig_type = lookup_signatured_type (cu, signature);
19542   /* sig_type will be NULL if the signatured type is missing from
19543      the debug info.  */
19544   if (sig_type == NULL)
19545     {
19546       complaint (&symfile_complaints,
19547                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
19548                    " from DIE at 0x%x [in module %s]"),
19549                  hex_string (signature), die->offset.sect_off,
19550                  objfile_name (dwarf2_per_objfile->objfile));
19551       return build_error_marker_type (cu, die);
19552     }
19553
19554   /* If we already know the type we're done.  */
19555   if (sig_type->type != NULL)
19556     return sig_type->type;
19557
19558   type_cu = cu;
19559   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
19560   if (type_die != NULL)
19561     {
19562       /* N.B. We need to call get_die_type to ensure only one type for this DIE
19563          is created.  This is important, for example, because for c++ classes
19564          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
19565       type = read_type_die (type_die, type_cu);
19566       if (type == NULL)
19567         {
19568           complaint (&symfile_complaints,
19569                      _("Dwarf Error: Cannot build signatured type %s"
19570                        " referenced from DIE at 0x%x [in module %s]"),
19571                      hex_string (signature), die->offset.sect_off,
19572                      objfile_name (dwarf2_per_objfile->objfile));
19573           type = build_error_marker_type (cu, die);
19574         }
19575     }
19576   else
19577     {
19578       complaint (&symfile_complaints,
19579                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
19580                    " from DIE at 0x%x [in module %s]"),
19581                  hex_string (signature), die->offset.sect_off,
19582                  objfile_name (dwarf2_per_objfile->objfile));
19583       type = build_error_marker_type (cu, die);
19584     }
19585   sig_type->type = type;
19586
19587   return type;
19588 }
19589
19590 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
19591    reading in and processing the type unit if necessary.  */
19592
19593 static struct type *
19594 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
19595                           struct dwarf2_cu *cu) /* ARI: editCase function */
19596 {
19597   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
19598   if (attr_form_is_ref (attr))
19599     {
19600       struct dwarf2_cu *type_cu = cu;
19601       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
19602
19603       return read_type_die (type_die, type_cu);
19604     }
19605   else if (attr->form == DW_FORM_ref_sig8)
19606     {
19607       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
19608     }
19609   else
19610     {
19611       complaint (&symfile_complaints,
19612                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
19613                    " at 0x%x [in module %s]"),
19614                  dwarf_form_name (attr->form), die->offset.sect_off,
19615                  objfile_name (dwarf2_per_objfile->objfile));
19616       return build_error_marker_type (cu, die);
19617     }
19618 }
19619
19620 /* Load the DIEs associated with type unit PER_CU into memory.  */
19621
19622 static void
19623 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
19624 {
19625   struct signatured_type *sig_type;
19626
19627   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
19628   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
19629
19630   /* We have the per_cu, but we need the signatured_type.
19631      Fortunately this is an easy translation.  */
19632   gdb_assert (per_cu->is_debug_types);
19633   sig_type = (struct signatured_type *) per_cu;
19634
19635   gdb_assert (per_cu->cu == NULL);
19636
19637   read_signatured_type (sig_type);
19638
19639   gdb_assert (per_cu->cu != NULL);
19640 }
19641
19642 /* die_reader_func for read_signatured_type.
19643    This is identical to load_full_comp_unit_reader,
19644    but is kept separate for now.  */
19645
19646 static void
19647 read_signatured_type_reader (const struct die_reader_specs *reader,
19648                              const gdb_byte *info_ptr,
19649                              struct die_info *comp_unit_die,
19650                              int has_children,
19651                              void *data)
19652 {
19653   struct dwarf2_cu *cu = reader->cu;
19654
19655   gdb_assert (cu->die_hash == NULL);
19656   cu->die_hash =
19657     htab_create_alloc_ex (cu->header.length / 12,
19658                           die_hash,
19659                           die_eq,
19660                           NULL,
19661                           &cu->comp_unit_obstack,
19662                           hashtab_obstack_allocate,
19663                           dummy_obstack_deallocate);
19664
19665   if (has_children)
19666     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
19667                                                   &info_ptr, comp_unit_die);
19668   cu->dies = comp_unit_die;
19669   /* comp_unit_die is not stored in die_hash, no need.  */
19670
19671   /* We try not to read any attributes in this function, because not
19672      all CUs needed for references have been loaded yet, and symbol
19673      table processing isn't initialized.  But we have to set the CU language,
19674      or we won't be able to build types correctly.
19675      Similarly, if we do not read the producer, we can not apply
19676      producer-specific interpretation.  */
19677   prepare_one_comp_unit (cu, cu->dies, language_minimal);
19678 }
19679
19680 /* Read in a signatured type and build its CU and DIEs.
19681    If the type is a stub for the real type in a DWO file,
19682    read in the real type from the DWO file as well.  */
19683
19684 static void
19685 read_signatured_type (struct signatured_type *sig_type)
19686 {
19687   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
19688
19689   gdb_assert (per_cu->is_debug_types);
19690   gdb_assert (per_cu->cu == NULL);
19691
19692   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
19693                            read_signatured_type_reader, NULL);
19694   sig_type->per_cu.tu_read = 1;
19695 }
19696
19697 /* Decode simple location descriptions.
19698    Given a pointer to a dwarf block that defines a location, compute
19699    the location and return the value.
19700
19701    NOTE drow/2003-11-18: This function is called in two situations
19702    now: for the address of static or global variables (partial symbols
19703    only) and for offsets into structures which are expected to be
19704    (more or less) constant.  The partial symbol case should go away,
19705    and only the constant case should remain.  That will let this
19706    function complain more accurately.  A few special modes are allowed
19707    without complaint for global variables (for instance, global
19708    register values and thread-local values).
19709
19710    A location description containing no operations indicates that the
19711    object is optimized out.  The return value is 0 for that case.
19712    FIXME drow/2003-11-16: No callers check for this case any more; soon all
19713    callers will only want a very basic result and this can become a
19714    complaint.
19715
19716    Note that stack[0] is unused except as a default error return.  */
19717
19718 static CORE_ADDR
19719 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
19720 {
19721   struct objfile *objfile = cu->objfile;
19722   size_t i;
19723   size_t size = blk->size;
19724   const gdb_byte *data = blk->data;
19725   CORE_ADDR stack[64];
19726   int stacki;
19727   unsigned int bytes_read, unsnd;
19728   gdb_byte op;
19729
19730   i = 0;
19731   stacki = 0;
19732   stack[stacki] = 0;
19733   stack[++stacki] = 0;
19734
19735   while (i < size)
19736     {
19737       op = data[i++];
19738       switch (op)
19739         {
19740         case DW_OP_lit0:
19741         case DW_OP_lit1:
19742         case DW_OP_lit2:
19743         case DW_OP_lit3:
19744         case DW_OP_lit4:
19745         case DW_OP_lit5:
19746         case DW_OP_lit6:
19747         case DW_OP_lit7:
19748         case DW_OP_lit8:
19749         case DW_OP_lit9:
19750         case DW_OP_lit10:
19751         case DW_OP_lit11:
19752         case DW_OP_lit12:
19753         case DW_OP_lit13:
19754         case DW_OP_lit14:
19755         case DW_OP_lit15:
19756         case DW_OP_lit16:
19757         case DW_OP_lit17:
19758         case DW_OP_lit18:
19759         case DW_OP_lit19:
19760         case DW_OP_lit20:
19761         case DW_OP_lit21:
19762         case DW_OP_lit22:
19763         case DW_OP_lit23:
19764         case DW_OP_lit24:
19765         case DW_OP_lit25:
19766         case DW_OP_lit26:
19767         case DW_OP_lit27:
19768         case DW_OP_lit28:
19769         case DW_OP_lit29:
19770         case DW_OP_lit30:
19771         case DW_OP_lit31:
19772           stack[++stacki] = op - DW_OP_lit0;
19773           break;
19774
19775         case DW_OP_reg0:
19776         case DW_OP_reg1:
19777         case DW_OP_reg2:
19778         case DW_OP_reg3:
19779         case DW_OP_reg4:
19780         case DW_OP_reg5:
19781         case DW_OP_reg6:
19782         case DW_OP_reg7:
19783         case DW_OP_reg8:
19784         case DW_OP_reg9:
19785         case DW_OP_reg10:
19786         case DW_OP_reg11:
19787         case DW_OP_reg12:
19788         case DW_OP_reg13:
19789         case DW_OP_reg14:
19790         case DW_OP_reg15:
19791         case DW_OP_reg16:
19792         case DW_OP_reg17:
19793         case DW_OP_reg18:
19794         case DW_OP_reg19:
19795         case DW_OP_reg20:
19796         case DW_OP_reg21:
19797         case DW_OP_reg22:
19798         case DW_OP_reg23:
19799         case DW_OP_reg24:
19800         case DW_OP_reg25:
19801         case DW_OP_reg26:
19802         case DW_OP_reg27:
19803         case DW_OP_reg28:
19804         case DW_OP_reg29:
19805         case DW_OP_reg30:
19806         case DW_OP_reg31:
19807           stack[++stacki] = op - DW_OP_reg0;
19808           if (i < size)
19809             dwarf2_complex_location_expr_complaint ();
19810           break;
19811
19812         case DW_OP_regx:
19813           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
19814           i += bytes_read;
19815           stack[++stacki] = unsnd;
19816           if (i < size)
19817             dwarf2_complex_location_expr_complaint ();
19818           break;
19819
19820         case DW_OP_addr:
19821           stack[++stacki] = read_address (objfile->obfd, &data[i],
19822                                           cu, &bytes_read);
19823           i += bytes_read;
19824           break;
19825
19826         case DW_OP_const1u:
19827           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
19828           i += 1;
19829           break;
19830
19831         case DW_OP_const1s:
19832           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
19833           i += 1;
19834           break;
19835
19836         case DW_OP_const2u:
19837           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
19838           i += 2;
19839           break;
19840
19841         case DW_OP_const2s:
19842           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
19843           i += 2;
19844           break;
19845
19846         case DW_OP_const4u:
19847           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
19848           i += 4;
19849           break;
19850
19851         case DW_OP_const4s:
19852           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
19853           i += 4;
19854           break;
19855
19856         case DW_OP_const8u:
19857           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
19858           i += 8;
19859           break;
19860
19861         case DW_OP_constu:
19862           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
19863                                                   &bytes_read);
19864           i += bytes_read;
19865           break;
19866
19867         case DW_OP_consts:
19868           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
19869           i += bytes_read;
19870           break;
19871
19872         case DW_OP_dup:
19873           stack[stacki + 1] = stack[stacki];
19874           stacki++;
19875           break;
19876
19877         case DW_OP_plus:
19878           stack[stacki - 1] += stack[stacki];
19879           stacki--;
19880           break;
19881
19882         case DW_OP_plus_uconst:
19883           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
19884                                                  &bytes_read);
19885           i += bytes_read;
19886           break;
19887
19888         case DW_OP_minus:
19889           stack[stacki - 1] -= stack[stacki];
19890           stacki--;
19891           break;
19892
19893         case DW_OP_deref:
19894           /* If we're not the last op, then we definitely can't encode
19895              this using GDB's address_class enum.  This is valid for partial
19896              global symbols, although the variable's address will be bogus
19897              in the psymtab.  */
19898           if (i < size)
19899             dwarf2_complex_location_expr_complaint ();
19900           break;
19901
19902         case DW_OP_GNU_push_tls_address:
19903           /* The top of the stack has the offset from the beginning
19904              of the thread control block at which the variable is located.  */
19905           /* Nothing should follow this operator, so the top of stack would
19906              be returned.  */
19907           /* This is valid for partial global symbols, but the variable's
19908              address will be bogus in the psymtab.  Make it always at least
19909              non-zero to not look as a variable garbage collected by linker
19910              which have DW_OP_addr 0.  */
19911           if (i < size)
19912             dwarf2_complex_location_expr_complaint ();
19913           stack[stacki]++;
19914           break;
19915
19916         case DW_OP_GNU_uninit:
19917           break;
19918
19919         case DW_OP_GNU_addr_index:
19920         case DW_OP_GNU_const_index:
19921           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
19922                                                          &bytes_read);
19923           i += bytes_read;
19924           break;
19925
19926         default:
19927           {
19928             const char *name = get_DW_OP_name (op);
19929
19930             if (name)
19931               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
19932                          name);
19933             else
19934               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
19935                          op);
19936           }
19937
19938           return (stack[stacki]);
19939         }
19940
19941       /* Enforce maximum stack depth of SIZE-1 to avoid writing
19942          outside of the allocated space.  Also enforce minimum>0.  */
19943       if (stacki >= ARRAY_SIZE (stack) - 1)
19944         {
19945           complaint (&symfile_complaints,
19946                      _("location description stack overflow"));
19947           return 0;
19948         }
19949
19950       if (stacki <= 0)
19951         {
19952           complaint (&symfile_complaints,
19953                      _("location description stack underflow"));
19954           return 0;
19955         }
19956     }
19957   return (stack[stacki]);
19958 }
19959
19960 /* memory allocation interface */
19961
19962 static struct dwarf_block *
19963 dwarf_alloc_block (struct dwarf2_cu *cu)
19964 {
19965   struct dwarf_block *blk;
19966
19967   blk = (struct dwarf_block *)
19968     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
19969   return (blk);
19970 }
19971
19972 static struct die_info *
19973 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
19974 {
19975   struct die_info *die;
19976   size_t size = sizeof (struct die_info);
19977
19978   if (num_attrs > 1)
19979     size += (num_attrs - 1) * sizeof (struct attribute);
19980
19981   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
19982   memset (die, 0, sizeof (struct die_info));
19983   return (die);
19984 }
19985
19986 \f
19987 /* Macro support.  */
19988
19989 /* Return file name relative to the compilation directory of file number I in
19990    *LH's file name table.  The result is allocated using xmalloc; the caller is
19991    responsible for freeing it.  */
19992
19993 static char *
19994 file_file_name (int file, struct line_header *lh)
19995 {
19996   /* Is the file number a valid index into the line header's file name
19997      table?  Remember that file numbers start with one, not zero.  */
19998   if (1 <= file && file <= lh->num_file_names)
19999     {
20000       struct file_entry *fe = &lh->file_names[file - 1];
20001
20002       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
20003         return xstrdup (fe->name);
20004       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20005                      fe->name, NULL);
20006     }
20007   else
20008     {
20009       /* The compiler produced a bogus file number.  We can at least
20010          record the macro definitions made in the file, even if we
20011          won't be able to find the file by name.  */
20012       char fake_name[80];
20013
20014       xsnprintf (fake_name, sizeof (fake_name),
20015                  "<bad macro file number %d>", file);
20016
20017       complaint (&symfile_complaints,
20018                  _("bad file number in macro information (%d)"),
20019                  file);
20020
20021       return xstrdup (fake_name);
20022     }
20023 }
20024
20025 /* Return the full name of file number I in *LH's file name table.
20026    Use COMP_DIR as the name of the current directory of the
20027    compilation.  The result is allocated using xmalloc; the caller is
20028    responsible for freeing it.  */
20029 static char *
20030 file_full_name (int file, struct line_header *lh, const char *comp_dir)
20031 {
20032   /* Is the file number a valid index into the line header's file name
20033      table?  Remember that file numbers start with one, not zero.  */
20034   if (1 <= file && file <= lh->num_file_names)
20035     {
20036       char *relative = file_file_name (file, lh);
20037
20038       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20039         return relative;
20040       return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20041     }
20042   else
20043     return file_file_name (file, lh);
20044 }
20045
20046
20047 static struct macro_source_file *
20048 macro_start_file (int file, int line,
20049                   struct macro_source_file *current_file,
20050                   const char *comp_dir,
20051                   struct line_header *lh, struct objfile *objfile)
20052 {
20053   /* File name relative to the compilation directory of this source file.  */
20054   char *file_name = file_file_name (file, lh);
20055
20056   if (! current_file)
20057     {
20058       /* Note: We don't create a macro table for this compilation unit
20059          at all until we actually get a filename.  */
20060       struct macro_table *macro_table = get_macro_table (objfile, comp_dir);
20061
20062       /* If we have no current file, then this must be the start_file
20063          directive for the compilation unit's main source file.  */
20064       current_file = macro_set_main (macro_table, file_name);
20065       macro_define_special (macro_table);
20066     }
20067   else
20068     current_file = macro_include (current_file, line, file_name);
20069
20070   xfree (file_name);
20071
20072   return current_file;
20073 }
20074
20075
20076 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20077    followed by a null byte.  */
20078 static char *
20079 copy_string (const char *buf, int len)
20080 {
20081   char *s = xmalloc (len + 1);
20082
20083   memcpy (s, buf, len);
20084   s[len] = '\0';
20085   return s;
20086 }
20087
20088
20089 static const char *
20090 consume_improper_spaces (const char *p, const char *body)
20091 {
20092   if (*p == ' ')
20093     {
20094       complaint (&symfile_complaints,
20095                  _("macro definition contains spaces "
20096                    "in formal argument list:\n`%s'"),
20097                  body);
20098
20099       while (*p == ' ')
20100         p++;
20101     }
20102
20103   return p;
20104 }
20105
20106
20107 static void
20108 parse_macro_definition (struct macro_source_file *file, int line,
20109                         const char *body)
20110 {
20111   const char *p;
20112
20113   /* The body string takes one of two forms.  For object-like macro
20114      definitions, it should be:
20115
20116         <macro name> " " <definition>
20117
20118      For function-like macro definitions, it should be:
20119
20120         <macro name> "() " <definition>
20121      or
20122         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20123
20124      Spaces may appear only where explicitly indicated, and in the
20125      <definition>.
20126
20127      The Dwarf 2 spec says that an object-like macro's name is always
20128      followed by a space, but versions of GCC around March 2002 omit
20129      the space when the macro's definition is the empty string.
20130
20131      The Dwarf 2 spec says that there should be no spaces between the
20132      formal arguments in a function-like macro's formal argument list,
20133      but versions of GCC around March 2002 include spaces after the
20134      commas.  */
20135
20136
20137   /* Find the extent of the macro name.  The macro name is terminated
20138      by either a space or null character (for an object-like macro) or
20139      an opening paren (for a function-like macro).  */
20140   for (p = body; *p; p++)
20141     if (*p == ' ' || *p == '(')
20142       break;
20143
20144   if (*p == ' ' || *p == '\0')
20145     {
20146       /* It's an object-like macro.  */
20147       int name_len = p - body;
20148       char *name = copy_string (body, name_len);
20149       const char *replacement;
20150
20151       if (*p == ' ')
20152         replacement = body + name_len + 1;
20153       else
20154         {
20155           dwarf2_macro_malformed_definition_complaint (body);
20156           replacement = body + name_len;
20157         }
20158
20159       macro_define_object (file, line, name, replacement);
20160
20161       xfree (name);
20162     }
20163   else if (*p == '(')
20164     {
20165       /* It's a function-like macro.  */
20166       char *name = copy_string (body, p - body);
20167       int argc = 0;
20168       int argv_size = 1;
20169       char **argv = xmalloc (argv_size * sizeof (*argv));
20170
20171       p++;
20172
20173       p = consume_improper_spaces (p, body);
20174
20175       /* Parse the formal argument list.  */
20176       while (*p && *p != ')')
20177         {
20178           /* Find the extent of the current argument name.  */
20179           const char *arg_start = p;
20180
20181           while (*p && *p != ',' && *p != ')' && *p != ' ')
20182             p++;
20183
20184           if (! *p || p == arg_start)
20185             dwarf2_macro_malformed_definition_complaint (body);
20186           else
20187             {
20188               /* Make sure argv has room for the new argument.  */
20189               if (argc >= argv_size)
20190                 {
20191                   argv_size *= 2;
20192                   argv = xrealloc (argv, argv_size * sizeof (*argv));
20193                 }
20194
20195               argv[argc++] = copy_string (arg_start, p - arg_start);
20196             }
20197
20198           p = consume_improper_spaces (p, body);
20199
20200           /* Consume the comma, if present.  */
20201           if (*p == ',')
20202             {
20203               p++;
20204
20205               p = consume_improper_spaces (p, body);
20206             }
20207         }
20208
20209       if (*p == ')')
20210         {
20211           p++;
20212
20213           if (*p == ' ')
20214             /* Perfectly formed definition, no complaints.  */
20215             macro_define_function (file, line, name,
20216                                    argc, (const char **) argv,
20217                                    p + 1);
20218           else if (*p == '\0')
20219             {
20220               /* Complain, but do define it.  */
20221               dwarf2_macro_malformed_definition_complaint (body);
20222               macro_define_function (file, line, name,
20223                                      argc, (const char **) argv,
20224                                      p);
20225             }
20226           else
20227             /* Just complain.  */
20228             dwarf2_macro_malformed_definition_complaint (body);
20229         }
20230       else
20231         /* Just complain.  */
20232         dwarf2_macro_malformed_definition_complaint (body);
20233
20234       xfree (name);
20235       {
20236         int i;
20237
20238         for (i = 0; i < argc; i++)
20239           xfree (argv[i]);
20240       }
20241       xfree (argv);
20242     }
20243   else
20244     dwarf2_macro_malformed_definition_complaint (body);
20245 }
20246
20247 /* Skip some bytes from BYTES according to the form given in FORM.
20248    Returns the new pointer.  */
20249
20250 static const gdb_byte *
20251 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
20252                  enum dwarf_form form,
20253                  unsigned int offset_size,
20254                  struct dwarf2_section_info *section)
20255 {
20256   unsigned int bytes_read;
20257
20258   switch (form)
20259     {
20260     case DW_FORM_data1:
20261     case DW_FORM_flag:
20262       ++bytes;
20263       break;
20264
20265     case DW_FORM_data2:
20266       bytes += 2;
20267       break;
20268
20269     case DW_FORM_data4:
20270       bytes += 4;
20271       break;
20272
20273     case DW_FORM_data8:
20274       bytes += 8;
20275       break;
20276
20277     case DW_FORM_string:
20278       read_direct_string (abfd, bytes, &bytes_read);
20279       bytes += bytes_read;
20280       break;
20281
20282     case DW_FORM_sec_offset:
20283     case DW_FORM_strp:
20284     case DW_FORM_GNU_strp_alt:
20285       bytes += offset_size;
20286       break;
20287
20288     case DW_FORM_block:
20289       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
20290       bytes += bytes_read;
20291       break;
20292
20293     case DW_FORM_block1:
20294       bytes += 1 + read_1_byte (abfd, bytes);
20295       break;
20296     case DW_FORM_block2:
20297       bytes += 2 + read_2_bytes (abfd, bytes);
20298       break;
20299     case DW_FORM_block4:
20300       bytes += 4 + read_4_bytes (abfd, bytes);
20301       break;
20302
20303     case DW_FORM_sdata:
20304     case DW_FORM_udata:
20305     case DW_FORM_GNU_addr_index:
20306     case DW_FORM_GNU_str_index:
20307       bytes = gdb_skip_leb128 (bytes, buffer_end);
20308       if (bytes == NULL)
20309         {
20310           dwarf2_section_buffer_overflow_complaint (section);
20311           return NULL;
20312         }
20313       break;
20314
20315     default:
20316       {
20317       complain:
20318         complaint (&symfile_complaints,
20319                    _("invalid form 0x%x in `%s'"),
20320                    form, get_section_name (section));
20321         return NULL;
20322       }
20323     }
20324
20325   return bytes;
20326 }
20327
20328 /* A helper for dwarf_decode_macros that handles skipping an unknown
20329    opcode.  Returns an updated pointer to the macro data buffer; or,
20330    on error, issues a complaint and returns NULL.  */
20331
20332 static const gdb_byte *
20333 skip_unknown_opcode (unsigned int opcode,
20334                      const gdb_byte **opcode_definitions,
20335                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20336                      bfd *abfd,
20337                      unsigned int offset_size,
20338                      struct dwarf2_section_info *section)
20339 {
20340   unsigned int bytes_read, i;
20341   unsigned long arg;
20342   const gdb_byte *defn;
20343
20344   if (opcode_definitions[opcode] == NULL)
20345     {
20346       complaint (&symfile_complaints,
20347                  _("unrecognized DW_MACFINO opcode 0x%x"),
20348                  opcode);
20349       return NULL;
20350     }
20351
20352   defn = opcode_definitions[opcode];
20353   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
20354   defn += bytes_read;
20355
20356   for (i = 0; i < arg; ++i)
20357     {
20358       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
20359                                  section);
20360       if (mac_ptr == NULL)
20361         {
20362           /* skip_form_bytes already issued the complaint.  */
20363           return NULL;
20364         }
20365     }
20366
20367   return mac_ptr;
20368 }
20369
20370 /* A helper function which parses the header of a macro section.
20371    If the macro section is the extended (for now called "GNU") type,
20372    then this updates *OFFSET_SIZE.  Returns a pointer to just after
20373    the header, or issues a complaint and returns NULL on error.  */
20374
20375 static const gdb_byte *
20376 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
20377                           bfd *abfd,
20378                           const gdb_byte *mac_ptr,
20379                           unsigned int *offset_size,
20380                           int section_is_gnu)
20381 {
20382   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
20383
20384   if (section_is_gnu)
20385     {
20386       unsigned int version, flags;
20387
20388       version = read_2_bytes (abfd, mac_ptr);
20389       if (version != 4)
20390         {
20391           complaint (&symfile_complaints,
20392                      _("unrecognized version `%d' in .debug_macro section"),
20393                      version);
20394           return NULL;
20395         }
20396       mac_ptr += 2;
20397
20398       flags = read_1_byte (abfd, mac_ptr);
20399       ++mac_ptr;
20400       *offset_size = (flags & 1) ? 8 : 4;
20401
20402       if ((flags & 2) != 0)
20403         /* We don't need the line table offset.  */
20404         mac_ptr += *offset_size;
20405
20406       /* Vendor opcode descriptions.  */
20407       if ((flags & 4) != 0)
20408         {
20409           unsigned int i, count;
20410
20411           count = read_1_byte (abfd, mac_ptr);
20412           ++mac_ptr;
20413           for (i = 0; i < count; ++i)
20414             {
20415               unsigned int opcode, bytes_read;
20416               unsigned long arg;
20417
20418               opcode = read_1_byte (abfd, mac_ptr);
20419               ++mac_ptr;
20420               opcode_definitions[opcode] = mac_ptr;
20421               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20422               mac_ptr += bytes_read;
20423               mac_ptr += arg;
20424             }
20425         }
20426     }
20427
20428   return mac_ptr;
20429 }
20430
20431 /* A helper for dwarf_decode_macros that handles the GNU extensions,
20432    including DW_MACRO_GNU_transparent_include.  */
20433
20434 static void
20435 dwarf_decode_macro_bytes (bfd *abfd,
20436                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20437                           struct macro_source_file *current_file,
20438                           struct line_header *lh, const char *comp_dir,
20439                           struct dwarf2_section_info *section,
20440                           int section_is_gnu, int section_is_dwz,
20441                           unsigned int offset_size,
20442                           struct objfile *objfile,
20443                           htab_t include_hash)
20444 {
20445   enum dwarf_macro_record_type macinfo_type;
20446   int at_commandline;
20447   const gdb_byte *opcode_definitions[256];
20448
20449   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20450                                       &offset_size, section_is_gnu);
20451   if (mac_ptr == NULL)
20452     {
20453       /* We already issued a complaint.  */
20454       return;
20455     }
20456
20457   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
20458      GDB is still reading the definitions from command line.  First
20459      DW_MACINFO_start_file will need to be ignored as it was already executed
20460      to create CURRENT_FILE for the main source holding also the command line
20461      definitions.  On first met DW_MACINFO_start_file this flag is reset to
20462      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
20463
20464   at_commandline = 1;
20465
20466   do
20467     {
20468       /* Do we at least have room for a macinfo type byte?  */
20469       if (mac_ptr >= mac_end)
20470         {
20471           dwarf2_section_buffer_overflow_complaint (section);
20472           break;
20473         }
20474
20475       macinfo_type = read_1_byte (abfd, mac_ptr);
20476       mac_ptr++;
20477
20478       /* Note that we rely on the fact that the corresponding GNU and
20479          DWARF constants are the same.  */
20480       switch (macinfo_type)
20481         {
20482           /* A zero macinfo type indicates the end of the macro
20483              information.  */
20484         case 0:
20485           break;
20486
20487         case DW_MACRO_GNU_define:
20488         case DW_MACRO_GNU_undef:
20489         case DW_MACRO_GNU_define_indirect:
20490         case DW_MACRO_GNU_undef_indirect:
20491         case DW_MACRO_GNU_define_indirect_alt:
20492         case DW_MACRO_GNU_undef_indirect_alt:
20493           {
20494             unsigned int bytes_read;
20495             int line;
20496             const char *body;
20497             int is_define;
20498
20499             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20500             mac_ptr += bytes_read;
20501
20502             if (macinfo_type == DW_MACRO_GNU_define
20503                 || macinfo_type == DW_MACRO_GNU_undef)
20504               {
20505                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
20506                 mac_ptr += bytes_read;
20507               }
20508             else
20509               {
20510                 LONGEST str_offset;
20511
20512                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
20513                 mac_ptr += offset_size;
20514
20515                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
20516                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
20517                     || section_is_dwz)
20518                   {
20519                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
20520
20521                     body = read_indirect_string_from_dwz (dwz, str_offset);
20522                   }
20523                 else
20524                   body = read_indirect_string_at_offset (abfd, str_offset);
20525               }
20526
20527             is_define = (macinfo_type == DW_MACRO_GNU_define
20528                          || macinfo_type == DW_MACRO_GNU_define_indirect
20529                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
20530             if (! current_file)
20531               {
20532                 /* DWARF violation as no main source is present.  */
20533                 complaint (&symfile_complaints,
20534                            _("debug info with no main source gives macro %s "
20535                              "on line %d: %s"),
20536                            is_define ? _("definition") : _("undefinition"),
20537                            line, body);
20538                 break;
20539               }
20540             if ((line == 0 && !at_commandline)
20541                 || (line != 0 && at_commandline))
20542               complaint (&symfile_complaints,
20543                          _("debug info gives %s macro %s with %s line %d: %s"),
20544                          at_commandline ? _("command-line") : _("in-file"),
20545                          is_define ? _("definition") : _("undefinition"),
20546                          line == 0 ? _("zero") : _("non-zero"), line, body);
20547
20548             if (is_define)
20549               parse_macro_definition (current_file, line, body);
20550             else
20551               {
20552                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
20553                             || macinfo_type == DW_MACRO_GNU_undef_indirect
20554                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
20555                 macro_undef (current_file, line, body);
20556               }
20557           }
20558           break;
20559
20560         case DW_MACRO_GNU_start_file:
20561           {
20562             unsigned int bytes_read;
20563             int line, file;
20564
20565             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20566             mac_ptr += bytes_read;
20567             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20568             mac_ptr += bytes_read;
20569
20570             if ((line == 0 && !at_commandline)
20571                 || (line != 0 && at_commandline))
20572               complaint (&symfile_complaints,
20573                          _("debug info gives source %d included "
20574                            "from %s at %s line %d"),
20575                          file, at_commandline ? _("command-line") : _("file"),
20576                          line == 0 ? _("zero") : _("non-zero"), line);
20577
20578             if (at_commandline)
20579               {
20580                 /* This DW_MACRO_GNU_start_file was executed in the
20581                    pass one.  */
20582                 at_commandline = 0;
20583               }
20584             else
20585               current_file = macro_start_file (file, line,
20586                                                current_file, comp_dir,
20587                                                lh, objfile);
20588           }
20589           break;
20590
20591         case DW_MACRO_GNU_end_file:
20592           if (! current_file)
20593             complaint (&symfile_complaints,
20594                        _("macro debug info has an unmatched "
20595                          "`close_file' directive"));
20596           else
20597             {
20598               current_file = current_file->included_by;
20599               if (! current_file)
20600                 {
20601                   enum dwarf_macro_record_type next_type;
20602
20603                   /* GCC circa March 2002 doesn't produce the zero
20604                      type byte marking the end of the compilation
20605                      unit.  Complain if it's not there, but exit no
20606                      matter what.  */
20607
20608                   /* Do we at least have room for a macinfo type byte?  */
20609                   if (mac_ptr >= mac_end)
20610                     {
20611                       dwarf2_section_buffer_overflow_complaint (section);
20612                       return;
20613                     }
20614
20615                   /* We don't increment mac_ptr here, so this is just
20616                      a look-ahead.  */
20617                   next_type = read_1_byte (abfd, mac_ptr);
20618                   if (next_type != 0)
20619                     complaint (&symfile_complaints,
20620                                _("no terminating 0-type entry for "
20621                                  "macros in `.debug_macinfo' section"));
20622
20623                   return;
20624                 }
20625             }
20626           break;
20627
20628         case DW_MACRO_GNU_transparent_include:
20629         case DW_MACRO_GNU_transparent_include_alt:
20630           {
20631             LONGEST offset;
20632             void **slot;
20633             bfd *include_bfd = abfd;
20634             struct dwarf2_section_info *include_section = section;
20635             struct dwarf2_section_info alt_section;
20636             const gdb_byte *include_mac_end = mac_end;
20637             int is_dwz = section_is_dwz;
20638             const gdb_byte *new_mac_ptr;
20639
20640             offset = read_offset_1 (abfd, mac_ptr, offset_size);
20641             mac_ptr += offset_size;
20642
20643             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
20644               {
20645                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
20646
20647                 dwarf2_read_section (dwarf2_per_objfile->objfile,
20648                                      &dwz->macro);
20649
20650                 include_section = &dwz->macro;
20651                 include_bfd = get_section_bfd_owner (include_section);
20652                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
20653                 is_dwz = 1;
20654               }
20655
20656             new_mac_ptr = include_section->buffer + offset;
20657             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
20658
20659             if (*slot != NULL)
20660               {
20661                 /* This has actually happened; see
20662                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
20663                 complaint (&symfile_complaints,
20664                            _("recursive DW_MACRO_GNU_transparent_include in "
20665                              ".debug_macro section"));
20666               }
20667             else
20668               {
20669                 *slot = (void *) new_mac_ptr;
20670
20671                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
20672                                           include_mac_end, current_file,
20673                                           lh, comp_dir,
20674                                           section, section_is_gnu, is_dwz,
20675                                           offset_size, objfile, include_hash);
20676
20677                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
20678               }
20679           }
20680           break;
20681
20682         case DW_MACINFO_vendor_ext:
20683           if (!section_is_gnu)
20684             {
20685               unsigned int bytes_read;
20686               int constant;
20687
20688               constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20689               mac_ptr += bytes_read;
20690               read_direct_string (abfd, mac_ptr, &bytes_read);
20691               mac_ptr += bytes_read;
20692
20693               /* We don't recognize any vendor extensions.  */
20694               break;
20695             }
20696           /* FALLTHROUGH */
20697
20698         default:
20699           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
20700                                          mac_ptr, mac_end, abfd, offset_size,
20701                                          section);
20702           if (mac_ptr == NULL)
20703             return;
20704           break;
20705         }
20706     } while (macinfo_type != 0);
20707 }
20708
20709 static void
20710 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
20711                      const char *comp_dir, int section_is_gnu)
20712 {
20713   struct objfile *objfile = dwarf2_per_objfile->objfile;
20714   struct line_header *lh = cu->line_header;
20715   bfd *abfd;
20716   const gdb_byte *mac_ptr, *mac_end;
20717   struct macro_source_file *current_file = 0;
20718   enum dwarf_macro_record_type macinfo_type;
20719   unsigned int offset_size = cu->header.offset_size;
20720   const gdb_byte *opcode_definitions[256];
20721   struct cleanup *cleanup;
20722   htab_t include_hash;
20723   void **slot;
20724   struct dwarf2_section_info *section;
20725   const char *section_name;
20726
20727   if (cu->dwo_unit != NULL)
20728     {
20729       if (section_is_gnu)
20730         {
20731           section = &cu->dwo_unit->dwo_file->sections.macro;
20732           section_name = ".debug_macro.dwo";
20733         }
20734       else
20735         {
20736           section = &cu->dwo_unit->dwo_file->sections.macinfo;
20737           section_name = ".debug_macinfo.dwo";
20738         }
20739     }
20740   else
20741     {
20742       if (section_is_gnu)
20743         {
20744           section = &dwarf2_per_objfile->macro;
20745           section_name = ".debug_macro";
20746         }
20747       else
20748         {
20749           section = &dwarf2_per_objfile->macinfo;
20750           section_name = ".debug_macinfo";
20751         }
20752     }
20753
20754   dwarf2_read_section (objfile, section);
20755   if (section->buffer == NULL)
20756     {
20757       complaint (&symfile_complaints, _("missing %s section"), section_name);
20758       return;
20759     }
20760   abfd = get_section_bfd_owner (section);
20761
20762   /* First pass: Find the name of the base filename.
20763      This filename is needed in order to process all macros whose definition
20764      (or undefinition) comes from the command line.  These macros are defined
20765      before the first DW_MACINFO_start_file entry, and yet still need to be
20766      associated to the base file.
20767
20768      To determine the base file name, we scan the macro definitions until we
20769      reach the first DW_MACINFO_start_file entry.  We then initialize
20770      CURRENT_FILE accordingly so that any macro definition found before the
20771      first DW_MACINFO_start_file can still be associated to the base file.  */
20772
20773   mac_ptr = section->buffer + offset;
20774   mac_end = section->buffer + section->size;
20775
20776   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20777                                       &offset_size, section_is_gnu);
20778   if (mac_ptr == NULL)
20779     {
20780       /* We already issued a complaint.  */
20781       return;
20782     }
20783
20784   do
20785     {
20786       /* Do we at least have room for a macinfo type byte?  */
20787       if (mac_ptr >= mac_end)
20788         {
20789           /* Complaint is printed during the second pass as GDB will probably
20790              stop the first pass earlier upon finding
20791              DW_MACINFO_start_file.  */
20792           break;
20793         }
20794
20795       macinfo_type = read_1_byte (abfd, mac_ptr);
20796       mac_ptr++;
20797
20798       /* Note that we rely on the fact that the corresponding GNU and
20799          DWARF constants are the same.  */
20800       switch (macinfo_type)
20801         {
20802           /* A zero macinfo type indicates the end of the macro
20803              information.  */
20804         case 0:
20805           break;
20806
20807         case DW_MACRO_GNU_define:
20808         case DW_MACRO_GNU_undef:
20809           /* Only skip the data by MAC_PTR.  */
20810           {
20811             unsigned int bytes_read;
20812
20813             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20814             mac_ptr += bytes_read;
20815             read_direct_string (abfd, mac_ptr, &bytes_read);
20816             mac_ptr += bytes_read;
20817           }
20818           break;
20819
20820         case DW_MACRO_GNU_start_file:
20821           {
20822             unsigned int bytes_read;
20823             int line, file;
20824
20825             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20826             mac_ptr += bytes_read;
20827             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20828             mac_ptr += bytes_read;
20829
20830             current_file = macro_start_file (file, line, current_file,
20831                                              comp_dir, lh, objfile);
20832           }
20833           break;
20834
20835         case DW_MACRO_GNU_end_file:
20836           /* No data to skip by MAC_PTR.  */
20837           break;
20838
20839         case DW_MACRO_GNU_define_indirect:
20840         case DW_MACRO_GNU_undef_indirect:
20841         case DW_MACRO_GNU_define_indirect_alt:
20842         case DW_MACRO_GNU_undef_indirect_alt:
20843           {
20844             unsigned int bytes_read;
20845
20846             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20847             mac_ptr += bytes_read;
20848             mac_ptr += offset_size;
20849           }
20850           break;
20851
20852         case DW_MACRO_GNU_transparent_include:
20853         case DW_MACRO_GNU_transparent_include_alt:
20854           /* Note that, according to the spec, a transparent include
20855              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
20856              skip this opcode.  */
20857           mac_ptr += offset_size;
20858           break;
20859
20860         case DW_MACINFO_vendor_ext:
20861           /* Only skip the data by MAC_PTR.  */
20862           if (!section_is_gnu)
20863             {
20864               unsigned int bytes_read;
20865
20866               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20867               mac_ptr += bytes_read;
20868               read_direct_string (abfd, mac_ptr, &bytes_read);
20869               mac_ptr += bytes_read;
20870             }
20871           /* FALLTHROUGH */
20872
20873         default:
20874           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
20875                                          mac_ptr, mac_end, abfd, offset_size,
20876                                          section);
20877           if (mac_ptr == NULL)
20878             return;
20879           break;
20880         }
20881     } while (macinfo_type != 0 && current_file == NULL);
20882
20883   /* Second pass: Process all entries.
20884
20885      Use the AT_COMMAND_LINE flag to determine whether we are still processing
20886      command-line macro definitions/undefinitions.  This flag is unset when we
20887      reach the first DW_MACINFO_start_file entry.  */
20888
20889   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
20890                                     NULL, xcalloc, xfree);
20891   cleanup = make_cleanup_htab_delete (include_hash);
20892   mac_ptr = section->buffer + offset;
20893   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
20894   *slot = (void *) mac_ptr;
20895   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
20896                             current_file, lh, comp_dir, section,
20897                             section_is_gnu, 0,
20898                             offset_size, objfile, include_hash);
20899   do_cleanups (cleanup);
20900 }
20901
20902 /* Check if the attribute's form is a DW_FORM_block*
20903    if so return true else false.  */
20904
20905 static int
20906 attr_form_is_block (const struct attribute *attr)
20907 {
20908   return (attr == NULL ? 0 :
20909       attr->form == DW_FORM_block1
20910       || attr->form == DW_FORM_block2
20911       || attr->form == DW_FORM_block4
20912       || attr->form == DW_FORM_block
20913       || attr->form == DW_FORM_exprloc);
20914 }
20915
20916 /* Return non-zero if ATTR's value is a section offset --- classes
20917    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
20918    You may use DW_UNSND (attr) to retrieve such offsets.
20919
20920    Section 7.5.4, "Attribute Encodings", explains that no attribute
20921    may have a value that belongs to more than one of these classes; it
20922    would be ambiguous if we did, because we use the same forms for all
20923    of them.  */
20924
20925 static int
20926 attr_form_is_section_offset (const struct attribute *attr)
20927 {
20928   return (attr->form == DW_FORM_data4
20929           || attr->form == DW_FORM_data8
20930           || attr->form == DW_FORM_sec_offset);
20931 }
20932
20933 /* Return non-zero if ATTR's value falls in the 'constant' class, or
20934    zero otherwise.  When this function returns true, you can apply
20935    dwarf2_get_attr_constant_value to it.
20936
20937    However, note that for some attributes you must check
20938    attr_form_is_section_offset before using this test.  DW_FORM_data4
20939    and DW_FORM_data8 are members of both the constant class, and of
20940    the classes that contain offsets into other debug sections
20941    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
20942    that, if an attribute's can be either a constant or one of the
20943    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
20944    taken as section offsets, not constants.  */
20945
20946 static int
20947 attr_form_is_constant (const struct attribute *attr)
20948 {
20949   switch (attr->form)
20950     {
20951     case DW_FORM_sdata:
20952     case DW_FORM_udata:
20953     case DW_FORM_data1:
20954     case DW_FORM_data2:
20955     case DW_FORM_data4:
20956     case DW_FORM_data8:
20957       return 1;
20958     default:
20959       return 0;
20960     }
20961 }
20962
20963
20964 /* DW_ADDR is always stored already as sect_offset; despite for the forms
20965    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
20966
20967 static int
20968 attr_form_is_ref (const struct attribute *attr)
20969 {
20970   switch (attr->form)
20971     {
20972     case DW_FORM_ref_addr:
20973     case DW_FORM_ref1:
20974     case DW_FORM_ref2:
20975     case DW_FORM_ref4:
20976     case DW_FORM_ref8:
20977     case DW_FORM_ref_udata:
20978     case DW_FORM_GNU_ref_alt:
20979       return 1;
20980     default:
20981       return 0;
20982     }
20983 }
20984
20985 /* Return the .debug_loc section to use for CU.
20986    For DWO files use .debug_loc.dwo.  */
20987
20988 static struct dwarf2_section_info *
20989 cu_debug_loc_section (struct dwarf2_cu *cu)
20990 {
20991   if (cu->dwo_unit)
20992     return &cu->dwo_unit->dwo_file->sections.loc;
20993   return &dwarf2_per_objfile->loc;
20994 }
20995
20996 /* A helper function that fills in a dwarf2_loclist_baton.  */
20997
20998 static void
20999 fill_in_loclist_baton (struct dwarf2_cu *cu,
21000                        struct dwarf2_loclist_baton *baton,
21001                        const struct attribute *attr)
21002 {
21003   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21004
21005   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
21006
21007   baton->per_cu = cu->per_cu;
21008   gdb_assert (baton->per_cu);
21009   /* We don't know how long the location list is, but make sure we
21010      don't run off the edge of the section.  */
21011   baton->size = section->size - DW_UNSND (attr);
21012   baton->data = section->buffer + DW_UNSND (attr);
21013   baton->base_address = cu->base_address;
21014   baton->from_dwo = cu->dwo_unit != NULL;
21015 }
21016
21017 static void
21018 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
21019                              struct dwarf2_cu *cu, int is_block)
21020 {
21021   struct objfile *objfile = dwarf2_per_objfile->objfile;
21022   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21023
21024   if (attr_form_is_section_offset (attr)
21025       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
21026          the section.  If so, fall through to the complaint in the
21027          other branch.  */
21028       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
21029     {
21030       struct dwarf2_loclist_baton *baton;
21031
21032       baton = obstack_alloc (&objfile->objfile_obstack,
21033                              sizeof (struct dwarf2_loclist_baton));
21034
21035       fill_in_loclist_baton (cu, baton, attr);
21036
21037       if (cu->base_known == 0)
21038         complaint (&symfile_complaints,
21039                    _("Location list used without "
21040                      "specifying the CU base address."));
21041
21042       SYMBOL_ACLASS_INDEX (sym) = (is_block
21043                                    ? dwarf2_loclist_block_index
21044                                    : dwarf2_loclist_index);
21045       SYMBOL_LOCATION_BATON (sym) = baton;
21046     }
21047   else
21048     {
21049       struct dwarf2_locexpr_baton *baton;
21050
21051       baton = obstack_alloc (&objfile->objfile_obstack,
21052                              sizeof (struct dwarf2_locexpr_baton));
21053       baton->per_cu = cu->per_cu;
21054       gdb_assert (baton->per_cu);
21055
21056       if (attr_form_is_block (attr))
21057         {
21058           /* Note that we're just copying the block's data pointer
21059              here, not the actual data.  We're still pointing into the
21060              info_buffer for SYM's objfile; right now we never release
21061              that buffer, but when we do clean up properly this may
21062              need to change.  */
21063           baton->size = DW_BLOCK (attr)->size;
21064           baton->data = DW_BLOCK (attr)->data;
21065         }
21066       else
21067         {
21068           dwarf2_invalid_attrib_class_complaint ("location description",
21069                                                  SYMBOL_NATURAL_NAME (sym));
21070           baton->size = 0;
21071         }
21072
21073       SYMBOL_ACLASS_INDEX (sym) = (is_block
21074                                    ? dwarf2_locexpr_block_index
21075                                    : dwarf2_locexpr_index);
21076       SYMBOL_LOCATION_BATON (sym) = baton;
21077     }
21078 }
21079
21080 /* Return the OBJFILE associated with the compilation unit CU.  If CU
21081    came from a separate debuginfo file, then the master objfile is
21082    returned.  */
21083
21084 struct objfile *
21085 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21086 {
21087   struct objfile *objfile = per_cu->objfile;
21088
21089   /* Return the master objfile, so that we can report and look up the
21090      correct file containing this variable.  */
21091   if (objfile->separate_debug_objfile_backlink)
21092     objfile = objfile->separate_debug_objfile_backlink;
21093
21094   return objfile;
21095 }
21096
21097 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21098    (CU_HEADERP is unused in such case) or prepare a temporary copy at
21099    CU_HEADERP first.  */
21100
21101 static const struct comp_unit_head *
21102 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21103                        struct dwarf2_per_cu_data *per_cu)
21104 {
21105   const gdb_byte *info_ptr;
21106
21107   if (per_cu->cu)
21108     return &per_cu->cu->header;
21109
21110   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
21111
21112   memset (cu_headerp, 0, sizeof (*cu_headerp));
21113   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
21114
21115   return cu_headerp;
21116 }
21117
21118 /* Return the address size given in the compilation unit header for CU.  */
21119
21120 int
21121 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21122 {
21123   struct comp_unit_head cu_header_local;
21124   const struct comp_unit_head *cu_headerp;
21125
21126   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21127
21128   return cu_headerp->addr_size;
21129 }
21130
21131 /* Return the offset size given in the compilation unit header for CU.  */
21132
21133 int
21134 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21135 {
21136   struct comp_unit_head cu_header_local;
21137   const struct comp_unit_head *cu_headerp;
21138
21139   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21140
21141   return cu_headerp->offset_size;
21142 }
21143
21144 /* See its dwarf2loc.h declaration.  */
21145
21146 int
21147 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21148 {
21149   struct comp_unit_head cu_header_local;
21150   const struct comp_unit_head *cu_headerp;
21151
21152   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21153
21154   if (cu_headerp->version == 2)
21155     return cu_headerp->addr_size;
21156   else
21157     return cu_headerp->offset_size;
21158 }
21159
21160 /* Return the text offset of the CU.  The returned offset comes from
21161    this CU's objfile.  If this objfile came from a separate debuginfo
21162    file, then the offset may be different from the corresponding
21163    offset in the parent objfile.  */
21164
21165 CORE_ADDR
21166 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21167 {
21168   struct objfile *objfile = per_cu->objfile;
21169
21170   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21171 }
21172
21173 /* Locate the .debug_info compilation unit from CU's objfile which contains
21174    the DIE at OFFSET.  Raises an error on failure.  */
21175
21176 static struct dwarf2_per_cu_data *
21177 dwarf2_find_containing_comp_unit (sect_offset offset,
21178                                   unsigned int offset_in_dwz,
21179                                   struct objfile *objfile)
21180 {
21181   struct dwarf2_per_cu_data *this_cu;
21182   int low, high;
21183   const sect_offset *cu_off;
21184
21185   low = 0;
21186   high = dwarf2_per_objfile->n_comp_units - 1;
21187   while (high > low)
21188     {
21189       struct dwarf2_per_cu_data *mid_cu;
21190       int mid = low + (high - low) / 2;
21191
21192       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21193       cu_off = &mid_cu->offset;
21194       if (mid_cu->is_dwz > offset_in_dwz
21195           || (mid_cu->is_dwz == offset_in_dwz
21196               && cu_off->sect_off >= offset.sect_off))
21197         high = mid;
21198       else
21199         low = mid + 1;
21200     }
21201   gdb_assert (low == high);
21202   this_cu = dwarf2_per_objfile->all_comp_units[low];
21203   cu_off = &this_cu->offset;
21204   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
21205     {
21206       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
21207         error (_("Dwarf Error: could not find partial DIE containing "
21208                "offset 0x%lx [in module %s]"),
21209                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
21210
21211       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21212                   <= offset.sect_off);
21213       return dwarf2_per_objfile->all_comp_units[low-1];
21214     }
21215   else
21216     {
21217       this_cu = dwarf2_per_objfile->all_comp_units[low];
21218       if (low == dwarf2_per_objfile->n_comp_units - 1
21219           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21220         error (_("invalid dwarf2 offset %u"), offset.sect_off);
21221       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
21222       return this_cu;
21223     }
21224 }
21225
21226 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
21227
21228 static void
21229 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
21230 {
21231   memset (cu, 0, sizeof (*cu));
21232   per_cu->cu = cu;
21233   cu->per_cu = per_cu;
21234   cu->objfile = per_cu->objfile;
21235   obstack_init (&cu->comp_unit_obstack);
21236 }
21237
21238 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
21239
21240 static void
21241 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
21242                        enum language pretend_language)
21243 {
21244   struct attribute *attr;
21245
21246   /* Set the language we're debugging.  */
21247   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
21248   if (attr)
21249     set_cu_language (DW_UNSND (attr), cu);
21250   else
21251     {
21252       cu->language = pretend_language;
21253       cu->language_defn = language_def (cu->language);
21254     }
21255
21256   attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
21257   if (attr)
21258     cu->producer = DW_STRING (attr);
21259 }
21260
21261 /* Release one cached compilation unit, CU.  We unlink it from the tree
21262    of compilation units, but we don't remove it from the read_in_chain;
21263    the caller is responsible for that.
21264    NOTE: DATA is a void * because this function is also used as a
21265    cleanup routine.  */
21266
21267 static void
21268 free_heap_comp_unit (void *data)
21269 {
21270   struct dwarf2_cu *cu = data;
21271
21272   gdb_assert (cu->per_cu != NULL);
21273   cu->per_cu->cu = NULL;
21274   cu->per_cu = NULL;
21275
21276   obstack_free (&cu->comp_unit_obstack, NULL);
21277
21278   xfree (cu);
21279 }
21280
21281 /* This cleanup function is passed the address of a dwarf2_cu on the stack
21282    when we're finished with it.  We can't free the pointer itself, but be
21283    sure to unlink it from the cache.  Also release any associated storage.  */
21284
21285 static void
21286 free_stack_comp_unit (void *data)
21287 {
21288   struct dwarf2_cu *cu = data;
21289
21290   gdb_assert (cu->per_cu != NULL);
21291   cu->per_cu->cu = NULL;
21292   cu->per_cu = NULL;
21293
21294   obstack_free (&cu->comp_unit_obstack, NULL);
21295   cu->partial_dies = NULL;
21296 }
21297
21298 /* Free all cached compilation units.  */
21299
21300 static void
21301 free_cached_comp_units (void *data)
21302 {
21303   struct dwarf2_per_cu_data *per_cu, **last_chain;
21304
21305   per_cu = dwarf2_per_objfile->read_in_chain;
21306   last_chain = &dwarf2_per_objfile->read_in_chain;
21307   while (per_cu != NULL)
21308     {
21309       struct dwarf2_per_cu_data *next_cu;
21310
21311       next_cu = per_cu->cu->read_in_chain;
21312
21313       free_heap_comp_unit (per_cu->cu);
21314       *last_chain = next_cu;
21315
21316       per_cu = next_cu;
21317     }
21318 }
21319
21320 /* Increase the age counter on each cached compilation unit, and free
21321    any that are too old.  */
21322
21323 static void
21324 age_cached_comp_units (void)
21325 {
21326   struct dwarf2_per_cu_data *per_cu, **last_chain;
21327
21328   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
21329   per_cu = dwarf2_per_objfile->read_in_chain;
21330   while (per_cu != NULL)
21331     {
21332       per_cu->cu->last_used ++;
21333       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
21334         dwarf2_mark (per_cu->cu);
21335       per_cu = per_cu->cu->read_in_chain;
21336     }
21337
21338   per_cu = dwarf2_per_objfile->read_in_chain;
21339   last_chain = &dwarf2_per_objfile->read_in_chain;
21340   while (per_cu != NULL)
21341     {
21342       struct dwarf2_per_cu_data *next_cu;
21343
21344       next_cu = per_cu->cu->read_in_chain;
21345
21346       if (!per_cu->cu->mark)
21347         {
21348           free_heap_comp_unit (per_cu->cu);
21349           *last_chain = next_cu;
21350         }
21351       else
21352         last_chain = &per_cu->cu->read_in_chain;
21353
21354       per_cu = next_cu;
21355     }
21356 }
21357
21358 /* Remove a single compilation unit from the cache.  */
21359
21360 static void
21361 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
21362 {
21363   struct dwarf2_per_cu_data *per_cu, **last_chain;
21364
21365   per_cu = dwarf2_per_objfile->read_in_chain;
21366   last_chain = &dwarf2_per_objfile->read_in_chain;
21367   while (per_cu != NULL)
21368     {
21369       struct dwarf2_per_cu_data *next_cu;
21370
21371       next_cu = per_cu->cu->read_in_chain;
21372
21373       if (per_cu == target_per_cu)
21374         {
21375           free_heap_comp_unit (per_cu->cu);
21376           per_cu->cu = NULL;
21377           *last_chain = next_cu;
21378           break;
21379         }
21380       else
21381         last_chain = &per_cu->cu->read_in_chain;
21382
21383       per_cu = next_cu;
21384     }
21385 }
21386
21387 /* Release all extra memory associated with OBJFILE.  */
21388
21389 void
21390 dwarf2_free_objfile (struct objfile *objfile)
21391 {
21392   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
21393
21394   if (dwarf2_per_objfile == NULL)
21395     return;
21396
21397   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
21398   free_cached_comp_units (NULL);
21399
21400   if (dwarf2_per_objfile->quick_file_names_table)
21401     htab_delete (dwarf2_per_objfile->quick_file_names_table);
21402
21403   /* Everything else should be on the objfile obstack.  */
21404 }
21405
21406 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
21407    We store these in a hash table separate from the DIEs, and preserve them
21408    when the DIEs are flushed out of cache.
21409
21410    The CU "per_cu" pointer is needed because offset alone is not enough to
21411    uniquely identify the type.  A file may have multiple .debug_types sections,
21412    or the type may come from a DWO file.  Furthermore, while it's more logical
21413    to use per_cu->section+offset, with Fission the section with the data is in
21414    the DWO file but we don't know that section at the point we need it.
21415    We have to use something in dwarf2_per_cu_data (or the pointer to it)
21416    because we can enter the lookup routine, get_die_type_at_offset, from
21417    outside this file, and thus won't necessarily have PER_CU->cu.
21418    Fortunately, PER_CU is stable for the life of the objfile.  */
21419
21420 struct dwarf2_per_cu_offset_and_type
21421 {
21422   const struct dwarf2_per_cu_data *per_cu;
21423   sect_offset offset;
21424   struct type *type;
21425 };
21426
21427 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
21428
21429 static hashval_t
21430 per_cu_offset_and_type_hash (const void *item)
21431 {
21432   const struct dwarf2_per_cu_offset_and_type *ofs = item;
21433
21434   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
21435 }
21436
21437 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
21438
21439 static int
21440 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
21441 {
21442   const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
21443   const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
21444
21445   return (ofs_lhs->per_cu == ofs_rhs->per_cu
21446           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
21447 }
21448
21449 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
21450    table if necessary.  For convenience, return TYPE.
21451
21452    The DIEs reading must have careful ordering to:
21453     * Not cause infite loops trying to read in DIEs as a prerequisite for
21454       reading current DIE.
21455     * Not trying to dereference contents of still incompletely read in types
21456       while reading in other DIEs.
21457     * Enable referencing still incompletely read in types just by a pointer to
21458       the type without accessing its fields.
21459
21460    Therefore caller should follow these rules:
21461      * Try to fetch any prerequisite types we may need to build this DIE type
21462        before building the type and calling set_die_type.
21463      * After building type call set_die_type for current DIE as soon as
21464        possible before fetching more types to complete the current type.
21465      * Make the type as complete as possible before fetching more types.  */
21466
21467 static struct type *
21468 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21469 {
21470   struct dwarf2_per_cu_offset_and_type **slot, ofs;
21471   struct objfile *objfile = cu->objfile;
21472
21473   /* For Ada types, make sure that the gnat-specific data is always
21474      initialized (if not already set).  There are a few types where
21475      we should not be doing so, because the type-specific area is
21476      already used to hold some other piece of info (eg: TYPE_CODE_FLT
21477      where the type-specific area is used to store the floatformat).
21478      But this is not a problem, because the gnat-specific information
21479      is actually not needed for these types.  */
21480   if (need_gnat_info (cu)
21481       && TYPE_CODE (type) != TYPE_CODE_FUNC
21482       && TYPE_CODE (type) != TYPE_CODE_FLT
21483       && !HAVE_GNAT_AUX_INFO (type))
21484     INIT_GNAT_SPECIFIC (type);
21485
21486   if (dwarf2_per_objfile->die_type_hash == NULL)
21487     {
21488       dwarf2_per_objfile->die_type_hash =
21489         htab_create_alloc_ex (127,
21490                               per_cu_offset_and_type_hash,
21491                               per_cu_offset_and_type_eq,
21492                               NULL,
21493                               &objfile->objfile_obstack,
21494                               hashtab_obstack_allocate,
21495                               dummy_obstack_deallocate);
21496     }
21497
21498   ofs.per_cu = cu->per_cu;
21499   ofs.offset = die->offset;
21500   ofs.type = type;
21501   slot = (struct dwarf2_per_cu_offset_and_type **)
21502     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
21503   if (*slot)
21504     complaint (&symfile_complaints,
21505                _("A problem internal to GDB: DIE 0x%x has type already set"),
21506                die->offset.sect_off);
21507   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
21508   **slot = ofs;
21509   return type;
21510 }
21511
21512 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
21513    or return NULL if the die does not have a saved type.  */
21514
21515 static struct type *
21516 get_die_type_at_offset (sect_offset offset,
21517                         struct dwarf2_per_cu_data *per_cu)
21518 {
21519   struct dwarf2_per_cu_offset_and_type *slot, ofs;
21520
21521   if (dwarf2_per_objfile->die_type_hash == NULL)
21522     return NULL;
21523
21524   ofs.per_cu = per_cu;
21525   ofs.offset = offset;
21526   slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
21527   if (slot)
21528     return slot->type;
21529   else
21530     return NULL;
21531 }
21532
21533 /* Look up the type for DIE in CU in die_type_hash,
21534    or return NULL if DIE does not have a saved type.  */
21535
21536 static struct type *
21537 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
21538 {
21539   return get_die_type_at_offset (die->offset, cu->per_cu);
21540 }
21541
21542 /* Add a dependence relationship from CU to REF_PER_CU.  */
21543
21544 static void
21545 dwarf2_add_dependence (struct dwarf2_cu *cu,
21546                        struct dwarf2_per_cu_data *ref_per_cu)
21547 {
21548   void **slot;
21549
21550   if (cu->dependencies == NULL)
21551     cu->dependencies
21552       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
21553                               NULL, &cu->comp_unit_obstack,
21554                               hashtab_obstack_allocate,
21555                               dummy_obstack_deallocate);
21556
21557   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
21558   if (*slot == NULL)
21559     *slot = ref_per_cu;
21560 }
21561
21562 /* Subroutine of dwarf2_mark to pass to htab_traverse.
21563    Set the mark field in every compilation unit in the
21564    cache that we must keep because we are keeping CU.  */
21565
21566 static int
21567 dwarf2_mark_helper (void **slot, void *data)
21568 {
21569   struct dwarf2_per_cu_data *per_cu;
21570
21571   per_cu = (struct dwarf2_per_cu_data *) *slot;
21572
21573   /* cu->dependencies references may not yet have been ever read if QUIT aborts
21574      reading of the chain.  As such dependencies remain valid it is not much
21575      useful to track and undo them during QUIT cleanups.  */
21576   if (per_cu->cu == NULL)
21577     return 1;
21578
21579   if (per_cu->cu->mark)
21580     return 1;
21581   per_cu->cu->mark = 1;
21582
21583   if (per_cu->cu->dependencies != NULL)
21584     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
21585
21586   return 1;
21587 }
21588
21589 /* Set the mark field in CU and in every other compilation unit in the
21590    cache that we must keep because we are keeping CU.  */
21591
21592 static void
21593 dwarf2_mark (struct dwarf2_cu *cu)
21594 {
21595   if (cu->mark)
21596     return;
21597   cu->mark = 1;
21598   if (cu->dependencies != NULL)
21599     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
21600 }
21601
21602 static void
21603 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
21604 {
21605   while (per_cu)
21606     {
21607       per_cu->cu->mark = 0;
21608       per_cu = per_cu->cu->read_in_chain;
21609     }
21610 }
21611
21612 /* Trivial hash function for partial_die_info: the hash value of a DIE
21613    is its offset in .debug_info for this objfile.  */
21614
21615 static hashval_t
21616 partial_die_hash (const void *item)
21617 {
21618   const struct partial_die_info *part_die = item;
21619
21620   return part_die->offset.sect_off;
21621 }
21622
21623 /* Trivial comparison function for partial_die_info structures: two DIEs
21624    are equal if they have the same offset.  */
21625
21626 static int
21627 partial_die_eq (const void *item_lhs, const void *item_rhs)
21628 {
21629   const struct partial_die_info *part_die_lhs = item_lhs;
21630   const struct partial_die_info *part_die_rhs = item_rhs;
21631
21632   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
21633 }
21634
21635 static struct cmd_list_element *set_dwarf2_cmdlist;
21636 static struct cmd_list_element *show_dwarf2_cmdlist;
21637
21638 static void
21639 set_dwarf2_cmd (char *args, int from_tty)
21640 {
21641   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
21642 }
21643
21644 static void
21645 show_dwarf2_cmd (char *args, int from_tty)
21646 {
21647   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
21648 }
21649
21650 /* Free data associated with OBJFILE, if necessary.  */
21651
21652 static void
21653 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
21654 {
21655   struct dwarf2_per_objfile *data = d;
21656   int ix;
21657
21658   /* Make sure we don't accidentally use dwarf2_per_objfile while
21659      cleaning up.  */
21660   dwarf2_per_objfile = NULL;
21661
21662   for (ix = 0; ix < data->n_comp_units; ++ix)
21663    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
21664
21665   for (ix = 0; ix < data->n_type_units; ++ix)
21666     VEC_free (dwarf2_per_cu_ptr,
21667               data->all_type_units[ix]->per_cu.imported_symtabs);
21668   xfree (data->all_type_units);
21669
21670   VEC_free (dwarf2_section_info_def, data->types);
21671
21672   if (data->dwo_files)
21673     free_dwo_files (data->dwo_files, objfile);
21674   if (data->dwp_file)
21675     gdb_bfd_unref (data->dwp_file->dbfd);
21676
21677   if (data->dwz_file && data->dwz_file->dwz_bfd)
21678     gdb_bfd_unref (data->dwz_file->dwz_bfd);
21679 }
21680
21681 \f
21682 /* The "save gdb-index" command.  */
21683
21684 /* The contents of the hash table we create when building the string
21685    table.  */
21686 struct strtab_entry
21687 {
21688   offset_type offset;
21689   const char *str;
21690 };
21691
21692 /* Hash function for a strtab_entry.
21693
21694    Function is used only during write_hash_table so no index format backward
21695    compatibility is needed.  */
21696
21697 static hashval_t
21698 hash_strtab_entry (const void *e)
21699 {
21700   const struct strtab_entry *entry = e;
21701   return mapped_index_string_hash (INT_MAX, entry->str);
21702 }
21703
21704 /* Equality function for a strtab_entry.  */
21705
21706 static int
21707 eq_strtab_entry (const void *a, const void *b)
21708 {
21709   const struct strtab_entry *ea = a;
21710   const struct strtab_entry *eb = b;
21711   return !strcmp (ea->str, eb->str);
21712 }
21713
21714 /* Create a strtab_entry hash table.  */
21715
21716 static htab_t
21717 create_strtab (void)
21718 {
21719   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
21720                             xfree, xcalloc, xfree);
21721 }
21722
21723 /* Add a string to the constant pool.  Return the string's offset in
21724    host order.  */
21725
21726 static offset_type
21727 add_string (htab_t table, struct obstack *cpool, const char *str)
21728 {
21729   void **slot;
21730   struct strtab_entry entry;
21731   struct strtab_entry *result;
21732
21733   entry.str = str;
21734   slot = htab_find_slot (table, &entry, INSERT);
21735   if (*slot)
21736     result = *slot;
21737   else
21738     {
21739       result = XNEW (struct strtab_entry);
21740       result->offset = obstack_object_size (cpool);
21741       result->str = str;
21742       obstack_grow_str0 (cpool, str);
21743       *slot = result;
21744     }
21745   return result->offset;
21746 }
21747
21748 /* An entry in the symbol table.  */
21749 struct symtab_index_entry
21750 {
21751   /* The name of the symbol.  */
21752   const char *name;
21753   /* The offset of the name in the constant pool.  */
21754   offset_type index_offset;
21755   /* A sorted vector of the indices of all the CUs that hold an object
21756      of this name.  */
21757   VEC (offset_type) *cu_indices;
21758 };
21759
21760 /* The symbol table.  This is a power-of-2-sized hash table.  */
21761 struct mapped_symtab
21762 {
21763   offset_type n_elements;
21764   offset_type size;
21765   struct symtab_index_entry **data;
21766 };
21767
21768 /* Hash function for a symtab_index_entry.  */
21769
21770 static hashval_t
21771 hash_symtab_entry (const void *e)
21772 {
21773   const struct symtab_index_entry *entry = e;
21774   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
21775                          sizeof (offset_type) * VEC_length (offset_type,
21776                                                             entry->cu_indices),
21777                          0);
21778 }
21779
21780 /* Equality function for a symtab_index_entry.  */
21781
21782 static int
21783 eq_symtab_entry (const void *a, const void *b)
21784 {
21785   const struct symtab_index_entry *ea = a;
21786   const struct symtab_index_entry *eb = b;
21787   int len = VEC_length (offset_type, ea->cu_indices);
21788   if (len != VEC_length (offset_type, eb->cu_indices))
21789     return 0;
21790   return !memcmp (VEC_address (offset_type, ea->cu_indices),
21791                   VEC_address (offset_type, eb->cu_indices),
21792                   sizeof (offset_type) * len);
21793 }
21794
21795 /* Destroy a symtab_index_entry.  */
21796
21797 static void
21798 delete_symtab_entry (void *p)
21799 {
21800   struct symtab_index_entry *entry = p;
21801   VEC_free (offset_type, entry->cu_indices);
21802   xfree (entry);
21803 }
21804
21805 /* Create a hash table holding symtab_index_entry objects.  */
21806
21807 static htab_t
21808 create_symbol_hash_table (void)
21809 {
21810   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
21811                             delete_symtab_entry, xcalloc, xfree);
21812 }
21813
21814 /* Create a new mapped symtab object.  */
21815
21816 static struct mapped_symtab *
21817 create_mapped_symtab (void)
21818 {
21819   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
21820   symtab->n_elements = 0;
21821   symtab->size = 1024;
21822   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
21823   return symtab;
21824 }
21825
21826 /* Destroy a mapped_symtab.  */
21827
21828 static void
21829 cleanup_mapped_symtab (void *p)
21830 {
21831   struct mapped_symtab *symtab = p;
21832   /* The contents of the array are freed when the other hash table is
21833      destroyed.  */
21834   xfree (symtab->data);
21835   xfree (symtab);
21836 }
21837
21838 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
21839    the slot.
21840    
21841    Function is used only during write_hash_table so no index format backward
21842    compatibility is needed.  */
21843
21844 static struct symtab_index_entry **
21845 find_slot (struct mapped_symtab *symtab, const char *name)
21846 {
21847   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
21848
21849   index = hash & (symtab->size - 1);
21850   step = ((hash * 17) & (symtab->size - 1)) | 1;
21851
21852   for (;;)
21853     {
21854       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
21855         return &symtab->data[index];
21856       index = (index + step) & (symtab->size - 1);
21857     }
21858 }
21859
21860 /* Expand SYMTAB's hash table.  */
21861
21862 static void
21863 hash_expand (struct mapped_symtab *symtab)
21864 {
21865   offset_type old_size = symtab->size;
21866   offset_type i;
21867   struct symtab_index_entry **old_entries = symtab->data;
21868
21869   symtab->size *= 2;
21870   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
21871
21872   for (i = 0; i < old_size; ++i)
21873     {
21874       if (old_entries[i])
21875         {
21876           struct symtab_index_entry **slot = find_slot (symtab,
21877                                                         old_entries[i]->name);
21878           *slot = old_entries[i];
21879         }
21880     }
21881
21882   xfree (old_entries);
21883 }
21884
21885 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
21886    CU_INDEX is the index of the CU in which the symbol appears.
21887    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
21888
21889 static void
21890 add_index_entry (struct mapped_symtab *symtab, const char *name,
21891                  int is_static, gdb_index_symbol_kind kind,
21892                  offset_type cu_index)
21893 {
21894   struct symtab_index_entry **slot;
21895   offset_type cu_index_and_attrs;
21896
21897   ++symtab->n_elements;
21898   if (4 * symtab->n_elements / 3 >= symtab->size)
21899     hash_expand (symtab);
21900
21901   slot = find_slot (symtab, name);
21902   if (!*slot)
21903     {
21904       *slot = XNEW (struct symtab_index_entry);
21905       (*slot)->name = name;
21906       /* index_offset is set later.  */
21907       (*slot)->cu_indices = NULL;
21908     }
21909
21910   cu_index_and_attrs = 0;
21911   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
21912   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
21913   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
21914
21915   /* We don't want to record an index value twice as we want to avoid the
21916      duplication.
21917      We process all global symbols and then all static symbols
21918      (which would allow us to avoid the duplication by only having to check
21919      the last entry pushed), but a symbol could have multiple kinds in one CU.
21920      To keep things simple we don't worry about the duplication here and
21921      sort and uniqufy the list after we've processed all symbols.  */
21922   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
21923 }
21924
21925 /* qsort helper routine for uniquify_cu_indices.  */
21926
21927 static int
21928 offset_type_compare (const void *ap, const void *bp)
21929 {
21930   offset_type a = *(offset_type *) ap;
21931   offset_type b = *(offset_type *) bp;
21932
21933   return (a > b) - (b > a);
21934 }
21935
21936 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
21937
21938 static void
21939 uniquify_cu_indices (struct mapped_symtab *symtab)
21940 {
21941   int i;
21942
21943   for (i = 0; i < symtab->size; ++i)
21944     {
21945       struct symtab_index_entry *entry = symtab->data[i];
21946
21947       if (entry
21948           && entry->cu_indices != NULL)
21949         {
21950           unsigned int next_to_insert, next_to_check;
21951           offset_type last_value;
21952
21953           qsort (VEC_address (offset_type, entry->cu_indices),
21954                  VEC_length (offset_type, entry->cu_indices),
21955                  sizeof (offset_type), offset_type_compare);
21956
21957           last_value = VEC_index (offset_type, entry->cu_indices, 0);
21958           next_to_insert = 1;
21959           for (next_to_check = 1;
21960                next_to_check < VEC_length (offset_type, entry->cu_indices);
21961                ++next_to_check)
21962             {
21963               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
21964                   != last_value)
21965                 {
21966                   last_value = VEC_index (offset_type, entry->cu_indices,
21967                                           next_to_check);
21968                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
21969                                last_value);
21970                   ++next_to_insert;
21971                 }
21972             }
21973           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
21974         }
21975     }
21976 }
21977
21978 /* Add a vector of indices to the constant pool.  */
21979
21980 static offset_type
21981 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
21982                       struct symtab_index_entry *entry)
21983 {
21984   void **slot;
21985
21986   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
21987   if (!*slot)
21988     {
21989       offset_type len = VEC_length (offset_type, entry->cu_indices);
21990       offset_type val = MAYBE_SWAP (len);
21991       offset_type iter;
21992       int i;
21993
21994       *slot = entry;
21995       entry->index_offset = obstack_object_size (cpool);
21996
21997       obstack_grow (cpool, &val, sizeof (val));
21998       for (i = 0;
21999            VEC_iterate (offset_type, entry->cu_indices, i, iter);
22000            ++i)
22001         {
22002           val = MAYBE_SWAP (iter);
22003           obstack_grow (cpool, &val, sizeof (val));
22004         }
22005     }
22006   else
22007     {
22008       struct symtab_index_entry *old_entry = *slot;
22009       entry->index_offset = old_entry->index_offset;
22010       entry = old_entry;
22011     }
22012   return entry->index_offset;
22013 }
22014
22015 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22016    constant pool entries going into the obstack CPOOL.  */
22017
22018 static void
22019 write_hash_table (struct mapped_symtab *symtab,
22020                   struct obstack *output, struct obstack *cpool)
22021 {
22022   offset_type i;
22023   htab_t symbol_hash_table;
22024   htab_t str_table;
22025
22026   symbol_hash_table = create_symbol_hash_table ();
22027   str_table = create_strtab ();
22028
22029   /* We add all the index vectors to the constant pool first, to
22030      ensure alignment is ok.  */
22031   for (i = 0; i < symtab->size; ++i)
22032     {
22033       if (symtab->data[i])
22034         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
22035     }
22036
22037   /* Now write out the hash table.  */
22038   for (i = 0; i < symtab->size; ++i)
22039     {
22040       offset_type str_off, vec_off;
22041
22042       if (symtab->data[i])
22043         {
22044           str_off = add_string (str_table, cpool, symtab->data[i]->name);
22045           vec_off = symtab->data[i]->index_offset;
22046         }
22047       else
22048         {
22049           /* While 0 is a valid constant pool index, it is not valid
22050              to have 0 for both offsets.  */
22051           str_off = 0;
22052           vec_off = 0;
22053         }
22054
22055       str_off = MAYBE_SWAP (str_off);
22056       vec_off = MAYBE_SWAP (vec_off);
22057
22058       obstack_grow (output, &str_off, sizeof (str_off));
22059       obstack_grow (output, &vec_off, sizeof (vec_off));
22060     }
22061
22062   htab_delete (str_table);
22063   htab_delete (symbol_hash_table);
22064 }
22065
22066 /* Struct to map psymtab to CU index in the index file.  */
22067 struct psymtab_cu_index_map
22068 {
22069   struct partial_symtab *psymtab;
22070   unsigned int cu_index;
22071 };
22072
22073 static hashval_t
22074 hash_psymtab_cu_index (const void *item)
22075 {
22076   const struct psymtab_cu_index_map *map = item;
22077
22078   return htab_hash_pointer (map->psymtab);
22079 }
22080
22081 static int
22082 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22083 {
22084   const struct psymtab_cu_index_map *lhs = item_lhs;
22085   const struct psymtab_cu_index_map *rhs = item_rhs;
22086
22087   return lhs->psymtab == rhs->psymtab;
22088 }
22089
22090 /* Helper struct for building the address table.  */
22091 struct addrmap_index_data
22092 {
22093   struct objfile *objfile;
22094   struct obstack *addr_obstack;
22095   htab_t cu_index_htab;
22096
22097   /* Non-zero if the previous_* fields are valid.
22098      We can't write an entry until we see the next entry (since it is only then
22099      that we know the end of the entry).  */
22100   int previous_valid;
22101   /* Index of the CU in the table of all CUs in the index file.  */
22102   unsigned int previous_cu_index;
22103   /* Start address of the CU.  */
22104   CORE_ADDR previous_cu_start;
22105 };
22106
22107 /* Write an address entry to OBSTACK.  */
22108
22109 static void
22110 add_address_entry (struct objfile *objfile, struct obstack *obstack,
22111                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
22112 {
22113   offset_type cu_index_to_write;
22114   gdb_byte addr[8];
22115   CORE_ADDR baseaddr;
22116
22117   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22118
22119   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22120   obstack_grow (obstack, addr, 8);
22121   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22122   obstack_grow (obstack, addr, 8);
22123   cu_index_to_write = MAYBE_SWAP (cu_index);
22124   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22125 }
22126
22127 /* Worker function for traversing an addrmap to build the address table.  */
22128
22129 static int
22130 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22131 {
22132   struct addrmap_index_data *data = datap;
22133   struct partial_symtab *pst = obj;
22134
22135   if (data->previous_valid)
22136     add_address_entry (data->objfile, data->addr_obstack,
22137                        data->previous_cu_start, start_addr,
22138                        data->previous_cu_index);
22139
22140   data->previous_cu_start = start_addr;
22141   if (pst != NULL)
22142     {
22143       struct psymtab_cu_index_map find_map, *map;
22144       find_map.psymtab = pst;
22145       map = htab_find (data->cu_index_htab, &find_map);
22146       gdb_assert (map != NULL);
22147       data->previous_cu_index = map->cu_index;
22148       data->previous_valid = 1;
22149     }
22150   else
22151       data->previous_valid = 0;
22152
22153   return 0;
22154 }
22155
22156 /* Write OBJFILE's address map to OBSTACK.
22157    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22158    in the index file.  */
22159
22160 static void
22161 write_address_map (struct objfile *objfile, struct obstack *obstack,
22162                    htab_t cu_index_htab)
22163 {
22164   struct addrmap_index_data addrmap_index_data;
22165
22166   /* When writing the address table, we have to cope with the fact that
22167      the addrmap iterator only provides the start of a region; we have to
22168      wait until the next invocation to get the start of the next region.  */
22169
22170   addrmap_index_data.objfile = objfile;
22171   addrmap_index_data.addr_obstack = obstack;
22172   addrmap_index_data.cu_index_htab = cu_index_htab;
22173   addrmap_index_data.previous_valid = 0;
22174
22175   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22176                    &addrmap_index_data);
22177
22178   /* It's highly unlikely the last entry (end address = 0xff...ff)
22179      is valid, but we should still handle it.
22180      The end address is recorded as the start of the next region, but that
22181      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
22182      anyway.  */
22183   if (addrmap_index_data.previous_valid)
22184     add_address_entry (objfile, obstack,
22185                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22186                        addrmap_index_data.previous_cu_index);
22187 }
22188
22189 /* Return the symbol kind of PSYM.  */
22190
22191 static gdb_index_symbol_kind
22192 symbol_kind (struct partial_symbol *psym)
22193 {
22194   domain_enum domain = PSYMBOL_DOMAIN (psym);
22195   enum address_class aclass = PSYMBOL_CLASS (psym);
22196
22197   switch (domain)
22198     {
22199     case VAR_DOMAIN:
22200       switch (aclass)
22201         {
22202         case LOC_BLOCK:
22203           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22204         case LOC_TYPEDEF:
22205           return GDB_INDEX_SYMBOL_KIND_TYPE;
22206         case LOC_COMPUTED:
22207         case LOC_CONST_BYTES:
22208         case LOC_OPTIMIZED_OUT:
22209         case LOC_STATIC:
22210           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22211         case LOC_CONST:
22212           /* Note: It's currently impossible to recognize psyms as enum values
22213              short of reading the type info.  For now punt.  */
22214           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22215         default:
22216           /* There are other LOC_FOO values that one might want to classify
22217              as variables, but dwarf2read.c doesn't currently use them.  */
22218           return GDB_INDEX_SYMBOL_KIND_OTHER;
22219         }
22220     case STRUCT_DOMAIN:
22221       return GDB_INDEX_SYMBOL_KIND_TYPE;
22222     default:
22223       return GDB_INDEX_SYMBOL_KIND_OTHER;
22224     }
22225 }
22226
22227 /* Add a list of partial symbols to SYMTAB.  */
22228
22229 static void
22230 write_psymbols (struct mapped_symtab *symtab,
22231                 htab_t psyms_seen,
22232                 struct partial_symbol **psymp,
22233                 int count,
22234                 offset_type cu_index,
22235                 int is_static)
22236 {
22237   for (; count-- > 0; ++psymp)
22238     {
22239       struct partial_symbol *psym = *psymp;
22240       void **slot;
22241
22242       if (SYMBOL_LANGUAGE (psym) == language_ada)
22243         error (_("Ada is not currently supported by the index"));
22244
22245       /* Only add a given psymbol once.  */
22246       slot = htab_find_slot (psyms_seen, psym, INSERT);
22247       if (!*slot)
22248         {
22249           gdb_index_symbol_kind kind = symbol_kind (psym);
22250
22251           *slot = psym;
22252           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
22253                            is_static, kind, cu_index);
22254         }
22255     }
22256 }
22257
22258 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
22259    exception if there is an error.  */
22260
22261 static void
22262 write_obstack (FILE *file, struct obstack *obstack)
22263 {
22264   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
22265               file)
22266       != obstack_object_size (obstack))
22267     error (_("couldn't data write to file"));
22268 }
22269
22270 /* Unlink a file if the argument is not NULL.  */
22271
22272 static void
22273 unlink_if_set (void *p)
22274 {
22275   char **filename = p;
22276   if (*filename)
22277     unlink (*filename);
22278 }
22279
22280 /* A helper struct used when iterating over debug_types.  */
22281 struct signatured_type_index_data
22282 {
22283   struct objfile *objfile;
22284   struct mapped_symtab *symtab;
22285   struct obstack *types_list;
22286   htab_t psyms_seen;
22287   int cu_index;
22288 };
22289
22290 /* A helper function that writes a single signatured_type to an
22291    obstack.  */
22292
22293 static int
22294 write_one_signatured_type (void **slot, void *d)
22295 {
22296   struct signatured_type_index_data *info = d;
22297   struct signatured_type *entry = (struct signatured_type *) *slot;
22298   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
22299   gdb_byte val[8];
22300
22301   write_psymbols (info->symtab,
22302                   info->psyms_seen,
22303                   info->objfile->global_psymbols.list
22304                   + psymtab->globals_offset,
22305                   psymtab->n_global_syms, info->cu_index,
22306                   0);
22307   write_psymbols (info->symtab,
22308                   info->psyms_seen,
22309                   info->objfile->static_psymbols.list
22310                   + psymtab->statics_offset,
22311                   psymtab->n_static_syms, info->cu_index,
22312                   1);
22313
22314   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22315                           entry->per_cu.offset.sect_off);
22316   obstack_grow (info->types_list, val, 8);
22317   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22318                           entry->type_offset_in_tu.cu_off);
22319   obstack_grow (info->types_list, val, 8);
22320   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
22321   obstack_grow (info->types_list, val, 8);
22322
22323   ++info->cu_index;
22324
22325   return 1;
22326 }
22327
22328 /* Recurse into all "included" dependencies and write their symbols as
22329    if they appeared in this psymtab.  */
22330
22331 static void
22332 recursively_write_psymbols (struct objfile *objfile,
22333                             struct partial_symtab *psymtab,
22334                             struct mapped_symtab *symtab,
22335                             htab_t psyms_seen,
22336                             offset_type cu_index)
22337 {
22338   int i;
22339
22340   for (i = 0; i < psymtab->number_of_dependencies; ++i)
22341     if (psymtab->dependencies[i]->user != NULL)
22342       recursively_write_psymbols (objfile, psymtab->dependencies[i],
22343                                   symtab, psyms_seen, cu_index);
22344
22345   write_psymbols (symtab,
22346                   psyms_seen,
22347                   objfile->global_psymbols.list + psymtab->globals_offset,
22348                   psymtab->n_global_syms, cu_index,
22349                   0);
22350   write_psymbols (symtab,
22351                   psyms_seen,
22352                   objfile->static_psymbols.list + psymtab->statics_offset,
22353                   psymtab->n_static_syms, cu_index,
22354                   1);
22355 }
22356
22357 /* Create an index file for OBJFILE in the directory DIR.  */
22358
22359 static void
22360 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
22361 {
22362   struct cleanup *cleanup;
22363   char *filename, *cleanup_filename;
22364   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
22365   struct obstack cu_list, types_cu_list;
22366   int i;
22367   FILE *out_file;
22368   struct mapped_symtab *symtab;
22369   offset_type val, size_of_contents, total_len;
22370   struct stat st;
22371   htab_t psyms_seen;
22372   htab_t cu_index_htab;
22373   struct psymtab_cu_index_map *psymtab_cu_index_map;
22374
22375   if (dwarf2_per_objfile->using_index)
22376     error (_("Cannot use an index to create the index"));
22377
22378   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
22379     error (_("Cannot make an index when the file has multiple .debug_types sections"));
22380
22381   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
22382     return;
22383
22384   if (stat (objfile_name (objfile), &st) < 0)
22385     perror_with_name (objfile_name (objfile));
22386
22387   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
22388                      INDEX_SUFFIX, (char *) NULL);
22389   cleanup = make_cleanup (xfree, filename);
22390
22391   out_file = gdb_fopen_cloexec (filename, "wb");
22392   if (!out_file)
22393     error (_("Can't open `%s' for writing"), filename);
22394
22395   cleanup_filename = filename;
22396   make_cleanup (unlink_if_set, &cleanup_filename);
22397
22398   symtab = create_mapped_symtab ();
22399   make_cleanup (cleanup_mapped_symtab, symtab);
22400
22401   obstack_init (&addr_obstack);
22402   make_cleanup_obstack_free (&addr_obstack);
22403
22404   obstack_init (&cu_list);
22405   make_cleanup_obstack_free (&cu_list);
22406
22407   obstack_init (&types_cu_list);
22408   make_cleanup_obstack_free (&types_cu_list);
22409
22410   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
22411                                   NULL, xcalloc, xfree);
22412   make_cleanup_htab_delete (psyms_seen);
22413
22414   /* While we're scanning CU's create a table that maps a psymtab pointer
22415      (which is what addrmap records) to its index (which is what is recorded
22416      in the index file).  This will later be needed to write the address
22417      table.  */
22418   cu_index_htab = htab_create_alloc (100,
22419                                      hash_psymtab_cu_index,
22420                                      eq_psymtab_cu_index,
22421                                      NULL, xcalloc, xfree);
22422   make_cleanup_htab_delete (cu_index_htab);
22423   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
22424     xmalloc (sizeof (struct psymtab_cu_index_map)
22425              * dwarf2_per_objfile->n_comp_units);
22426   make_cleanup (xfree, psymtab_cu_index_map);
22427
22428   /* The CU list is already sorted, so we don't need to do additional
22429      work here.  Also, the debug_types entries do not appear in
22430      all_comp_units, but only in their own hash table.  */
22431   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
22432     {
22433       struct dwarf2_per_cu_data *per_cu
22434         = dwarf2_per_objfile->all_comp_units[i];
22435       struct partial_symtab *psymtab = per_cu->v.psymtab;
22436       gdb_byte val[8];
22437       struct psymtab_cu_index_map *map;
22438       void **slot;
22439
22440       /* CU of a shared file from 'dwz -m' may be unused by this main file.
22441          It may be referenced from a local scope but in such case it does not
22442          need to be present in .gdb_index.  */
22443       if (psymtab == NULL)
22444         continue;
22445
22446       if (psymtab->user == NULL)
22447         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
22448
22449       map = &psymtab_cu_index_map[i];
22450       map->psymtab = psymtab;
22451       map->cu_index = i;
22452       slot = htab_find_slot (cu_index_htab, map, INSERT);
22453       gdb_assert (slot != NULL);
22454       gdb_assert (*slot == NULL);
22455       *slot = map;
22456
22457       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22458                               per_cu->offset.sect_off);
22459       obstack_grow (&cu_list, val, 8);
22460       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
22461       obstack_grow (&cu_list, val, 8);
22462     }
22463
22464   /* Dump the address map.  */
22465   write_address_map (objfile, &addr_obstack, cu_index_htab);
22466
22467   /* Write out the .debug_type entries, if any.  */
22468   if (dwarf2_per_objfile->signatured_types)
22469     {
22470       struct signatured_type_index_data sig_data;
22471
22472       sig_data.objfile = objfile;
22473       sig_data.symtab = symtab;
22474       sig_data.types_list = &types_cu_list;
22475       sig_data.psyms_seen = psyms_seen;
22476       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
22477       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
22478                               write_one_signatured_type, &sig_data);
22479     }
22480
22481   /* Now that we've processed all symbols we can shrink their cu_indices
22482      lists.  */
22483   uniquify_cu_indices (symtab);
22484
22485   obstack_init (&constant_pool);
22486   make_cleanup_obstack_free (&constant_pool);
22487   obstack_init (&symtab_obstack);
22488   make_cleanup_obstack_free (&symtab_obstack);
22489   write_hash_table (symtab, &symtab_obstack, &constant_pool);
22490
22491   obstack_init (&contents);
22492   make_cleanup_obstack_free (&contents);
22493   size_of_contents = 6 * sizeof (offset_type);
22494   total_len = size_of_contents;
22495
22496   /* The version number.  */
22497   val = MAYBE_SWAP (8);
22498   obstack_grow (&contents, &val, sizeof (val));
22499
22500   /* The offset of the CU list from the start of the file.  */
22501   val = MAYBE_SWAP (total_len);
22502   obstack_grow (&contents, &val, sizeof (val));
22503   total_len += obstack_object_size (&cu_list);
22504
22505   /* The offset of the types CU list from the start of the file.  */
22506   val = MAYBE_SWAP (total_len);
22507   obstack_grow (&contents, &val, sizeof (val));
22508   total_len += obstack_object_size (&types_cu_list);
22509
22510   /* The offset of the address table from the start of the file.  */
22511   val = MAYBE_SWAP (total_len);
22512   obstack_grow (&contents, &val, sizeof (val));
22513   total_len += obstack_object_size (&addr_obstack);
22514
22515   /* The offset of the symbol table from the start of the file.  */
22516   val = MAYBE_SWAP (total_len);
22517   obstack_grow (&contents, &val, sizeof (val));
22518   total_len += obstack_object_size (&symtab_obstack);
22519
22520   /* The offset of the constant pool from the start of the file.  */
22521   val = MAYBE_SWAP (total_len);
22522   obstack_grow (&contents, &val, sizeof (val));
22523   total_len += obstack_object_size (&constant_pool);
22524
22525   gdb_assert (obstack_object_size (&contents) == size_of_contents);
22526
22527   write_obstack (out_file, &contents);
22528   write_obstack (out_file, &cu_list);
22529   write_obstack (out_file, &types_cu_list);
22530   write_obstack (out_file, &addr_obstack);
22531   write_obstack (out_file, &symtab_obstack);
22532   write_obstack (out_file, &constant_pool);
22533
22534   fclose (out_file);
22535
22536   /* We want to keep the file, so we set cleanup_filename to NULL
22537      here.  See unlink_if_set.  */
22538   cleanup_filename = NULL;
22539
22540   do_cleanups (cleanup);
22541 }
22542
22543 /* Implementation of the `save gdb-index' command.
22544    
22545    Note that the file format used by this command is documented in the
22546    GDB manual.  Any changes here must be documented there.  */
22547
22548 static void
22549 save_gdb_index_command (char *arg, int from_tty)
22550 {
22551   struct objfile *objfile;
22552
22553   if (!arg || !*arg)
22554     error (_("usage: save gdb-index DIRECTORY"));
22555
22556   ALL_OBJFILES (objfile)
22557   {
22558     struct stat st;
22559
22560     /* If the objfile does not correspond to an actual file, skip it.  */
22561     if (stat (objfile_name (objfile), &st) < 0)
22562       continue;
22563
22564     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22565     if (dwarf2_per_objfile)
22566       {
22567         volatile struct gdb_exception except;
22568
22569         TRY_CATCH (except, RETURN_MASK_ERROR)
22570           {
22571             write_psymtabs_to_index (objfile, arg);
22572           }
22573         if (except.reason < 0)
22574           exception_fprintf (gdb_stderr, except,
22575                              _("Error while writing index for `%s': "),
22576                              objfile_name (objfile));
22577       }
22578   }
22579 }
22580
22581 \f
22582
22583 int dwarf2_always_disassemble;
22584
22585 static void
22586 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
22587                                 struct cmd_list_element *c, const char *value)
22588 {
22589   fprintf_filtered (file,
22590                     _("Whether to always disassemble "
22591                       "DWARF expressions is %s.\n"),
22592                     value);
22593 }
22594
22595 static void
22596 show_check_physname (struct ui_file *file, int from_tty,
22597                      struct cmd_list_element *c, const char *value)
22598 {
22599   fprintf_filtered (file,
22600                     _("Whether to check \"physname\" is %s.\n"),
22601                     value);
22602 }
22603
22604 void _initialize_dwarf2_read (void);
22605
22606 void
22607 _initialize_dwarf2_read (void)
22608 {
22609   struct cmd_list_element *c;
22610
22611   dwarf2_objfile_data_key
22612     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
22613
22614   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
22615 Set DWARF 2 specific variables.\n\
22616 Configure DWARF 2 variables such as the cache size"),
22617                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
22618                   0/*allow-unknown*/, &maintenance_set_cmdlist);
22619
22620   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
22621 Show DWARF 2 specific variables\n\
22622 Show DWARF 2 variables such as the cache size"),
22623                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
22624                   0/*allow-unknown*/, &maintenance_show_cmdlist);
22625
22626   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
22627                             &dwarf2_max_cache_age, _("\
22628 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
22629 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
22630 A higher limit means that cached compilation units will be stored\n\
22631 in memory longer, and more total memory will be used.  Zero disables\n\
22632 caching, which can slow down startup."),
22633                             NULL,
22634                             show_dwarf2_max_cache_age,
22635                             &set_dwarf2_cmdlist,
22636                             &show_dwarf2_cmdlist);
22637
22638   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
22639                            &dwarf2_always_disassemble, _("\
22640 Set whether `info address' always disassembles DWARF expressions."), _("\
22641 Show whether `info address' always disassembles DWARF expressions."), _("\
22642 When enabled, DWARF expressions are always printed in an assembly-like\n\
22643 syntax.  When disabled, expressions will be printed in a more\n\
22644 conversational style, when possible."),
22645                            NULL,
22646                            show_dwarf2_always_disassemble,
22647                            &set_dwarf2_cmdlist,
22648                            &show_dwarf2_cmdlist);
22649
22650   add_setshow_zuinteger_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
22651 Set debugging of the dwarf2 reader."), _("\
22652 Show debugging of the dwarf2 reader."), _("\
22653 When enabled (non-zero), debugging messages are printed during dwarf2\n\
22654 reading and symtab expansion.  A value of 1 (one) provides basic\n\
22655 information.  A value greater than 1 provides more verbose information."),
22656                             NULL,
22657                             NULL,
22658                             &setdebuglist, &showdebuglist);
22659
22660   add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
22661 Set debugging of the dwarf2 DIE reader."), _("\
22662 Show debugging of the dwarf2 DIE reader."), _("\
22663 When enabled (non-zero), DIEs are dumped after they are read in.\n\
22664 The value is the maximum depth to print."),
22665                              NULL,
22666                              NULL,
22667                              &setdebuglist, &showdebuglist);
22668
22669   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
22670 Set cross-checking of \"physname\" code against demangler."), _("\
22671 Show cross-checking of \"physname\" code against demangler."), _("\
22672 When enabled, GDB's internal \"physname\" code is checked against\n\
22673 the demangler."),
22674                            NULL, show_check_physname,
22675                            &setdebuglist, &showdebuglist);
22676
22677   add_setshow_boolean_cmd ("use-deprecated-index-sections",
22678                            no_class, &use_deprecated_index_sections, _("\
22679 Set whether to use deprecated gdb_index sections."), _("\
22680 Show whether to use deprecated gdb_index sections."), _("\
22681 When enabled, deprecated .gdb_index sections are used anyway.\n\
22682 Normally they are ignored either because of a missing feature or\n\
22683 performance issue.\n\
22684 Warning: This option must be enabled before gdb reads the file."),
22685                            NULL,
22686                            NULL,
22687                            &setlist, &showlist);
22688
22689   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
22690                _("\
22691 Save a gdb-index file.\n\
22692 Usage: save gdb-index DIRECTORY"),
22693                &save_cmdlist);
22694   set_cmd_completer (c, filename_completer);
22695
22696   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
22697                                                         &dwarf2_locexpr_funcs);
22698   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
22699                                                         &dwarf2_loclist_funcs);
22700
22701   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
22702                                         &dwarf2_block_frame_base_locexpr_funcs);
22703   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
22704                                         &dwarf2_block_frame_base_loclist_funcs);
22705 }